Add Contact, getbyID and NewContact
This commit is contained in:
		@@ -255,6 +255,89 @@ type CompanySite struct {
 | 
				
			|||||||
	} `json:"calendar,omitempty"`
 | 
						} `json:"calendar,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Contact struct {
 | 
				
			||||||
 | 
						ID        int    `json:"id"`
 | 
				
			||||||
 | 
						FirstName string `json:"firstName"`
 | 
				
			||||||
 | 
						LastName  string `json:"lastName,omitempty"`
 | 
				
			||||||
 | 
						Company   struct {
 | 
				
			||||||
 | 
							ID         int    `json:"id"`
 | 
				
			||||||
 | 
							Identifier string `json:"identifier"`
 | 
				
			||||||
 | 
							Name       string `json:"name"`
 | 
				
			||||||
 | 
							Info       struct {
 | 
				
			||||||
 | 
								CompanyHref string `json:"company_href"`
 | 
				
			||||||
 | 
								MobileGUID  string `json:"mobileGuid"`
 | 
				
			||||||
 | 
							} `json:"_info"`
 | 
				
			||||||
 | 
						} `json:"company"`
 | 
				
			||||||
 | 
						Site struct {
 | 
				
			||||||
 | 
							ID   int    `json:"id"`
 | 
				
			||||||
 | 
							Name string `json:"name"`
 | 
				
			||||||
 | 
							Info struct {
 | 
				
			||||||
 | 
								SiteHref   string `json:"site_href"`
 | 
				
			||||||
 | 
								MobileGUID string `json:"mobileGuid"`
 | 
				
			||||||
 | 
							} `json:"_info"`
 | 
				
			||||||
 | 
						} `json:"site,omitempty"`
 | 
				
			||||||
 | 
						InactiveFlag           bool   `json:"inactiveFlag"`
 | 
				
			||||||
 | 
						Title                  string `json:"title,omitempty"`
 | 
				
			||||||
 | 
						MarriedFlag            bool   `json:"marriedFlag"`
 | 
				
			||||||
 | 
						ChildrenFlag           bool   `json:"childrenFlag"`
 | 
				
			||||||
 | 
						PortalSecurityLevel    int    `json:"portalSecurityLevel,omitempty"`
 | 
				
			||||||
 | 
						DisablePortalLoginFlag bool   `json:"disablePortalLoginFlag,omitempty"`
 | 
				
			||||||
 | 
						UnsubscribeFlag        bool   `json:"unsubscribeFlag"`
 | 
				
			||||||
 | 
						MobileGUID             string `json:"mobileGuid"`
 | 
				
			||||||
 | 
						DefaultBillingFlag     bool   `json:"defaultBillingFlag"`
 | 
				
			||||||
 | 
						DefaultFlag            bool   `json:"defaultFlag"`
 | 
				
			||||||
 | 
						CommunicationItems     []struct {
 | 
				
			||||||
 | 
							ID   int `json:"id"`
 | 
				
			||||||
 | 
							Type struct {
 | 
				
			||||||
 | 
								ID   int    `json:"id"`
 | 
				
			||||||
 | 
								Name string `json:"name"`
 | 
				
			||||||
 | 
							} `json:"type"`
 | 
				
			||||||
 | 
							Value             string `json:"value"`
 | 
				
			||||||
 | 
							Extension         string `json:"extension,omitempty"`
 | 
				
			||||||
 | 
							DefaultFlag       bool   `json:"defaultFlag"`
 | 
				
			||||||
 | 
							CommunicationType string `json:"communicationType"`
 | 
				
			||||||
 | 
						} `json:"communicationItems,omitempty"`
 | 
				
			||||||
 | 
						TypeIds []interface{} `json:"typeIds"`
 | 
				
			||||||
 | 
						Info    struct {
 | 
				
			||||||
 | 
							LastUpdated        string `json:"lastUpdated"`
 | 
				
			||||||
 | 
							UpdatedBy          string `json:"updatedBy"`
 | 
				
			||||||
 | 
							CommunicationsHref string `json:"communications_href"`
 | 
				
			||||||
 | 
							NotesHref          string `json:"notes_href"`
 | 
				
			||||||
 | 
							TracksHref         string `json:"tracks_href"`
 | 
				
			||||||
 | 
							PortalSecurityHref string `json:"portalSecurity_href"`
 | 
				
			||||||
 | 
							ActivitiesHref     string `json:"activities_href"`
 | 
				
			||||||
 | 
							DocumentsHref      string `json:"documents_href"`
 | 
				
			||||||
 | 
							ConfigurationsHref string `json:"configurations_href"`
 | 
				
			||||||
 | 
							TicketsHref        string `json:"tickets_href"`
 | 
				
			||||||
 | 
							OpportunitiesHref  string `json:"opportunities_href"`
 | 
				
			||||||
 | 
							ProjectsHref       string `json:"projects_href"`
 | 
				
			||||||
 | 
							ImageHref          string `json:"image_href"`
 | 
				
			||||||
 | 
						} `json:"_info"`
 | 
				
			||||||
 | 
						AddressLine1 string `json:"addressLine1,omitempty"`
 | 
				
			||||||
 | 
						City         string `json:"city,omitempty"`
 | 
				
			||||||
 | 
						State        string `json:"state,omitempty"`
 | 
				
			||||||
 | 
						Zip          string `json:"zip,omitempty"`
 | 
				
			||||||
 | 
						Department   struct {
 | 
				
			||||||
 | 
							ID   int    `json:"id"`
 | 
				
			||||||
 | 
							Name string `json:"name"`
 | 
				
			||||||
 | 
							Info struct {
 | 
				
			||||||
 | 
								DepartmentHref string `json:"department_href"`
 | 
				
			||||||
 | 
							} `json:"_info"`
 | 
				
			||||||
 | 
						} `json:"department,omitempty"`
 | 
				
			||||||
 | 
						RelationshipOverride string `json:"relationshipOverride,omitempty"`
 | 
				
			||||||
 | 
						School               string `json:"school,omitempty"`
 | 
				
			||||||
 | 
						NickName             string `json:"nickName,omitempty"`
 | 
				
			||||||
 | 
						SignificantOther     string `json:"significantOther,omitempty"`
 | 
				
			||||||
 | 
						Relationship         struct {
 | 
				
			||||||
 | 
							ID   int    `json:"id"`
 | 
				
			||||||
 | 
							Name string `json:"name"`
 | 
				
			||||||
 | 
							Info struct {
 | 
				
			||||||
 | 
								RelationshipHref string `json:"relationship_href"`
 | 
				
			||||||
 | 
							} `json:"_info"`
 | 
				
			||||||
 | 
						} `json:"relationship,omitempty"`
 | 
				
			||||||
 | 
						Gender string `json:"gender,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//CompanyCount returns the number of companies in ConnectWise
 | 
					//CompanyCount returns the number of companies in ConnectWise
 | 
				
			||||||
