@blazeo.com/calendar-client 1.0.9 → 1.0.10

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.js CHANGED
@@ -52,7 +52,7 @@ __export(index_exports, {
52
52
  module.exports = __toCommonJS(index_exports);
53
53
 
54
54
  // src/models/appointment/Calendar.js
55
- var import_mobx_state_tree7 = require("mobx-state-tree");
55
+ var import_mobx_state_tree8 = require("mobx-state-tree");
56
56
 
57
57
  // src/ConfigModel.js
58
58
  var import_mobx_state_tree = require("mobx-state-tree");
@@ -226,7 +226,7 @@ var DayOfWeek = {
226
226
  };
227
227
 
228
228
  // src/models/appointment/Event.js
229
- var import_mobx_state_tree3 = require("mobx-state-tree");
229
+ var import_mobx_state_tree4 = require("mobx-state-tree");
230
230
 
231
231
  // src/models/appointment/TimeSlot.js
232
232
  var import_mobx_state_tree2 = require("mobx-state-tree");
@@ -254,55 +254,109 @@ var TimeSlotModel = import_mobx_state_tree2.types.model("TimeSlot", {
254
254
  }));
255
255
  var TimeSlot_default = TimeSlotModel;
256
256
 
257
+ // src/models/appointment/TimeFrame.js
258
+ var import_mobx_state_tree3 = require("mobx-state-tree");
259
+ var TimeFrameModel = import_mobx_state_tree3.types.model("TimeFrame", {
260
+ start: import_mobx_state_tree3.types.string,
261
+ end: import_mobx_state_tree3.types.string
262
+ }).actions((self) => ({
263
+ buffer(bufferMinutes, unit) {
264
+ const bfr = unit === Unit.Hours ? bufferMinutes * 60 : bufferMinutes;
265
+ const s = new Date(self.start);
266
+ const e = new Date(self.end);
267
+ s.setMinutes(s.getMinutes() - bfr);
268
+ e.setMinutes(e.getMinutes() + bfr);
269
+ self.start = s.toISOString();
270
+ self.end = e.toISOString();
271
+ },
272
+ conflicts(start, end) {
273
+ const thisStart = new Date(self.start).getTime();
274
+ const thisEnd = new Date(self.end).getTime();
275
+ const startT = start.getTime();
276
+ const endT = end.getTime();
277
+ return startT >= thisStart && startT <= thisEnd || endT >= thisStart && endT <= thisEnd || startT <= thisStart && endT >= thisEnd;
278
+ },
279
+ breakIntoSlots(slotDurationMinutes) {
280
+ const start = new Date(self.start);
281
+ const end = new Date(self.end);
282
+ const slots = [];
283
+ let current = new Date(start);
284
+ const align = (m) => {
285
+ if (m === 0 || m === 15 || m === 30 || m === 45) return m;
286
+ if (m > 0 && m < 15) return 15;
287
+ if (m > 15 && m < 30) return 30;
288
+ if (m > 30 && m < 45) return 45;
289
+ return 0;
290
+ };
291
+ current.setMinutes(align(current.getMinutes()), 0, 0);
292
+ let slotEnd = new Date(current.getTime());
293
+ slotEnd.setMinutes(slotEnd.getMinutes() + slotDurationMinutes);
294
+ while (slotEnd.getTime() <= end.getTime()) {
295
+ slots.push({
296
+ startHour: current.getHours(),
297
+ startMinute: current.getMinutes(),
298
+ endHour: slotEnd.getHours(),
299
+ endMinute: slotEnd.getMinutes(),
300
+ startDate: current.toISOString(),
301
+ endDate: slotEnd.toISOString()
302
+ });
303
+ current = new Date(slotEnd.getTime());
304
+ slotEnd.setMinutes(slotEnd.getMinutes() + slotDurationMinutes);
305
+ }
306
+ return slots;
307
+ }
308
+ }));
309
+ var TimeFrame_default = TimeFrameModel;
310
+
257
311
  // src/models/appointment/Event.js
258
312
  function getDefaultOffset() {
259
313
  var _a;
260
314
  const cfg = getConfig();
261
315
  return ((_a = cfg == null ? void 0 : cfg.getDefaultOffset) == null ? void 0 : _a.call(cfg)) ?? -(/* @__PURE__ */ new Date()).getTimezoneOffset();
262
316
  }
263
- var EventModel = import_mobx_state_tree3.types.model("Event", {
264
- id: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.number), null),
265
- eventId: import_mobx_state_tree3.types.identifier,
266
- calendarId: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.string, ""),
267
- participantId: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
268
- title: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
269
- description: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
270
- isRecurring: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.boolean, false),
271
- recurringFrequency: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.number, RecurringFrequency.None),
272
- startDate: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.string, ""),
273
- endDate: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.string, ""),
274
- startHour: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.number, 0),
275
- startMinute: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.number, 0),
276
- endHour: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.number, 0),
277
- endMinute: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.number, 0),
278
- visitorName: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
279
- visitorEmail: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
280
- visitorPhone: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
281
- createdOn: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
282
- modifiedOn: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
283
- externalEventId: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
284
- attendeeStatus: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.number, AttendeeStatus.Tentative),
285
- rescheduleLink: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
286
- cancelLink: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
287
- timeZone: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.maybeNull(import_mobx_state_tree3.types.string), null),
288
- offset: import_mobx_state_tree3.types.optional(import_mobx_state_tree3.types.number, 0)
317
+ var EventModel = import_mobx_state_tree4.types.model("Event", {
318
+ id: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.number), null),
319
+ eventId: import_mobx_state_tree4.types.identifier,
320
+ calendarId: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.string, ""),
321
+ participantId: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
322
+ title: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
323
+ description: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
324
+ isRecurring: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.boolean, false),
325
+ recurringFrequency: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.number, RecurringFrequency.None),
326
+ startDate: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.string, ""),
327
+ endDate: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.string, ""),
328
+ startHour: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.number, 0),
329
+ startMinute: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.number, 0),
330
+ endHour: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.number, 0),
331
+ endMinute: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.number, 0),
332
+ visitorName: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
333
+ visitorEmail: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
334
+ visitorPhone: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
335
+ createdOn: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
336
+ modifiedOn: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
337
+ externalEventId: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
338
+ attendeeStatus: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.number, AttendeeStatus.Tentative),
339
+ rescheduleLink: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
340
+ cancelLink: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
341
+ timeZone: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string), null),
342
+ offset: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.number, 0)
289
343
  }).actions((self) => {
290
- const { req, reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree3.getEnv);
344
+ const { req, reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree4.getEnv);
291
345
  const getOffset = () => {
292
346
  var _a, _b;
293
- return ((_b = (_a = (0, import_mobx_state_tree3.getEnv)(self)).getDefaultOffset) == null ? void 0 : _b.call(_a)) ?? getDefaultOffset();
347
+ return ((_b = (_a = (0, import_mobx_state_tree4.getEnv)(self)).getDefaultOffset) == null ? void 0 : _b.call(_a)) ?? getDefaultOffset();
294
348
  };
295
349
  return {
296
350
  /** GET /event/get – fetch this event by eventId or externalEventId */
297
351
  async get(params) {
298
352
  if ((params == null ? void 0 : params.eventId) ?? (params == null ? void 0 : params.event_id)) {
299
353
  const res = await reqGet("/event/get", { event_id: params.eventId ?? params.event_id });
300
- if (res.status === "success" && res.data) (0, import_mobx_state_tree3.applySnapshot)(self, { ...res.data, eventId: self.eventId });
354
+ if (res.status === "success" && res.data) (0, import_mobx_state_tree4.applySnapshot)(self, { ...res.data, eventId: self.eventId });
301
355
  return res;
302
356
  }
303
357
  if ((params == null ? void 0 : params.externalEventId) ?? (params == null ? void 0 : params.externalevent_id)) {
304
358
  const res = await reqGet("/event/get", { externalevent_id: params.externalEventId ?? params.externalevent_id });
305
- if (res.status === "success" && res.data) (0, import_mobx_state_tree3.applySnapshot)(self, { ...res.data, eventId: self.eventId });
359
+ if (res.status === "success" && res.data) (0, import_mobx_state_tree4.applySnapshot)(self, { ...res.data, eventId: self.eventId });
306
360
  return res;
307
361
  }
308
362
  return { status: "failure", message: "Provide eventId or externalEventId" };
@@ -326,7 +380,7 @@ var EventModel = import_mobx_state_tree3.types.model("Event", {
326
380
  visitorPhone: self.visitorPhone ?? void 0
327
381
  };
328
382
  const res = await reqPost("/event/create", payload, null, { headers: { offset: String(offset) } });
329
- if (res.status === "success" && res.data) (0, import_mobx_state_tree3.applySnapshot)(self, { ...res.data, eventId: self.eventId });
383
+ if (res.status === "success" && res.data) (0, import_mobx_state_tree4.applySnapshot)(self, { ...res.data, eventId: self.eventId });
330
384
  return res;
331
385
  },
332
386
  /** POST /event/update – update event */
@@ -369,7 +423,7 @@ var EventModel = import_mobx_state_tree3.types.model("Event", {
369
423
  visitorPhone: self.visitorPhone ?? void 0
370
424
  };
371
425
  const res = await reqPost("/event/reschedule", payload, null, { headers: { offset: String(offset) } });
372
- if (res.status === "success" && res.data) (0, import_mobx_state_tree3.applySnapshot)(self, { ...res.data, eventId: self.eventId });
426
+ if (res.status === "success" && res.data) (0, import_mobx_state_tree4.applySnapshot)(self, { ...res.data, eventId: self.eventId });
373
427
  return res;
374
428
  },
375
429
  /** GET /event/cancel – cancel this event */
@@ -558,6 +612,32 @@ EventModel.getAvailability = async (calendarId, year, month, day, opts = {}) =>
558
612
  }
559
613
  return [];
560
614
  };
615
+ EventModel.getExternalUnavailability = async (participantId, opts = {}) => {
616
+ if (!participantId) throw new Error("participantId required");
617
+ const { req } = createRequestHelpersFromEnv(getConfig());
618
+ const query = { participant_id: participantId };
619
+ if (opts.startUtc && opts.endUtc) {
620
+ query.start_utc = opts.startUtc;
621
+ query.end_utc = opts.endUtc;
622
+ } else {
623
+ if (opts.year == null || opts.month == null || opts.day == null) {
624
+ throw new Error("Provide startUtc/endUtc or year/month/day");
625
+ }
626
+ query.year = opts.year;
627
+ query.month = opts.month;
628
+ query.day = opts.day;
629
+ if (opts.days != null) query.days = opts.days;
630
+ }
631
+ const offset = opts.offset ?? getDefaultOffset();
632
+ const res = await req("/externalcalendar/unavailability/get", { method: "GET", query, headers: { offset: String(offset) } });
633
+ if (res.status === "success" && Array.isArray(res.data)) {
634
+ return res.data.map((f) => TimeFrame_default.create({
635
+ start: f.start ?? f.Start,
636
+ end: f.end ?? f.End
637
+ }));
638
+ }
639
+ return [];
640
+ };
561
641
  EventModel.cancel = async (eventId) => {
562
642
  const { reqGet } = createRequestHelpersFromEnv(getConfig());
563
643
  return reqGet("/event/cancel", { event_id: eventId });
@@ -620,29 +700,29 @@ EventModel.setAttendeeStatus = async (eventId, attendeeStatus) => {
620
700
  var Event_default = EventModel;
621
701
 
622
702
  // src/models/appointment/CalendarParticipant.js
623
- var import_mobx_state_tree5 = require("mobx-state-tree");
703
+ var import_mobx_state_tree6 = require("mobx-state-tree");
624
704
 
625
705
  // src/models/appointment/ParticipantInfo.js
626
- var import_mobx_state_tree4 = require("mobx-state-tree");
627
- var ParticipantInfoModel = import_mobx_state_tree4.types.model("ParticipantInfo", {
628
- participantId: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.string, ""),
629
- calendarParticipantId: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.string, ""),
630
- alias: import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string),
631
- email: import_mobx_state_tree4.types.maybeNull(import_mobx_state_tree4.types.string),
632
- isApproved: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.boolean, false),
633
- emailProvider: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.number, 0),
634
- isAvailable: import_mobx_state_tree4.types.optional(import_mobx_state_tree4.types.boolean, false)
706
+ var import_mobx_state_tree5 = require("mobx-state-tree");
707
+ var ParticipantInfoModel = import_mobx_state_tree5.types.model("ParticipantInfo", {
708
+ participantId: import_mobx_state_tree5.types.optional(import_mobx_state_tree5.types.string, ""),
709
+ calendarParticipantId: import_mobx_state_tree5.types.optional(import_mobx_state_tree5.types.string, ""),
710
+ alias: import_mobx_state_tree5.types.maybeNull(import_mobx_state_tree5.types.string),
711
+ email: import_mobx_state_tree5.types.maybeNull(import_mobx_state_tree5.types.string),
712
+ isApproved: import_mobx_state_tree5.types.optional(import_mobx_state_tree5.types.boolean, false),
713
+ emailProvider: import_mobx_state_tree5.types.optional(import_mobx_state_tree5.types.number, 0),
714
+ isAvailable: import_mobx_state_tree5.types.optional(import_mobx_state_tree5.types.boolean, false)
635
715
  });
636
716
  var ParticipantInfo_default = ParticipantInfoModel;
637
717
 
638
718
  // src/models/appointment/CalendarParticipant.js
639
- var CalendarParticipantModel = import_mobx_state_tree5.types.model("CalendarParticipant", {
640
- id: import_mobx_state_tree5.types.optional(import_mobx_state_tree5.types.maybeNull(import_mobx_state_tree5.types.number), null),
641
- calendarParticipantId: import_mobx_state_tree5.types.optional(import_mobx_state_tree5.types.string, ""),
642
- participantId: import_mobx_state_tree5.types.optional(import_mobx_state_tree5.types.string, ""),
643
- calendarId: import_mobx_state_tree5.types.optional(import_mobx_state_tree5.types.string, ""),
644
- createdOn: import_mobx_state_tree5.types.optional(import_mobx_state_tree5.types.maybeNull(import_mobx_state_tree5.types.string), null),
645
- modifiedOn: import_mobx_state_tree5.types.optional(import_mobx_state_tree5.types.maybeNull(import_mobx_state_tree5.types.string), null)
719
+ var CalendarParticipantModel = import_mobx_state_tree6.types.model("CalendarParticipant", {
720
+ id: import_mobx_state_tree6.types.optional(import_mobx_state_tree6.types.maybeNull(import_mobx_state_tree6.types.number), null),
721
+ calendarParticipantId: import_mobx_state_tree6.types.optional(import_mobx_state_tree6.types.string, ""),
722
+ participantId: import_mobx_state_tree6.types.optional(import_mobx_state_tree6.types.string, ""),
723
+ calendarId: import_mobx_state_tree6.types.optional(import_mobx_state_tree6.types.string, ""),
724
+ createdOn: import_mobx_state_tree6.types.optional(import_mobx_state_tree6.types.maybeNull(import_mobx_state_tree6.types.string), null),
725
+ modifiedOn: import_mobx_state_tree6.types.optional(import_mobx_state_tree6.types.maybeNull(import_mobx_state_tree6.types.string), null)
646
726
  });
647
727
  function mapFromApi(d) {
648
728
  if (!d) return d;
@@ -695,45 +775,45 @@ CalendarParticipantModel.getByParticipant = async (participantId) => {
695
775
  var CalendarParticipant_default = CalendarParticipantModel;
696
776
 
697
777
  // src/models/appointment/CalendarDay.js
698
- var import_mobx_state_tree6 = require("mobx-state-tree");
699
- var CalendarDayModel = import_mobx_state_tree6.types.model("CalendarDay", {
700
- date: import_mobx_state_tree6.types.optional(import_mobx_state_tree6.types.string, "")
778
+ var import_mobx_state_tree7 = require("mobx-state-tree");
779
+ var CalendarDayModel = import_mobx_state_tree7.types.model("CalendarDay", {
780
+ date: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.string, "")
701
781
  });
702
782
  var CalendarDay_default = CalendarDayModel;
703
783
 
704
784
  // src/models/appointment/Calendar.js
705
- var CalendarModel = import_mobx_state_tree7.types.model("Calendar", {
706
- id: import_mobx_state_tree7.types.maybeNull(import_mobx_state_tree7.types.number),
707
- companyKey: import_mobx_state_tree7.types.maybeNull(import_mobx_state_tree7.types.string),
708
- calendarId: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.identifier, "new"),
709
- name: import_mobx_state_tree7.types.maybeNull(import_mobx_state_tree7.types.string),
785
+ var CalendarModel = import_mobx_state_tree8.types.model("Calendar", {
786
+ id: import_mobx_state_tree8.types.maybeNull(import_mobx_state_tree8.types.number),
787
+ companyKey: import_mobx_state_tree8.types.maybeNull(import_mobx_state_tree8.types.string),
788
+ calendarId: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.identifier, "new"),
789
+ name: import_mobx_state_tree8.types.maybeNull(import_mobx_state_tree8.types.string),
710
790
  // location: types.maybeNull(types.string),
711
- timeZoneId: import_mobx_state_tree7.types.maybeNull(import_mobx_state_tree7.types.string),
712
- purpose: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.string, ""),
713
- description: import_mobx_state_tree7.types.maybeNull(import_mobx_state_tree7.types.string),
714
- assignmentMethod: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, AssignmentMethod.RoundRobin),
715
- duration: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, 0),
716
- durationUnit: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, Unit.Minutes),
717
- minimumBookingNotice: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, 0),
718
- minimumBookingNoticeUnit: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, Unit.Minutes),
719
- minimumCancelationNotice: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, 0),
720
- minimumCancelationNoticeUnit: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, Unit.Minutes),
721
- futureLimit: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, 0),
722
- futureLimitUnit: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, Unit.Days),
723
- bufferTime: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, 0),
724
- bufferTimeUnit: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, Unit.Minutes),
725
- bookingLimit: import_mobx_state_tree7.types.optional(import_mobx_state_tree7.types.number, 0),
726
- createdOn: import_mobx_state_tree7.types.maybeNull(import_mobx_state_tree7.types.string),
727
- modifiedOn: import_mobx_state_tree7.types.maybeNull(import_mobx_state_tree7.types.string)
791
+ timeZoneId: import_mobx_state_tree8.types.maybeNull(import_mobx_state_tree8.types.string),
792
+ purpose: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.string, ""),
793
+ description: import_mobx_state_tree8.types.maybeNull(import_mobx_state_tree8.types.string),
794
+ assignmentMethod: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, AssignmentMethod.RoundRobin),
795
+ duration: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, 0),
796
+ durationUnit: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, Unit.Minutes),
797
+ minimumBookingNotice: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, 0),
798
+ minimumBookingNoticeUnit: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, Unit.Minutes),
799
+ minimumCancelationNotice: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, 0),
800
+ minimumCancelationNoticeUnit: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, Unit.Minutes),
801
+ futureLimit: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, 0),
802
+ futureLimitUnit: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, Unit.Days),
803
+ bufferTime: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, 0),
804
+ bufferTimeUnit: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, Unit.Minutes),
805
+ bookingLimit: import_mobx_state_tree8.types.optional(import_mobx_state_tree8.types.number, 0),
806
+ createdOn: import_mobx_state_tree8.types.maybeNull(import_mobx_state_tree8.types.string),
807
+ modifiedOn: import_mobx_state_tree8.types.maybeNull(import_mobx_state_tree8.types.string)
728
808
  }).actions((self) => {
729
- const { req, reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree7.getEnv);
809
+ const { req, reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree8.getEnv);
730
810
  return {
731
811
  /** GET Calendar/Get – fetch this calendar by calendarId */
732
812
  async get() {
733
813
  if (!self.calendarId) return { status: "failure", message: "calendarId required" };
734
814
  const res = await reqGet("/Calendar/Get", { calendar_id: self.calendarId });
735
815
  if (res.status === "success" && res.data) {
736
- (0, import_mobx_state_tree7.applySnapshot)(self, { ...res.data, calendarId: self.calendarId });
816
+ (0, import_mobx_state_tree8.applySnapshot)(self, { ...res.data, calendarId: self.calendarId });
737
817
  }
738
818
  return res;
739
819
  },
@@ -863,9 +943,25 @@ var CalendarModel = import_mobx_state_tree7.types.model("Calendar", {
863
943
  if (!self.calendarId) return { status: "failure", message: "calendarId required" };
864
944
  return reqGet("/Calendar/Participants/GetInfo", { calendar_id: self.calendarId });
865
945
  },
866
- /** GET Calendar/All – calendars by company_key */
867
- async getByCompany(companyKey) {
868
- return reqGet("/Calendar/All", { company_key: companyKey || self.companyKey });
946
+ /** GET Calendar/All – calendars by company_key with paging options */
947
+ async getByCompany(companyKey, opts = {}) {
948
+ const resolvedCompanyKey = companyKey || self.companyKey;
949
+ const q = { company_key: resolvedCompanyKey };
950
+ const sortBy = opts.sortBy ?? opts.sort ?? opts.sort_column;
951
+ if (sortBy != null && sortBy !== "") q.sort = sortBy;
952
+ const sortOrderRaw = opts.sortOrder ?? opts.sort_dir;
953
+ if (sortOrderRaw != null && String(sortOrderRaw).trim() !== "") {
954
+ const u = String(sortOrderRaw).trim().toUpperCase();
955
+ q.sort_dir = u.startsWith("DESC") ? "desc" : "asc";
956
+ }
957
+ if (opts.page != null) {
958
+ q.page = opts.page;
959
+ if (opts.page_size != null) q.page_size = opts.page_size;
960
+ } else {
961
+ if (opts.skip != null) q.skip = opts.skip;
962
+ if (opts.take != null) q.take = opts.take;
963
+ }
964
+ return reqGet("/Calendar/All", q);
869
965
  },
870
966
  /** GET Calendar/TimeZones/Get */
871
967
  async getTimeZones() {
@@ -940,13 +1036,34 @@ CalendarModel.get = async (calendarId) => {
940
1036
  }
941
1037
  return null;
942
1038
  };
943
- CalendarModel.getByCompany = async (companyKey) => {
1039
+ CalendarModel.getByCompany = async (companyKey, opts = {}) => {
1040
+ var _a, _b, _c, _d;
944
1041
  const { reqGet } = createRequestHelpersFromEnv(getConfig());
945
- const res = await reqGet("/Calendar/All", { company_key: companyKey });
946
- if (res.status === "success" && Array.isArray(res.data)) {
947
- return res.data.map(
948
- (c) => CalendarModel.create(mapCalendarFromApi(c), { env: getConfig() })
949
- );
1042
+ const query = { company_key: companyKey };
1043
+ const sortBy = opts.sortBy ?? opts.sort ?? opts.sort_column;
1044
+ if (sortBy != null && sortBy !== "") query.sort = sortBy;
1045
+ const sortOrderRaw = opts.sortOrder ?? opts.sort_dir;
1046
+ if (sortOrderRaw != null && String(sortOrderRaw).trim() !== "") {
1047
+ const u = String(sortOrderRaw).trim().toUpperCase();
1048
+ query.sort_dir = u.startsWith("DESC") ? "desc" : "asc";
1049
+ }
1050
+ if (opts.page != null) {
1051
+ query.page = opts.page;
1052
+ if (opts.page_size != null) query.page_size = opts.page_size;
1053
+ } else {
1054
+ if (opts.skip != null) query.skip = opts.skip;
1055
+ if (opts.take != null) query.take = opts.take;
1056
+ }
1057
+ const res = await reqGet("/Calendar/All", query);
1058
+ if (res.status === "success") {
1059
+ const calendarsRaw = Array.isArray(res.data) ? res.data : Array.isArray((_a = res.data) == null ? void 0 : _a.Calendars) ? res.data.Calendars : Array.isArray((_b = res.data) == null ? void 0 : _b.calendars) ? res.data.calendars : null;
1060
+ if (calendarsRaw) {
1061
+ const calendars = calendarsRaw.map(
1062
+ (c) => CalendarModel.create(mapCalendarFromApi(c), { env: getConfig() })
1063
+ );
1064
+ const totalCount = Number(((_c = res.data) == null ? void 0 : _c.TotalCount) ?? ((_d = res.data) == null ? void 0 : _d.totalCount) ?? calendars.length);
1065
+ return { calendars, totalCount };
1066
+ }
950
1067
  }
951
1068
  return null;
952
1069
  };
@@ -1066,73 +1183,73 @@ CalendarModel.editWithParticipants = async (calendarId, name, participantIds, de
1066
1183
  var Calendar_default = CalendarModel;
1067
1184
 
1068
1185
  // src/models/appointment/Availability.js
1069
- var import_mobx_state_tree8 = require("mobx-state-tree");
1070
- var AvailabilityModel = import_mobx_state_tree8.types.model("Availability", {
1071
- id: import_mobx_state_tree8.types.maybeNull(import_mobx_state_tree8.types.number),
1072
- availabilityId: import_mobx_state_tree8.types.string,
1073
- calendarId: import_mobx_state_tree8.types.string,
1074
- participantId: import_mobx_state_tree8.types.string,
1075
- createdOn: import_mobx_state_tree8.types.maybeNull(import_mobx_state_tree8.types.string),
1076
- modifiedOn: import_mobx_state_tree8.types.maybeNull(import_mobx_state_tree8.types.string)
1077
- });
1078
- var Availability_default = AvailabilityModel;
1079
-
1080
- // src/models/appointment/AvailabilityDetail.js
1081
1186
  var import_mobx_state_tree9 = require("mobx-state-tree");
1082
- var AvailabilityDetailModel = import_mobx_state_tree9.types.model("AvailabilityDetail", {
1187
+ var AvailabilityModel = import_mobx_state_tree9.types.model("Availability", {
1083
1188
  id: import_mobx_state_tree9.types.maybeNull(import_mobx_state_tree9.types.number),
1084
1189
  availabilityId: import_mobx_state_tree9.types.string,
1085
- sunday: import_mobx_state_tree9.types.optional(import_mobx_state_tree9.types.boolean, false),
1086
- monday: import_mobx_state_tree9.types.optional(import_mobx_state_tree9.types.boolean, false),
1087
- tuesday: import_mobx_state_tree9.types.optional(import_mobx_state_tree9.types.boolean, false),
1088
- wednesday: import_mobx_state_tree9.types.optional(import_mobx_state_tree9.types.boolean, false),
1089
- thursday: import_mobx_state_tree9.types.optional(import_mobx_state_tree9.types.boolean, false),
1090
- friday: import_mobx_state_tree9.types.optional(import_mobx_state_tree9.types.boolean, false),
1091
- saturday: import_mobx_state_tree9.types.optional(import_mobx_state_tree9.types.boolean, false),
1092
- startHour: import_mobx_state_tree9.types.optional(import_mobx_state_tree9.types.number, 0),
1093
- startMinute: import_mobx_state_tree9.types.optional(import_mobx_state_tree9.types.number, 0),
1094
- endHour: import_mobx_state_tree9.types.optional(import_mobx_state_tree9.types.number, 0),
1095
- endMinute: import_mobx_state_tree9.types.optional(import_mobx_state_tree9.types.number, 0),
1190
+ calendarId: import_mobx_state_tree9.types.string,
1191
+ participantId: import_mobx_state_tree9.types.string,
1096
1192
  createdOn: import_mobx_state_tree9.types.maybeNull(import_mobx_state_tree9.types.string),
1097
1193
  modifiedOn: import_mobx_state_tree9.types.maybeNull(import_mobx_state_tree9.types.string)
1098
1194
  });
1195
+ var Availability_default = AvailabilityModel;
1196
+
1197
+ // src/models/appointment/AvailabilityDetail.js
1198
+ var import_mobx_state_tree10 = require("mobx-state-tree");
1199
+ var AvailabilityDetailModel = import_mobx_state_tree10.types.model("AvailabilityDetail", {
1200
+ id: import_mobx_state_tree10.types.maybeNull(import_mobx_state_tree10.types.number),
1201
+ availabilityId: import_mobx_state_tree10.types.string,
1202
+ sunday: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.boolean, false),
1203
+ monday: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.boolean, false),
1204
+ tuesday: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.boolean, false),
1205
+ wednesday: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.boolean, false),
1206
+ thursday: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.boolean, false),
1207
+ friday: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.boolean, false),
1208
+ saturday: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.boolean, false),
1209
+ startHour: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.number, 0),
1210
+ startMinute: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.number, 0),
1211
+ endHour: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.number, 0),
1212
+ endMinute: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.number, 0),
1213
+ createdOn: import_mobx_state_tree10.types.maybeNull(import_mobx_state_tree10.types.string),
1214
+ modifiedOn: import_mobx_state_tree10.types.maybeNull(import_mobx_state_tree10.types.string)
1215
+ });
1099
1216
  var AvailabilityDetail_default = AvailabilityDetailModel;
