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

124 lines
3.2KB

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