@blazeo.com/calendar-client 1.0.55 → 1.0.57
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 +80 -0
- package/dist/index.js +195 -18
- package/dist/index.mjs +191 -17
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -335,6 +335,77 @@ export const FlowModel: {
|
|
|
335
335
|
create(snapshot?: FlowSnapshot, options?: { env?: object }): unknown;
|
|
336
336
|
};
|
|
337
337
|
|
|
338
|
+
export type ActivityLogSearchResult = {
|
|
339
|
+
activityLogs: unknown[];
|
|
340
|
+
totalCount: number;
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
export type ActivityLogSnapshot = {
|
|
344
|
+
id?: number | null;
|
|
345
|
+
activityLogId?: string;
|
|
346
|
+
leadId?: string | null;
|
|
347
|
+
eventId?: string | null;
|
|
348
|
+
activityTypeId?: number;
|
|
349
|
+
activityTypeName?: string;
|
|
350
|
+
categoryId?: number;
|
|
351
|
+
categoryName?: string;
|
|
352
|
+
isPartialData?: boolean;
|
|
353
|
+
userEmail?: string;
|
|
354
|
+
createdOn?: string | null;
|
|
355
|
+
data?: Record<string, string>;
|
|
356
|
+
activityLogDetails?: Array<{ key?: string; value?: string }>;
|
|
357
|
+
};
|
|
358
|
+
|
|
359
|
+
export const ActivityLogModel: {
|
|
360
|
+
get(opts: {
|
|
361
|
+
companyKey: string;
|
|
362
|
+
company_key?: string;
|
|
363
|
+
leadId?: string;
|
|
364
|
+
lead_id?: string;
|
|
365
|
+
eventId?: string;
|
|
366
|
+
event_id?: string;
|
|
367
|
+
activityTypeId?: number | string | number[];
|
|
368
|
+
activity_type_id?: number | string | number[];
|
|
369
|
+
activityTypeIds?: number | string | number[];
|
|
370
|
+
userEmail?: string;
|
|
371
|
+
user_email?: string;
|
|
372
|
+
fromDate?: string;
|
|
373
|
+
from_date?: string;
|
|
374
|
+
toDate?: string;
|
|
375
|
+
to_date?: string;
|
|
376
|
+
sortBy?: string;
|
|
377
|
+
sort?: string;
|
|
378
|
+
sort_column?: string;
|
|
379
|
+
sortOrder?: 'ASC' | 'DESC' | 'asc' | 'desc' | string;
|
|
380
|
+
sort_dir?: 'asc' | 'desc' | string;
|
|
381
|
+
searchColumn?: string;
|
|
382
|
+
search_column?: string;
|
|
383
|
+
column?: string;
|
|
384
|
+
searchText?: string;
|
|
385
|
+
search_text?: string;
|
|
386
|
+
search?: string;
|
|
387
|
+
filters?: Array<{
|
|
388
|
+
column?: string;
|
|
389
|
+
searchColumn?: string;
|
|
390
|
+
search_column?: string;
|
|
391
|
+
text?: string;
|
|
392
|
+
searchText?: string;
|
|
393
|
+
search_text?: string;
|
|
394
|
+
search?: string;
|
|
395
|
+
}>;
|
|
396
|
+
page?: number;
|
|
397
|
+
pageSize?: number;
|
|
398
|
+
page_size?: number;
|
|
399
|
+
skip?: number;
|
|
400
|
+
take?: number;
|
|
401
|
+
}): Promise<ActivityLogSearchResult | { status: 'failure'; message: string } | null>;
|
|
402
|
+
getByCompany(
|
|
403
|
+
companyKey: string,
|
|
404
|
+
opts?: Omit<Parameters<typeof ActivityLogModel.get>[0], 'companyKey'>
|
|
405
|
+
): Promise<ActivityLogSearchResult | { status: 'failure'; message: string } | null>;
|
|
406
|
+
create(snapshot?: ActivityLogSnapshot, options?: { env?: object }): unknown;
|
|
407
|
+
};
|
|
408
|
+
|
|
338
409
|
export const LeadModel: {
|
|
339
410
|
getRaw(leadId: string): Promise<{ status: string; data?: unknown; message?: string }>;
|
|
340
411
|
get(leadId: string): Promise<unknown>;
|
|
@@ -567,3 +638,12 @@ export const RecurringFrequency: Record<string, number>;
|
|
|
567
638
|
export const DayOfWeek: Record<string, number>;
|
|
568
639
|
export const LocationType: Record<string, number>;
|
|
569
640
|
export const EmailProvider: Record<string, number>;
|
|
641
|
+
export const CalendarVisibility: Record<string, number>;
|
|
642
|
+
export const ActivityLogType: {
|
|
643
|
+
AppointmentScheduled: 9;
|
|
644
|
+
AppointmentRescheduled: 10;
|
|
645
|
+
AppointmentCanceled: 11;
|
|
646
|
+
};
|
|
647
|
+
export const ActivityLogCategory: {
|
|
648
|
+
Appointments: 3;
|
|
649
|
+
};
|
package/dist/index.js
CHANGED
|
@@ -19,6 +19,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
// src/models/appointment/index.js
|
|
20
20
|
var index_exports = {};
|
|
21
21
|
__export(index_exports, {
|
|
22
|
+
ActivityLogCategory: () => ActivityLogCategory,
|
|
23
|
+
ActivityLogModel: () => ActivityLog_default,
|
|
24
|
+
ActivityLogType: () => ActivityLogType,
|
|
22
25
|
AssetModel: () => Asset_default,
|
|
23
26
|
AssignmentMethod: () => AssignmentMethod,
|
|
24
27
|
AttendeeStatus: () => AttendeeStatus,
|
|
@@ -383,6 +386,14 @@ var CalendarVisibility = {
|
|
|
383
386
|
Public: 0,
|
|
384
387
|
Private: 1
|
|
385
388
|
};
|
|
389
|
+
var ActivityLogType = {
|
|
390
|
+
AppointmentScheduled: 9,
|
|
391
|
+
AppointmentRescheduled: 10,
|
|
392
|
+
AppointmentCanceled: 11
|
|
393
|
+
};
|
|
394
|
+
var ActivityLogCategory = {
|
|
395
|
+
Appointments: 3
|
|
396
|
+
};
|
|
386
397
|
|
|
387
398
|
// src/models/appointment/Event.js
|
|
388
399
|
var import_mobx_state_tree4 = require("mobx-state-tree");
|
|
@@ -585,7 +596,7 @@ var EventModel = import_mobx_state_tree4.types.model("Event", {
|
|
|
585
596
|
};
|
|
586
597
|
return reqPost("/event/update", payload);
|
|
587
598
|
},
|
|
588
|
-
/** POST /event/reschedule – reschedule event */
|
|
599
|
+
/** POST /event/reschedule – reschedule event and mark status ReScheduled */
|
|
589
600
|
async reschedule(offsetMinutes) {
|
|
590
601
|
const offset = offsetMinutes ?? getOffset();
|
|
591
602
|
const payload = {
|
|
@@ -609,7 +620,12 @@ var EventModel = import_mobx_state_tree4.types.model("Event", {
|
|
|
609
620
|
flowPath: self.flowPath ?? void 0
|
|
610
621
|
};
|
|
611
622
|
const res = await reqPost("/event/reschedule", payload, null, { headers: { offset: String(offset) } });
|
|
612
|
-
if (res.status
|
|
623
|
+
if (res.status !== "success") return res;
|
|
624
|
+
if (res.data) {
|
|
625
|
+
(0, import_mobx_state_tree4.applySnapshot)(self, { ...mapEventFromApi(res.data), eventId: self.eventId });
|
|
626
|
+
} else if (self.status !== EventStatus.ReScheduled) {
|
|
627
|
+
await self.setEventStatus(EventStatus.ReScheduled);
|
|
628
|
+
}
|
|
613
629
|
return res;
|
|
614
630
|
},
|
|
615
631
|
/** GET /event/cancel – cancel this event */
|
|
@@ -903,9 +919,17 @@ EventModel.reschedule = async (payload, offsetMinutes) => {
|
|
|
903
919
|
const { reqPost } = createRequestHelpersFromEnv(getConfig());
|
|
904
920
|
const offset = offsetMinutes ?? getDefaultOffset();
|
|
905
921
|
const res = await reqPost("/event/reschedule", payload, null, { headers: { offset: String(offset) } });
|
|
906
|
-
if (res.status
|
|
922
|
+
if (res.status !== "success") return null;
|
|
923
|
+
const eventId = String((payload == null ? void 0 : payload.eventId) ?? (payload == null ? void 0 : payload.EventId) ?? (payload == null ? void 0 : payload.event_id) ?? "");
|
|
924
|
+
if (res.data) {
|
|
907
925
|
return EventModel.create(mapEventFromApi(res.data), { env: getConfig() });
|
|
908
926
|
}
|
|
927
|
+
if (eventId) {
|
|
928
|
+
const statusRes = await EventModel.setEventStatus(eventId, EventStatus.ReScheduled);
|
|
929
|
+
if (statusRes.status === "success" && statusRes.data) {
|
|
930
|
+
return EventModel.create(mapEventFromApi(statusRes.data), { env: getConfig() });
|
|
931
|
+
}
|
|
932
|
+
}
|
|
909
933
|
return null;
|
|
910
934
|
};
|
|
911
935
|
EventModel.updateEvent = async (payload) => {
|
|
@@ -2965,20 +2989,170 @@ LeadModel.getSources = async (companyKey) => {
|
|
|
2965
2989
|
};
|
|
2966
2990
|
var Lead_default = LeadModel;
|
|
2967
2991
|
|
|
2968
|
-
// src/models/appointment/
|
|
2992
|
+
// src/models/appointment/ActivityLog.js
|
|
2969
2993
|
var import_mobx_state_tree21 = require("mobx-state-tree");
|
|
2970
|
-
var
|
|
2994
|
+
var ActivityLogDetailModel = import_mobx_state_tree21.types.model("ActivityLogDetail", {
|
|
2995
|
+
key: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.string, ""),
|
|
2996
|
+
value: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.string, "")
|
|
2997
|
+
});
|
|
2998
|
+
function mapActivityLogFromApi(d) {
|
|
2999
|
+
if (!d) return d;
|
|
3000
|
+
const pick2 = (...keys) => keys.reduce((v, k) => v ?? d[k], void 0);
|
|
3001
|
+
const detailsRaw = pick2("activityLogDetails", "ActivityLogDetails");
|
|
3002
|
+
const details = Array.isArray(detailsRaw) ? detailsRaw.map((row) => ({
|
|
3003
|
+
key: pickDetail(row, "key", "Key") ?? "",
|
|
3004
|
+
value: pickDetail(row, "value", "Value") ?? ""
|
|
3005
|
+
})) : [];
|
|
3006
|
+
const dataRaw = pick2("data", "Data");
|
|
3007
|
+
const data = dataRaw && typeof dataRaw === "object" && !Array.isArray(dataRaw) ? { ...dataRaw } : details.reduce((acc, row) => {
|
|
3008
|
+
if (row.key) acc[row.key] = row.value ?? "";
|
|
3009
|
+
return acc;
|
|
3010
|
+
}, {});
|
|
3011
|
+
return {
|
|
3012
|
+
id: pick2("id", "Id") ?? null,
|
|
3013
|
+
activityLogId: pick2("activityLogId", "ActivityLogId", "activity_log_id") ?? "new",
|
|
3014
|
+
leadId: pick2("leadId", "LeadId", "lead_id") ?? null,
|
|
3015
|
+
eventId: pick2("eventId", "EventId", "event_id") ?? null,
|
|
3016
|
+
activityTypeId: pick2("activityTypeId", "ActivityTypeId", "activity_type_id") ?? 0,
|
|
3017
|
+
activityTypeName: pick2("activityTypeName", "ActivityTypeName", "activity_type_name") ?? "",
|
|
3018
|
+
categoryId: pick2("categoryId", "CategoryId", "category_id") ?? 3,
|
|
3019
|
+
categoryName: pick2("categoryName", "CategoryName", "category_name") ?? "Appointments",
|
|
3020
|
+
isPartialData: pick2("isPartialData", "IsPartialData", "is_partial_data") ?? false,
|
|
3021
|
+
userEmail: pick2("userEmail", "UserEmail", "user_email") ?? "",
|
|
3022
|
+
createdOn: pick2("createdOn", "CreatedOn", "created_on") ?? null,
|
|
3023
|
+
data,
|
|
3024
|
+
activityLogDetails: details
|
|
3025
|
+
};
|
|
3026
|
+
}
|
|
3027
|
+
function pickDetail(row, ...keys) {
|
|
3028
|
+
if (!row) return void 0;
|
|
3029
|
+
return keys.reduce((v, k) => v ?? row[k], void 0);
|
|
3030
|
+
}
|
|
3031
|
+
function normalizeActivityTypeIds(raw) {
|
|
3032
|
+
if (raw == null) return null;
|
|
3033
|
+
const values = Array.isArray(raw) ? raw : [raw];
|
|
3034
|
+
const ids = [];
|
|
3035
|
+
for (const value of values) {
|
|
3036
|
+
if (value == null || value === "") continue;
|
|
3037
|
+
const parts = String(value).split(",");
|
|
3038
|
+
for (const part of parts) {
|
|
3039
|
+
const trimmed = part.trim();
|
|
3040
|
+
if (!trimmed) continue;
|
|
3041
|
+
const n = Number(trimmed);
|
|
3042
|
+
if (Number.isFinite(n)) ids.push(n);
|
|
3043
|
+
}
|
|
3044
|
+
}
|
|
3045
|
+
return ids.length ? ids : null;
|
|
3046
|
+
}
|
|
3047
|
+
function buildActivityLogQuery(opts = {}) {
|
|
3048
|
+
const companyKey = String(opts.companyKey ?? opts.company_key ?? opts.CompanyKey ?? "").trim();
|
|
3049
|
+
const query = { company_key: companyKey };
|
|
3050
|
+
const leadId = opts.leadId ?? opts.lead_id ?? opts.LeadId;
|
|
3051
|
+
if (leadId != null && String(leadId).trim() !== "") query.lead_id = String(leadId).trim();
|
|
3052
|
+
const eventId = opts.eventId ?? opts.event_id ?? opts.EventId;
|
|
3053
|
+
if (eventId != null && String(eventId).trim() !== "") query.event_id = String(eventId).trim();
|
|
3054
|
+
const userEmail = opts.userEmail ?? opts.user_email ?? opts.UserEmail;
|
|
3055
|
+
if (userEmail != null && String(userEmail).trim() !== "") query.user_email = String(userEmail).trim();
|
|
3056
|
+
const fromDate = opts.fromDate ?? opts.from_date ?? opts.FromDate;
|
|
3057
|
+
if (fromDate != null && String(fromDate).trim() !== "") query.from_date = String(fromDate).trim();
|
|
3058
|
+
const toDate = opts.toDate ?? opts.to_date ?? opts.ToDate;
|
|
3059
|
+
if (toDate != null && String(toDate).trim() !== "") query.to_date = String(toDate).trim();
|
|
3060
|
+
const activityTypeIds = normalizeActivityTypeIds(
|
|
3061
|
+
opts.activityTypeId ?? opts.activity_type_id ?? opts.activityTypeIds ?? opts.activity_type_ids
|
|
3062
|
+
);
|
|
3063
|
+
if (activityTypeIds == null ? void 0 : activityTypeIds.length) {
|
|
3064
|
+
query.activity_type_id = activityTypeIds.length === 1 ? activityTypeIds[0] : activityTypeIds.join(",");
|
|
3065
|
+
}
|
|
3066
|
+
const sortBy = opts.sortBy ?? opts.sort ?? opts.sort_column;
|
|
3067
|
+
if (sortBy != null && sortBy !== "") query.sort = sortBy;
|
|
3068
|
+
const sortOrderRaw = opts.sortOrder ?? opts.sort_dir;
|
|
3069
|
+
if (sortOrderRaw != null && String(sortOrderRaw).trim() !== "") {
|
|
3070
|
+
const u = String(sortOrderRaw).trim().toUpperCase();
|
|
3071
|
+
query.sort_dir = u.startsWith("DESC") ? "desc" : "asc";
|
|
3072
|
+
}
|
|
3073
|
+
const filterPairs = [];
|
|
3074
|
+
const searchColumn = opts.searchColumn ?? opts.search_column ?? opts.column;
|
|
3075
|
+
const searchText = opts.searchText ?? opts.search_text ?? opts.search;
|
|
3076
|
+
const singleColumn = searchColumn != null ? String(searchColumn).trim() : "";
|
|
3077
|
+
const singleText = searchText != null ? String(searchText).trim() : "";
|
|
3078
|
+
if (singleColumn && singleText) filterPairs.push({ column: singleColumn, text: singleText });
|
|
3079
|
+
if (Array.isArray(opts.filters)) {
|
|
3080
|
+
for (const f of opts.filters) {
|
|
3081
|
+
const column = String((f == null ? void 0 : f.column) ?? (f == null ? void 0 : f.searchColumn) ?? (f == null ? void 0 : f.search_column) ?? "").trim();
|
|
3082
|
+
const text = String((f == null ? void 0 : f.text) ?? (f == null ? void 0 : f.searchText) ?? (f == null ? void 0 : f.search_text) ?? (f == null ? void 0 : f.search) ?? "").trim();
|
|
3083
|
+
if (column && text) filterPairs.push({ column, text });
|
|
3084
|
+
}
|
|
3085
|
+
}
|
|
3086
|
+
if (filterPairs.length) {
|
|
3087
|
+
query.search_column = filterPairs.map((f) => f.column);
|
|
3088
|
+
query.search_text = filterPairs.map((f) => f.text);
|
|
3089
|
+
}
|
|
3090
|
+
if (opts.page != null) {
|
|
3091
|
+
query.page = opts.page;
|
|
3092
|
+
if (opts.page_size != null) query.page_size = opts.page_size;
|
|
3093
|
+
else if (opts.pageSize != null) query.page_size = opts.pageSize;
|
|
3094
|
+
} else {
|
|
3095
|
+
if (opts.skip != null) query.skip = opts.skip;
|
|
3096
|
+
if (opts.take != null) query.take = opts.take;
|
|
3097
|
+
}
|
|
3098
|
+
return { companyKey, query };
|
|
3099
|
+
}
|
|
3100
|
+
var ActivityLogModel = import_mobx_state_tree21.types.model("ActivityLog", {
|
|
2971
3101
|
id: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.maybeNull(import_mobx_state_tree21.types.number), null),
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
3102
|
+
activityLogId: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.identifier, "new"),
|
|
3103
|
+
leadId: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.maybeNull(import_mobx_state_tree21.types.string), null),
|
|
3104
|
+
eventId: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.maybeNull(import_mobx_state_tree21.types.string), null),
|
|
3105
|
+
activityTypeId: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.number, 0),
|
|
3106
|
+
activityTypeName: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.string, ""),
|
|
3107
|
+
categoryId: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.number, 3),
|
|
3108
|
+
categoryName: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.string, "Appointments"),
|
|
3109
|
+
isPartialData: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.boolean, false),
|
|
3110
|
+
userEmail: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.string, ""),
|
|
2977
3111
|
createdOn: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.maybeNull(import_mobx_state_tree21.types.string), null),
|
|
2978
|
-
|
|
2979
|
-
|
|
3112
|
+
data: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.frozen(), {}),
|
|
3113
|
+
activityLogDetails: import_mobx_state_tree21.types.optional(import_mobx_state_tree21.types.array(ActivityLogDetailModel), [])
|
|
3114
|
+
}).actions((self) => ({
|
|
3115
|
+
/** GET /activitylog/get – pass companyKey in opts (required). */
|
|
3116
|
+
async get(opts = {}) {
|
|
3117
|
+
return ActivityLogModel.get(opts);
|
|
3118
|
+
}
|
|
3119
|
+
}));
|
|
3120
|
+
ActivityLogModel.get = async (opts = {}) => {
|
|
3121
|
+
const { companyKey, query } = buildActivityLogQuery(opts);
|
|
3122
|
+
if (!companyKey) return { status: "failure", message: "companyKey is required" };
|
|
3123
|
+
const { reqGet } = createRequestHelpersFromEnv(getConfig());
|
|
3124
|
+
const res = await reqGet("/activitylog/get", query);
|
|
3125
|
+
if (res.status === "success") {
|
|
3126
|
+
const payload = res.data ?? {};
|
|
3127
|
+
const logsRaw = Array.isArray(payload) ? payload : Array.isArray(payload.ActivityLogs) ? payload.ActivityLogs : Array.isArray(payload.activityLogs) ? payload.activityLogs : null;
|
|
3128
|
+
if (logsRaw) {
|
|
3129
|
+
const activityLogs = logsRaw.map(
|
|
3130
|
+
(row) => ActivityLogModel.create(mapActivityLogFromApi(row), { env: getConfig() })
|
|
3131
|
+
);
|
|
3132
|
+
const totalCountRaw = payload.TotalCount ?? payload.totalCount;
|
|
3133
|
+
const totalCount = Number.isFinite(Number(totalCountRaw)) ? Number(totalCountRaw) : activityLogs.length;
|
|
3134
|
+
return { activityLogs, totalCount };
|
|
3135
|
+
}
|
|
3136
|
+
}
|
|
3137
|
+
return null;
|
|
3138
|
+
};
|
|
3139
|
+
ActivityLogModel.getByCompany = async (companyKey, opts = {}) => ActivityLogModel.get({ ...opts, companyKey });
|
|
3140
|
+
var ActivityLog_default = ActivityLogModel;
|
|
3141
|
+
|
|
3142
|
+
// src/models/appointment/CustomField.js
|
|
3143
|
+
var import_mobx_state_tree22 = require("mobx-state-tree");
|
|
3144
|
+
var CustomFieldModel = import_mobx_state_tree22.types.model("CustomField", {
|
|
3145
|
+
id: import_mobx_state_tree22.types.optional(import_mobx_state_tree22.types.maybeNull(import_mobx_state_tree22.types.number), null),
|
|
3146
|
+
customFieldId: import_mobx_state_tree22.types.optional(import_mobx_state_tree22.types.maybeNull(import_mobx_state_tree22.types.string), null),
|
|
3147
|
+
calendarId: import_mobx_state_tree22.types.optional(import_mobx_state_tree22.types.maybeNull(import_mobx_state_tree22.types.string), null),
|
|
3148
|
+
label: import_mobx_state_tree22.types.optional(import_mobx_state_tree22.types.maybeNull(import_mobx_state_tree22.types.string), null),
|
|
3149
|
+
type: import_mobx_state_tree22.types.optional(import_mobx_state_tree22.types.string, ""),
|
|
3150
|
+
isRequired: import_mobx_state_tree22.types.optional(import_mobx_state_tree22.types.boolean, false),
|
|
3151
|
+
createdOn: import_mobx_state_tree22.types.optional(import_mobx_state_tree22.types.maybeNull(import_mobx_state_tree22.types.string), null),
|
|
3152
|
+
modifiedOn: import_mobx_state_tree22.types.optional(import_mobx_state_tree22.types.maybeNull(import_mobx_state_tree22.types.string), null),
|
|
3153
|
+
isDeleted: import_mobx_state_tree22.types.optional(import_mobx_state_tree22.types.boolean, false)
|
|
2980
3154
|
}).actions((self) => {
|
|
2981
|
-
const { reqGet, reqPost } = createRequestHelpers(self,
|
|
3155
|
+
const { reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree22.getEnv);
|
|
2982
3156
|
return {
|
|
2983
3157
|
/** GET /CustomField/GetAll?calendar_id= */
|
|
2984
3158
|
async getAll(calendarId) {
|
|
@@ -2999,7 +3173,7 @@ var CustomFieldModel = import_mobx_state_tree21.types.model("CustomField", {
|
|
|
2999
3173
|
const body = payload ?? toPayload5(self);
|
|
3000
3174
|
const res = await reqPost("/CustomField/Add", body);
|
|
3001
3175
|
if (res.status === "success" && res.data) {
|
|
3002
|
-
(0,
|
|
3176
|
+
(0, import_mobx_state_tree22.applySnapshot)(self, mapCustomFieldFromApi(res.data));
|
|
3003
3177
|
}
|
|
3004
3178
|
return res;
|
|
3005
3179
|
},
|
|
@@ -3306,10 +3480,10 @@ var AuthModel = {
|
|
|
3306
3480
|
var Auth_default = AuthModel;
|
|
3307
3481
|
|
|
3308
3482
|
// src/models/appointment/index.js
|
|
3309
|
-
var
|
|
3310
|
-
var RootStore =
|
|
3311
|
-
calendars:
|
|
3312
|
-
events:
|
|
3483
|
+
var import_mobx_state_tree23 = require("mobx-state-tree");
|
|
3484
|
+
var RootStore = import_mobx_state_tree23.types.model("RootStore", {
|
|
3485
|
+
calendars: import_mobx_state_tree23.types.optional(import_mobx_state_tree23.types.map(Calendar_default), {}),
|
|
3486
|
+
events: import_mobx_state_tree23.types.optional(import_mobx_state_tree23.types.map(Event_default), {})
|
|
3313
3487
|
}).actions((self) => ({
|
|
3314
3488
|
addCalendar(snapshot) {
|
|
3315
3489
|
const cal = Calendar_default.create(snapshot);
|
|
@@ -3329,6 +3503,9 @@ function createRootStore(initialState = {}) {
|
|
|
3329
3503
|
}
|
|
3330
3504
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3331
3505
|
0 && (module.exports = {
|
|
3506
|
+
ActivityLogCategory,
|
|
3507
|
+
ActivityLogModel,
|
|
3508
|
+
ActivityLogType,
|
|
3332
3509
|
AssetModel,
|
|
3333
3510
|
AssignmentMethod,
|
|
3334
3511
|
AttendeeStatus,
|
package/dist/index.mjs
CHANGED
|
@@ -308,6 +308,14 @@ var CalendarVisibility = {
|
|
|
308
308
|
Public: 0,
|
|
309
309
|
Private: 1
|
|
310
310
|
};
|
|
311
|
+
var ActivityLogType = {
|
|
312
|
+
AppointmentScheduled: 9,
|
|
313
|
+
AppointmentRescheduled: 10,
|
|
314
|
+
AppointmentCanceled: 11
|
|
315
|
+
};
|
|
316
|
+
var ActivityLogCategory = {
|
|
317
|
+
Appointments: 3
|
|
318
|
+
};
|
|
311
319
|
|
|
312
320
|
// src/models/appointment/Event.js
|
|
313
321
|
import { types as types4, getEnv, applySnapshot } from "mobx-state-tree";
|
|
@@ -510,7 +518,7 @@ var EventModel = types4.model("Event", {
|
|
|
510
518
|
};
|
|
511
519
|
return reqPost("/event/update", payload);
|
|
512
520
|
},
|
|
513
|
-
/** POST /event/reschedule – reschedule event */
|
|
521
|
+
/** POST /event/reschedule – reschedule event and mark status ReScheduled */
|
|
514
522
|
async reschedule(offsetMinutes) {
|
|
515
523
|
const offset = offsetMinutes ?? getOffset();
|
|
516
524
|
const payload = {
|
|
@@ -534,7 +542,12 @@ var EventModel = types4.model("Event", {
|
|
|
534
542
|
flowPath: self.flowPath ?? void 0
|
|
535
543
|
};
|
|
536
544
|
const res = await reqPost("/event/reschedule", payload, null, { headers: { offset: String(offset) } });
|
|
537
|
-
if (res.status
|
|
545
|
+
if (res.status !== "success") return res;
|
|
546
|
+
if (res.data) {
|
|
547
|
+
applySnapshot(self, { ...mapEventFromApi(res.data), eventId: self.eventId });
|
|
548
|
+
} else if (self.status !== EventStatus.ReScheduled) {
|
|
549
|
+
await self.setEventStatus(EventStatus.ReScheduled);
|
|
550
|
+
}
|
|
538
551
|
return res;
|
|
539
552
|
},
|
|
540
553
|
/** GET /event/cancel – cancel this event */
|
|
@@ -828,9 +841,17 @@ EventModel.reschedule = async (payload, offsetMinutes) => {
|
|
|
828
841
|
const { reqPost } = createRequestHelpersFromEnv(getConfig());
|
|
829
842
|
const offset = offsetMinutes ?? getDefaultOffset();
|
|
830
843
|
const res = await reqPost("/event/reschedule", payload, null, { headers: { offset: String(offset) } });
|
|
831
|
-
if (res.status
|
|
844
|
+
if (res.status !== "success") return null;
|
|
845
|
+
const eventId = String((payload == null ? void 0 : payload.eventId) ?? (payload == null ? void 0 : payload.EventId) ?? (payload == null ? void 0 : payload.event_id) ?? "");
|
|
846
|
+
if (res.data) {
|
|
832
847
|
return EventModel.create(mapEventFromApi(res.data), { env: getConfig() });
|
|
833
848
|
}
|
|
849
|
+
if (eventId) {
|
|
850
|
+
const statusRes = await EventModel.setEventStatus(eventId, EventStatus.ReScheduled);
|
|
851
|
+
if (statusRes.status === "success" && statusRes.data) {
|
|
852
|
+
return EventModel.create(mapEventFromApi(statusRes.data), { env: getConfig() });
|
|
853
|
+
}
|
|
854
|
+
}
|
|
834
855
|
return null;
|
|
835
856
|
};
|
|
836
857
|
EventModel.updateEvent = async (payload) => {
|
|
@@ -2890,18 +2911,168 @@ LeadModel.getSources = async (companyKey) => {
|
|
|
2890
2911
|
};
|
|
2891
2912
|
var Lead_default = LeadModel;
|
|
2892
2913
|
|
|
2893
|
-
// src/models/appointment/
|
|
2894
|
-
import { types as types21
|
|
2895
|
-
var
|
|
2914
|
+
// src/models/appointment/ActivityLog.js
|
|
2915
|
+
import { types as types21 } from "mobx-state-tree";
|
|
2916
|
+
var ActivityLogDetailModel = types21.model("ActivityLogDetail", {
|
|
2917
|
+
key: types21.optional(types21.string, ""),
|
|
2918
|
+
value: types21.optional(types21.string, "")
|
|
2919
|
+
});
|
|
2920
|
+
function mapActivityLogFromApi(d) {
|
|
2921
|
+
if (!d) return d;
|
|
2922
|
+
const pick2 = (...keys) => keys.reduce((v, k) => v ?? d[k], void 0);
|
|
2923
|
+
const detailsRaw = pick2("activityLogDetails", "ActivityLogDetails");
|
|
2924
|
+
const details = Array.isArray(detailsRaw) ? detailsRaw.map((row) => ({
|
|
2925
|
+
key: pickDetail(row, "key", "Key") ?? "",
|
|
2926
|
+
value: pickDetail(row, "value", "Value") ?? ""
|
|
2927
|
+
})) : [];
|
|
2928
|
+
const dataRaw = pick2("data", "Data");
|
|
2929
|
+
const data = dataRaw && typeof dataRaw === "object" && !Array.isArray(dataRaw) ? { ...dataRaw } : details.reduce((acc, row) => {
|
|
2930
|
+
if (row.key) acc[row.key] = row.value ?? "";
|
|
2931
|
+
return acc;
|
|
2932
|
+
}, {});
|
|
2933
|
+
return {
|
|
2934
|
+
id: pick2("id", "Id") ?? null,
|
|
2935
|
+
activityLogId: pick2("activityLogId", "ActivityLogId", "activity_log_id") ?? "new",
|
|
2936
|
+
leadId: pick2("leadId", "LeadId", "lead_id") ?? null,
|
|
2937
|
+
eventId: pick2("eventId", "EventId", "event_id") ?? null,
|
|
2938
|
+
activityTypeId: pick2("activityTypeId", "ActivityTypeId", "activity_type_id") ?? 0,
|
|
2939
|
+
activityTypeName: pick2("activityTypeName", "ActivityTypeName", "activity_type_name") ?? "",
|
|
2940
|
+
categoryId: pick2("categoryId", "CategoryId", "category_id") ?? 3,
|
|
2941
|
+
categoryName: pick2("categoryName", "CategoryName", "category_name") ?? "Appointments",
|
|
2942
|
+
isPartialData: pick2("isPartialData", "IsPartialData", "is_partial_data") ?? false,
|
|
2943
|
+
userEmail: pick2("userEmail", "UserEmail", "user_email") ?? "",
|
|
2944
|
+
createdOn: pick2("createdOn", "CreatedOn", "created_on") ?? null,
|
|
2945
|
+
data,
|
|
2946
|
+
activityLogDetails: details
|
|
2947
|
+
};
|
|
2948
|
+
}
|
|
2949
|
+
function pickDetail(row, ...keys) {
|
|
2950
|
+
if (!row) return void 0;
|
|
2951
|
+
return keys.reduce((v, k) => v ?? row[k], void 0);
|
|
2952
|
+
}
|
|
2953
|
+
function normalizeActivityTypeIds(raw) {
|
|
2954
|
+
if (raw == null) return null;
|
|
2955
|
+
const values = Array.isArray(raw) ? raw : [raw];
|
|
2956
|
+
const ids = [];
|
|
2957
|
+
for (const value of values) {
|
|
2958
|
+
if (value == null || value === "") continue;
|
|
2959
|
+
const parts = String(value).split(",");
|
|
2960
|
+
for (const part of parts) {
|
|
2961
|
+
const trimmed = part.trim();
|
|
2962
|
+
if (!trimmed) continue;
|
|
2963
|
+
const n = Number(trimmed);
|
|
2964
|
+
if (Number.isFinite(n)) ids.push(n);
|
|
2965
|
+
}
|
|
2966
|
+
}
|
|
2967
|
+
return ids.length ? ids : null;
|
|
2968
|
+
}
|
|
2969
|
+
function buildActivityLogQuery(opts = {}) {
|
|
2970
|
+
const companyKey = String(opts.companyKey ?? opts.company_key ?? opts.CompanyKey ?? "").trim();
|
|
2971
|
+
const query = { company_key: companyKey };
|
|
2972
|
+
const leadId = opts.leadId ?? opts.lead_id ?? opts.LeadId;
|
|
2973
|
+
if (leadId != null && String(leadId).trim() !== "") query.lead_id = String(leadId).trim();
|
|
2974
|
+
const eventId = opts.eventId ?? opts.event_id ?? opts.EventId;
|
|
2975
|
+
if (eventId != null && String(eventId).trim() !== "") query.event_id = String(eventId).trim();
|
|
2976
|
+
const userEmail = opts.userEmail ?? opts.user_email ?? opts.UserEmail;
|
|
2977
|
+
if (userEmail != null && String(userEmail).trim() !== "") query.user_email = String(userEmail).trim();
|
|
2978
|
+
const fromDate = opts.fromDate ?? opts.from_date ?? opts.FromDate;
|
|
2979
|
+
if (fromDate != null && String(fromDate).trim() !== "") query.from_date = String(fromDate).trim();
|
|
2980
|
+
const toDate = opts.toDate ?? opts.to_date ?? opts.ToDate;
|
|
2981
|
+
if (toDate != null && String(toDate).trim() !== "") query.to_date = String(toDate).trim();
|
|
2982
|
+
const activityTypeIds = normalizeActivityTypeIds(
|
|
2983
|
+
opts.activityTypeId ?? opts.activity_type_id ?? opts.activityTypeIds ?? opts.activity_type_ids
|
|
2984
|
+
);
|
|
2985
|
+
if (activityTypeIds == null ? void 0 : activityTypeIds.length) {
|
|
2986
|
+
query.activity_type_id = activityTypeIds.length === 1 ? activityTypeIds[0] : activityTypeIds.join(",");
|
|
2987
|
+
}
|
|
2988
|
+
const sortBy = opts.sortBy ?? opts.sort ?? opts.sort_column;
|
|
2989
|
+
if (sortBy != null && sortBy !== "") query.sort = sortBy;
|
|
2990
|
+
const sortOrderRaw = opts.sortOrder ?? opts.sort_dir;
|
|
2991
|
+
if (sortOrderRaw != null && String(sortOrderRaw).trim() !== "") {
|
|
2992
|
+
const u = String(sortOrderRaw).trim().toUpperCase();
|
|
2993
|
+
query.sort_dir = u.startsWith("DESC") ? "desc" : "asc";
|
|
2994
|
+
}
|
|
2995
|
+
const filterPairs = [];
|
|
2996
|
+
const searchColumn = opts.searchColumn ?? opts.search_column ?? opts.column;
|
|
2997
|
+
const searchText = opts.searchText ?? opts.search_text ?? opts.search;
|
|
2998
|
+
const singleColumn = searchColumn != null ? String(searchColumn).trim() : "";
|
|
2999
|
+
const singleText = searchText != null ? String(searchText).trim() : "";
|
|
3000
|
+
if (singleColumn && singleText) filterPairs.push({ column: singleColumn, text: singleText });
|
|
3001
|
+
if (Array.isArray(opts.filters)) {
|
|
3002
|
+
for (const f of opts.filters) {
|
|
3003
|
+
const column = String((f == null ? void 0 : f.column) ?? (f == null ? void 0 : f.searchColumn) ?? (f == null ? void 0 : f.search_column) ?? "").trim();
|
|
3004
|
+
const text = String((f == null ? void 0 : f.text) ?? (f == null ? void 0 : f.searchText) ?? (f == null ? void 0 : f.search_text) ?? (f == null ? void 0 : f.search) ?? "").trim();
|
|
3005
|
+
if (column && text) filterPairs.push({ column, text });
|
|
3006
|
+
}
|
|
3007
|
+
}
|
|
3008
|
+
if (filterPairs.length) {
|
|
3009
|
+
query.search_column = filterPairs.map((f) => f.column);
|
|
3010
|
+
query.search_text = filterPairs.map((f) => f.text);
|
|
3011
|
+
}
|
|
3012
|
+
if (opts.page != null) {
|
|
3013
|
+
query.page = opts.page;
|
|
3014
|
+
if (opts.page_size != null) query.page_size = opts.page_size;
|
|
3015
|
+
else if (opts.pageSize != null) query.page_size = opts.pageSize;
|
|
3016
|
+
} else {
|
|
3017
|
+
if (opts.skip != null) query.skip = opts.skip;
|
|
3018
|
+
if (opts.take != null) query.take = opts.take;
|
|
3019
|
+
}
|
|
3020
|
+
return { companyKey, query };
|
|
3021
|
+
}
|
|
3022
|
+
var ActivityLogModel = types21.model("ActivityLog", {
|
|
2896
3023
|
id: types21.optional(types21.maybeNull(types21.number), null),
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
3024
|
+
activityLogId: types21.optional(types21.identifier, "new"),
|
|
3025
|
+
leadId: types21.optional(types21.maybeNull(types21.string), null),
|
|
3026
|
+
eventId: types21.optional(types21.maybeNull(types21.string), null),
|
|
3027
|
+
activityTypeId: types21.optional(types21.number, 0),
|
|
3028
|
+
activityTypeName: types21.optional(types21.string, ""),
|
|
3029
|
+
categoryId: types21.optional(types21.number, 3),
|
|
3030
|
+
categoryName: types21.optional(types21.string, "Appointments"),
|
|
3031
|
+
isPartialData: types21.optional(types21.boolean, false),
|
|
3032
|
+
userEmail: types21.optional(types21.string, ""),
|
|
2902
3033
|
createdOn: types21.optional(types21.maybeNull(types21.string), null),
|
|
2903
|
-
|
|
2904
|
-
|
|
3034
|
+
data: types21.optional(types21.frozen(), {}),
|
|
3035
|
+
activityLogDetails: types21.optional(types21.array(ActivityLogDetailModel), [])
|
|
3036
|
+
}).actions((self) => ({
|
|
3037
|
+
/** GET /activitylog/get – pass companyKey in opts (required). */
|
|
3038
|
+
async get(opts = {}) {
|
|
3039
|
+
return ActivityLogModel.get(opts);
|
|
3040
|
+
}
|
|
3041
|
+
}));
|
|
3042
|
+
ActivityLogModel.get = async (opts = {}) => {
|
|
3043
|
+
const { companyKey, query } = buildActivityLogQuery(opts);
|
|
3044
|
+
if (!companyKey) return { status: "failure", message: "companyKey is required" };
|
|
3045
|
+
const { reqGet } = createRequestHelpersFromEnv(getConfig());
|
|
3046
|
+
const res = await reqGet("/activitylog/get", query);
|
|
3047
|
+
if (res.status === "success") {
|
|
3048
|
+
const payload = res.data ?? {};
|
|
3049
|
+
const logsRaw = Array.isArray(payload) ? payload : Array.isArray(payload.ActivityLogs) ? payload.ActivityLogs : Array.isArray(payload.activityLogs) ? payload.activityLogs : null;
|
|
3050
|
+
if (logsRaw) {
|
|
3051
|
+
const activityLogs = logsRaw.map(
|
|
3052
|
+
(row) => ActivityLogModel.create(mapActivityLogFromApi(row), { env: getConfig() })
|
|
3053
|
+
);
|
|
3054
|
+
const totalCountRaw = payload.TotalCount ?? payload.totalCount;
|
|
3055
|
+
const totalCount = Number.isFinite(Number(totalCountRaw)) ? Number(totalCountRaw) : activityLogs.length;
|
|
3056
|
+
return { activityLogs, totalCount };
|
|
3057
|
+
}
|
|
3058
|
+
}
|
|
3059
|
+
return null;
|
|
3060
|
+
};
|
|
3061
|
+
ActivityLogModel.getByCompany = async (companyKey, opts = {}) => ActivityLogModel.get({ ...opts, companyKey });
|
|
3062
|
+
var ActivityLog_default = ActivityLogModel;
|
|
3063
|
+
|
|
3064
|
+
// src/models/appointment/CustomField.js
|
|
3065
|
+
import { types as types22, getEnv as getEnv10, applySnapshot as applySnapshot9 } from "mobx-state-tree";
|
|
3066
|
+
var CustomFieldModel = types22.model("CustomField", {
|
|
3067
|
+
id: types22.optional(types22.maybeNull(types22.number), null),
|
|
3068
|
+
customFieldId: types22.optional(types22.maybeNull(types22.string), null),
|
|
3069
|
+
calendarId: types22.optional(types22.maybeNull(types22.string), null),
|
|
3070
|
+
label: types22.optional(types22.maybeNull(types22.string), null),
|
|
3071
|
+
type: types22.optional(types22.string, ""),
|
|
3072
|
+
isRequired: types22.optional(types22.boolean, false),
|
|
3073
|
+
createdOn: types22.optional(types22.maybeNull(types22.string), null),
|
|
3074
|
+
modifiedOn: types22.optional(types22.maybeNull(types22.string), null),
|
|
3075
|
+
isDeleted: types22.optional(types22.boolean, false)
|
|
2905
3076
|
}).actions((self) => {
|
|
2906
3077
|
const { reqGet, reqPost } = createRequestHelpers(self, getEnv10);
|
|
2907
3078
|
return {
|
|
@@ -3231,10 +3402,10 @@ var AuthModel = {
|
|
|
3231
3402
|
var Auth_default = AuthModel;
|
|
3232
3403
|
|
|
3233
3404
|
// src/models/appointment/index.js
|
|
3234
|
-
import { types as
|
|
3235
|
-
var RootStore =
|
|
3236
|
-
calendars:
|
|
3237
|
-
events:
|
|
3405
|
+
import { types as types23, getEnv as getEnv11 } from "mobx-state-tree";
|
|
3406
|
+
var RootStore = types23.model("RootStore", {
|
|
3407
|
+
calendars: types23.optional(types23.map(Calendar_default), {}),
|
|
3408
|
+
events: types23.optional(types23.map(Event_default), {})
|
|
3238
3409
|
}).actions((self) => ({
|
|
3239
3410
|
addCalendar(snapshot) {
|
|
3240
3411
|
const cal = Calendar_default.create(snapshot);
|
|
@@ -3253,6 +3424,9 @@ function createRootStore(initialState = {}) {
|
|
|
3253
3424
|
return RootStore.create(initialState, { env });
|
|
3254
3425
|
}
|
|
3255
3426
|
export {
|
|
3427
|
+
ActivityLogCategory,
|
|
3428
|
+
ActivityLog_default as ActivityLogModel,
|
|
3429
|
+
ActivityLogType,
|
|
3256
3430
|
Asset_default as AssetModel,
|
|
3257
3431
|
AssignmentMethod,
|
|
3258
3432
|
AttendeeStatus,
|