aboutsummaryrefslogtreecommitdiffstats
path: root/timetask
diff options
context:
space:
mode:
authorTeddy Wing2017-03-12 17:47:29 +0100
committerTeddy Wing2017-03-12 17:50:30 +0100
commit17f4ecc63615e3f3bef21a80f15e7c7b0e0cffa1 (patch)
treef0eee6e5c13271b2236f2308d48804c6ac2f9710 /timetask
parente51719722bd5eead4b414f7188d39fd07af81312 (diff)
downloadtimetasker-17f4ecc63615e3f3bef21a80f15e7c7b0e0cffa1.tar.bz2
http.go: Add `buildSubmissionParams` function
Function that takes a list of `TimeEntry`ies and builds the necessary URL params for submission to the Time Task form endpoint.
Diffstat (limited to 'timetask')
-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
+}