Add GetSystemMembers

Begin work on schedule API
This commit is contained in:
Steven Polley 2018-07-08 18:02:29 -06:00
parent b538596d9c
commit 0b9d1cacb2
2 changed files with 150 additions and 0 deletions

129
3.0/connectwise/schedule.go Normal file
View File

@ -0,0 +1,129 @@
package connectwise
import (
"encoding/json"
"fmt"
)
type Calendar struct {
ID int `json:"id"`
Name string `json:"name"`
HolidayList struct {
ID int `json:"id"`
Name string `json:"name"`
Info struct {
HolidayListHref string `json:"holidayList_href"`
} `json:"_info"`
} `json:"holidayList"`
MondayStartTime string `json:"mondayStartTime"`
MondayEndTime string `json:"mondayEndTime"`
TuesdayStartTime string `json:"tuesdayStartTime"`
TuesdayEndTime string `json:"tuesdayEndTime"`
WednesdayStartTime string `json:"wednesdayStartTime"`
WednesdayEndTime string `json:"wednesdayEndTime"`
ThursdayStartTime string `json:"thursdayStartTime"`
ThursdayEndTime string `json:"thursdayEndTime"`
FridayStartTime string `json:"fridayStartTime"`
FridayEndTime string `json:"fridayEndTime"`
Info struct {
LastUpdated string `json:"lastUpdated"`
UpdatedBy string `json:"updatedBy"`
} `json:"_info"`
}
type ScheduleEntry struct {
ID int `json:"id"`
ObjectID int `json:"objectId"`
Name string `json:"name"`
Member struct {
ID int `json:"id"`
Identifier string `json:"identifier"`
Name string `json:"name"`
Info struct {
MemberHref string `json:"member_href"`
} `json:"_info"`
} `json:"member,omitempty"`
DateStart string `json:"dateStart,omitempty"`
DateEnd string `json:"dateEnd,omitempty"`
Reminder struct {
ID int `json:"id"`
Name string `json:"name"`
} `json:"reminder,omitempty"`
Status struct {
ID int `json:"id"`
Name string `json:"name"`
Info struct {
StatusHref string `json:"status_href"`
} `json:"_info"`
} `json:"status,omitempty"`
Type struct {
ID int `json:"id"`
Identifier string `json:"identifier"`
Info struct {
TypeHref string `json:"type_href"`
} `json:"_info"`
} `json:"type"`
DoneFlag bool `json:"doneFlag"`
AcknowledgedFlag bool `json:"acknowledgedFlag"`
OwnerFlag bool `json:"ownerFlag"`
MeetingFlag bool `json:"meetingFlag"`
MobileGUID string `json:"mobileGuid"`
Hours float64 `json:"hours"`
Info struct {
UpdatedBy string `json:"updatedBy"`
ObjectMobileGUID string `json:"objectMobileGuid"`
} `json:"_info"`
}
//GetCalendars returns a list of global connectwise calendars - not used for member calendars
func (cw *Site) GetCalendars() (*[]Calendar, error) {
req := cw.NewRequest("/schedule/calendars", "GET", nil)
err := req.Do()
if err != nil {
return nil, fmt.Errorf("request failed for %s: %s", req.RestAction, err)
}
calendar := &[]Calendar{}
err = json.Unmarshal(req.Body, calendar)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal body into struct: %s", err)
}
return calendar, nil
}
//ScheduleEntryCount returns the number of companies in ConnectWise
func (cw *Site) ScheduleEntryCount() (int, error) {
req := cw.NewRequest("/schedule/entries/count", "GET", nil)
err := req.Do()
if err != nil {
return 0, fmt.Errorf("request failed for %s: %s", req.RestAction, err)
}
count := &Count{}
err = json.Unmarshal(req.Body, count)
if err != nil {
return 0, fmt.Errorf("failed to unmarshal body into struct: %s", err)
}
return count.Count, nil
}
//GetScheduleEntriesOnDay expects a date in the format of "YYYY-MM-DD" and returns a pointer to a slice of ScheduleEntries on that day
func (cw *Site) GetScheduleEntriesOnDay(day string) (*[]ScheduleEntry, error) {
req := cw.NewRequest("/schedule/entries", "GET", nil)
// req.URLValues.Add("orderBy", "dateStart desc")
req.URLValues.Add("conditions", "datestart=2036-02-28T18:18:00Z")
err := req.Do()
if err != nil {
return nil, fmt.Errorf("request failed for %s: %s", req.RestAction, err)
}
scheduleEntry := &[]ScheduleEntry{}
err = json.Unmarshal(req.Body, scheduleEntry)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal body into struct: %s", err)
}
return scheduleEntry, nil
}

View File

@ -21,6 +21,27 @@ type Callback struct {
} `json:"_info"`
}
//GetMembers returns a slice of Member structs containing all the members (users) of connectwise
func (cw *Site) GetSystemMembers() error {
req := cw.NewRequest("/system/members", "GET", nil)
err := req.Do()
if err != nil {
return fmt.Errorf("request failed for %s: %s", req.RestAction, err)
}
fmt.Println("test")
fmt.Println(req.Body)
/*
callbacks := &[]Callback{}
err = json.Unmarshal(req.Body, callbacks)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal body into struct: %s", err)
}
*/
return nil
}
//GetCallbacks returns a slice of Callback structs containing all the callbacks currently registered with ConnectWise
func (cw *Site) GetCallbacks() (*[]Callback, error) {
req := cw.NewRequest("/system/callbacks", "GET", nil)