package main import ( "encoding/json" "strings" "time" ) type crmdMeetingAttendance struct { Status string `json:"status,omitempty"` } type crmdMeeting struct { crmdEntityBase Status string `json:"status,omitempty"` DateStart string `json:"dateStart,omitempty"` DateEnd string `json:"dateEnd,omitempty"` Duration int `json:"duration,omitempty"` Reminders []struct { Seconds int `json:"seconds,omitempty"` Type string `json:"type,omitempty"` } `json:"reminders,omitempty"` Venue string `json:"venue,omitempty"` ParentID string `json:"parentId,omitempty"` ParentType string `json:"parentType,omitempty"` ParentName string `json:"parentName,omitempty"` AccountID string `json:"accountId,omitempty"` AccountName string `json:"accountName,omitempty"` //users, attendance UsersIds []string `json:"usersIds,omitempty"` UsersNames map[string]string `json:"usersNames,omitempty"` UsersColumns map[string]crmdMeetingAttendance `json:"usersColumns"` //contacts, attendance ContactsIds []string `json:"contactsIds,omitempty"` ContactsNames map[string]string `json:"contactsNames,omitempty"` ContactsColumns map[string]crmdMeetingAttendance `json:"contactsColumns,omitempty"` //lead, attendance LeadsIds []string `json:"leadsIds,omitempty"` LeadsNames map[string]string `json:"leadsNames,omitempty"` LeadsColumns map[string]crmdMeetingAttendance `json:"leadsColumns"` //cover CoverID string `json:"coverId,omitempty"` CoverName string `json:"coverName,omitempty"` //for web spa operation spaErrMsg []string } func (m crmdMeeting) save() (newMeeting crmdMeeting, err error) { jsonB, err := json.Marshal(m) if err != nil { return } if m.ID == "" { //create entity, e := crmCreateEntity("Meeting", jsonB) if e != nil { err = e return } newMeeting = entity.(crmdMeeting) } else { //patch entity, e := crmUpdateEntity("Meeting", m.ID, jsonB) if e != nil { err = e return } newMeeting = entity.(crmdMeeting) } return } func (m *crmdMeeting) clearSpaErr(e string) { m.spaErrMsg = []string{} } func (m *crmdMeeting) addSpaErr(e string) { m.spaErrMsg = append(m.spaErrMsg, e) } func (m crmdMeeting) ErrorMessage() string { v := strings.Join(m.spaErrMsg, "
") return v } func (m crmdMeeting) hasError() bool { return len(m.spaErrMsg) > 0 } func (m crmdMeeting) CoverCacheURL() string { if m.CoverID != "" { u := CRMConfig.CacheSiteURL + "?a=" + m.CoverID return buildSignatureAppend2Url(u, IntraAPIConfig.CRMSecrete) } return GlobalPath.ThisSiteURL + "spa/assets/img/meetingdefault.jpg" } func crmGetMeeting(id string) (ret crmdMeeting, err error) { entity, err := crmGetEntity("Meeting", id) if err != nil { return } ret = entity.(crmdMeeting) return } func (m crmdMeeting) StartDate() string { t, _ := time.Parse(getCrmTimeLayout(), m.DateStart) return t.Format("02 January, 2006") } func (m crmdMeeting) StartHour() string { t, _ := time.Parse(getCrmTimeLayout(), m.DateStart) return t.Format("15:04") } func (m crmdMeeting) DurationHour() string { return "12:30" }