func (cw *Site) CompanyCount() (int, error) {
 | 
					func (cw *Site) CompanyCount() (int, error) {
 | 
				
			||||||
	req := cw.NewRequest("/company/companies/count", "GET", nil)
 | 
						req := cw.NewRequest("/company/companies/count", "GET", nil)
 | 
				
			||||||
@@ -387,3 +470,40 @@ func (cw *Site) GetCompanySites(companyID int) (*[]CompanySite, error) {
 | 
				
			|||||||
	return companySite, nil
 | 
						return companySite, nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (cw *Site) GetContactByID(contactID int) (*Contact, error) {
 | 
				
			||||||
 | 
						req := cw.NewRequest(fmt.Sprintf("/company/contacts/%d", contactID), "GET", nil)
 | 
				
			||||||
 | 
						err := req.Do()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("request failed for %s: %s", req.RestAction, err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						contact := &Contact{}
 | 
				
			||||||
 | 
						err = json.Unmarshal(req.Body, contact)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("failed to unmarshal body into struct: %s", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return contact, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (cw *Site) NewContact(contact *Contact) (*Contact, error) {
 | 
				
			||||||
 | 
						jsonContact, err := json.Marshal(contact)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("could not marshal json data: %s", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						req := cw.NewRequest("/company/contacts", "POST", jsonContact)
 | 
				
			||||||
 | 
						err = req.Do()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("request failed for %s: %s", req.RestAction, err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						contact = &Contact{}
 | 
				
			||||||
 | 
						err = json.Unmarshal(req.Body, contact)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("failed to unmarshal body into struct: %s", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return contact, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user