aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--timetask/http.go107
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
+}