If the activity flag is not given when calling track, it will now try to use the activity mark as default. If no activity type is marked as default, it will fail.
58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
)
|
|
|
|
type remoteActivityType struct {
|
|
Id uint `json:"id"`
|
|
Name string `json:"name"`
|
|
IsDefault bool `json:"is_default"`
|
|
Active bool `json:"active"`
|
|
}
|
|
|
|
type remoteTimeEntryActivities struct {
|
|
Activities []remoteActivityType `json:"time_entry_activities"`
|
|
}
|
|
|
|
func (act *remoteTimeEntryActivities) Map() map[uint]remoteActivityType {
|
|
activities := map[uint]remoteActivityType{}
|
|
for _, item := range act.Activities {
|
|
activities[item.Id] = item
|
|
}
|
|
return activities
|
|
}
|
|
|
|
func (ctx *redmineClient) fetchActivities() (map[uint]remoteActivityType, error) {
|
|
var (
|
|
req *http.Request
|
|
data []byte
|
|
activities remoteTimeEntryActivities
|
|
err error
|
|
)
|
|
|
|
if req, err = ctx.buildGetRequest("enumerations/time_entry_activities", nil); err != nil {
|
|
return nil, err
|
|
}
|
|
if data, err = ctx.secureRequest(req); err != nil {
|
|
return nil, err
|
|
}
|
|
if err = json.Unmarshal(data, &activities); err != nil {
|
|
return nil, err
|
|
}
|
|
return activities.Map(), nil
|
|
}
|
|
|
|
func (ctx *redmineClient) fetchDefaultActivity() (*remoteActivityType, error) {
|
|
activities, err := ctx.fetchActivities()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for _, act := range activities {
|
|
if act.IsDefault {
|
|
return &act, nil
|
|
}
|
|
}
|
|
return nil, nil
|
|
}
|