@blazeo.com/appointment-client 1.0.13 → 1.0.14

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.
Files changed (135) hide show
  1. package/blazeo.com-appointment-client-1.0.14.tgz +0 -0
  2. package/package.json +3 -2
  3. package/sample/src/EventTab.jsx +435 -395
  4. package/src/calendar/calendarCreation.ts +62 -15
  5. package/src/events/getAppointmentsByFilter.ts +98 -0
  6. package/src/index.ts +15 -4
  7. package/blazeo.com-appointment-client-1.0.11.tgz +0 -0
  8. package/blazeo.com-appointment-client-1.0.13.tgz +0 -0
  9. package/dist/calendar/blazeoCalendarRelationMethods.d.ts +0 -8
  10. package/dist/calendar/blazeoCalendarRelationMethods.d.ts.map +0 -1
  11. package/dist/calendar/blazeoCalendarRelationMethods.js +0 -16
  12. package/dist/calendar/blazeoCalendarRelationMethods.js.map +0 -1
  13. package/dist/calendar/buildUnifiedCalendarView.d.ts +0 -39
  14. package/dist/calendar/buildUnifiedCalendarView.js +0 -301
  15. package/dist/calendar/calendarCreation.d.ts +0 -27
  16. package/dist/calendar/calendarCreation.js +0 -191
  17. package/dist/calendar/calendarCreationFacade.d.ts +0 -27
  18. package/dist/calendar/calendarCreationFacade.d.ts.map +0 -1
  19. package/dist/calendar/calendarCreationFacade.js +0 -167
  20. package/dist/calendar/calendarCreationFacade.js.map +0 -1
  21. package/dist/calendar/createCalendar.d.ts +0 -81
  22. package/dist/calendar/createCalendar.d.ts.map +0 -1
  23. package/dist/calendar/createCalendar.js +0 -206
  24. package/dist/calendar/createCalendar.js.map +0 -1
  25. package/dist/calendar/fetchCalendarDetails.d.ts +0 -41
  26. package/dist/calendar/fetchCalendarDetails.js +0 -265
  27. package/dist/calendar/fetchCalendarWithOpeningHours.d.ts +0 -25
  28. package/dist/calendar/fetchCalendarWithOpeningHours.js +0 -114
  29. package/dist/calendar/getAllParticipantOpeningHours.d.ts +0 -22
  30. package/dist/calendar/getAllParticipantOpeningHours.js +0 -22
  31. package/dist/calendar/getCalendarsByCompany.d.ts +0 -9
  32. package/dist/calendar/getCalendarsByCompany.js +0 -62
  33. package/dist/calendar/getOpeningHours.d.ts +0 -8
  34. package/dist/calendar/getOpeningHours.js +0 -9
  35. package/dist/calendar/getParticipantOpeningHours.d.ts +0 -37
  36. package/dist/calendar/getParticipantOpeningHours.js +0 -48
  37. package/dist/calendar/getParticipants.d.ts +0 -7
  38. package/dist/calendar/getParticipants.js +0 -13
  39. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.d.ts +0 -10
  40. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.d.ts.map +0 -1
  41. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.js +0 -44
  42. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.js.map +0 -1
  43. package/dist/calendar/mapCalendarToBlazeoSnapshot.d.ts +0 -29
  44. package/dist/calendar/mapCalendarToBlazeoSnapshot.d.ts.map +0 -1
  45. package/dist/calendar/mapCalendarToBlazeoSnapshot.js +0 -44
  46. package/dist/calendar/mapCalendarToBlazeoSnapshot.js.map +0 -1
  47. package/dist/calendar/mapToDesiredResponse.d.ts +0 -56
  48. package/dist/calendar/mapToDesiredResponse.js +0 -111
  49. package/dist/config/applyBlazeoClientConfig.d.ts +0 -3
  50. package/dist/config/applyBlazeoClientConfig.d.ts.map +0 -1
  51. package/dist/config/applyBlazeoClientConfig.js +0 -14
  52. package/dist/config/applyBlazeoClientConfig.js.map +0 -1
  53. package/dist/config/applyBlazeoDefaults.d.ts +0 -2
  54. package/dist/config/applyBlazeoDefaults.d.ts.map +0 -1
  55. package/dist/config/applyBlazeoDefaults.js +0 -14
  56. package/dist/config/applyBlazeoDefaults.js.map +0 -1
  57. package/dist/config/blazeo.config.d.ts +0 -11
  58. package/dist/config/blazeo.config.d.ts.map +0 -1
  59. package/dist/config/blazeo.config.js +0 -11
  60. package/dist/config/blazeo.config.js.map +0 -1
  61. package/dist/config/blazeoClientDefaults.d.ts +0 -11
  62. package/dist/config/blazeoClientDefaults.d.ts.map +0 -1
  63. package/dist/config/blazeoClientDefaults.js +0 -11
  64. package/dist/config/blazeoClientDefaults.js.map +0 -1
  65. package/dist/config/ensureBlazeoHttpReady.d.ts +0 -17
  66. package/dist/config/ensureBlazeoHttpReady.js +0 -31
  67. package/dist/config/initializeAppointmentClient.d.ts +0 -11
  68. package/dist/config/initializeAppointmentClient.d.ts.map +0 -1
  69. package/dist/config/initializeAppointmentClient.js +0 -15
  70. package/dist/config/initializeAppointmentClient.js.map +0 -1
  71. package/dist/config/syncBlazeoConnection.d.ts +0 -6
  72. package/dist/config/syncBlazeoConnection.js +0 -18
  73. package/dist/events/appointmentEventFacade.d.ts +0 -67
  74. package/dist/events/appointmentEventFacade.d.ts.map +0 -1
  75. package/dist/events/appointmentEventFacade.js +0 -124
  76. package/dist/events/appointmentEventFacade.js.map +0 -1
  77. package/dist/events/mapAppointmentToEventSnapshot.d.ts +0 -5
  78. package/dist/events/mapAppointmentToEventSnapshot.d.ts.map +0 -1
  79. package/dist/events/mapAppointmentToEventSnapshot.js +0 -57
  80. package/dist/events/mapAppointmentToEventSnapshot.js.map +0 -1
  81. package/dist/exampleData.d.ts +0 -119
  82. package/dist/exampleData.d.ts.map +0 -1
  83. package/dist/exampleData.js +0 -71
  84. package/dist/exampleData.js.map +0 -1
  85. package/dist/facade/calendarCreationFacade.d.ts +0 -40
  86. package/dist/facade/calendarCreationFacade.d.ts.map +0 -1
  87. package/dist/facade/calendarCreationFacade.js +0 -96
  88. package/dist/facade/calendarCreationFacade.js.map +0 -1
  89. package/dist/facade/mapCalendarBOToSnapshot.d.ts +0 -10
  90. package/dist/facade/mapCalendarBOToSnapshot.d.ts.map +0 -1
  91. package/dist/facade/mapCalendarBOToSnapshot.js +0 -44
  92. package/dist/facade/mapCalendarBOToSnapshot.js.map +0 -1
  93. package/dist/facades/index.d.ts +0 -12
  94. package/dist/facades/index.d.ts.map +0 -1
  95. package/dist/facades/index.js +0 -12
  96. package/dist/facades/index.js.map +0 -1
  97. package/dist/index.d.ts +0 -79
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/index.js +0 -39
  100. package/dist/index.js.map +0 -1
  101. package/dist/lead/fetchLeadDetails.d.ts +0 -56
  102. package/dist/lead/fetchLeadDetails.js +0 -61
  103. package/dist/models/CalendarRootModel.d.ts +0 -56
  104. package/dist/models/CalendarRootModel.d.ts.map +0 -1
  105. package/dist/models/CalendarRootModel.js +0 -54
  106. package/dist/models/CalendarRootModel.js.map +0 -1
  107. package/dist/models/CalendarSlotModel.d.ts +0 -9
  108. package/dist/models/CalendarSlotModel.d.ts.map +0 -1
  109. package/dist/models/CalendarSlotModel.js +0 -8
  110. package/dist/models/CalendarSlotModel.js.map +0 -1
  111. package/dist/models/EventModel.d.ts +0 -11
  112. package/dist/models/EventModel.d.ts.map +0 -1
  113. package/dist/models/EventModel.js +0 -10
  114. package/dist/models/EventModel.js.map +0 -1
  115. package/dist/models/ParticipantModel.d.ts +0 -9
  116. package/dist/models/ParticipantModel.d.ts.map +0 -1
  117. package/dist/models/ParticipantModel.js +0 -8
  118. package/dist/models/ParticipantModel.js.map +0 -1
  119. package/dist/models/index.d.ts +0 -5
  120. package/dist/models/index.d.ts.map +0 -1
  121. package/dist/models/index.js +0 -5
  122. package/dist/models/index.js.map +0 -1
  123. package/dist/types/appointment.d.ts +0 -28
  124. package/dist/types/appointment.d.ts.map +0 -1
  125. package/dist/types/appointment.js +0 -6
  126. package/dist/types/appointment.js.map +0 -1
  127. package/dist/types/calendar.d.ts +0 -52
  128. package/dist/types/calendar.d.ts.map +0 -1
  129. package/dist/types/calendar.js +0 -6
  130. package/dist/types/calendar.js.map +0 -1
  131. package/dist/types/calendarBo.d.ts +0 -62
  132. package/dist/types/calendarBo.d.ts.map +0 -1
  133. package/dist/types/calendarBo.js +0 -6
  134. package/dist/types/calendarBo.js.map +0 -1
  135. package/sample/package-lock.json +0 -1778
