Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

127 lines
3.3KB

  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. spaErrMsg []string
  44. }
  45. func (m crmdMeeting) save() (newMeeting crmdMeeting, err error) {
  46. jsonB, err := json.Marshal(m)
  47. if err != nil {
  48. return
  49. }
  50. if m.ID == "" { //create
  51. entity, e := crmCreateEntity("Meeting", jsonB)
  52. if e != nil {
  53. err = e
  54. return
  55. }
  56. newMeeting = entity.(crmdMeeting)
  57. } else { //patch
  58. entity, e := crmUpdateEntity("Meeting", m.ID, jsonB)
  59. if e != nil {
  60. err = e
  61. return
  62. }
  63. newMeeting = entity.(crmdMeeting)
  64. }
  65. return
  66. }
  67. func (m *crmdMeeting) clearSpaErr(e string) {
  68. m.spaErrMsg = []string{}
  69. }
  70. func (m *crmdMeeting) addSpaErr(e string) {
  71. m.spaErrMsg = append(m.spaErrMsg, e)
  72. }
  73. func (m crmdMeeting) ErrorMessage() string {
  74. v := strings.Join(m.spaErrMsg, "<br>")
  75. return v
  76. }
  77. func (m crmdMeeting) hasError() bool {
  78. return len(m.spaErrMsg) > 0
  79. }
  80. func (m crmdMeeting) CoverCacheURL() string {
  81. if m.CoverID != "" {
  82. u := CRMConfig.CacheSiteURL + "?a=" + m.CoverID
  83. return buildSignatureAppend2Url(u, IntraAPIConfig.CRMSecrete)
  84. }
  85. return GlobalPath.ThisSiteURL + "spa/assets/img/meetingdefault.jpg"
  86. }
  87. func crmGetMeeting(id string) (ret crmdMeeting, err error) {
  88. entity, err := crmGetEntity("Meeting", id)
  89. if err != nil {
  90. return
  91. }
  92. ret = entity.(crmdMeeting)
  93. return
  94. }
  95. func (m crmdMeeting) StartDate() string {
  96. t, _ := time.Parse(getCrmTimeLayout(), m.DateStart)
  97. return t.Format("02 January, 2006")
  98. }
  99. func (m crmdMeeting) StartHour() string {
  100. t, _ := time.Parse(getCrmTimeLayout(), m.DateStart)
  101. return t.Format("15:04")
  102. }
  103. func (m crmdMeeting) DurationHour() string {
  104. hour := m.Duration / 3600
  105. minute := (m.Duration % 3600) / 60
  106. return fmt.Sprintf("%02d:%02d", hour, minute)
  107. }