diff options
| -rw-r--r-- | timetask/http.go | 107 | 
1 files changed, 107 insertions, 0 deletions
| diff --git a/timetask/http.go b/timetask/http.go index 28e8b10..0a60631 100644 --- a/timetask/http.go +++ b/timetask/http.go @@ -1,9 +1,13 @@  package timetask  import ( +	"fmt" +	"log"  	"net/http"  	"net/http/cookiejar"  	"net/url" +	"strconv" +	"strings"  	"golang.org/x/net/publicsuffix"  ) @@ -31,3 +35,106 @@ func Login(username, password string) (resp *http.Response, err error) {  	return resp, err  } + +func SubmitTimeEntries(fields Fields, time_entries []TimeEntry) (resp *http.Response, err error) { +	v := buildSubmissionParams(fields, time_entries) + +	log.Printf("%+v", v) + +	return nil, nil +} + +func buildSubmissionParams(fields Fields, time_entries []TimeEntry) url.Values { +	v := url.Values{} +	entry_indexes := []string{} + +	for i, entry := range time_entries { +		entry_indexes = append(entry_indexes, strconv.Itoa(i)) + +		client, err := fields.ClientByName(entry.Client) +		if err != nil { +			log.Panic(err) +		} + +		project, err := client.ProjectByName(entry.Project) +		if err != nil { +			log.Panic(err) +		} + +		module, err := project.ModuleByName(entry.Module) +		if err != nil { +			log.Panic(err) +		} + +		task, err := project.TaskByName(entry.Task) +		if err != nil { +			log.Panic(err) +		} + +		work_type, err := project.WorkTypeByName(entry.WorkType) +		if err != nil { +			log.Panic(err) +		} + +		var billable string +		if entry.Billable { +			billable = "t" +		} else { +			billable = "f" +		} + +		v.Set( +			fmt.Sprintf("f_personID%d", i), +			strconv.Itoa(fields.PersonID), +		) + +		v.Set( +			fmt.Sprintf("f_clientID%d", i), +			strconv.Itoa(client.ID), +		) + +		v.Set( +			fmt.Sprintf("f_projectID%d", i), +			strconv.Itoa(project.ID), +		) + +		v.Set( +			fmt.Sprintf("f_moduleID%d", i), +			strconv.Itoa(module.ID), +		) + +		v.Set( +			fmt.Sprintf("f_taskID%d", i), +			strconv.Itoa(task.ID), +		) + +		v.Set( +			fmt.Sprintf("f_worktypeID%d", i), +			strconv.Itoa(work_type.ID), +		) + +		v.Set( +			fmt.Sprintf("f_date%d", i), +			entry.Date.Format("02/01/06"), // day/month/year +		) + +		v.Set( +			fmt.Sprintf("f_time%d", i), +			strconv.Itoa(entry.Time), +		) + +		v.Set( +			fmt.Sprintf("f_billable%d", i), +			billable, +		) + +		v.Set( +			fmt.Sprintf("f_description%d", i), +			entry.Description, +		) +	} + +	v.Set("f_entryIndexes", strings.Join(entry_indexes, ",")) + +	return v +} | 