@@ -1,191 +0,0 @@
1
- import { getSnapshot } from "mobx-state-tree";
2
- import { addParticipantToCalendar, saveCalendarOpeningHoursBatch } from "./blazeoCalendarRelationMethods.js";
3
- import { createCalendarAsync, updateCalendarAsync, deleteCalendarAsync } from "./createCalendar.js";
4
- function isFailureStatus(res) {
5
- return res.status !== "success" && res.status !== "Success";
6
- }
7
- function normalizeParticipantGuid(id) {
8
- if (id == null || !String(id).trim())
9
- return undefined;
10
- return String(id).trim().replace(/^\{|\}$/g, "");
11
- }
12
- function newOpeningHourId() {
13
- const c = globalThis.crypto;
14
- if (c?.randomUUID)
15
- return c.randomUUID();
16
- return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
17
- }
18
- /**
19
- * Resolves Blazeo `participantId` for an opening-hour row: explicit `participantId`,
20
- * matching `CalendarCreation.SaveOpeningHours`.
21
- */
22
- export function resolveParticipantIdForOpeningHour(openingHour) {
23
- const direct = normalizeParticipantGuid(openingHour.participantId);
24
- if (direct)
25
- return direct;
26
- return undefined;
27
- }
28
- function effectiveCalendarId(calendarNode, input) {
29
- const snap = getSnapshot(calendarNode);
30
- const fromNode = snap.calendarId?.trim();
31
- if (fromNode && fromNode !== "new")
32
- return fromNode;
33
- return (input.calendarId?.trim() || undefined);
34
- }
35
- /**
36
- * Orchestrates the same steps as Apex `CalendarCreation.CreateCalendarAsync`:
37
- * save calendar (`POST /Calendar/Create`), then add participants, then save opening hours
38
- * per day (`POST /Calendar/Participant/Availability/OpeningHour/Save`).
39
- */
40
- export async function createCalendarWithRelationsAsync(calendar, options = {}) {
41
- const hasMembers = (calendar.members?.length ?? 0) > 0;
42
- const hasHours = (calendar.openingHours?.length ?? 0) > 0;
43
- if (!hasMembers && !hasHours) {
44
- const r = await createCalendarAsync(calendar, options);
45
- if (!r.ok)
46
- return r;
47
- return { ...r, membersAdded: 0, openingHoursSaved: 0 };
48
- }
49
- if (options.localOnly) {
50
- const r = await createCalendarAsync(calendar, options);
51
- if (!r.ok)
52
- return r;
53
- return { ...r, membersAdded: 0, openingHoursSaved: 0 };
54
- }
55
- const created = await createCalendarAsync(calendar, options);
56
- if (!created.ok)
57
- return created;
58
- return runMembersAndOpeningHoursAfterCalendarSave(calendar, created.calendar, created);
59
- }
60
- /**
61
- * After calendar `create` or `update`, add members and opening hours (same order as Apex facade).
62
- */
63
- async function runMembersAndOpeningHoursAfterCalendarSave(calendar, calendarNode, baseSuccess) {
64
- const calendarIdStr = effectiveCalendarId(calendarNode, calendar);
65
- if (!calendarIdStr) {
66
- return {
67
- ok: false,
68
- error: "Could not resolve calendar id after save. Ensure the API returned a calendar id.",
69
- };
70
- }
71
- let membersAdded = 0;
72
- for (const m of calendar.members ?? []) {
73
- const pid = normalizeParticipantGuid(m.id);
74
- if (!pid) {
75
- return {
76
- ok: false,
77
- error: `Member id ${m.id}: thirdPartyMemberId is required to add a participant.`,
78
- };
79
- }
80
- const res = await addParticipantToCalendar(calendarNode, pid);
81
- if (isFailureStatus(res)) {
82
- const msg = res.message ??
83
- (typeof res.data === "string" ? res.data : undefined) ??
84
- JSON.stringify(res);
85
- return {
86
- ok: false,
87
- error: `addParticipant failed for member ${m.id}: ${msg}`,
88
- apiResponse: res,
89
- };
90
- }
91
- membersAdded += 1;
92
- }
93
- // 2. Save Opening Hours (Plan V2: Grouped by participant with explicit off-days per slot)
94
- const openingHours = calendar.openingHours ?? [];
95
- const hoursByParticipant = new Map();
96
- for (const oh of openingHours) {
97
- const participantId = resolveParticipantIdForOpeningHour(oh);
98
- if (!participantId) {
99
- return {
100
- ok: false,
101
- error: `Opening hour id ${oh.id}: participantId is required.`,
102
- };
103
- }
104
- if (!hoursByParticipant.has(participantId)) {
105
- hoursByParticipant.set(participantId, []);
106
- }
107
- // Plan V2 Logic: For every opening hour object, generate EXACTLY 7 entries (days 0-6).
108
- // If the day is in oh.days, it's ON. If not, it's OFF.
109
- const activeDays = oh.days ?? [];
110
- const openingHourId = oh.openingHourId?.trim() || newOpeningHourId();
111
- for (let day = 0; day <= 6; day++) {
112
- const isIncluded = activeDays.includes(day);
113
- const isOff = isIncluded ? !!oh.off : true; // If not in days array, it's explicitly OFF
114
- hoursByParticipant.get(participantId)?.push({
115
- calendarId: calendarIdStr,
116
- participantId,
117
- day,
118
- startHour: oh.startHour,
119
- startMinute: oh.startMinute,
120
- endHour: oh.endHour,
121
- endMinute: oh.endMinute,
122
- off: isOff,
123
- // Plan V2 Optimization: Generate a unique ID for EVERY day record.
124
- // This prevents the backend from deduplicating/overwriting when multiple
125
- // records for the same participant + slot are sent in one batch.
126
- openingHourId: newOpeningHourId(),
127
- });
128
- }
129
- }
130
- let openingHoursSaved = 0;
131
- for (const [participantId, payload] of hoursByParticipant.entries()) {
132
- if (payload.length === 0)
133
- continue;
134
- // Plan V2 Optimization: Clear existing records for this participant first.
135
- // This ensures that when we save the new batch (with unique per-day IDs),
136
- // we don't leak orphaned records or create duplicates during updates.
137
- await calendarNode.removeParticipantOpeningHours(participantId);
138
- // Use the batch save method (plural)
139
- const res = await saveCalendarOpeningHoursBatch(calendarNode, payload);
140
- if (isFailureStatus(res)) {
141
- const msg = res.message ??
142
- (typeof res.data === "string" ? res.data : undefined) ??
143
- JSON.stringify(res);
144
- return {
145
- ok: false,
146
- error: `saveOpeningHours batch failed for participant ${participantId}: ${msg}`,
147
- apiResponse: res,
148
- };
149
- }
150
- openingHoursSaved += payload.length;
151
- }
152
- return {
153
- ...baseSuccess,
154
- membersAdded,
155
- openingHoursSaved,
156
- };
157
- }
158
- /**
159
- * Calendar body update, then same member + opening-hour saves as create (Apex-style follow-up).
160
- * For member add/remove *diffs* against existing DB membership, use server-side Apex; this client
161
- * only performs additive Blazeo calls matching the payload.
162
- */
163
- export async function updateCalendarWithRelationsAsync(calendar, options = {}) {
164
- const hasMembers = (calendar.members?.length ?? 0) > 0;
165
- const hasHours = (calendar.openingHours?.length ?? 0) > 0;
166
- if (!hasMembers && !hasHours) {
167
- const r = await updateCalendarAsync(calendar, options);
168
- if (!r.ok)
169
- return r;
170
- return { ...r, membersAdded: 0, openingHoursSaved: 0 };
171
- }
172
- if (options.localOnly) {
173
- const r = await updateCalendarAsync(calendar, options);
174
- if (!r.ok)
175
- return r;
176
- return { ...r, membersAdded: 0, openingHoursSaved: 0 };
177
- }
178
- const updated = await updateCalendarAsync(calendar, options);
179
- if (!updated.ok)
180
- return updated;
181
- return runMembersAndOpeningHoursAfterCalendarSave(calendar, updated.calendar, updated);
182
- }
183
- /**
184
- * Aligned with `CalendarCreation`: create/update with members & opening hours,
185
- * or delete calendar only.
186
- */
187
- export class CalendarCreation {
188
- static createWithRelationsAsync = createCalendarWithRelationsAsync;
189
- static updateWithRelationsAsync = updateCalendarWithRelationsAsync;
190
- static deleteCalendarAsync = deleteCalendarAsync;
191
- }
@@ -1,27 +0,0 @@
1
- import { deleteCalendarAsync } from "./createCalendar.js";
2
- /**
3
- * Resolves Blazeo `participantId` for an opening-hour row: explicit `participantId`,
4
- * matching `CalendarCreationAPIFacade.SaveOpeningHours`.
5
- */
6
- export declare function resolveParticipantIdForOpeningHour(openingHour: any): string | undefined;
7
- /**
8
- * Orchestrates the same steps as Apex `CalendarCreationAPIFacade.CreateCalendarAsync`:
9
- * save calendar (`POST /Calendar/Create`), then add participants, then save opening hours
10
- * per day (`POST /Calendar/Participant/Availability/OpeningHour/Save`).
11
- */
12
- export declare function createCalendarWithRelationsAsync(calendar: any, options?: any): Promise<any>;
13
- /**
14
- * Calendar body update, then same member + opening-hour saves as create (Apex-style follow-up).
15
- * For member add/remove *diffs* against existing DB membership, use server-side Apex; this client
16
- * only performs additive Blazeo calls matching the payload.
17
- */
18
- export declare function updateCalendarWithRelationsAsync(calendar: any, options?: any): Promise<any>;
19
- /**
20
- * Facade aligned with `CalendarCreationAPIFacade`: create/update with members & opening hours,
21
- * or delete calendar only.
22
- */
23
- export declare class CalendarCreationFacade {
24
- static createWithRelationsAsync: typeof createCalendarWithRelationsAsync;
25
- static updateWithRelationsAsync: typeof updateCalendarWithRelationsAsync;
26
- static deleteCalendarAsync: typeof deleteCalendarAsync;
27
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendarCreationFacade.d.ts","sourceRoot":"","sources":["../../src/calendar/calendarCreationFacade.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAGL,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAiB7B;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,kBAAkB,GAC9B,MAAM,GAAG,SAAS,CAIpB;AAeD,MAAM,MAAM,4BAA4B,GAAG,qBAAqB,GAAG;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GACnC,4BAA4B,GAC5B,OAAO,CAAC,oBAAoB,EAAE;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAEjD;;;;GAIG;AACH,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,2BAA2B,CAAC,CAwBtC;AAuFD;;;;GAIG;AACH,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,2BAA2B,CAAC,CAwBtC;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,MAAM,CAAC,wBAAwB,0CAAoC;IACnE,MAAM,CAAC,wBAAwB,0CAAoC;IACnE,MAAM,CAAC,mBAAmB,6BAAuB;CAClD"}
@@ -1,167 +0,0 @@
1
- import { getSnapshot } from "mobx-state-tree";
2
- import { addParticipantToCalendar, saveCalendarOpeningHour } from "./blazeoCalendarRelationMethods.js";
3
- import { createCalendarAsync, updateCalendarAsync, deleteCalendarAsync } from "./createCalendar.js";
4
- function isFailureStatus(res) {
5
- return res.status !== "success" && res.status !== "Success";
6
- }
7
- function normalizeParticipantGuid(id) {
8
- if (id == null || !String(id).trim())
9
- return undefined;
10
- return String(id).trim().replace(/^\{|\}$/g, "");
11
- }
12
- function newOpeningHourId() {
13
- const c = globalThis.crypto;
14
- if (c?.randomUUID)
15
- return c.randomUUID();
16
- return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
17
- }
18
- /**
19
- * Resolves Blazeo `participantId` for an opening-hour row: explicit `participantId`,
20
- * matching `CalendarCreationAPIFacade.SaveOpeningHours`.
21
- */
22
- export function resolveParticipantIdForOpeningHour(openingHour) {
23
- const direct = normalizeParticipantGuid(openingHour.participantId);
24
- if (direct)
25
- return direct;
26
- return undefined;
27
- }
28
- function effectiveCalendarId(calendarNode, input) {
29
- const snap = getSnapshot(calendarNode);
30
- const fromNode = snap.calendarId?.trim();
31
- if (fromNode && fromNode !== "new")
32
- return fromNode;
33
- return (input.calendarId?.trim() || undefined);
34
- }
35
- /**
36
- * Orchestrates the same steps as Apex `CalendarCreationAPIFacade.CreateCalendarAsync`:
37
- * save calendar (`POST /Calendar/Create`), then add participants, then save opening hours
38
- * per day (`POST /Calendar/Participant/Availability/OpeningHour/Save`).
39
- */
40
- export async function createCalendarWithRelationsAsync(calendar, options = {}) {
41
- const hasMembers = (calendar.members?.length ?? 0) > 0;
42
- const hasHours = (calendar.openingHours?.length ?? 0) > 0;
43
- if (!hasMembers && !hasHours) {
44
- const r = await createCalendarAsync(calendar, options);
45
- if (!r.ok)
46
- return r;
47
- return { ...r, membersAdded: 0, openingHoursSaved: 0 };
48
- }
49
- if (options.localOnly) {
50
- const r = await createCalendarAsync(calendar, options);
51
- if (!r.ok)
52
- return r;
53
- return { ...r, membersAdded: 0, openingHoursSaved: 0 };
54
- }
55
- const created = await createCalendarAsync(calendar, options);
56
- if (!created.ok)
57
- return created;
58
- return runMembersAndOpeningHoursAfterCalendarSave(calendar, created.calendar, created);
59
- }
60
- /**
61
- * After calendar `create` or `update`, add members and opening hours (same order as Apex facade).
62
- */
63
- async function runMembersAndOpeningHoursAfterCalendarSave(calendar, calendarNode, baseSuccess) {
64
- const calendarIdStr = effectiveCalendarId(calendarNode, calendar);
65
- if (!calendarIdStr) {
66
- return {
67
- ok: false,
68
- error: "Could not resolve calendar id after save. Ensure the API returned a calendar id.",
69
- };
70
- }
71
- let membersAdded = 0;
72
- for (const m of calendar.members ?? []) {
73
- const pid = normalizeParticipantGuid(m.id);
74
- if (!pid) {
75
- return {
76
- ok: false,
77
- error: `Member id ${m.id}: thirdPartyMemberId is required to add a participant.`,
78
- };
79
- }
80
- const res = await addParticipantToCalendar(calendarNode, pid);
81
- if (isFailureStatus(res)) {
82
- const msg = res.message ??
83
- (typeof res.data === "string" ? res.data : undefined) ??
84
- JSON.stringify(res);
85
- return {
86
- ok: false,
87
- error: `addParticipant failed for member ${m.id}: ${msg}`,
88
- apiResponse: res,
89
- };
90
- }
91
- membersAdded += 1;
92
- }
93
- let openingHoursSaved = 0;
94
- for (const oh of calendar.openingHours ?? []) {
95
- const participantId = resolveParticipantIdForOpeningHour(oh);
96
- if (!participantId) {
97
- return {
98
- ok: false,
99
- error: `Opening hour id ${oh.id}: participantId is required.`,
100
- };
101
- }
102
- for (const day of oh.days ?? []) {
103
- const payload = {
104
- calendarId: calendarIdStr,
105
- participantId,
106
- day,
107
- startHour: oh.startHour,
108
- startMinute: oh.startMinute,
109
- endHour: oh.endHour,
110
- endMinute: oh.endMinute,
111
- off: oh.off,
112
- openingHourId: oh.openingHourId?.trim() || newOpeningHourId(),
113
- };
114
- const res = await saveCalendarOpeningHour(calendarNode, payload);
115
- if (isFailureStatus(res)) {
116
- const msg = res.message ??
117
- (typeof res.data === "string" ? res.data : undefined) ??
118
- JSON.stringify(res);
119
- return {
120
- ok: false,
121
- error: `saveOpeningHour failed (opening hour ${oh.id}, day ${day}): ${msg}`,
122
- apiResponse: res,
123
- };
124
- }
125
- openingHoursSaved += 1;
126
- }
127
- }
128
- return {
129
- ...baseSuccess,
130
- membersAdded,
131
- openingHoursSaved,
132
- };
133
- }
134
- /**
135
- * Calendar body update, then same member + opening-hour saves as create (Apex-style follow-up).
136
- * For member add/remove *diffs* against existing DB membership, use server-side Apex; this client
137
- * only performs additive Blazeo calls matching the payload.
138
- */
139
- export async function updateCalendarWithRelationsAsync(calendar, options = {}) {
140
- const hasMembers = (calendar.members?.length ?? 0) > 0;
141
- const hasHours = (calendar.openingHours?.length ?? 0) > 0;
142
- if (!hasMembers && !hasHours) {
143
- const r = await updateCalendarAsync(calendar, options);
144
- if (!r.ok)
145
- return r;
146
- return { ...r, membersAdded: 0, openingHoursSaved: 0 };
147
- }
148
- if (options.localOnly) {
149
- const r = await updateCalendarAsync(calendar, options);
150
- if (!r.ok)
151
- return r;
152
- return { ...r, membersAdded: 0, openingHoursSaved: 0 };
153
- }
154
- const updated = await updateCalendarAsync(calendar, options);
155
- if (!updated.ok)
156
- return updated;
157
- return runMembersAndOpeningHoursAfterCalendarSave(calendar, updated.calendar, updated);
158
- }
159
- /**
160
- * Facade aligned with `CalendarCreationAPIFacade`: create/update with members & opening hours,
161
- * or delete calendar only.
162
- */
163
- export class CalendarCreationFacade {
164
- static createWithRelationsAsync = createCalendarWithRelationsAsync;
165
- static updateWithRelationsAsync = updateCalendarWithRelationsAsync;
166
- static deleteCalendarAsync = deleteCalendarAsync;
167
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendarCreationFacade.js","sourceRoot":"","sources":["../../src/calendar/calendarCreationFacade.ts"],"names":[],"mappings":"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"}
@@ -1,81 +0,0 @@
1
- /** Merge per-call options with global Blazeo config (defaults file + `configure`). */
2
- export declare function resolveBlazeoConnection(options?: any): {
3
- baseUrl: any;
4
- consumer: any;
5
- };
6
- /** Shared MST `env` for Blazeo models (`Calendar`, `Event`, …). */
7
- export declare function buildModelEnv(baseUrl: string | undefined, consumer: string | undefined, forLocalOnly: boolean): any;
8
- /**
9
- * Uses {@link resolveBlazeoConnection} (defaults + `configure` + optional overrides),
10
- * then `CalendarModel.create` and `calendar.create()` unless `localOnly`.
11
- */
12
- export declare function createCalendarAsync(calendar: any, options?: any): Promise<{
13
- ok: boolean;
14
- error: string;
15
- calendar?: undefined;
16
- apiResponse?: undefined;
17
- } | {
18
- ok: boolean;
19
- calendar: any;
20
- error?: undefined;
21
- apiResponse?: undefined;
22
- } | {
23
- ok: boolean;
24
- error: any;
25
- apiResponse: any;
26
- calendar?: undefined;
27
- } | {
28
- ok: boolean;
29
- calendar: any;
30
- apiResponse: any;
31
- error?: undefined;
32
- }>;
33
- /**
34
- * Uses {@link resolveBlazeoConnection}, builds a `Calendar` node from {@link mapCalendarBOToSnapshot},
35
- * then `calendar.update()` → POST `/Calendar/Event/Update` unless `localOnly`.
36
- */
37
- export declare function updateCalendarAsync(calendar: any, options?: any): Promise<{
38
- ok: boolean;
39
- error: string;
40
- calendar?: undefined;
41
- apiResponse?: undefined;
42
- } | {
43
- ok: boolean;
44
- calendar: any;
45
- error?: undefined;
46
- apiResponse?: undefined;
47
- } | {
48
- ok: boolean;
49
- error: any;
50
- apiResponse: any;
51
- calendar?: undefined;
52
- } | {
53
- ok: boolean;
54
- calendar: any;
55
- apiResponse: any;
56
- error?: undefined;
57
- }>;
58
- /**
59
- * Removes a calendar via `calendar.remove()` → GET `/Calendar/Remove?calendar_id=…`.
60
- */
61
- export declare function deleteCalendarAsync(calendarId: string, options?: any): Promise<{
62
- ok: boolean;
63
- error: string;
64
- calendar?: undefined;
65
- apiResponse?: undefined;
66
- } | {
67
- ok: boolean;
68
- calendar: any;
69
- error?: undefined;
70
- apiResponse?: undefined;
71
- } | {
72
- ok: boolean;
73
- error: any;
74
- apiResponse: any;
75
- calendar?: undefined;
76
- } | {
77
- ok: boolean;
78
- calendar: any;
79
- apiResponse: any;
80
- error?: undefined;
81
- }>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"createCalendar.d.ts","sourceRoot":"","sources":["../../src/calendar/createCalendar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAY1D,MAAM,MAAM,qBAAqB,GAAG;IAClC,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,CAAC,EAAE,4BAA4B,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,4BAA4B,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAMjF,sFAAsF;AACtF,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,qBAA0B,GAAG;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAgBA;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,YAAY,EAAE,OAAO,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0BzB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CA8D/B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CA2E/B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAkE/B"}