@blazeo.com/calendar-client 1.0.35 → 1.0.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +23 -3
- package/dist/index.js +239 -112
- package/dist/index.mjs +216 -91
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -131,9 +131,25 @@ export const EventModel: {
|
|
|
131
131
|
getCustomData(calendarId: string, eventId?: string): Promise<unknown>;
|
|
132
132
|
setReminder(eventId: string): Promise<unknown>;
|
|
133
133
|
setAttendeeStatus(eventId: string, attendeeStatus: number | string): Promise<unknown>;
|
|
134
|
+
setEventStatus(eventId: string, status: number | string): Promise<unknown>;
|
|
134
135
|
create(snapshot: EventSnapshot | object, options?: { env?: object }): unknown;
|
|
135
136
|
};
|
|
136
137
|
|
|
138
|
+
export type ExternalEventSnapshot = {
|
|
139
|
+
title?: string | null;
|
|
140
|
+
startDate?: string;
|
|
141
|
+
endDate?: string;
|
|
142
|
+
startHour?: number;
|
|
143
|
+
startMinute?: number;
|
|
144
|
+
endHour?: number;
|
|
145
|
+
endMinute?: number;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
export const ExternalEventModel: {
|
|
149
|
+
getByParticipant(participantId: string, opts?: { offset?: number }): Promise<unknown[]>;
|
|
150
|
+
create(snapshot: ExternalEventSnapshot | object, options?: { env?: object }): unknown;
|
|
151
|
+
};
|
|
152
|
+
|
|
137
153
|
export const AvailabilityModel: { create(snapshot: object, options?: { env?: object }): unknown };
|
|
138
154
|
export const AvailabilityDetailModel: { create(snapshot: object, options?: { env?: object }): unknown };
|
|
139
155
|
export const CalendarParticipantModel: {
|
|
@@ -272,15 +288,17 @@ export const LeadModel: {
|
|
|
272
288
|
data?: { userId?: string; columns?: string[]; isDefault?: boolean };
|
|
273
289
|
message?: string;
|
|
274
290
|
}>;
|
|
291
|
+
/** Requires companyKey and at least one of email or phone. */
|
|
275
292
|
createLead(payload: {
|
|
276
|
-
email: string;
|
|
277
293
|
companyKey: string;
|
|
278
|
-
|
|
294
|
+
email?: string;
|
|
279
295
|
phone?: string;
|
|
296
|
+
name?: string;
|
|
280
297
|
source?: string;
|
|
281
298
|
leadType?: 'sales' | 'service' | 'others' | number;
|
|
282
299
|
referrerLink?: string;
|
|
283
|
-
|
|
300
|
+
description?: string;
|
|
301
|
+
}): Promise<{ status: string; data?: unknown; message?: string } | null>;
|
|
284
302
|
updateLead(payload: {
|
|
285
303
|
leadId: string;
|
|
286
304
|
email?: string;
|
|
@@ -290,6 +308,7 @@ export const LeadModel: {
|
|
|
290
308
|
source?: string;
|
|
291
309
|
leadType?: 'sales' | 'service' | 'others' | number;
|
|
292
310
|
referrerLink?: string;
|
|
311
|
+
description?: string;
|
|
293
312
|
}): Promise<unknown>;
|
|
294
313
|
deleteLead(leadId: string): Promise<{ status: string; data?: unknown; message?: string }>;
|
|
295
314
|
requestExport(
|
|
@@ -450,6 +469,7 @@ export function createRootStore(initialState?: object): unknown;
|
|
|
450
469
|
export const Unit: Record<string, number>;
|
|
451
470
|
export const AssignmentMethod: Record<string, number>;
|
|
452
471
|
export const AttendeeStatus: Record<string, number>;
|
|
472
|
+
export const EventStatus: Record<string, number>;
|
|
453
473
|
export const RecurringFrequency: Record<string, number>;
|
|
454
474
|
export const DayOfWeek: Record<string, number>;
|
|
455
475
|
export const LocationType: Record<string, number>;
|
package/dist/index.js
CHANGED
|
@@ -39,6 +39,8 @@ __export(index_exports, {
|
|
|
39
39
|
EmailProvider: () => EmailProvider,
|
|
40
40
|
EventModel: () => Event_default,
|
|
41
41
|
EventSource: () => EventSource,
|
|
42
|
+
EventStatus: () => EventStatus,
|
|
43
|
+
ExternalEventModel: () => ExternalEvent_default,
|
|
42
44
|
FlowModel: () => Flow_default,
|
|
43
45
|
LeadModel: () => Lead_default,
|
|
44
46
|
LocationType: () => LocationType,
|
|
@@ -338,6 +340,12 @@ var AttendeeStatus = {
|
|
|
338
340
|
NeedsAction: 4,
|
|
339
341
|
Canceled: 5
|
|
340
342
|
};
|
|
343
|
+
var EventStatus = {
|
|
344
|
+
Scheduled: 1,
|
|
345
|
+
ReScheduled: 2,
|
|
346
|
+
Completed: 3,
|
|
347
|
+
Canceled: 4
|
|
348
|
+
};
|
|
341
349
|
var RecurringFrequency = {
|
|
342
350
|
None: 0,
|
|
343
351
|
Daily: 1,
|
|
@@ -488,6 +496,7 @@ var EventModel = import_mobx_state_tree4.types.model("Event", {
|
|
|
488
496
|
flowId: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
|
|
489
497
|
flowPath: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
|
|
490
498
|
attendeeStatus: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.number, AttendeeStatus.Tentative),
|
|
499
|
+
status: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.number), null),
|
|
491
500
|
rescheduleLink: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
|
|
492
501
|
cancelLink: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
|
|
493
502
|
timeZone: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
|
|
@@ -626,6 +635,18 @@ var EventModel = import_mobx_state_tree4.types.model("Event", {
|
|
|
626
635
|
async setAttendeeStatus(status) {
|
|
627
636
|
const statusName = typeof status === "number" ? Object.keys(AttendeeStatus).find((k) => AttendeeStatus[k] === status) ?? "None" : status;
|
|
628
637
|
return reqGet(`/event/${encodeURIComponent(self.eventId)}/${encodeURIComponent(statusName)}`);
|
|
638
|
+
},
|
|
639
|
+
/** GET /event/status/update – update event lifecycle status */
|
|
640
|
+
async setEventStatus(status) {
|
|
641
|
+
const statusValue = typeof status === "number" ? status : EventStatus[status] ?? status;
|
|
642
|
+
const res = await reqGet("/event/status/update", {
|
|
643
|
+
event_id: self.eventId,
|
|
644
|
+
status: statusValue
|
|
645
|
+
});
|
|
646
|
+
if (res.status === "success" && res.data) {
|
|
647
|
+
(0, import_mobx_state_tree4.applySnapshot)(self, { ...mapEventFromApi(res.data), eventId: self.eventId });
|
|
648
|
+
}
|
|
649
|
+
return res;
|
|
629
650
|
}
|
|
630
651
|
};
|
|
631
652
|
});
|
|
@@ -658,6 +679,7 @@ function mapEventFromApi(d) {
|
|
|
658
679
|
flowId: pick2("flowId", "FlowId", "flow_id"),
|
|
659
680
|
flowPath: pick2("flowPath", "FlowPath", "flow_path"),
|
|
660
681
|
attendeeStatus: n(pick2("attendeeStatus", "AttendeeStatus", "attendee_status")),
|
|
682
|
+
status: n(pick2("status", "Status")),
|
|
661
683
|
eventSource: n(pick2("eventSource", "EventSource", "event_source")),
|
|
662
684
|
rescheduleLink: pick2("rescheduleLink", "RescheduleLink", "reschedule_link"),
|
|
663
685
|
cancelLink: pick2("cancelLink", "CancelLink", "cancel_link"),
|
|
@@ -757,6 +779,7 @@ async function getByFiltersInternal(path, companyKey, opts = {}, dateRange = nul
|
|
|
757
779
|
if (opts.title != null && opts.title !== "") query.title = opts.title;
|
|
758
780
|
if (opts.search != null && opts.search !== "") query.search = opts.search;
|
|
759
781
|
if (opts.attendeeStatus != null && opts.attendeeStatus !== "") query.attendee_status = opts.attendeeStatus;
|
|
782
|
+
if (opts.status != null && opts.status !== "") query.status = opts.status;
|
|
760
783
|
if (opts.eventSource != null && opts.eventSource !== "") query.event_source = opts.eventSource;
|
|
761
784
|
const sortBy = opts.sortBy ?? opts.sort ?? opts.sort_column;
|
|
762
785
|
if (sortBy != null && sortBy !== "") query.sort = sortBy;
|
|
@@ -765,12 +788,17 @@ async function getByFiltersInternal(path, companyKey, opts = {}, dateRange = nul
|
|
|
765
788
|
const u = String(sortOrderRaw).trim().toUpperCase();
|
|
766
789
|
query.sort_dir = u.startsWith("DESC") ? "desc" : "asc";
|
|
767
790
|
}
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
791
|
+
const pageSize = opts.page_size ?? opts.pageSize;
|
|
792
|
+
const pageNum = opts.page != null ? Number(opts.page) : null;
|
|
793
|
+
const hasSkipTake = opts.skip != null || opts.take != null;
|
|
794
|
+
const usePageMode = pageNum != null && pageNum >= 1 && !hasSkipTake;
|
|
795
|
+
if (usePageMode) {
|
|
796
|
+
query.page = pageNum;
|
|
797
|
+
if (pageSize != null) query.page_size = pageSize;
|
|
771
798
|
} else {
|
|
772
799
|
if (opts.skip != null) query.skip = opts.skip;
|
|
773
|
-
|
|
800
|
+
const take = opts.take ?? (pageSize != null && !hasSkipTake ? pageSize : null);
|
|
801
|
+
if (take != null) query.take = take;
|
|
774
802
|
}
|
|
775
803
|
const res = await reqGet(path, query, { headers: { offset: String(offset) } });
|
|
776
804
|
if (res.status !== "success") {
|
|
@@ -889,6 +917,11 @@ EventModel.setAttendeeStatus = async (eventId, attendeeStatus) => {
|
|
|
889
917
|
const statusName = typeof attendeeStatus === "number" ? Object.keys(AttendeeStatus).find((k) => AttendeeStatus[k] === attendeeStatus) ?? "None" : attendeeStatus;
|
|
890
918
|
return reqGet(`/event/${encodeURIComponent(eventId)}/${encodeURIComponent(statusName)}`);
|
|
891
919
|
};
|
|
920
|
+
EventModel.setEventStatus = async (eventId, status) => {
|
|
921
|
+
const { reqGet } = createRequestHelpersFromEnv(getConfig());
|
|
922
|
+
const statusValue = typeof status === "number" ? status : EventStatus[status] ?? status;
|
|
923
|
+
return reqGet("/event/status/update", { event_id: eventId, status: statusValue });
|
|
924
|
+
};
|
|
892
925
|
var Event_default = EventModel;
|
|
893
926
|
|
|
894
927
|
// src/models/appointment/CalendarParticipant.js
|
|
@@ -1686,30 +1719,96 @@ var OpeningHourModel = import_mobx_state_tree12.types.model("OpeningHour", {
|
|
|
1686
1719
|
});
|
|
1687
1720
|
var OpeningHour_default = OpeningHourModel;
|
|
1688
1721
|
|
|
1689
|
-
// src/models/appointment/
|
|
1722
|
+
// src/models/appointment/ExternalEvent.js
|
|
1690
1723
|
var import_mobx_state_tree13 = require("mobx-state-tree");
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1724
|
+
function getDefaultOffset2() {
|
|
1725
|
+
var _a;
|
|
1726
|
+
const cfg = getConfig();
|
|
1727
|
+
return ((_a = cfg == null ? void 0 : cfg.getDefaultOffset) == null ? void 0 : _a.call(cfg)) ?? -(/* @__PURE__ */ new Date()).getTimezoneOffset();
|
|
1728
|
+
}
|
|
1729
|
+
function pickStr(obj, ...keys) {
|
|
1730
|
+
for (const k of keys) {
|
|
1731
|
+
const v = obj[k];
|
|
1732
|
+
if (v != null && typeof v === "string") return v;
|
|
1733
|
+
}
|
|
1734
|
+
return void 0;
|
|
1735
|
+
}
|
|
1736
|
+
function pickNum(obj, ...keys) {
|
|
1737
|
+
for (const k of keys) {
|
|
1738
|
+
const v = obj[k];
|
|
1739
|
+
if (v != null) {
|
|
1740
|
+
const n = typeof v === "number" ? v : Number(v);
|
|
1741
|
+
if (!Number.isNaN(n)) return n;
|
|
1742
|
+
}
|
|
1743
|
+
}
|
|
1744
|
+
return void 0;
|
|
1745
|
+
}
|
|
1746
|
+
function toIsoDate(value) {
|
|
1747
|
+
if (value == null || value === "") return "";
|
|
1748
|
+
if (typeof value === "string") return value;
|
|
1749
|
+
if (value instanceof Date) return value.toISOString();
|
|
1750
|
+
return String(value);
|
|
1751
|
+
}
|
|
1752
|
+
var ExternalEventModel = import_mobx_state_tree13.types.model("ExternalEvent", {
|
|
1753
|
+
title: import_mobx_state_tree13.types.optional(import_mobx_state_tree13.types.maybeNull(import_mobx_state_tree13.types.string), null),
|
|
1754
|
+
startDate: import_mobx_state_tree13.types.optional(import_mobx_state_tree13.types.string, ""),
|
|
1755
|
+
endDate: import_mobx_state_tree13.types.optional(import_mobx_state_tree13.types.string, ""),
|
|
1756
|
+
startHour: import_mobx_state_tree13.types.optional(import_mobx_state_tree13.types.number, 0),
|
|
1757
|
+
startMinute: import_mobx_state_tree13.types.optional(import_mobx_state_tree13.types.number, 0),
|
|
1758
|
+
endHour: import_mobx_state_tree13.types.optional(import_mobx_state_tree13.types.number, 0),
|
|
1759
|
+
endMinute: import_mobx_state_tree13.types.optional(import_mobx_state_tree13.types.number, 0)
|
|
1760
|
+
});
|
|
1761
|
+
function mapApiRow(row) {
|
|
1762
|
+
return ExternalEventModel.create({
|
|
1763
|
+
title: pickStr(row, "title", "Title") ?? null,
|
|
1764
|
+
startDate: toIsoDate(row.startDate ?? row.StartDate),
|
|
1765
|
+
endDate: toIsoDate(row.endDate ?? row.EndDate),
|
|
1766
|
+
startHour: pickNum(row, "startHour", "StartHour") ?? 0,
|
|
1767
|
+
startMinute: pickNum(row, "startMinute", "StartMinute") ?? 0,
|
|
1768
|
+
endHour: pickNum(row, "endHour", "EndHour") ?? 0,
|
|
1769
|
+
endMinute: pickNum(row, "endMinute", "EndMinute") ?? 0
|
|
1770
|
+
});
|
|
1771
|
+
}
|
|
1772
|
+
ExternalEventModel.getByParticipant = async (participantId, opts = {}) => {
|
|
1773
|
+
if (!participantId) throw new Error("participantId required");
|
|
1774
|
+
const { req } = createRequestHelpersFromEnv(getConfig());
|
|
1775
|
+
const offset = opts.offset ?? getDefaultOffset2();
|
|
1776
|
+
const res = await req("/externalcalendar/events/get", {
|
|
1777
|
+
method: "GET",
|
|
1778
|
+
query: { participant_id: participantId },
|
|
1779
|
+
headers: { offset: String(offset) }
|
|
1780
|
+
});
|
|
1781
|
+
if (res.status === "success" && Array.isArray(res.data)) {
|
|
1782
|
+
return res.data.map(mapApiRow);
|
|
1783
|
+
}
|
|
1784
|
+
return [];
|
|
1785
|
+
};
|
|
1786
|
+
var ExternalEvent_default = ExternalEventModel;
|
|
1787
|
+
|
|
1788
|
+
// src/models/appointment/Setting.js
|
|
1789
|
+
var import_mobx_state_tree14 = require("mobx-state-tree");
|
|
1790
|
+
var SettingModel = import_mobx_state_tree14.types.model("Setting", {
|
|
1791
|
+
id: import_mobx_state_tree14.types.optional(import_mobx_state_tree14.types.maybeNull(import_mobx_state_tree14.types.number), null),
|
|
1792
|
+
settingsId: import_mobx_state_tree14.types.optional(import_mobx_state_tree14.types.string, ""),
|
|
1793
|
+
calendarId: import_mobx_state_tree14.types.optional(import_mobx_state_tree14.types.string, ""),
|
|
1794
|
+
logo: import_mobx_state_tree14.types.optional(import_mobx_state_tree14.types.maybeNull(import_mobx_state_tree14.types.string), null),
|
|
1795
|
+
theme: import_mobx_state_tree14.types.optional(import_mobx_state_tree14.types.maybeNull(import_mobx_state_tree14.types.string), null),
|
|
1796
|
+
schedulingButtonText: import_mobx_state_tree14.types.optional(import_mobx_state_tree14.types.maybeNull(import_mobx_state_tree14.types.string), null),
|
|
1797
|
+
scheduledMessage: import_mobx_state_tree14.types.optional(import_mobx_state_tree14.types.maybeNull(import_mobx_state_tree14.types.string), null)
|
|
1699
1798
|
}).actions((self) => {
|
|
1700
|
-
const { reqGet, reqPost } = createRequestHelpers(self,
|
|
1799
|
+
const { reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree14.getEnv);
|
|
1701
1800
|
return {
|
|
1702
1801
|
/** GET setting/get – fetch setting for this calendar */
|
|
1703
1802
|
async get() {
|
|
1704
1803
|
const res = await reqGet("/setting/get", { calendar_id: self.calendarId });
|
|
1705
|
-
if (res.status === "success" && res.data) (0,
|
|
1804
|
+
if (res.status === "success" && res.data) (0, import_mobx_state_tree14.applySnapshot)(self, mapFromApi3(res.data));
|
|
1706
1805
|
return res;
|
|
1707
1806
|
},
|
|
1708
1807
|
/** POST setting/save – save this setting */
|
|
1709
1808
|
async save() {
|
|
1710
1809
|
const payload = toPayload2(self);
|
|
1711
1810
|
const res = await reqPost("/setting/save", payload);
|
|
1712
|
-
if (res.status === "success" && res.data) (0,
|
|
1811
|
+
if (res.status === "success" && res.data) (0, import_mobx_state_tree14.applySnapshot)(self, mapFromApi3(res.data));
|
|
1713
1812
|
return res;
|
|
1714
1813
|
},
|
|
1715
1814
|
/** POST setting/logo/upload – upload logo file for this calendar */
|
|
@@ -1784,27 +1883,27 @@ SettingModel.uploadLogo = async (calendarId, file) => {
|
|
|
1784
1883
|
var Setting_default = SettingModel;
|
|
1785
1884
|
|
|
1786
1885
|
// src/models/appointment/Company.js
|
|
1787
|
-
var
|
|
1788
|
-
var CompanyModel =
|
|
1789
|
-
id:
|
|
1790
|
-
companyKey:
|
|
1791
|
-
companyName:
|
|
1792
|
-
createdOn:
|
|
1793
|
-
modifiedOn:
|
|
1886
|
+
var import_mobx_state_tree15 = require("mobx-state-tree");
|
|
1887
|
+
var CompanyModel = import_mobx_state_tree15.types.model("Company", {
|
|
1888
|
+
id: import_mobx_state_tree15.types.optional(import_mobx_state_tree15.types.maybeNull(import_mobx_state_tree15.types.number), null),
|
|
1889
|
+
companyKey: import_mobx_state_tree15.types.identifier,
|
|
1890
|
+
companyName: import_mobx_state_tree15.types.optional(import_mobx_state_tree15.types.string, ""),
|
|
1891
|
+
createdOn: import_mobx_state_tree15.types.optional(import_mobx_state_tree15.types.maybeNull(import_mobx_state_tree15.types.string), null),
|
|
1892
|
+
modifiedOn: import_mobx_state_tree15.types.optional(import_mobx_state_tree15.types.maybeNull(import_mobx_state_tree15.types.string), null)
|
|
1794
1893
|
}).actions((self) => {
|
|
1795
|
-
const { reqGet, reqPost } = createRequestHelpers(self,
|
|
1894
|
+
const { reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree15.getEnv);
|
|
1796
1895
|
return {
|
|
1797
1896
|
/** GET Company/Get – fetch this company */
|
|
1798
1897
|
async get() {
|
|
1799
1898
|
const res = await reqGet("/Company/Get", { company_key: self.companyKey });
|
|
1800
|
-
if (res.status === "success" && res.data) (0,
|
|
1899
|
+
if (res.status === "success" && res.data) (0, import_mobx_state_tree15.applySnapshot)(self, mapFromApi4(res.data));
|
|
1801
1900
|
return res;
|
|
1802
1901
|
},
|
|
1803
1902
|
/** POST Company/Save – save this company */
|
|
1804
1903
|
async save() {
|
|
1805
1904
|
const payload = toPayload3(self);
|
|
1806
1905
|
const res = await reqPost("/Company/Save", payload);
|
|
1807
|
-
if (res.status === "success" && res.data) (0,
|
|
1906
|
+
if (res.status === "success" && res.data) (0, import_mobx_state_tree15.applySnapshot)(self, mapFromApi4(res.data));
|
|
1808
1907
|
return res;
|
|
1809
1908
|
}
|
|
1810
1909
|
};
|
|
@@ -1852,13 +1951,13 @@ CompanyModel.save = async (payload) => {
|
|
|
1852
1951
|
var Company_default = CompanyModel;
|
|
1853
1952
|
|
|
1854
1953
|
// src/models/appointment/Asset.js
|
|
1855
|
-
var
|
|
1856
|
-
var AssetModel =
|
|
1857
|
-
url:
|
|
1858
|
-
blobPath:
|
|
1859
|
-
category:
|
|
1860
|
-
contentType:
|
|
1861
|
-
size:
|
|
1954
|
+
var import_mobx_state_tree16 = require("mobx-state-tree");
|
|
1955
|
+
var AssetModel = import_mobx_state_tree16.types.model("Asset", {
|
|
1956
|
+
url: import_mobx_state_tree16.types.optional(import_mobx_state_tree16.types.maybeNull(import_mobx_state_tree16.types.string), null),
|
|
1957
|
+
blobPath: import_mobx_state_tree16.types.optional(import_mobx_state_tree16.types.maybeNull(import_mobx_state_tree16.types.string), null),
|
|
1958
|
+
category: import_mobx_state_tree16.types.optional(import_mobx_state_tree16.types.maybeNull(import_mobx_state_tree16.types.string), null),
|
|
1959
|
+
contentType: import_mobx_state_tree16.types.optional(import_mobx_state_tree16.types.maybeNull(import_mobx_state_tree16.types.string), null),
|
|
1960
|
+
size: import_mobx_state_tree16.types.optional(import_mobx_state_tree16.types.maybeNull(import_mobx_state_tree16.types.number), null)
|
|
1862
1961
|
}).actions((self) => ({
|
|
1863
1962
|
/** POST /asset/upload – upload file using model category. */
|
|
1864
1963
|
async upload(file, opts = {}) {
|
|
@@ -1932,7 +2031,7 @@ AssetModel.upload = async (file, opts = {}) => {
|
|
|
1932
2031
|
var Asset_default = AssetModel;
|
|
1933
2032
|
|
|
1934
2033
|
// src/models/appointment/CalendarLocation.js
|
|
1935
|
-
var
|
|
2034
|
+
var import_mobx_state_tree17 = require("mobx-state-tree");
|
|
1936
2035
|
function mapCalendarLocationFromApi(d) {
|
|
1937
2036
|
if (!d) return d;
|
|
1938
2037
|
const pick2 = (...keys) => keys.reduce((v, k) => v ?? d[k], void 0);
|
|
@@ -1962,19 +2061,19 @@ function toPayload4(self) {
|
|
|
1962
2061
|
sortOrder: self.sortOrder
|
|
1963
2062
|
};
|
|
1964
2063
|
}
|
|
1965
|
-
var CalendarLocationModel =
|
|
1966
|
-
id:
|
|
1967
|
-
calendarLocationId:
|
|
1968
|
-
calendarId:
|
|
1969
|
-
locationType:
|
|
1970
|
-
name:
|
|
1971
|
-
value:
|
|
1972
|
-
isDefault:
|
|
1973
|
-
sortOrder:
|
|
1974
|
-
createdOn:
|
|
1975
|
-
modifiedOn:
|
|
2064
|
+
var CalendarLocationModel = import_mobx_state_tree17.types.model("CalendarLocation", {
|
|
2065
|
+
id: import_mobx_state_tree17.types.optional(import_mobx_state_tree17.types.maybeNull(import_mobx_state_tree17.types.number), null),
|
|
2066
|
+
calendarLocationId: import_mobx_state_tree17.types.optional(import_mobx_state_tree17.types.maybeNull(import_mobx_state_tree17.types.string), null),
|
|
2067
|
+
calendarId: import_mobx_state_tree17.types.optional(import_mobx_state_tree17.types.maybeNull(import_mobx_state_tree17.types.string), null),
|
|
2068
|
+
locationType: import_mobx_state_tree17.types.optional(import_mobx_state_tree17.types.number, LocationType.Physical),
|
|
2069
|
+
name: import_mobx_state_tree17.types.optional(import_mobx_state_tree17.types.string, ""),
|
|
2070
|
+
value: import_mobx_state_tree17.types.optional(import_mobx_state_tree17.types.string, ""),
|
|
2071
|
+
isDefault: import_mobx_state_tree17.types.optional(import_mobx_state_tree17.types.boolean, false),
|
|
2072
|
+
sortOrder: import_mobx_state_tree17.types.optional(import_mobx_state_tree17.types.number, 0),
|
|
2073
|
+
createdOn: import_mobx_state_tree17.types.optional(import_mobx_state_tree17.types.maybeNull(import_mobx_state_tree17.types.string), null),
|
|
2074
|
+
modifiedOn: import_mobx_state_tree17.types.optional(import_mobx_state_tree17.types.maybeNull(import_mobx_state_tree17.types.string), null)
|
|
1976
2075
|
}).actions((self) => {
|
|
1977
|
-
const { reqGet, reqPost } = createRequestHelpers(self,
|
|
2076
|
+
const { reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree17.getEnv);
|
|
1978
2077
|
return {
|
|
1979
2078
|
/** GET Calendar/Location/Get – list locations by calendar id */
|
|
1980
2079
|
async getByCalendar(calendarId) {
|
|
@@ -1992,7 +2091,7 @@ var CalendarLocationModel = import_mobx_state_tree16.types.model("CalendarLocati
|
|
|
1992
2091
|
async save() {
|
|
1993
2092
|
const res = await reqPost("/Calendar/Location/Save", toPayload4(self));
|
|
1994
2093
|
if (res.status === "success" && res.data) {
|
|
1995
|
-
(0,
|
|
2094
|
+
(0, import_mobx_state_tree17.applySnapshot)(self, mapCalendarLocationFromApi(res.data));
|
|
1996
2095
|
}
|
|
1997
2096
|
return res;
|
|
1998
2097
|
},
|
|
@@ -2054,7 +2153,7 @@ CalendarLocationModel.setDefault = async (calendarId, calendarLocationId) => {
|
|
|
2054
2153
|
var CalendarLocation_default = CalendarLocationModel;
|
|
2055
2154
|
|
|
2056
2155
|
// src/models/appointment/Preference.js
|
|
2057
|
-
var
|
|
2156
|
+
var import_mobx_state_tree18 = require("mobx-state-tree");
|
|
2058
2157
|
var PreferenceScope = {
|
|
2059
2158
|
Global: 0,
|
|
2060
2159
|
Consumer: 1,
|
|
@@ -2065,13 +2164,13 @@ var PreferenceScope = {
|
|
|
2065
2164
|
User: 6
|
|
2066
2165
|
};
|
|
2067
2166
|
var SCOPE_NAMES = ["Global", "Consumer", "Company", "Calendar", "Event", "Participant", "User"];
|
|
2068
|
-
var PreferenceModel =
|
|
2069
|
-
id:
|
|
2070
|
-
preferenceId:
|
|
2071
|
-
level:
|
|
2072
|
-
primaryKey:
|
|
2073
|
-
preferenceOption:
|
|
2074
|
-
optionsJson:
|
|
2167
|
+
var PreferenceModel = import_mobx_state_tree18.types.model("Preference", {
|
|
2168
|
+
id: import_mobx_state_tree18.types.optional(import_mobx_state_tree18.types.maybeNull(import_mobx_state_tree18.types.number), null),
|
|
2169
|
+
preferenceId: import_mobx_state_tree18.types.optional(import_mobx_state_tree18.types.maybeNull(import_mobx_state_tree18.types.string), null),
|
|
2170
|
+
level: import_mobx_state_tree18.types.optional(import_mobx_state_tree18.types.number, 0),
|
|
2171
|
+
primaryKey: import_mobx_state_tree18.types.optional(import_mobx_state_tree18.types.string, ""),
|
|
2172
|
+
preferenceOption: import_mobx_state_tree18.types.optional(import_mobx_state_tree18.types.string, ""),
|
|
2173
|
+
optionsJson: import_mobx_state_tree18.types.optional(import_mobx_state_tree18.types.maybeNull(import_mobx_state_tree18.types.string), null)
|
|
2075
2174
|
}).actions((self) => ({
|
|
2076
2175
|
/** POST /preference/{scope}/{key}/{option} – save this preference to the API. */
|
|
2077
2176
|
async save() {
|
|
@@ -2119,7 +2218,7 @@ PreferenceModel.delete = async (preferenceId) => {
|
|
|
2119
2218
|
var Preference_default = PreferenceModel;
|
|
2120
2219
|
|
|
2121
2220
|
// src/models/appointment/Flow.js
|
|
2122
|
-
var
|
|
2221
|
+
var import_mobx_state_tree19 = require("mobx-state-tree");
|
|
2123
2222
|
function mapFlowFromApi(d) {
|
|
2124
2223
|
if (!d) return d;
|
|
2125
2224
|
const pick2 = (...keys) => keys.reduce((v, k) => v ?? d[k], void 0);
|
|
@@ -2138,27 +2237,27 @@ function mapFlowFromApi(d) {
|
|
|
2138
2237
|
modifiedOn: pick2("modifiedOn", "ModifiedOn", "modified_on") ?? null
|
|
2139
2238
|
};
|
|
2140
2239
|
}
|
|
2141
|
-
var FlowModel =
|
|
2142
|
-
id:
|
|
2143
|
-
flowId:
|
|
2144
|
-
companyKey:
|
|
2145
|
-
calendarId:
|
|
2146
|
-
name:
|
|
2147
|
-
description:
|
|
2148
|
-
flowJson:
|
|
2149
|
-
isActive:
|
|
2150
|
-
isDeleted:
|
|
2151
|
-
createdOn:
|
|
2152
|
-
modifiedOn:
|
|
2240
|
+
var FlowModel = import_mobx_state_tree19.types.model("Flow", {
|
|
2241
|
+
id: import_mobx_state_tree19.types.optional(import_mobx_state_tree19.types.maybeNull(import_mobx_state_tree19.types.number), null),
|
|
2242
|
+
flowId: import_mobx_state_tree19.types.optional(import_mobx_state_tree19.types.identifier, "new"),
|
|
2243
|
+
companyKey: import_mobx_state_tree19.types.optional(import_mobx_state_tree19.types.maybeNull(import_mobx_state_tree19.types.string), null),
|
|
2244
|
+
calendarId: import_mobx_state_tree19.types.optional(import_mobx_state_tree19.types.maybeNull(import_mobx_state_tree19.types.string), null),
|
|
2245
|
+
name: import_mobx_state_tree19.types.optional(import_mobx_state_tree19.types.maybeNull(import_mobx_state_tree19.types.string), null),
|
|
2246
|
+
description: import_mobx_state_tree19.types.optional(import_mobx_state_tree19.types.maybeNull(import_mobx_state_tree19.types.string), null),
|
|
2247
|
+
flowJson: import_mobx_state_tree19.types.optional(import_mobx_state_tree19.types.string, ""),
|
|
2248
|
+
isActive: import_mobx_state_tree19.types.optional(import_mobx_state_tree19.types.boolean, true),
|
|
2249
|
+
isDeleted: import_mobx_state_tree19.types.optional(import_mobx_state_tree19.types.boolean, false),
|
|
2250
|
+
createdOn: import_mobx_state_tree19.types.optional(import_mobx_state_tree19.types.maybeNull(import_mobx_state_tree19.types.string), null),
|
|
2251
|
+
modifiedOn: import_mobx_state_tree19.types.optional(import_mobx_state_tree19.types.maybeNull(import_mobx_state_tree19.types.string), null)
|
|
2153
2252
|
}).actions((self) => {
|
|
2154
|
-
const { reqGet, reqPost } = createRequestHelpers(self,
|
|
2253
|
+
const { reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree19.getEnv);
|
|
2155
2254
|
return {
|
|
2156
2255
|
/** GET flow/get – fetch this flow by flowId */
|
|
2157
2256
|
async get() {
|
|
2158
2257
|
if (!self.flowId || self.flowId === "new") return { status: "failure", message: "flowId required" };
|
|
2159
2258
|
const res = await reqGet("/flow/get", { flow_id: self.flowId });
|
|
2160
2259
|
if (res.status === "success" && res.data) {
|
|
2161
|
-
(0,
|
|
2260
|
+
(0, import_mobx_state_tree19.applySnapshot)(self, mapFlowFromApi(res.data));
|
|
2162
2261
|
}
|
|
2163
2262
|
return res;
|
|
2164
2263
|
},
|
|
@@ -2174,7 +2273,7 @@ var FlowModel = import_mobx_state_tree18.types.model("Flow", {
|
|
|
2174
2273
|
};
|
|
2175
2274
|
const res = await reqPost("/flow/create", payload);
|
|
2176
2275
|
if (res.status === "success" && res.data) {
|
|
2177
|
-
(0,
|
|
2276
|
+
(0, import_mobx_state_tree19.applySnapshot)(self, mapFlowFromApi(res.data));
|
|
2178
2277
|
}
|
|
2179
2278
|
return res;
|
|
2180
2279
|
},
|
|
@@ -2191,7 +2290,7 @@ var FlowModel = import_mobx_state_tree18.types.model("Flow", {
|
|
|
2191
2290
|
};
|
|
2192
2291
|
const res = await reqPost("/flow/update", payload);
|
|
2193
2292
|
if (res.status === "success" && res.data) {
|
|
2194
|
-
(0,
|
|
2293
|
+
(0, import_mobx_state_tree19.applySnapshot)(self, mapFlowFromApi(res.data));
|
|
2195
2294
|
}
|
|
2196
2295
|
return res;
|
|
2197
2296
|
},
|
|
@@ -2205,7 +2304,7 @@ var FlowModel = import_mobx_state_tree18.types.model("Flow", {
|
|
|
2205
2304
|
if (!self.flowId || self.flowId === "new") return { status: "failure", message: "flowId required" };
|
|
2206
2305
|
const res = await reqPost("/flow/duplicate", { flow_id: self.flowId, new_name: newName ?? void 0 });
|
|
2207
2306
|
if (res.status === "success" && res.data) {
|
|
2208
|
-
(0,
|
|
2307
|
+
(0, import_mobx_state_tree19.applySnapshot)(self, mapFlowFromApi(res.data));
|
|
2209
2308
|
}
|
|
2210
2309
|
return res;
|
|
2211
2310
|
},
|
|
@@ -2382,7 +2481,20 @@ FlowModel.getPreview = async (flowId) => {
|
|
|
2382
2481
|
var Flow_default = FlowModel;
|
|
2383
2482
|
|
|
2384
2483
|
// src/models/appointment/Lead.js
|
|
2385
|
-
var
|
|
2484
|
+
var import_mobx_state_tree20 = require("mobx-state-tree");
|
|
2485
|
+
function pickLeadCreateContact(payload) {
|
|
2486
|
+
const p = payload ?? {};
|
|
2487
|
+
const email = String(p.email ?? p.Email ?? "").trim();
|
|
2488
|
+
const phone = String(p.phone ?? p.Phone ?? "").trim();
|
|
2489
|
+
const companyKey = String(p.companyKey ?? p.company_key ?? p.CompanyKey ?? "").trim();
|
|
2490
|
+
return { email, phone, companyKey };
|
|
2491
|
+
}
|
|
2492
|
+
function validateLeadCreatePayload(payload) {
|
|
2493
|
+
const { email, phone, companyKey } = pickLeadCreateContact(payload);
|
|
2494
|
+
if (!companyKey) return { ok: false, message: "companyKey is required" };
|
|
2495
|
+
if (!email && !phone) return { ok: false, message: "email or phone is required" };
|
|
2496
|
+
return { ok: true };
|
|
2497
|
+
}
|
|
2386
2498
|
function mapLeadFromApi(d) {
|
|
2387
2499
|
if (!d) return d;
|
|
2388
2500
|
const pick2 = (...keys) => keys.reduce((v, k) => v ?? d[k], void 0);
|
|
@@ -2407,31 +2519,33 @@ function mapLeadFromApi(d) {
|
|
|
2407
2519
|
source: pick2("source", "Source") ?? "",
|
|
2408
2520
|
leadType,
|
|
2409
2521
|
referrerLink: pick2("referrerLink", "ReferrerLink", "referrer_link") ?? "",
|
|
2522
|
+
description: pick2("description", "Description") ?? "",
|
|
2410
2523
|
createdOn: pick2("createdOn", "CreatedOn", "created_on") ?? null,
|
|
2411
2524
|
modifiedOn: pick2("modifiedOn", "ModifiedOn", "modified_on") ?? null
|
|
2412
2525
|
};
|
|
2413
2526
|
}
|
|
2414
|
-
var LeadModel =
|
|
2415
|
-
id:
|
|
2416
|
-
leadId:
|
|
2417
|
-
email:
|
|
2418
|
-
name:
|
|
2419
|
-
phone:
|
|
2420
|
-
companyKey:
|
|
2421
|
-
source:
|
|
2422
|
-
leadType:
|
|
2423
|
-
referrerLink:
|
|
2424
|
-
|
|
2425
|
-
|
|
2527
|
+
var LeadModel = import_mobx_state_tree20.types.model("Lead", {
|
|
2528
|
+
id: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.maybeNull(import_mobx_state_tree20.types.number), null),
|
|
2529
|
+
leadId: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.identifier, "new"),
|
|
2530
|
+
email: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.string, ""),
|
|
2531
|
+
name: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.string, ""),
|
|
2532
|
+
phone: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.string, ""),
|
|
2533
|
+
companyKey: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.string, ""),
|
|
2534
|
+
source: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.string, ""),
|
|
2535
|
+
leadType: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.number, 2),
|
|
2536
|
+
referrerLink: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.string, ""),
|
|
2537
|
+
description: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.string, ""),
|
|
2538
|
+
createdOn: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.maybeNull(import_mobx_state_tree20.types.string), null),
|
|
2539
|
+
modifiedOn: import_mobx_state_tree20.types.optional(import_mobx_state_tree20.types.maybeNull(import_mobx_state_tree20.types.string), null)
|
|
2426
2540
|
}).actions((self) => {
|
|
2427
|
-
const { reqGet, reqPost } = createRequestHelpers(self,
|
|
2541
|
+
const { reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree20.getEnv);
|
|
2428
2542
|
return {
|
|
2429
2543
|
/** GET /lead/get – fetch this lead by leadId */
|
|
2430
2544
|
async get() {
|
|
2431
2545
|
if (!self.leadId || self.leadId === "new") return { status: "failure", message: "leadId required" };
|
|
2432
2546
|
const res = await reqGet("/lead/get", { lead_id: self.leadId });
|
|
2433
2547
|
if (res.status === "success" && res.data) {
|
|
2434
|
-
(0,
|
|
2548
|
+
(0, import_mobx_state_tree20.applySnapshot)(self, mapLeadFromApi(res.data));
|
|
2435
2549
|
}
|
|
2436
2550
|
return res;
|
|
2437
2551
|
},
|
|
@@ -2442,7 +2556,7 @@ var LeadModel = import_mobx_state_tree19.types.model("Lead", {
|
|
|
2442
2556
|
}
|
|
2443
2557
|
const lead = await LeadModel.getByEmail(self.email, self.companyKey);
|
|
2444
2558
|
if (lead) {
|
|
2445
|
-
(0,
|
|
2559
|
+
(0, import_mobx_state_tree20.applySnapshot)(self, (0, import_mobx_state_tree20.getSnapshot)(lead));
|
|
2446
2560
|
}
|
|
2447
2561
|
return { status: lead ? "success" : "failure", data: lead ?? void 0 };
|
|
2448
2562
|
},
|
|
@@ -2453,7 +2567,7 @@ var LeadModel = import_mobx_state_tree19.types.model("Lead", {
|
|
|
2453
2567
|
}
|
|
2454
2568
|
const lead = await LeadModel.getByPhone(self.phone, self.companyKey);
|
|
2455
2569
|
if (lead) {
|
|
2456
|
-
(0,
|
|
2570
|
+
(0, import_mobx_state_tree20.applySnapshot)(self, (0, import_mobx_state_tree20.getSnapshot)(lead));
|
|
2457
2571
|
}
|
|
2458
2572
|
return { status: lead ? "success" : "failure", data: lead ?? void 0 };
|
|
2459
2573
|
},
|
|
@@ -2470,8 +2584,14 @@ var LeadModel = import_mobx_state_tree19.types.model("Lead", {
|
|
|
2470
2584
|
async getColumnSelection(userId) {
|
|
2471
2585
|
return LeadModel.getColumnSelection(userId);
|
|
2472
2586
|
},
|
|
2473
|
-
/** POST /lead/create – create this lead */
|
|
2587
|
+
/** POST /lead/create – create this lead (requires companyKey and email or phone) */
|
|
2474
2588
|
async createLead() {
|
|
2589
|
+
const validation = validateLeadCreatePayload({
|
|
2590
|
+
email: self.email,
|
|
2591
|
+
phone: self.phone,
|
|
2592
|
+
companyKey: self.companyKey
|
|
2593
|
+
});
|
|
2594
|
+
if (!validation.ok) return { status: "failure", message: validation.message };
|
|
2475
2595
|
const payload = {
|
|
2476
2596
|
email: self.email,
|
|
2477
2597
|
name: self.name,
|
|
@@ -2479,11 +2599,12 @@ var LeadModel = import_mobx_state_tree19.types.model("Lead", {
|
|
|
2479
2599
|
companyKey: self.companyKey,
|
|
2480
2600
|
source: self.source,
|
|
2481
2601
|
leadType: self.leadType,
|
|
2482
|
-
referrerLink: self.referrerLink
|
|
2602
|
+
referrerLink: self.referrerLink,
|
|
2603
|
+
description: self.description
|
|
2483
2604
|
};
|
|
2484
2605
|
const res = await reqPost("/lead/create", payload);
|
|
2485
2606
|
if (res.status === "success" && res.data) {
|
|
2486
|
-
(0,
|
|
2607
|
+
(0, import_mobx_state_tree20.applySnapshot)(self, mapLeadFromApi(res.data));
|
|
2487
2608
|
}
|
|
2488
2609
|
return res;
|
|
2489
2610
|
},
|
|
@@ -2500,11 +2621,12 @@ var LeadModel = import_mobx_state_tree19.types.model("Lead", {
|
|
|
2500
2621
|
companyKey: self.companyKey,
|
|
2501
2622
|
source: self.source,
|
|
2502
2623
|
leadType: self.leadType,
|
|
2503
|
-
referrerLink: self.referrerLink
|
|
2624
|
+
referrerLink: self.referrerLink,
|
|
2625
|
+
description: self.description
|
|
2504
2626
|
};
|
|
2505
2627
|
const res = await reqPost("/lead/update", payload);
|
|
2506
2628
|
if (res.status === "success" && res.data) {
|
|
2507
|
-
(0,
|
|
2629
|
+
(0, import_mobx_state_tree20.applySnapshot)(self, mapLeadFromApi(res.data));
|
|
2508
2630
|
}
|
|
2509
2631
|
return res;
|
|
2510
2632
|
},
|
|
@@ -2568,6 +2690,7 @@ LeadModel.allowedColumns = [
|
|
|
2568
2690
|
"source",
|
|
2569
2691
|
"lead_type",
|
|
2570
2692
|
"referrer_link",
|
|
2693
|
+
"description",
|
|
2571
2694
|
"created_on",
|
|
2572
2695
|
"modified_on"
|
|
2573
2696
|
];
|
|
@@ -2621,6 +2744,8 @@ LeadModel.getByCompany = async (companyKey, opts = {}) => {
|
|
|
2621
2744
|
return null;
|
|
2622
2745
|
};
|
|
2623
2746
|
LeadModel.createLead = async (payload) => {
|
|
2747
|
+
const validation = validateLeadCreatePayload(payload);
|
|
2748
|
+
if (!validation.ok) return { status: "failure", message: validation.message };
|
|
2624
2749
|
const { reqPost } = createRequestHelpersFromEnv(getConfig());
|
|
2625
2750
|
const res = await reqPost("/lead/create", payload);
|
|
2626
2751
|
if (res.status === "success" && res.data) {
|
|
@@ -2676,19 +2801,19 @@ LeadModel.getSources = async (companyKey) => {
|
|
|
2676
2801
|
var Lead_default = LeadModel;
|
|
2677
2802
|
|
|
2678
2803
|
// src/models/appointment/CustomField.js
|
|
2679
|
-
var
|
|
2680
|
-
var CustomFieldModel =
|
|
2681
|
-
id:
|
|
2682
|
-
customFieldId:
|
|
2683
|
-
calendarId:
|
|
2684
|
-
label:
|
|
2685
|
-
type:
|
|
2686
|
-
isRequired:
|
|
2687
|
-
createdOn:
|
|
2688
|
-
modifiedOn:
|
|
2689
|
-
isDeleted:
|
|
2804
|
+
var import_mobx_state_tree21 = require("mobx-state-tree");
|
|
2805
|
+
var CustomFieldModel = import_mobx_state_tree21.types.model("CustomField", {
|
|
2806
|
+
id: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.maybeNull(import_mobx_state_tree21.types.number), null),
|
|
2807
|
+
customFieldId: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.maybeNull(import_mobx_state_tree21.types.string), null),
|
|
2808
|
+
calendarId: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.maybeNull(import_mobx_state_tree21.types.string), null),
|
|
2809
|
+
label: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.maybeNull(import_mobx_state_tree21.types.string), null),
|
|
2810
|
+
type: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.string, ""),
|
|
2811
|
+
isRequired: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.boolean, false),
|
|
2812
|
+
createdOn: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.maybeNull(import_mobx_state_tree21.types.string), null),
|
|
2813
|
+
modifiedOn: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.maybeNull(import_mobx_state_tree21.types.string), null),
|
|
2814
|
+
isDeleted: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.boolean, false)
|
|
2690
2815
|
}).actions((self) => {
|
|
2691
|
-
const { reqGet, reqPost } = createRequestHelpers(self,
|
|
2816
|
+
const { reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree21.getEnv);
|
|
2692
2817
|
return {
|
|
2693
2818
|
/** GET /CustomField/GetAll?calendar_id= */
|
|
2694
2819
|
async getAll(calendarId) {
|
|
@@ -2709,7 +2834,7 @@ var CustomFieldModel = import_mobx_state_tree20.types.model("CustomField", {
|
|
|
2709
2834
|
const body = payload ?? toPayload5(self);
|
|
2710
2835
|
const res = await reqPost("/CustomField/Add", body);
|
|
2711
2836
|
if (res.status === "success" && res.data) {
|
|
2712
|
-
(0,
|
|
2837
|
+
(0, import_mobx_state_tree21.applySnapshot)(self, mapCustomFieldFromApi(res.data));
|
|
2713
2838
|
}
|
|
2714
2839
|
return res;
|
|
2715
2840
|
},
|
|
@@ -3016,10 +3141,10 @@ var AuthModel = {
|
|
|
3016
3141
|
var Auth_default = AuthModel;
|
|
3017
3142
|
|
|
3018
3143
|
// src/models/appointment/index.js
|
|
3019
|
-
var
|
|
3020
|
-
var RootStore =
|
|
3021
|
-
calendars:
|
|
3022
|
-
events:
|
|
3144
|
+
var import_mobx_state_tree22 = require("mobx-state-tree");
|
|
3145
|
+
var RootStore = import_mobx_state_tree22.types.model("RootStore", {
|
|
3146
|
+
calendars: import_mobx_state_tree22.types.optional(import_mobx_state_tree22.types.map(Calendar_default), {}),
|
|
3147
|
+
events: import_mobx_state_tree22.types.optional(import_mobx_state_tree22.types.map(Event_default), {})
|
|
3023
3148
|
}).actions((self) => ({
|
|
3024
3149
|
addCalendar(snapshot) {
|
|
3025
3150
|
const cal = Calendar_default.create(snapshot);
|
|
@@ -3059,6 +3184,8 @@ function createRootStore(initialState = {}) {
|
|
|
3059
3184
|
EmailProvider,
|
|
3060
3185
|
EventModel,
|
|
3061
3186
|
EventSource,
|
|
3187
|
+
EventStatus,
|
|
3188
|
+
ExternalEventModel,
|
|
3062
3189
|
FlowModel,
|
|
3063
3190
|
LeadModel,
|
|
3064
3191
|
LocationType,
|
package/dist/index.mjs
CHANGED
|
@@ -266,6 +266,12 @@ var AttendeeStatus = {
|
|
|
266
266
|
NeedsAction: 4,
|
|
267
267
|
Canceled: 5
|
|
268
268
|
};
|
|
269
|
+
var EventStatus = {
|
|
270
|
+
Scheduled: 1,
|
|
271
|
+
ReScheduled: 2,
|
|
272
|
+
Completed: 3,
|
|
273
|
+
Canceled: 4
|
|
274
|
+
};
|
|
269
275
|
var RecurringFrequency = {
|
|
270
276
|
None: 0,
|
|
271
277
|
Daily: 1,
|
|
@@ -416,6 +422,7 @@ var EventModel = types4.model("Event", {
|
|
|
416
422
|
flowId: types4.optional(types4.maybeNull(types4.string), null),
|
|
417
423
|
flowPath: types4.optional(types4.maybeNull(types4.string), null),
|
|
418
424
|
attendeeStatus: types4.optional(types4.number, AttendeeStatus.Tentative),
|
|
425
|
+
status: types4.optional(types4.maybeNull(types4.number), null),
|
|
419
426
|
rescheduleLink: types4.optional(types4.maybeNull(types4.string), null),
|
|
420
427
|
cancelLink: types4.optional(types4.maybeNull(types4.string), null),
|
|
421
428
|
timeZone: types4.optional(types4.maybeNull(types4.string), null),
|
|
@@ -554,6 +561,18 @@ var EventModel = types4.model("Event", {
|
|
|
554
561
|
async setAttendeeStatus(status) {
|
|
555
562
|
const statusName = typeof status === "number" ? Object.keys(AttendeeStatus).find((k) => AttendeeStatus[k] === status) ?? "None" : status;
|
|
556
563
|
return reqGet(`/event/${encodeURIComponent(self.eventId)}/${encodeURIComponent(statusName)}`);
|
|
564
|
+
},
|
|
565
|
+
/** GET /event/status/update – update event lifecycle status */
|
|
566
|
+
async setEventStatus(status) {
|
|
567
|
+
const statusValue = typeof status === "number" ? status : EventStatus[status] ?? status;
|
|
568
|
+
const res = await reqGet("/event/status/update", {
|
|
569
|
+
event_id: self.eventId,
|
|
570
|
+
status: statusValue
|
|
571
|
+
});
|
|
572
|
+
if (res.status === "success" && res.data) {
|
|
573
|
+
applySnapshot(self, { ...mapEventFromApi(res.data), eventId: self.eventId });
|
|
574
|
+
}
|
|
575
|
+
return res;
|
|
557
576
|
}
|
|
558
577
|
};
|
|
559
578
|
});
|
|
@@ -586,6 +605,7 @@ function mapEventFromApi(d) {
|
|
|
586
605
|
flowId: pick2("flowId", "FlowId", "flow_id"),
|
|
587
606
|
flowPath: pick2("flowPath", "FlowPath", "flow_path"),
|
|
588
607
|
attendeeStatus: n(pick2("attendeeStatus", "AttendeeStatus", "attendee_status")),
|
|
608
|
+
status: n(pick2("status", "Status")),
|
|
589
609
|
eventSource: n(pick2("eventSource", "EventSource", "event_source")),
|
|
590
610
|
rescheduleLink: pick2("rescheduleLink", "RescheduleLink", "reschedule_link"),
|
|
591
611
|
cancelLink: pick2("cancelLink", "CancelLink", "cancel_link"),
|
|
@@ -685,6 +705,7 @@ async function getByFiltersInternal(path, companyKey, opts = {}, dateRange = nul
|
|
|
685
705
|
if (opts.title != null && opts.title !== "") query.title = opts.title;
|
|
686
706
|
if (opts.search != null && opts.search !== "") query.search = opts.search;
|
|
687
707
|
if (opts.attendeeStatus != null && opts.attendeeStatus !== "") query.attendee_status = opts.attendeeStatus;
|
|
708
|
+
if (opts.status != null && opts.status !== "") query.status = opts.status;
|
|
688
709
|
if (opts.eventSource != null && opts.eventSource !== "") query.event_source = opts.eventSource;
|
|
689
710
|
const sortBy = opts.sortBy ?? opts.sort ?? opts.sort_column;
|
|
690
711
|
if (sortBy != null && sortBy !== "") query.sort = sortBy;
|
|
@@ -693,12 +714,17 @@ async function getByFiltersInternal(path, companyKey, opts = {}, dateRange = nul
|
|
|
693
714
|
const u = String(sortOrderRaw).trim().toUpperCase();
|
|
694
715
|
query.sort_dir = u.startsWith("DESC") ? "desc" : "asc";
|
|
695
716
|
}
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
717
|
+
const pageSize = opts.page_size ?? opts.pageSize;
|
|
718
|
+
const pageNum = opts.page != null ? Number(opts.page) : null;
|
|
719
|
+
const hasSkipTake = opts.skip != null || opts.take != null;
|
|
720
|
+
const usePageMode = pageNum != null && pageNum >= 1 && !hasSkipTake;
|
|
721
|
+
if (usePageMode) {
|
|
722
|
+
query.page = pageNum;
|
|
723
|
+
if (pageSize != null) query.page_size = pageSize;
|
|
699
724
|
} else {
|
|
700
725
|
if (opts.skip != null) query.skip = opts.skip;
|
|
701
|
-
|
|
726
|
+
const take = opts.take ?? (pageSize != null && !hasSkipTake ? pageSize : null);
|
|
727
|
+
if (take != null) query.take = take;
|
|
702
728
|
}
|
|
703
729
|
const res = await reqGet(path, query, { headers: { offset: String(offset) } });
|
|
704
730
|
if (res.status !== "success") {
|
|
@@ -817,6 +843,11 @@ EventModel.setAttendeeStatus = async (eventId, attendeeStatus) => {
|
|
|
817
843
|
const statusName = typeof attendeeStatus === "number" ? Object.keys(AttendeeStatus).find((k) => AttendeeStatus[k] === attendeeStatus) ?? "None" : attendeeStatus;
|
|
818
844
|
return reqGet(`/event/${encodeURIComponent(eventId)}/${encodeURIComponent(statusName)}`);
|
|
819
845
|
};
|
|
846
|
+
EventModel.setEventStatus = async (eventId, status) => {
|
|
847
|
+
const { reqGet } = createRequestHelpersFromEnv(getConfig());
|
|
848
|
+
const statusValue = typeof status === "number" ? status : EventStatus[status] ?? status;
|
|
849
|
+
return reqGet("/event/status/update", { event_id: eventId, status: statusValue });
|
|
850
|
+
};
|
|
820
851
|
var Event_default = EventModel;
|
|
821
852
|
|
|
822
853
|
// src/models/appointment/CalendarParticipant.js
|
|
@@ -1614,16 +1645,82 @@ var OpeningHourModel = types12.model("OpeningHour", {
|
|
|
1614
1645
|
});
|
|
1615
1646
|
var OpeningHour_default = OpeningHourModel;
|
|
1616
1647
|
|
|
1648
|
+
// src/models/appointment/ExternalEvent.js
|
|
1649
|
+
import { types as types13 } from "mobx-state-tree";
|
|
1650
|
+
function getDefaultOffset2() {
|
|
1651
|
+
var _a;
|
|
1652
|
+
const cfg = getConfig();
|
|
1653
|
+
return ((_a = cfg == null ? void 0 : cfg.getDefaultOffset) == null ? void 0 : _a.call(cfg)) ?? -(/* @__PURE__ */ new Date()).getTimezoneOffset();
|
|
1654
|
+
}
|
|
1655
|
+
function pickStr(obj, ...keys) {
|
|
1656
|
+
for (const k of keys) {
|
|
1657
|
+
const v = obj[k];
|
|
1658
|
+
if (v != null && typeof v === "string") return v;
|
|
1659
|
+
}
|
|
1660
|
+
return void 0;
|
|
1661
|
+
}
|
|
1662
|
+
function pickNum(obj, ...keys) {
|
|
1663
|
+
for (const k of keys) {
|
|
1664
|
+
const v = obj[k];
|
|
1665
|
+
if (v != null) {
|
|
1666
|
+
const n = typeof v === "number" ? v : Number(v);
|
|
1667
|
+
if (!Number.isNaN(n)) return n;
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
return void 0;
|
|
1671
|
+
}
|
|
1672
|
+
function toIsoDate(value) {
|
|
1673
|
+
if (value == null || value === "") return "";
|
|
1674
|
+
if (typeof value === "string") return value;
|
|
1675
|
+
if (value instanceof Date) return value.toISOString();
|
|
1676
|
+
return String(value);
|
|
1677
|
+
}
|
|
1678
|
+
var ExternalEventModel = types13.model("ExternalEvent", {
|
|
1679
|
+
title: types13.optional(types13.maybeNull(types13.string), null),
|
|
1680
|
+
startDate: types13.optional(types13.string, ""),
|
|
1681
|
+
endDate: types13.optional(types13.string, ""),
|
|
1682
|
+
startHour: types13.optional(types13.number, 0),
|
|
1683
|
+
startMinute: types13.optional(types13.number, 0),
|
|
1684
|
+
endHour: types13.optional(types13.number, 0),
|
|
1685
|
+
endMinute: types13.optional(types13.number, 0)
|
|
1686
|
+
});
|
|
1687
|
+
function mapApiRow(row) {
|
|
1688
|
+
return ExternalEventModel.create({
|
|
1689
|
+
title: pickStr(row, "title", "Title") ?? null,
|
|
1690
|
+
startDate: toIsoDate(row.startDate ?? row.StartDate),
|
|
1691
|
+
endDate: toIsoDate(row.endDate ?? row.EndDate),
|
|
1692
|
+
startHour: pickNum(row, "startHour", "StartHour") ?? 0,
|
|
1693
|
+
startMinute: pickNum(row, "startMinute", "StartMinute") ?? 0,
|
|
1694
|
+
endHour: pickNum(row, "endHour", "EndHour") ?? 0,
|
|
1695
|
+
endMinute: pickNum(row, "endMinute", "EndMinute") ?? 0
|
|
1696
|
+
});
|
|
1697
|
+
}
|
|
1698
|
+
ExternalEventModel.getByParticipant = async (participantId, opts = {}) => {
|
|
1699
|
+
if (!participantId) throw new Error("participantId required");
|
|
1700
|
+
const { req } = createRequestHelpersFromEnv(getConfig());
|
|
1701
|
+
const offset = opts.offset ?? getDefaultOffset2();
|
|
1702
|
+
const res = await req("/externalcalendar/events/get", {
|
|
1703
|
+
method: "GET",
|
|
1704
|
+
query: { participant_id: participantId },
|
|
1705
|
+
headers: { offset: String(offset) }
|
|
1706
|
+
});
|
|
1707
|
+
if (res.status === "success" && Array.isArray(res.data)) {
|
|
1708
|
+
return res.data.map(mapApiRow);
|
|
1709
|
+
}
|
|
1710
|
+
return [];
|
|
1711
|
+
};
|
|
1712
|
+
var ExternalEvent_default = ExternalEventModel;
|
|
1713
|
+
|
|
1617
1714
|
// src/models/appointment/Setting.js
|
|
1618
|
-
import { types as
|
|
1619
|
-
var SettingModel =
|
|
1620
|
-
id:
|
|
1621
|
-
settingsId:
|
|
1622
|
-
calendarId:
|
|
1623
|
-
logo:
|
|
1624
|
-
theme:
|
|
1625
|
-
schedulingButtonText:
|
|
1626
|
-
scheduledMessage:
|
|
1715
|
+
import { types as types14, getEnv as getEnv4, applySnapshot as applySnapshot4 } from "mobx-state-tree";
|
|
1716
|
+
var SettingModel = types14.model("Setting", {
|
|
1717
|
+
id: types14.optional(types14.maybeNull(types14.number), null),
|
|
1718
|
+
settingsId: types14.optional(types14.string, ""),
|
|
1719
|
+
calendarId: types14.optional(types14.string, ""),
|
|
1720
|
+
logo: types14.optional(types14.maybeNull(types14.string), null),
|
|
1721
|
+
theme: types14.optional(types14.maybeNull(types14.string), null),
|
|
1722
|
+
schedulingButtonText: types14.optional(types14.maybeNull(types14.string), null),
|
|
1723
|
+
scheduledMessage: types14.optional(types14.maybeNull(types14.string), null)
|
|
1627
1724
|
}).actions((self) => {
|
|
1628
1725
|
const { reqGet, reqPost } = createRequestHelpers(self, getEnv4);
|
|
1629
1726
|
return {
|
|
@@ -1712,13 +1809,13 @@ SettingModel.uploadLogo = async (calendarId, file) => {
|
|
|
1712
1809
|
var Setting_default = SettingModel;
|
|
1713
1810
|
|
|
1714
1811
|
// src/models/appointment/Company.js
|
|
1715
|
-
import { types as
|
|
1716
|
-
var CompanyModel =
|
|
1717
|
-
id:
|
|
1718
|
-
companyKey:
|
|
1719
|
-
companyName:
|
|
1720
|
-
createdOn:
|
|
1721
|
-
modifiedOn:
|
|
1812
|
+
import { types as types15, getEnv as getEnv5, applySnapshot as applySnapshot5 } from "mobx-state-tree";
|
|
1813
|
+
var CompanyModel = types15.model("Company", {
|
|
1814
|
+
id: types15.optional(types15.maybeNull(types15.number), null),
|
|
1815
|
+
companyKey: types15.identifier,
|
|
1816
|
+
companyName: types15.optional(types15.string, ""),
|
|
1817
|
+
createdOn: types15.optional(types15.maybeNull(types15.string), null),
|
|
1818
|
+
modifiedOn: types15.optional(types15.maybeNull(types15.string), null)
|
|
1722
1819
|
}).actions((self) => {
|
|
1723
1820
|
const { reqGet, reqPost } = createRequestHelpers(self, getEnv5);
|
|
1724
1821
|
return {
|
|
@@ -1780,13 +1877,13 @@ CompanyModel.save = async (payload) => {
|
|
|
1780
1877
|
var Company_default = CompanyModel;
|
|
1781
1878
|
|
|
1782
1879
|
// src/models/appointment/Asset.js
|
|
1783
|
-
import { types as
|
|
1784
|
-
var AssetModel =
|
|
1785
|
-
url:
|
|
1786
|
-
blobPath:
|
|
1787
|
-
category:
|
|
1788
|
-
contentType:
|
|
1789
|
-
size:
|
|
1880
|
+
import { types as types16, getEnv as getEnv6 } from "mobx-state-tree";
|
|
1881
|
+
var AssetModel = types16.model("Asset", {
|
|
1882
|
+
url: types16.optional(types16.maybeNull(types16.string), null),
|
|
1883
|
+
blobPath: types16.optional(types16.maybeNull(types16.string), null),
|
|
1884
|
+
category: types16.optional(types16.maybeNull(types16.string), null),
|
|
1885
|
+
contentType: types16.optional(types16.maybeNull(types16.string), null),
|
|
1886
|
+
size: types16.optional(types16.maybeNull(types16.number), null)
|
|
1790
1887
|
}).actions((self) => ({
|
|
1791
1888
|
/** POST /asset/upload – upload file using model category. */
|
|
1792
1889
|
async upload(file, opts = {}) {
|
|
@@ -1860,7 +1957,7 @@ AssetModel.upload = async (file, opts = {}) => {
|
|
|
1860
1957
|
var Asset_default = AssetModel;
|
|
1861
1958
|
|
|
1862
1959
|
// src/models/appointment/CalendarLocation.js
|
|
1863
|
-
import { types as
|
|
1960
|
+
import { types as types17, getEnv as getEnv7, applySnapshot as applySnapshot6 } from "mobx-state-tree";
|
|
1864
1961
|
function mapCalendarLocationFromApi(d) {
|
|
1865
1962
|
if (!d) return d;
|
|
1866
1963
|
const pick2 = (...keys) => keys.reduce((v, k) => v ?? d[k], void 0);
|
|
@@ -1890,17 +1987,17 @@ function toPayload4(self) {
|
|
|
1890
1987
|
sortOrder: self.sortOrder
|
|
1891
1988
|
};
|
|
1892
1989
|
}
|
|
1893
|
-
var CalendarLocationModel =
|
|
1894
|
-
id:
|
|
1895
|
-
calendarLocationId:
|
|
1896
|
-
calendarId:
|
|
1897
|
-
locationType:
|
|
1898
|
-
name:
|
|
1899
|
-
value:
|
|
1900
|
-
isDefault:
|
|
1901
|
-
sortOrder:
|
|
1902
|
-
createdOn:
|
|
1903
|
-
modifiedOn:
|
|
1990
|
+
var CalendarLocationModel = types17.model("CalendarLocation", {
|
|
1991
|
+
id: types17.optional(types17.maybeNull(types17.number), null),
|
|
1992
|
+
calendarLocationId: types17.optional(types17.maybeNull(types17.string), null),
|
|
1993
|
+
calendarId: types17.optional(types17.maybeNull(types17.string), null),
|
|
1994
|
+
locationType: types17.optional(types17.number, LocationType.Physical),
|
|
1995
|
+
name: types17.optional(types17.string, ""),
|
|
1996
|
+
value: types17.optional(types17.string, ""),
|
|
1997
|
+
isDefault: types17.optional(types17.boolean, false),
|
|
1998
|
+
sortOrder: types17.optional(types17.number, 0),
|
|
1999
|
+
createdOn: types17.optional(types17.maybeNull(types17.string), null),
|
|
2000
|
+
modifiedOn: types17.optional(types17.maybeNull(types17.string), null)
|
|
1904
2001
|
}).actions((self) => {
|
|
1905
2002
|
const { reqGet, reqPost } = createRequestHelpers(self, getEnv7);
|
|
1906
2003
|
return {
|
|
@@ -1982,7 +2079,7 @@ CalendarLocationModel.setDefault = async (calendarId, calendarLocationId) => {
|
|
|
1982
2079
|
var CalendarLocation_default = CalendarLocationModel;
|
|
1983
2080
|
|
|
1984
2081
|
// src/models/appointment/Preference.js
|
|
1985
|
-
import { types as
|
|
2082
|
+
import { types as types18 } from "mobx-state-tree";
|
|
1986
2083
|
var PreferenceScope = {
|
|
1987
2084
|
Global: 0,
|
|
1988
2085
|
Consumer: 1,
|
|
@@ -1993,13 +2090,13 @@ var PreferenceScope = {
|
|
|
1993
2090
|
User: 6
|
|
1994
2091
|
};
|
|
1995
2092
|
var SCOPE_NAMES = ["Global", "Consumer", "Company", "Calendar", "Event", "Participant", "User"];
|
|
1996
|
-
var PreferenceModel =
|
|
1997
|
-
id:
|
|
1998
|
-
preferenceId:
|
|
1999
|
-
level:
|
|
2000
|
-
primaryKey:
|
|
2001
|
-
preferenceOption:
|
|
2002
|
-
optionsJson:
|
|
2093
|
+
var PreferenceModel = types18.model("Preference", {
|
|
2094
|
+
id: types18.optional(types18.maybeNull(types18.number), null),
|
|
2095
|
+
preferenceId: types18.optional(types18.maybeNull(types18.string), null),
|
|
2096
|
+
level: types18.optional(types18.number, 0),
|
|
2097
|
+
primaryKey: types18.optional(types18.string, ""),
|
|
2098
|
+
preferenceOption: types18.optional(types18.string, ""),
|
|
2099
|
+
optionsJson: types18.optional(types18.maybeNull(types18.string), null)
|
|
2003
2100
|
}).actions((self) => ({
|
|
2004
2101
|
/** POST /preference/{scope}/{key}/{option} – save this preference to the API. */
|
|
2005
2102
|
async save() {
|
|
@@ -2047,7 +2144,7 @@ PreferenceModel.delete = async (preferenceId) => {
|
|
|
2047
2144
|
var Preference_default = PreferenceModel;
|
|
2048
2145
|
|
|
2049
2146
|
// src/models/appointment/Flow.js
|
|
2050
|
-
import { types as
|
|
2147
|
+
import { types as types19, getEnv as getEnv8, applySnapshot as applySnapshot7 } from "mobx-state-tree";
|
|
2051
2148
|
function mapFlowFromApi(d) {
|
|
2052
2149
|
if (!d) return d;
|
|
2053
2150
|
const pick2 = (...keys) => keys.reduce((v, k) => v ?? d[k], void 0);
|
|
@@ -2066,18 +2163,18 @@ function mapFlowFromApi(d) {
|
|
|
2066
2163
|
modifiedOn: pick2("modifiedOn", "ModifiedOn", "modified_on") ?? null
|
|
2067
2164
|
};
|
|
2068
2165
|
}
|
|
2069
|
-
var FlowModel =
|
|
2070
|
-
id:
|
|
2071
|
-
flowId:
|
|
2072
|
-
companyKey:
|
|
2073
|
-
calendarId:
|
|
2074
|
-
name:
|
|
2075
|
-
description:
|
|
2076
|
-
flowJson:
|
|
2077
|
-
isActive:
|
|
2078
|
-
isDeleted:
|
|
2079
|
-
createdOn:
|
|
2080
|
-
modifiedOn:
|
|
2166
|
+
var FlowModel = types19.model("Flow", {
|
|
2167
|
+
id: types19.optional(types19.maybeNull(types19.number), null),
|
|
2168
|
+
flowId: types19.optional(types19.identifier, "new"),
|
|
2169
|
+
companyKey: types19.optional(types19.maybeNull(types19.string), null),
|
|
2170
|
+
calendarId: types19.optional(types19.maybeNull(types19.string), null),
|
|
2171
|
+
name: types19.optional(types19.maybeNull(types19.string), null),
|
|
2172
|
+
description: types19.optional(types19.maybeNull(types19.string), null),
|
|
2173
|
+
flowJson: types19.optional(types19.string, ""),
|
|
2174
|
+
isActive: types19.optional(types19.boolean, true),
|
|
2175
|
+
isDeleted: types19.optional(types19.boolean, false),
|
|
2176
|
+
createdOn: types19.optional(types19.maybeNull(types19.string), null),
|
|
2177
|
+
modifiedOn: types19.optional(types19.maybeNull(types19.string), null)
|
|
2081
2178
|
}).actions((self) => {
|
|
2082
2179
|
const { reqGet, reqPost } = createRequestHelpers(self, getEnv8);
|
|
2083
2180
|
return {
|
|
@@ -2310,7 +2407,20 @@ FlowModel.getPreview = async (flowId) => {
|
|
|
2310
2407
|
var Flow_default = FlowModel;
|
|
2311
2408
|
|
|
2312
2409
|
// src/models/appointment/Lead.js
|
|
2313
|
-
import { types as
|
|
2410
|
+
import { types as types20, getEnv as getEnv9, applySnapshot as applySnapshot8, getSnapshot } from "mobx-state-tree";
|
|
2411
|
+
function pickLeadCreateContact(payload) {
|
|
2412
|
+
const p = payload ?? {};
|
|
2413
|
+
const email = String(p.email ?? p.Email ?? "").trim();
|
|
2414
|
+
const phone = String(p.phone ?? p.Phone ?? "").trim();
|
|
2415
|
+
const companyKey = String(p.companyKey ?? p.company_key ?? p.CompanyKey ?? "").trim();
|
|
2416
|
+
return { email, phone, companyKey };
|
|
2417
|
+
}
|
|
2418
|
+
function validateLeadCreatePayload(payload) {
|
|
2419
|
+
const { email, phone, companyKey } = pickLeadCreateContact(payload);
|
|
2420
|
+
if (!companyKey) return { ok: false, message: "companyKey is required" };
|
|
2421
|
+
if (!email && !phone) return { ok: false, message: "email or phone is required" };
|
|
2422
|
+
return { ok: true };
|
|
2423
|
+
}
|
|
2314
2424
|
function mapLeadFromApi(d) {
|
|
2315
2425
|
if (!d) return d;
|
|
2316
2426
|
const pick2 = (...keys) => keys.reduce((v, k) => v ?? d[k], void 0);
|
|
@@ -2335,22 +2445,24 @@ function mapLeadFromApi(d) {
|
|
|
2335
2445
|
source: pick2("source", "Source") ?? "",
|
|
2336
2446
|
leadType,
|
|
2337
2447
|
referrerLink: pick2("referrerLink", "ReferrerLink", "referrer_link") ?? "",
|
|
2448
|
+
description: pick2("description", "Description") ?? "",
|
|
2338
2449
|
createdOn: pick2("createdOn", "CreatedOn", "created_on") ?? null,
|
|
2339
2450
|
modifiedOn: pick2("modifiedOn", "ModifiedOn", "modified_on") ?? null
|
|
2340
2451
|
};
|
|
2341
2452
|
}
|
|
2342
|
-
var LeadModel =
|
|
2343
|
-
id:
|
|
2344
|
-
leadId:
|
|
2345
|
-
email:
|
|
2346
|
-
name:
|
|
2347
|
-
phone:
|
|
2348
|
-
companyKey:
|
|
2349
|
-
source:
|
|
2350
|
-
leadType:
|
|
2351
|
-
referrerLink:
|
|
2352
|
-
|
|
2353
|
-
|
|
2453
|
+
var LeadModel = types20.model("Lead", {
|
|
2454
|
+
id: types20.optional(types20.maybeNull(types20.number), null),
|
|
2455
|
+
leadId: types20.optional(types20.identifier, "new"),
|
|
2456
|
+
email: types20.optional(types20.string, ""),
|
|
2457
|
+
name: types20.optional(types20.string, ""),
|
|
2458
|
+
phone: types20.optional(types20.string, ""),
|
|
2459
|
+
companyKey: types20.optional(types20.string, ""),
|
|
2460
|
+
source: types20.optional(types20.string, ""),
|
|
2461
|
+
leadType: types20.optional(types20.number, 2),
|
|
2462
|
+
referrerLink: types20.optional(types20.string, ""),
|
|
2463
|
+
description: types20.optional(types20.string, ""),
|
|
2464
|
+
createdOn: types20.optional(types20.maybeNull(types20.string), null),
|
|
2465
|
+
modifiedOn: types20.optional(types20.maybeNull(types20.string), null)
|
|
2354
2466
|
}).actions((self) => {
|
|
2355
2467
|
const { reqGet, reqPost } = createRequestHelpers(self, getEnv9);
|
|
2356
2468
|
return {
|
|
@@ -2398,8 +2510,14 @@ var LeadModel = types19.model("Lead", {
|
|
|
2398
2510
|
async getColumnSelection(userId) {
|
|
2399
2511
|
return LeadModel.getColumnSelection(userId);
|
|
2400
2512
|
},
|
|
2401
|
-
/** POST /lead/create – create this lead */
|
|
2513
|
+
/** POST /lead/create – create this lead (requires companyKey and email or phone) */
|
|
2402
2514
|
async createLead() {
|
|
2515
|
+
const validation = validateLeadCreatePayload({
|
|
2516
|
+
email: self.email,
|
|
2517
|
+
phone: self.phone,
|
|
2518
|
+
companyKey: self.companyKey
|
|
2519
|
+
});
|
|
2520
|
+
if (!validation.ok) return { status: "failure", message: validation.message };
|
|
2403
2521
|
const payload = {
|
|
2404
2522
|
email: self.email,
|
|
2405
2523
|
name: self.name,
|
|
@@ -2407,7 +2525,8 @@ var LeadModel = types19.model("Lead", {
|
|
|
2407
2525
|
companyKey: self.companyKey,
|
|
2408
2526
|
source: self.source,
|
|
2409
2527
|
leadType: self.leadType,
|
|
2410
|
-
referrerLink: self.referrerLink
|
|
2528
|
+
referrerLink: self.referrerLink,
|
|
2529
|
+
description: self.description
|
|
2411
2530
|
};
|
|
2412
2531
|
const res = await reqPost("/lead/create", payload);
|
|
2413
2532
|
if (res.status === "success" && res.data) {
|
|
@@ -2428,7 +2547,8 @@ var LeadModel = types19.model("Lead", {
|
|
|
2428
2547
|
companyKey: self.companyKey,
|
|
2429
2548
|
source: self.source,
|
|
2430
2549
|
leadType: self.leadType,
|
|
2431
|
-
referrerLink: self.referrerLink
|
|
2550
|
+
referrerLink: self.referrerLink,
|
|
2551
|
+
description: self.description
|
|
2432
2552
|
};
|
|
2433
2553
|
const res = await reqPost("/lead/update", payload);
|
|
2434
2554
|
if (res.status === "success" && res.data) {
|
|
@@ -2496,6 +2616,7 @@ LeadModel.allowedColumns = [
|
|
|
2496
2616
|
"source",
|
|
2497
2617
|
"lead_type",
|
|
2498
2618
|
"referrer_link",
|
|
2619
|
+
"description",
|
|
2499
2620
|
"created_on",
|
|
2500
2621
|
"modified_on"
|
|
2501
2622
|
];
|
|
@@ -2549,6 +2670,8 @@ LeadModel.getByCompany = async (companyKey, opts = {}) => {
|
|
|
2549
2670
|
return null;
|
|
2550
2671
|
};
|
|
2551
2672
|
LeadModel.createLead = async (payload) => {
|
|
2673
|
+
const validation = validateLeadCreatePayload(payload);
|
|
2674
|
+
if (!validation.ok) return { status: "failure", message: validation.message };
|
|
2552
2675
|
const { reqPost } = createRequestHelpersFromEnv(getConfig());
|
|
2553
2676
|
const res = await reqPost("/lead/create", payload);
|
|
2554
2677
|
if (res.status === "success" && res.data) {
|
|
@@ -2604,17 +2727,17 @@ LeadModel.getSources = async (companyKey) => {
|
|
|
2604
2727
|
var Lead_default = LeadModel;
|
|
2605
2728
|
|
|
2606
2729
|
// src/models/appointment/CustomField.js
|
|
2607
|
-
import { types as
|
|
2608
|
-
var CustomFieldModel =
|
|
2609
|
-
id:
|
|
2610
|
-
customFieldId:
|
|
2611
|
-
calendarId:
|
|
2612
|
-
label:
|
|
2613
|
-
type:
|
|
2614
|
-
isRequired:
|
|
2615
|
-
createdOn:
|
|
2616
|
-
modifiedOn:
|
|
2617
|
-
isDeleted:
|
|
2730
|
+
import { types as types21, getEnv as getEnv10, applySnapshot as applySnapshot9 } from "mobx-state-tree";
|
|
2731
|
+
var CustomFieldModel = types21.model("CustomField", {
|
|
2732
|
+
id: types21.optional(types21.maybeNull(types21.number), null),
|
|
2733
|
+
customFieldId: types21.optional(types21.maybeNull(types21.string), null),
|
|
2734
|
+
calendarId: types21.optional(types21.maybeNull(types21.string), null),
|
|
2735
|
+
label: types21.optional(types21.maybeNull(types21.string), null),
|
|
2736
|
+
type: types21.optional(types21.string, ""),
|
|
2737
|
+
isRequired: types21.optional(types21.boolean, false),
|
|
2738
|
+
createdOn: types21.optional(types21.maybeNull(types21.string), null),
|
|
2739
|
+
modifiedOn: types21.optional(types21.maybeNull(types21.string), null),
|
|
2740
|
+
isDeleted: types21.optional(types21.boolean, false)
|
|
2618
2741
|
}).actions((self) => {
|
|
2619
2742
|
const { reqGet, reqPost } = createRequestHelpers(self, getEnv10);
|
|
2620
2743
|
return {
|
|
@@ -2944,10 +3067,10 @@ var AuthModel = {
|
|
|
2944
3067
|
var Auth_default = AuthModel;
|
|
2945
3068
|
|
|
2946
3069
|
// src/models/appointment/index.js
|
|
2947
|
-
import { types as
|
|
2948
|
-
var RootStore =
|
|
2949
|
-
calendars:
|
|
2950
|
-
events:
|
|
3070
|
+
import { types as types22, getEnv as getEnv11 } from "mobx-state-tree";
|
|
3071
|
+
var RootStore = types22.model("RootStore", {
|
|
3072
|
+
calendars: types22.optional(types22.map(Calendar_default), {}),
|
|
3073
|
+
events: types22.optional(types22.map(Event_default), {})
|
|
2951
3074
|
}).actions((self) => ({
|
|
2952
3075
|
addCalendar(snapshot) {
|
|
2953
3076
|
const cal = Calendar_default.create(snapshot);
|
|
@@ -2986,6 +3109,8 @@ export {
|
|
|
2986
3109
|
EmailProvider,
|
|
2987
3110
|
Event_default as EventModel,
|
|
2988
3111
|
EventSource,
|
|
3112
|
+
EventStatus,
|
|
3113
|
+
ExternalEvent_default as ExternalEventModel,
|
|
2989
3114
|
Flow_default as FlowModel,
|
|
2990
3115
|
Lead_default as LeadModel,
|
|
2991
3116
|
LocationType,
|