1100
1217
 
1101
1218
  // src/models/appointment/Participant.js
1102
- var import_mobx_state_tree10 = require("mobx-state-tree");
1103
- var ParticipantModel = import_mobx_state_tree10.types.model("Participant", {
1104
- id: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.maybeNull(import_mobx_state_tree10.types.number), null),
1105
- participantId: import_mobx_state_tree10.types.identifier,
1106
- companyKey: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.maybeNull(import_mobx_state_tree10.types.string), null),
1107
- alias: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.string, ""),
1108
- email: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.string, ""),
1109
- isApproved: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.boolean, false),
1110
- isAvailable: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.boolean, false),
1111
- provider: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.number, 0),
1112
- createdOn: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.maybeNull(import_mobx_state_tree10.types.string), null),
1113
- modifiedOn: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.maybeNull(import_mobx_state_tree10.types.string), null),
1114
- isDeleted: import_mobx_state_tree10.types.optional(import_mobx_state_tree10.types.boolean, false)
1219
+ var import_mobx_state_tree11 = require("mobx-state-tree");
1220
+ var ParticipantModel = import_mobx_state_tree11.types.model("Participant", {
1221
+ id: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.maybeNull(import_mobx_state_tree11.types.number), null),
1222
+ participantId: import_mobx_state_tree11.types.identifier,
1223
+ companyKey: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.maybeNull(import_mobx_state_tree11.types.string), null),
1224
+ alias: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.string, ""),
1225
+ email: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.string, ""),
1226
+ isApproved: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.boolean, false),
1227
+ isAvailable: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.boolean, false),
1228
+ provider: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.number, 0),
1229
+ createdOn: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.maybeNull(import_mobx_state_tree11.types.string), null),
1230
+ modifiedOn: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.maybeNull(import_mobx_state_tree11.types.string), null),
1231
+ isDeleted: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.boolean, false)
1115
1232
  }).actions((self) => {
1116
- const { reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree10.getEnv);
1233
+ const { reqGet, reqPost } = createRequestHelpers(self, import_mobx_state_tree11.getEnv);
1117
1234
  return {
1118
1235
  /** GET participant/get – fetch this participant */
1119
1236
  async get() {
1120
1237
  const res = await reqGet("/participant/get", { participant_id: self.participantId });
1121
- if (res.status === "success" && res.data) (0, import_mobx_state_tree10.applySnapshot)(self, mapFromApi2(res.data));
1238
+ if (res.status === "success" && res.data) (0, import_mobx_state_tree11.applySnapshot)(self, mapFromApi2(res.data));
1122
1239
  return res;
1123
1240
  },
1124
1241
  /** POST participant/save – save participant (add or update) */
1125
1242
  async save() {
1126
1243
  const payload = toPayload(self);
1127
1244
  const res = await reqPost("/participant/save", payload);
1128
- if (res.status === "success" && res.data) (0, import_mobx_state_tree10.applySnapshot)(self, mapFromApi2(res.data));
1245
+ if (res.status === "success" && res.data) (0, import_mobx_state_tree11.applySnapshot)(self, mapFromApi2(res.data));
1129
1246
  return res;
1130
1247
  },
1131
1248
  /** POST participant/update – update participant */
1132
1249
  async update() {
1133
1250
  const payload = toPayload(self);
1134
1251
  const res = await reqPost("/participant/update", payload);
1135
- if (res.status === "success" && res.data) (0, import_mobx_state_tree10.applySnapshot)(self, mapFromApi2(res.data));
1252
+ if (res.status === "success" && res.data) (0, import_mobx_state_tree11.applySnapshot)(self, mapFromApi2(res.data));
1136
1253
  return res;
1137
1254
  },
1138
1255
  /** GET participant/remove – remove this participant */
@@ -1142,6 +1259,37 @@ var ParticipantModel = import_mobx_state_tree10.types.model("Participant", {
1142
1259
  /** GET participant/sendemail – send email to this participant */
1143
1260
  async sendEmail() {
1144
1261
  return reqGet("/participant/sendemail", { participant_id: self.participantId });
1262
+ },
1263
+ /** GET participant/calendars/get – calendars for this participant (paged) */
1264
+ async getCalendars(opts = {}) {
1265
+ var _a, _b, _c, _d;
1266
+ const q = { participant_id: self.participantId };
1267
+ const sortBy = opts.sortBy ?? opts.sort ?? opts.sort_column;
1268
+ if (sortBy != null && sortBy !== "") q.sort = sortBy;
1269
+ const sortOrderRaw = opts.sortOrder ?? opts.sort_dir;
1270
+ if (sortOrderRaw != null && String(sortOrderRaw).trim() !== "") {
1271
+ const u = String(sortOrderRaw).trim().toUpperCase();
1272
+ q.sort_dir = u.startsWith("DESC") ? "desc" : "asc";
1273
+ }
1274
+ if (opts.page != null) {
1275
+ q.page = opts.page;
1276
+ if (opts.page_size != null) q.page_size = opts.page_size;
1277
+ } else {
1278
+ if (opts.skip != null) q.skip = opts.skip;
1279
+ if (opts.take != null) q.take = opts.take;
1280
+ }
1281
+ const res = await reqGet("/participant/calendars/get", q);
1282
+ if (res.status === "success") {
1283
+ const calendarsRaw = Array.isArray(res.data) ? res.data : Array.isArray((_a = res.data) == null ? void 0 : _a.Calendars) ? res.data.Calendars : Array.isArray((_b = res.data) == null ? void 0 : _b.calendars) ? res.data.calendars : null;
1284
+ if (calendarsRaw) {
1285
+ const calendars = calendarsRaw.map(
1286
+ (c) => Calendar_default.create(mapCalendarFromApi2(c), { env: getConfig() })
1287
+ );
1288
+ const totalCount = Number(((_c = res.data) == null ? void 0 : _c.TotalCount) ?? ((_d = res.data) == null ? void 0 : _d.totalCount) ?? calendars.length);
1289
+ return { calendars, totalCount };
1290
+ }
1291
+ }
1292
+ return null;
1145
1293
  }
1146
1294
  };
1147
1295
  });
@@ -1173,6 +1321,34 @@ function toPayload(self) {
1173
1321
  provider: self.provider
1174
1322
  };
1175
1323
  }
1324
+ function mapCalendarFromApi2(d) {
1325
+ if (!d) return d;
1326
+ const pick = (...keys) => keys.reduce((v, k) => v ?? d[k], void 0);
1327
+ const n = (v) => v != null && v !== "" ? Number(v) : void 0;
1328
+ return {
1329
+ id: pick("id", "Id"),
1330
+ companyKey: pick("companyKey", "CompanyKey", "company_key") ?? null,
1331
+ calendarId: String(pick("calendarId", "CalendarId", "calendar_id") ?? ""),
1332
+ name: pick("name", "Name") ?? null,
1333
+ timeZoneId: pick("timeZoneId", "TimeZoneId", "time_zone_id") ?? null,
1334
+ purpose: pick("purpose", "Purpose") ?? "",
1335
+ description: pick("description", "Description") ?? null,
1336
+ assignmentMethod: n(pick("assignmentMethod", "AssignmentMethod", "assignment_method")) ?? void 0,
1337
+ duration: n(pick("duration", "Duration")) ?? void 0,
1338
+ durationUnit: n(pick("durationUnit", "DurationUnit", "duration_unit")) ?? void 0,
1339
+ minimumBookingNotice: n(pick("minimumBookingNotice", "MinimumBookingNotice", "minimum_booking_notice")) ?? void 0,
1340
+ minimumBookingNoticeUnit: n(pick("minimumBookingNoticeUnit", "MinimumBookingNoticeUnit", "minimum_booking_notice_unit")) ?? void 0,
1341
+ minimumCancelationNotice: n(pick("minimumCancelationNotice", "MinimumCancelationNotice", "minimum_cancelation_notice")) ?? void 0,
1342
+ minimumCancelationNoticeUnit: n(pick("minimumCancelationNoticeUnit", "MinimumCancelationNoticeUnit", "minimum_cancelation_notice_unit")) ?? void 0,
1343
+ futureLimit: n(pick("futureLimit", "FutureLimit", "future_limit")) ?? void 0,
1344
+ futureLimitUnit: n(pick("futureLimitUnit", "FutureLimitUnit", "future_limit_unit")) ?? void 0,
1345
+ bufferTime: n(pick("bufferTime", "BufferTime", "buffer_time")) ?? void 0,
1346
+ bufferTimeUnit: n(pick("bufferTimeUnit", "BufferTimeUnit", "buffer_time_unit")) ?? void 0,
1347
+ bookingLimit: n(pick("bookingLimit", "BookingLimit", "booking_limit")) ?? void 0,
1348
+ createdOn: pick("createdOn", "CreatedOn", "created_on") ?? null,
1349
+ modifiedOn: pick("modifiedOn", "ModifiedOn", "modified_on") ?? null
1350
+ };
1351
+ }
1176
1352
  ParticipantModel.get = async (participantId) => {
1177
1353
  const { reqGet } = createRequestHelpersFromEnv(getConfig());
1178
1354
  const res = await reqGet("/participant/get", { participant_id: participantId });
@@ -1227,80 +1403,57 @@ ParticipantModel.sendEmail = async (participantId) => {
1227
1403
  const { reqGet } = createRequestHelpersFromEnv(getConfig());
1228
1404
  return reqGet("/participant/sendemail", { participant_id: participantId });
1229
1405
  };
1406
+ ParticipantModel.getCalendars = async (participantId, opts = {}) => {
1407
+ var _a, _b, _c, _d;
1408
+ const { reqGet } = createRequestHelpersFromEnv(getConfig());
1409
+ const q = { participant_id: participantId };
1410
+ const sortBy = opts.sortBy ?? opts.sort ?? opts.sort_column;
1411
+ if (sortBy != null && sortBy !== "") q.sort = sortBy;
1412
+ const sortOrderRaw = opts.sortOrder ?? opts.sort_dir;
1413
+ if (sortOrderRaw != null && String(sortOrderRaw).trim() !== "") {
1414
+ const u = String(sortOrderRaw).trim().toUpperCase();
1415
+ q.sort_dir = u.startsWith("DESC") ? "desc" : "asc";
1416
+ }
1417
+ if (opts.page != null) {
1418
+ q.page = opts.page;
1419
+ if (opts.page_size != null) q.page_size = opts.page_size;
1420
+ } else {
1421
+ if (opts.skip != null) q.skip = opts.skip;
1422
+ if (opts.take != null) q.take = opts.take;
1423
+ }
1424
+ const res = await reqGet("/participant/calendars/get", q);
1425
+ if (res.status === "success") {
1426
+ const calendarsRaw = Array.isArray(res.data) ? res.data : Array.isArray((_a = res.data) == null ? void 0 : _a.Calendars) ? res.data.Calendars : Array.isArray((_b = res.data) == null ? void 0 : _b.calendars) ? res.data.calendars : null;
1427
+ if (calendarsRaw) {
1428
+ const calendars = calendarsRaw.map(
1429
+ (c) => Calendar_default.create(mapCalendarFromApi2(c), { env: getConfig() })
1430
+ );
1431
+ const totalCount = Number(((_c = res.data) == null ? void 0 : _c.TotalCount) ?? ((_d = res.data) == null ? void 0 : _d.totalCount) ?? calendars.length);
1432
+ return { calendars, totalCount };
1433
+ }
1434
+ }
1435
+ return null;
1436
+ };
1230
1437
  var Participant_default = ParticipantModel;
1231
1438
 
1232
1439
  // src/models/appointment/OpeningHour.js
1233
- var import_mobx_state_tree11 = require("mobx-state-tree");
1234
- var OpeningHourModel = import_mobx_state_tree11.types.model("OpeningHour", {
1235
- id: import_mobx_state_tree11.types.maybeNull(import_mobx_state_tree11.types.number),
1236
- openingHourId: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.string, ""),
1237
- calendarId: import_mobx_state_tree11.types.string,
1238
- participantId: import_mobx_state_tree11.types.string,
1239
- day: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.number, 0),
1240
- startHour: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.number, 0),
1241
- startMinute: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.number, 0),
1242
- endHour: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.number, 0),
1243
- endMinute: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.number, 0),
1244
- off: import_mobx_state_tree11.types.optional(import_mobx_state_tree11.types.boolean, false),
1245
- createdOn: import_mobx_state_tree11.types.maybeNull(import_mobx_state_tree11.types.string),
1246
- modifiedOn: import_mobx_state_tree11.types.maybeNull(import_mobx_state_tree11.types.string)
1440
+ var import_mobx_state_tree12 = require("mobx-state-tree");
1441
+ var OpeningHourModel = import_mobx_state_tree12.types.model("OpeningHour", {
1442
+ id: import_mobx_state_tree12.types.maybeNull(import_mobx_state_tree12.types.number),
1443
+ openingHourId: import_mobx_state_tree12.types.optional(import_mobx_state_tree12.types.string, ""),
1444
+ calendarId: import_mobx_state_tree12.types.string,
1445
+ participantId: import_mobx_state_tree12.types.string,
1446
+ day: import_mobx_state_tree12.types.optional(import_mobx_state_tree12.types.number, 0),
1447
+ startHour: import_mobx_state_tree12.types.optional(import_mobx_state_tree12.types.number, 0),
1448
+ startMinute: import_mobx_state_tree12.types.optional(import_mobx_state_tree12.types.number, 0),
1449
+ endHour: import_mobx_state_tree12.types.optional(import_mobx_state_tree12.types.number, 0),
1450
+ endMinute: import_mobx_state_tree12.types.optional(import_mobx_state_tree12.types.number, 0),
1451
+ off: import_mobx_state_tree12.types.optional(import_mobx_state_tree12.types.boolean, false),
1452
+ createdOn: import_mobx_state_tree12.types.maybeNull(import_mobx_state_tree12.types.string),
1453
+ modifiedOn: import_mobx_state_tree12.types.maybeNull(import_mobx_state_tree12.types.string)
1247
1454
  });
