|
- package main
-
- import (
- "encoding/json"
- "log"
- )
-
- type crmdContact struct {
- crmdEntityBase
- SolutationName string `json:"solutationName,omitempty"`
- FirstName string `json:"firstName,omitempty"`
- LastName string `json:"lastName,omitempty"`
- AccountID string `json:"accountID,omitempty"`
- Title string `json:"title,omitempty"`
- EmailAddress string `json:"emailAddress,omitempty"`
- PhoneNumber string `json:"phoneNumber,omitempty"`
- DoNotCall bool `json:"doNotCall,omitempty"`
- AddressStreet string `json:"addressStreet,omitempty"`
- AddressCity string `json:"addressCity,omitempty"`
- AddressState string `json:"addressState,omitempty"`
- AddressCountry string `json:"addressCountry,omitempty"`
- AddresPostalCode string `json:"addressPostalcode,omitempty"`
- AccountType string `json:"accountType,omitempty"`
- EmailAddressData []struct {
- EmailAddress string `json:"emailAddress,omitempty"`
- Lower string `json:"lower,omitempty"`
- Primary bool `json:"primary,omitempty"`
- OptOut bool `json:"optOut,omitempty"`
- Invalid bool `json:"invalid,omitempty"`
- } `json:"emailAddressData,omitempty"`
- PhoneNumberData []struct {
- PhoneNumber string `json:"phoneNumber,omitempty"`
- Primary bool `json:"primary,omitempty"`
- Type string `json:"type,omitempty"`
- } `json:"phoneNumberData,omitempty"`
- AccountName string `json:"accountName,omitempty"`
- AccountIDs []string `json:"accountsIds,omitempty"`
- AccountNames map[string]string `json:"accountsNames,omitempty"`
- AccountsColumns map[string]struct {
- Role string `json:"role,omitempty"`
- } `json:"accountsColumns,omitempty"`
- CompainID string `json:"campainId,omitempty"`
- CampainName string `json:"campainName,omitempty"`
-
- PortalUserID string `json:"portalUserId,omitempty"`
- PortalUserName string `json:"portalUserName,omitempty"`
- OriginalLeadID string `json:"originalLeadId,omitempty"`
- OriginalLeadName string `json:"originalLeadName,omitempty"`
- IsFollowed bool `json:"isFollowed,omitempty"`
- FollwersIDs []string `json:"followersIds,omitempty"`
- FollowersNames map[string]string `json:"followersNames,omitempty"`
- }
-
- type crmdConvert struct {
- ID string `json:"id,omitempty"`
- Records struct {
- Contact crmdContact `json:"Contact,omitempty"`
- } `json:"records,omitempty"`
- }
-
- func (m *crmdContact) convertFromLead(leadID string) (err error) {
- url := CRMConfig.apiConvertLeadURL()
- lead, err := crmGetLead(leadID)
- if err != nil {
- log.Println(err)
- return
- }
-
- convert := crmdConvert{}
- convert.ID = leadID
- convert.Records.Contact.copyFromLead(lead)
-
- jsonB, err := json.Marshal(convert)
- if err != nil {
- return
- }
-
- jsonStr, err := postRAW(jsonB, url, crmBuildCommonAPIHeader())
- //log.Println(jsonStr)
- if err != nil {
- return
- }
-
- entity, err := crmJSON2Entity("Lead", jsonStr)
- if err != nil {
- return
- }
- convertedLead := entity.(crmdLead)
- entity, err = crmGetEntity("Contact", convertedLead.CreatedContactID)
- if err != nil {
- return
- }
- *m = entity.(crmdContact)
- return
- }
-
- func (m *crmdContact) copyFromLead(lead crmdLead) {
- m.SolutationName = lead.SalutationName
- m.FirstName = lead.FirstName
- m.LastName = lead.LastName
- m.EmailAddressData = lead.EmailAddressData
- m.PhoneNumberData = lead.PhoneNumberData
- }
|