Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

104 Zeilen
3.3KB

  1. package main
  2. import (
  3. "encoding/json"
  4. "log"
  5. )
  6. type crmdContact struct {
  7. crmdEntityBase
  8. SalutationName string `json:"salutationName,omitempty"`
  9. FirstName string `json:"firstName,omitempty"`
  10. LastName string `json:"lastName,omitempty"`
  11. AccountID string `json:"accountID,omitempty"`
  12. Title string `json:"title,omitempty"`
  13. EmailAddress string `json:"emailAddress,omitempty"`
  14. PhoneNumber string `json:"phoneNumber,omitempty"`
  15. DoNotCall bool `json:"doNotCall,omitempty"`
  16. AddressStreet string `json:"addressStreet,omitempty"`
  17. AddressCity string `json:"addressCity,omitempty"`
  18. AddressState string `json:"addressState,omitempty"`
  19. AddressCountry string `json:"addressCountry,omitempty"`
  20. AddresPostalCode string `json:"addressPostalcode,omitempty"`
  21. AccountType string `json:"accountType,omitempty"`
  22. EmailAddressData []struct {
  23. EmailAddress string `json:"emailAddress,omitempty"`
  24. Lower string `json:"lower,omitempty"`
  25. Primary bool `json:"primary,omitempty"`
  26. OptOut bool `json:"optOut,omitempty"`
  27. Invalid bool `json:"invalid,omitempty"`
  28. } `json:"emailAddressData,omitempty"`
  29. PhoneNumberData []struct {
  30. PhoneNumber string `json:"phoneNumber,omitempty"`
  31. Primary bool `json:"primary,omitempty"`
  32. Type string `json:"type,omitempty"`
  33. } `json:"phoneNumberData,omitempty"`
  34. AccountName string `json:"accountName,omitempty"`
  35. AccountIDs []string `json:"accountsIds,omitempty"`
  36. AccountNames map[string]string `json:"accountsNames,omitempty"`
  37. AccountsColumns map[string]struct {
  38. Role string `json:"role,omitempty"`
  39. } `json:"accountsColumns,omitempty"`
  40. CampaignID string `json:"campaignId,omitempty"`
  41. CampaignName string `json:"campaignName,omitempty"`
  42. PortalUserID string `json:"portalUserId,omitempty"`
  43. PortalUserName string `json:"portalUserName,omitempty"`
  44. OriginalLeadID string `json:"originalLeadId,omitempty"`
  45. OriginalLeadName string `json:"originalLeadName,omitempty"`
  46. IsFollowed bool `json:"isFollowed,omitempty"`
  47. FollwersIDs []string `json:"followersIds,omitempty"`
  48. FollowersNames map[string]string `json:"followersNames,omitempty"`
  49. }
  50. type crmdConvert struct {
  51. ID string `json:"id,omitempty"`
  52. Records struct {
  53. Contact crmdContact `json:"Contact,omitempty"`
  54. } `json:"records,omitempty"`
  55. }
  56. func (m *crmdContact) convertFromLead(leadID string) (err error) {
  57. url := CRMConfig.apiConvertLeadURL()
  58. lead, err := crmGetLead(leadID)
  59. if err != nil {
  60. log.Println(err)
  61. return
  62. }
  63. convert := crmdConvert{}
  64. convert.ID = leadID
  65. convert.Records.Contact.copyFromLead(lead)
  66. jsonB, err := json.Marshal(convert)
  67. if err != nil {
  68. return
  69. }
  70. jsonStr, err := postRAW(jsonB, url, crmBuildCommonAPIHeader())
  71. //log.Println(jsonStr)
  72. if err != nil {
  73. return
  74. }
  75. entity, err := crmJSON2Entity("Lead", jsonStr)
  76. if err != nil {
  77. return
  78. }
  79. convertedLead := entity.(crmdLead)
  80. entity, err = crmGetEntity("Contact", convertedLead.CreatedContactID)
  81. if err != nil {
  82. return
  83. }
  84. *m = entity.(crmdContact)
  85. return
  86. }
  87. func (m *crmdContact) copyFromLead(lead crmdLead) {
  88. m.SalutationName = lead.SalutationName
  89. m.FirstName = lead.FirstName
  90. m.LastName = lead.LastName
  91. m.EmailAddressData = lead.EmailAddressData
  92. m.PhoneNumberData = lead.PhoneNumberData
  93. }