You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

139 satır
3.6KB

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "strings"
  6. "time"
  7. )
  8. type crmdMeetingAttendance struct {
  9. Status string `json:"status,omitempty"`
  10. }
  11. type crmdMeeting struct {
  12. crmdEntityBase
  13. Status string `json:"status,omitempty"`
  14. DateStart string `json:"dateStart,omitempty"`
  15. DateEnd string `json:"dateEnd,omitempty"`
  16. Duration int `json:"duration,omitempty"`
  17. Reminders []struct {
  18. Seconds int `json:"seconds,omitempty"`
  19. Type string `json:"type,omitempty"`
  20. } `json:"reminders,omitempty"`
  21. Venue string `json:"venue,omitempty"`
  22. ParentID string `json:"parentId,omitempty"`
  23. ParentType string `json:"parentType,omitempty"`
  24. ParentName string `json:"parentName,omitempty"`
  25. AccountID string `json:"accountId,omitempty"`
  26. AccountName string `json:"accountName,omitempty"`
  27. //users, attendance
  28. UsersIds []string `json:"usersIds,omitempty"`
  29. UsersNames map[string]string `json:"usersNames,omitempty"`
  30. UsersColumns map[string]crmdMeetingAttendance `json:"usersColumns"`
  31. //contacts, attendance
  32. ContactsIds []string `json:"contactsIds,omitempty"`
  33. ContactsNames map[string]string `json:"contactsNames,omitempty"`
  34. ContactsColumns map[string]crmdMeetingAttendance `json:"contactsColumns,omitempty"`
  35. //lead, attendance
  36. LeadsIds []string `json:"leadsIds,omitempty"`
  37. LeadsNames map[string]string `json:"leadsNames,omitempty"`
  38. LeadsColumns map[string]crmdMeetingAttendance `json:"leadsColumns"`
  39. //cover
  40. CoverID string `json:"coverId,omitempty"`
  41. CoverName string `json:"coverName,omitempty"`
  42. //for web spa operation
  43. spaFlashTitle string
  44. spaFlashMsg []string
  45. }
  46. func (m crmdMeeting) save() (newMeeting crmdMeeting, err error) {
  47. jsonB, err := json.Marshal(m)
  48. if err != nil {
  49. return
  50. }
  51. if m.ID == "" { //create
  52. entity, e := crmCreateEntity("Meeting", jsonB)
  53. if e != nil {
  54. err = e
  55. return
  56. }
  57. newMeeting = entity.(crmdMeeting)
  58. } else { //patch
  59. entity, e := crmUpdateEntity("Meeting", m.ID, jsonB)
  60. if e != nil {
  61. err = e
  62. return
  63. }
  64. newMeeting = entity.(crmdMeeting)
  65. }
  66. return
  67. }
  68. func (m *crmdMeeting) clearSpaErr(e string) {
  69. m.spaFlashMsg = []string{}
  70. }
  71. func (m *crmdMeeting) addFlashMsg(e string) {
  72. m.spaFlashMsg = append(m.spaFlashMsg, e)
  73. }
  74. func (m crmdMeeting) FlashMessage() string {
  75. v := strings.Join(m.spaFlashMsg, "<br>")
  76. return v
  77. }
  78. func (m crmdMeeting) FlashTitle() string {
  79. return m.spaFlashTitle
  80. }
  81. func (m *crmdMeeting) setFlashTitle(val string) string {
  82. m.spaFlashTitle = val
  83. return m.spaFlashTitle
  84. }
  85. func (m crmdMeeting) hasError() bool {
  86. return len(m.spaFlashMsg) > 0
  87. }
  88. func (m crmdMeeting) CoverCacheURL() string {
  89. if m.CoverID != "" {
  90. u := CRMConfig.CacheSiteURL + "?a=" + m.CoverID
  91. return buildSignatureAppend2Url(u, IntraAPIConfig.CRMSecrete)
  92. }
  93. return GlobalPath.ThisSiteURL + "spa/assets/img/meetingdefault.jpg"
  94. }
  95. func crmGetMeeting(id string) (ret crmdMeeting, err error) {
  96. entity, err := crmGetEntity("Meeting", id)
  97. if err != nil {
  98. return
  99. }
  100. ret = entity.(crmdMeeting)
  101. return
  102. }
  103. func (m crmdMeeting) StartDate() string {
  104. t, _ := time.Parse(getCrmTimeLayout(), m.DateStart)
  105. AEST, _ := time.LoadLocation("Australia/Sydney")
  106. return t.In(AEST).Format("02 January, 2006")
  107. }
  108. func (m crmdMeeting) StartHour() string {
  109. AEST, _ := time.LoadLocation("Australia/Sydney")
  110. t, _ := time.Parse(getCrmTimeLayout(), m.DateStart)
  111. return t.In(AEST).Format("15:04")
  112. }
  113. func (m crmdMeeting) DurationHour() string {
  114. hour := m.Duration / 3600
  115. minute := (m.Duration % 3600) / 60
  116. return fmt.Sprintf("%02d:%02d", hour, minute)
  117. }