1248
1455
  var OpeningHour_default = OpeningHourModel;
1249
1456
 
1250
- // src/models/appointment/TimeFrame.js
1251
- var import_mobx_state_tree12 = require("mobx-state-tree");
1252
- var TimeFrameModel = import_mobx_state_tree12.types.model("TimeFrame", {
1253
- start: import_mobx_state_tree12.types.string,
1254
- end: import_mobx_state_tree12.types.string
1255
- }).actions((self) => ({
1256
- buffer(bufferMinutes, unit) {
1257
- const bfr = unit === Unit.Hours ? bufferMinutes * 60 : bufferMinutes;
1258
- const s = new Date(self.start);
1259
- const e = new Date(self.end);
1260
- s.setMinutes(s.getMinutes() - bfr);
1261
- e.setMinutes(e.getMinutes() + bfr);
1262
- self.start = s.toISOString();
1263
- self.end = e.toISOString();
1264
- },
1265
- conflicts(start, end) {
1266
- const thisStart = new Date(self.start).getTime();
1267
- const thisEnd = new Date(self.end).getTime();
1268
- const startT = start.getTime();
1269
- const endT = end.getTime();
1270
- return startT >= thisStart && startT <= thisEnd || endT >= thisStart && endT <= thisEnd || startT <= thisStart && endT >= thisEnd;
1271
- },
1272
- breakIntoSlots(slotDurationMinutes) {
1273
- const start = new Date(self.start);
1274
- const end = new Date(self.end);
1275
- const slots = [];
1276
- let current = new Date(start);
1277
- const align = (m) => {
1278
- if (m === 0 || m === 15 || m === 30 || m === 45) return m;
1279
- if (m > 0 && m < 15) return 15;
1280
- if (m > 15 && m < 30) return 30;
1281
- if (m > 30 && m < 45) return 45;
1282
- return 0;
1283
- };
1284
- current.setMinutes(align(current.getMinutes()), 0, 0);
1285
- let slotEnd = new Date(current.getTime());
1286
- slotEnd.setMinutes(slotEnd.getMinutes() + slotDurationMinutes);
1287
- while (slotEnd.getTime() <= end.getTime()) {
1288
- slots.push({
1289
- startHour: current.getHours(),
1290
- startMinute: current.getMinutes(),
1291
- endHour: slotEnd.getHours(),
1292
- endMinute: slotEnd.getMinutes(),
1293
- startDate: current.toISOString(),
1294
- endDate: slotEnd.toISOString()
1295
- });
1296
- current = new Date(slotEnd.getTime());
1297
- slotEnd.setMinutes(slotEnd.getMinutes() + slotDurationMinutes);
1298
- }
1299
- return slots;
1300
- }
1301
- }));
1302
- var TimeFrame_default = TimeFrameModel;
1303
-
1304
1457
  // src/models/appointment/Setting.js
1305
1458
  var import_mobx_state_tree13 = require("mobx-state-tree");
1306
1459
  var SettingModel = import_mobx_state_tree13.types.model("Setting", {