@blazeo.com/appointment-client 1.0.11 → 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 (138) 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/sample/src/FetchCalendarTab.jsx +19 -33
  5. package/sample/src/LeadTab.jsx +335 -0
  6. package/src/calendar/calendarCreation.ts +62 -15
  7. package/src/calendar/fetchCalendarDetails.ts +10 -2
  8. package/src/calendar/getCalendarsByCompany.ts +17 -64
  9. package/src/calendar/mapToDesiredResponse.ts +31 -17
  10. package/src/events/getAppointmentsByFilter.ts +98 -0
  11. package/src/index.ts +23 -14
  12. package/src/lead/fetchLeadDetails.ts +106 -0
  13. package/blazeo.com-appointment-client-1.0.11.tgz +0 -0
  14. package/dist/calendar/blazeoCalendarRelationMethods.d.ts +0 -8
  15. package/dist/calendar/blazeoCalendarRelationMethods.d.ts.map +0 -1
  16. package/dist/calendar/blazeoCalendarRelationMethods.js +0 -16
  17. package/dist/calendar/blazeoCalendarRelationMethods.js.map +0 -1
  18. package/dist/calendar/buildUnifiedCalendarView.d.ts +0 -39
  19. package/dist/calendar/buildUnifiedCalendarView.js +0 -301
  20. package/dist/calendar/calendarCreation.d.ts +0 -27
  21. package/dist/calendar/calendarCreation.js +0 -191
  22. package/dist/calendar/calendarCreationFacade.d.ts +0 -27
  23. package/dist/calendar/calendarCreationFacade.d.ts.map +0 -1
  24. package/dist/calendar/calendarCreationFacade.js +0 -167
  25. package/dist/calendar/calendarCreationFacade.js.map +0 -1
  26. package/dist/calendar/createCalendar.d.ts +0 -81
  27. package/dist/calendar/createCalendar.d.ts.map +0 -1
  28. package/dist/calendar/createCalendar.js +0 -206
  29. package/dist/calendar/createCalendar.js.map +0 -1
  30. package/dist/calendar/fetchCalendarDetails.d.ts +0 -41
  31. package/dist/calendar/fetchCalendarDetails.js +0 -262
  32. package/dist/calendar/fetchCalendarWithOpeningHours.d.ts +0 -25
  33. package/dist/calendar/fetchCalendarWithOpeningHours.js +0 -114
  34. package/dist/calendar/getAllParticipantOpeningHours.d.ts +0 -22
  35. package/dist/calendar/getAllParticipantOpeningHours.js +0 -22
  36. package/dist/calendar/getCalendarsByCompany.d.ts +0 -9
  37. package/dist/calendar/getCalendarsByCompany.js +0 -107
  38. package/dist/calendar/getOpeningHours.d.ts +0 -8
  39. package/dist/calendar/getOpeningHours.js +0 -9
  40. package/dist/calendar/getParticipantOpeningHours.d.ts +0 -37
  41. package/dist/calendar/getParticipantOpeningHours.js +0 -48
  42. package/dist/calendar/getParticipants.d.ts +0 -7
  43. package/dist/calendar/getParticipants.js +0 -13
  44. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.d.ts +0 -10
  45. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.d.ts.map +0 -1
  46. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.js +0 -44
  47. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.js.map +0 -1
  48. package/dist/calendar/mapCalendarToBlazeoSnapshot.d.ts +0 -29
  49. package/dist/calendar/mapCalendarToBlazeoSnapshot.d.ts.map +0 -1
  50. package/dist/calendar/mapCalendarToBlazeoSnapshot.js +0 -44
  51. package/dist/calendar/mapCalendarToBlazeoSnapshot.js.map +0 -1
  52. package/dist/calendar/mapToDesiredResponse.d.ts +0 -70
  53. package/dist/calendar/mapToDesiredResponse.js +0 -99
  54. package/dist/config/applyBlazeoClientConfig.d.ts +0 -3
  55. package/dist/config/applyBlazeoClientConfig.d.ts.map +0 -1
  56. package/dist/config/applyBlazeoClientConfig.js +0 -14
  57. package/dist/config/applyBlazeoClientConfig.js.map +0 -1
  58. package/dist/config/applyBlazeoDefaults.d.ts +0 -2
  59. package/dist/config/applyBlazeoDefaults.d.ts.map +0 -1
  60. package/dist/config/applyBlazeoDefaults.js +0 -14
  61. package/dist/config/applyBlazeoDefaults.js.map +0 -1
  62. package/dist/config/blazeo.config.d.ts +0 -11
  63. package/dist/config/blazeo.config.d.ts.map +0 -1
  64. package/dist/config/blazeo.config.js +0 -11
  65. package/dist/config/blazeo.config.js.map +0 -1
  66. package/dist/config/blazeoClientDefaults.d.ts +0 -11
  67. package/dist/config/blazeoClientDefaults.d.ts.map +0 -1
  68. package/dist/config/blazeoClientDefaults.js +0 -11
  69. package/dist/config/blazeoClientDefaults.js.map +0 -1
  70. package/dist/config/ensureBlazeoHttpReady.d.ts +0 -17
  71. package/dist/config/ensureBlazeoHttpReady.js +0 -31
  72. package/dist/config/initializeAppointmentClient.d.ts +0 -11
  73. package/dist/config/initializeAppointmentClient.d.ts.map +0 -1
  74. package/dist/config/initializeAppointmentClient.js +0 -15
  75. package/dist/config/initializeAppointmentClient.js.map +0 -1
  76. package/dist/config/syncBlazeoConnection.d.ts +0 -6
  77. package/dist/config/syncBlazeoConnection.js +0 -18
  78. package/dist/events/appointmentEventFacade.d.ts +0 -67
  79. package/dist/events/appointmentEventFacade.d.ts.map +0 -1
  80. package/dist/events/appointmentEventFacade.js +0 -124
  81. package/dist/events/appointmentEventFacade.js.map +0 -1
  82. package/dist/events/mapAppointmentToEventSnapshot.d.ts +0 -5
  83. package/dist/events/mapAppointmentToEventSnapshot.d.ts.map +0 -1
  84. package/dist/events/mapAppointmentToEventSnapshot.js +0 -57
  85. package/dist/events/mapAppointmentToEventSnapshot.js.map +0 -1
  86. package/dist/exampleData.d.ts +0 -119
  87. package/dist/exampleData.d.ts.map +0 -1
  88. package/dist/exampleData.js +0 -71
  89. package/dist/exampleData.js.map +0 -1
  90. package/dist/facade/calendarCreationFacade.d.ts +0 -40
  91. package/dist/facade/calendarCreationFacade.d.ts.map +0 -1
  92. package/dist/facade/calendarCreationFacade.js +0 -96
  93. package/dist/facade/calendarCreationFacade.js.map +0 -1
  94. package/dist/facade/mapCalendarBOToSnapshot.d.ts +0 -10
  95. package/dist/facade/mapCalendarBOToSnapshot.d.ts.map +0 -1
  96. package/dist/facade/mapCalendarBOToSnapshot.js +0 -44
  97. package/dist/facade/mapCalendarBOToSnapshot.js.map +0 -1
  98. package/dist/facades/index.d.ts +0 -12
  99. package/dist/facades/index.d.ts.map +0 -1
  100. package/dist/facades/index.js +0 -12
  101. package/dist/facades/index.js.map +0 -1
  102. package/dist/index.d.ts +0 -40
  103. package/dist/index.d.ts.map +0 -1
  104. package/dist/index.js +0 -39
  105. package/dist/index.js.map +0 -1
  106. package/dist/models/CalendarRootModel.d.ts +0 -56
  107. package/dist/models/CalendarRootModel.d.ts.map +0 -1
  108. package/dist/models/CalendarRootModel.js +0 -54
  109. package/dist/models/CalendarRootModel.js.map +0 -1
  110. package/dist/models/CalendarSlotModel.d.ts +0 -9
  111. package/dist/models/CalendarSlotModel.d.ts.map +0 -1
  112. package/dist/models/CalendarSlotModel.js +0 -8
  113. package/dist/models/CalendarSlotModel.js.map +0 -1
  114. package/dist/models/EventModel.d.ts +0 -11
  115. package/dist/models/EventModel.d.ts.map +0 -1
  116. package/dist/models/EventModel.js +0 -10
  117. package/dist/models/EventModel.js.map +0 -1
  118. package/dist/models/ParticipantModel.d.ts +0 -9
  119. package/dist/models/ParticipantModel.d.ts.map +0 -1
  120. package/dist/models/ParticipantModel.js +0 -8
  121. package/dist/models/ParticipantModel.js.map +0 -1
  122. package/dist/models/index.d.ts +0 -5
  123. package/dist/models/index.d.ts.map +0 -1
  124. package/dist/models/index.js +0 -5
  125. package/dist/models/index.js.map +0 -1
  126. package/dist/types/appointment.d.ts +0 -28
  127. package/dist/types/appointment.d.ts.map +0 -1
  128. package/dist/types/appointment.js +0 -6
  129. package/dist/types/appointment.js.map +0 -1
  130. package/dist/types/calendar.d.ts +0 -52
  131. package/dist/types/calendar.d.ts.map +0 -1
  132. package/dist/types/calendar.js +0 -6
  133. package/dist/types/calendar.js.map +0 -1
  134. package/dist/types/calendarBo.d.ts +0 -62
  135. package/dist/types/calendarBo.d.ts.map +0 -1
  136. package/dist/types/calendarBo.js +0 -6
  137. package/dist/types/calendarBo.js.map +0 -1
  138. package/sample/package-lock.json +0 -1778
@@ -24,22 +24,33 @@ export function mapToDesiredCalendarResponse(payload: any, openingHours: any[] =
24
24
  }));
25
25
 
26
26
  // Map opening hours with typename and raw fields
27
- const mappedOpeningHours = openingHours.map(oh => ({
28
- id: pick(oh, "id", "Id") ?? 0,
29
- createdOn: pick(oh, "createdOn", "CreatedOn", "created_on") ?? "0001-01-01T00:00:00.000Z",
30
- modifiedOn: pick(oh, "modifiedOn", "ModifiedOn", "modified_on") ?? "0001-01-01T00:00:00.000Z",
31
- member: pick(oh, "member", "Member"),
32
- openingHourId: pick(oh, "openingHourId", "OpeningHourId", "opening_hour_id") ?? "",
33
- calendarId: pick(oh, "calendarId", "CalendarId", "calendar_id") ?? "",
34
- participantId: pick(oh, "participantId", "ParticipantId", "participant_id") ?? "",
35
- days: oh.days ?? [],
36
- startHour: oh.startHour ?? pick(oh, "startHour", "StartHour") ?? 0,
37
- startMinute: oh.startMinute ?? pick(oh, "startMinute", "StartMinute") ?? 0,
38
- endHour: oh.endHour ?? pick(oh, "endHour", "EndHour") ?? 0,
39
- endMinute: oh.endMinute ?? pick(oh, "endMinute", "EndMinute") ?? 0,
40
- off: !!(oh.off ?? pick(oh, "off", "Off")),
41
- __typename: "OpeningHour"
42
- }));
27
+ const mappedOpeningHours = openingHours.map(oh => {
28
+ // If it's already a unified object (has day/start/end), preserve it but ensure __typename
29
+ if (oh.day !== undefined && oh.start !== undefined && oh.end !== undefined) {
30
+ return {
31
+ ...oh,
32
+ __typename: "OpeningHour"
33
+ };
34
+ }
35
+
36
+ // Otherwise, map from raw PascalCase or camelCase
37
+ return {
38
+ id: pick(oh, "id", "Id") ?? 0,
39
+ createdOn: pick(oh, "createdOn", "CreatedOn", "created_on") ?? "0001-01-01T00:00:00.000Z",
40
+ modifiedOn: pick(oh, "modifiedOn", "ModifiedOn", "modified_on") ?? "0001-01-01T00:00:00.000Z",
41
+ member: pick(oh, "member", "Member"),
42
+ openingHourId: pick(oh, "openingHourId", "OpeningHourId", "opening_hour_id") ?? "",
43
+ calendarId: pick(oh, "calendarId", "CalendarId", "calendar_id") ?? "",
44
+ participantId: pick(oh, "participantId", "ParticipantId", "participant_id") ?? "",
45
+ days: oh.days ?? [],
46
+ startHour: oh.startHour ?? pick(oh, "startHour", "StartHour") ?? 0,
47
+ startMinute: oh.startMinute ?? pick(oh, "startMinute", "StartMinute") ?? 0,
48
+ endHour: oh.endHour ?? pick(oh, "endHour", "EndHour") ?? 0,
49
+ endMinute: oh.endMinute ?? pick(oh, "endMinute", "EndMinute") ?? 0,
50
+ off: !!(oh.off ?? pick(oh, "off", "Off")),
51
+ __typename: "OpeningHour"
52
+ };
53
+ });
43
54
 
44
55
  // Map theme
45
56
  const rawTheme = pick(payload, "theme", "Theme");
@@ -68,6 +79,8 @@ export function mapToDesiredCalendarResponse(payload: any, openingHours: any[] =
68
79
  __typename: "ReminderChannelStatus"
69
80
  })) : [];
70
81
 
82
+ const uuid = pick(payload, "uuid", "Uuid", "calendarId", "CalendarId");
83
+
71
84
  return {
72
85
  id: n(pick(payload, "id", "Id")),
73
86
  durationUnit: n(pick(payload, "durationUnit", "DurationUnit")),
@@ -80,7 +93,8 @@ export function mapToDesiredCalendarResponse(payload: any, openingHours: any[] =
80
93
  bufferTime: n(pick(payload, "bufferTime", "BufferTime")),
81
94
  bufferTimeUnit: n(pick(payload, "bufferTimeUnit", "BufferTimeUnit")),
82
95
  calendarLink: pick(payload, "calendarLink", "CalendarLink"),
83
- uuid: pick(payload, "uuid", "Uuid", "calendarId", "CalendarId"),
96
+ uuid: uuid,
97
+ calendarId: uuid, // Explicit alias requested by user
84
98
  location: pick(payload, "location", "Location") ?? "",
85
99
  bookingPageTitle: pick(payload, "bookingPageTitle", "BookingPageTitle") ?? null,
86
100
  reminderChannelStatuses,
@@ -0,0 +1,98 @@
1
+ import { EventModel, LeadModel } from "@blazeo.com/calendar-client";
2
+ import { getCalendarsByCompany } from "../calendar/getCalendarsByCompany.js";
3
+ import moment from "moment";
4
+
5
+ /**
6
+ * High-level method to fetch appointments with enriched mapping.
7
+ * Resolves names for organizers and calendars, and attempts to resolve missing leadIds.
8
+ */
9
+ export async function getAppointmentsByFilter(
10
+ companyKey: string,
11
+ startDateFrom: string,
12
+ startDateTo: string,
13
+ opts: any = {}
14
+ ) {
15
+ // 1. Fetch raw events
16
+ // Cast to any because getByDateRangeWithFilters is missing from some .d.ts versions but present in .js
17
+ const response: any = await (EventModel as any).getByDateRangeWithFilters(
18
+ companyKey,
19
+ startDateFrom,
20
+ startDateTo,
21
+ opts
22
+ );
23
+
24
+ const events = response?.events || [];
25
+ const totalCount = response?.totalCount || 0;
26
+
27
+ if (events.length === 0) {
28
+ return { events: [], totalCount: 0 };
29
+ }
30
+
31
+ // 2. Fetch company data for name resolution (Calendars & Participants)
32
+ const enrichedCalendars = await getCalendarsByCompany(companyKey);
33
+
34
+ const calendarMap = new Map<string, string>();
35
+ const participantMap = new Map<string, string>();
36
+
37
+ enrichedCalendars.forEach((cal: any) => {
38
+ calendarMap.set(cal.calendarId, cal.name);
39
+ if (Array.isArray(cal.members)) {
40
+ cal.members.forEach((m: any) => {
41
+ participantMap.set(m.id, m.name);
42
+ });
43
+ }
44
+ });
45
+
46
+ // 3. Map events to the desired response schema
47
+ const mappedEvents = await Promise.all(
48
+ events.map(async (event: any) => {
49
+ // Resolve leadId if missing
50
+ // Note: event properties might be uppercase depending on API version, mapEventFromApi usually handles this
51
+ // but let's be defensive.
52
+ const rawEvent = (event as any)._raw || event;
53
+ let resolvedLeadId = event.leadId ?? rawEvent.lead_id ?? opts.leadId ?? null;
54
+
55
+ if (!resolvedLeadId && event.visitorEmail) {
56
+ try {
57
+ const lead: any = await LeadModel.getByEmail(event.visitorEmail, companyKey);
58
+ if (lead) {
59
+ resolvedLeadId = lead.leadId;
60
+ }
61
+ } catch (err) {
62
+ console.warn(`[getAppointmentsByFilter] Failed to resolve lead for ${event.visitorEmail}:`, err);
63
+ }
64
+ }
65
+
66
+ const calendarId = event.calendarId;
67
+ const participantId = event.participantId;
68
+
69
+ return {
70
+ id: event.eventId, // UUID as per feedback
71
+ appointmentId: event.eventId,
72
+ title: event.title || "Appointment",
73
+ organizer: participantMap.get(participantId) || "Member",
74
+ guest: event.visitorName || "Guest",
75
+ serviceType: calendarMap.get(calendarId) || "Calendar",
76
+ status: event.attendeeStatus ?? 1,
77
+ calendarId: calendarId, // UUID
78
+ memberId: participantId, // UUID
79
+ participantId: participantId, // UUID
80
+ leadId: resolvedLeadId,
81
+ notes: event.description || "",
82
+ startDate: event.startDate ? moment(event.startDate).toISOString() : null,
83
+ endDate: event.endDate ? moment(event.endDate).toISOString() : null,
84
+ timeZone: event.timeZone || "Pakistan Standard Time",
85
+ meetingLocationType: 1,
86
+ customMeetingLocation: null,
87
+ __typename: "Appointment",
88
+ // Keep raw fields for potential fallback or reference
89
+ _raw: event
90
+ };
91
+ })
92
+ );
93
+
94
+ return {
95
+ events: mappedEvents,
96
+ totalCount
97
+ };
98
+ }
package/src/index.ts CHANGED
@@ -9,9 +9,14 @@ export { ensureBlazeoHttpReady } from "./config/ensureBlazeoHttpReady.js";
9
9
  export type { EnsureBlazeoHttpOptions } from "./config/ensureBlazeoHttpReady.js";
10
10
  export { blazeoClientConfig } from "./config/blazeoClientDefaults.js";
11
11
  export { applyBlazeoClientConfig } from "./config/applyBlazeoDefaults.js";
12
- export { createCalendarRoot, CalendarRootModel, CalendarSlotModel, EventModel, ParticipantModel } from "./models/CalendarRootModel.js";
13
- export { fetchCalendarDetails, fetchCalendarBundle, normalizeOpeningHours } from "./calendar/fetchCalendarDetails.js";
14
- export { getCalendarsByCompany } from "./calendar/getCalendarsByCompany.js";
12
+ export {
13
+ createCalendarRoot,
14
+ CalendarRootModel,
15
+ CalendarSlotModel,
16
+ EventModel as MSTEventModel,
17
+ ParticipantModel as MSTParticipantModel
18
+ } from "./models/CalendarRootModel.js";
19
+ export { fetchCalendarBundle, normalizeOpeningHours } from "./calendar/fetchCalendarDetails.js";
15
20
  export {
16
21
  buildUnifiedCalendarView,
17
22
  type UnifiedCalendarMember,
@@ -33,35 +38,39 @@ export { addParticipantToCalendar, removeParticipantFromCalendar, saveCalendarOp
33
38
  export { createAppointmentEventAsync, rescheduleAppointmentEventAsync, cancelAppointmentEventAsync } from "./events/appointmentEventFacade.js";
34
39
  export { mapAppointmentToEventSnapshot } from "./events/mapAppointmentToEventSnapshot.js";
35
40
 
36
- import { fetchCalendarDetails, fetchCalendarBundle } from "./calendar/fetchCalendarDetails.js";
37
- import { fetchCalendarWithOpeningHours } from "./calendar/fetchCalendarWithOpeningHours.js";
38
41
  import { getCalendarsByCompany } from "./calendar/getCalendarsByCompany.js";
42
+ import { fetchCalendarDetails } from "./calendar/fetchCalendarDetails.js";
43
+ import { getAppointmentsByFilter } from "./events/getAppointmentsByFilter.js";
44
+ export { getCalendarsByCompany, fetchCalendarDetails, getAppointmentsByFilter };
39
45
 
40
46
  import {
41
47
  CalendarModel as CoreCalendarModel,
42
48
  EventModel as CoreEventModel,
43
49
  ParticipantModel as CoreParticipantModel,
44
50
  CalendarParticipantModel as CoreCalendarParticipantModel,
51
+ LeadModel as CoreLeadModel,
45
52
  configure,
46
53
  getConfig
47
54
  } from "@blazeo.com/calendar-client";
48
55
 
49
- // Attach new methods to CalendarModel for easier access
50
- (CoreCalendarModel as any).fetchCalendarDetails = fetchCalendarDetails;
51
- (CoreCalendarModel as any).fetchCalendarBundle = fetchCalendarBundle;
52
- (CoreCalendarModel as any).fetchCalendarWithOpeningHours = fetchCalendarWithOpeningHours;
53
- (CoreCalendarModel as any).getCalendarsByCompany = getCalendarsByCompany;
56
+ // Enriched CalendarModel
57
+ export const CalendarModel = {
58
+ ...CoreCalendarModel,
59
+ getCalendarsByCompany,
60
+ fetchCalendarDetails
61
+ };
54
62
 
55
63
  export {
56
- CoreCalendarModel as CalendarModel,
57
- CoreEventModel as CoreEventModel,
58
- CoreParticipantModel as CoreParticipantModel,
64
+ CoreEventModel as EventModel,
65
+ CoreParticipantModel as ParticipantModel,
59
66
  CoreCalendarParticipantModel as CalendarParticipantModel,
67
+ CoreLeadModel as LeadModel,
68
+ CoreEventModel,
69
+ CoreParticipantModel,
60
70
  configure,
61
71
  getConfig
62
72
  };
63
73
 
64
-
65
74
  export const packageName = "@blazeo.com/appointment-client";
66
75
 
67
76
  export class CalendarClient {
@@ -0,0 +1,106 @@
1
+ import { LeadModel } from "@blazeo.com/calendar-client";
2
+ import { getSnapshot, isStateTreeNode } from "mobx-state-tree";
3
+ import { ensureBlazeoHttpReady } from "../config/ensureBlazeoHttpReady.js";
4
+
5
+ export type BlazeoLeadConnection = {
6
+ baseUrl?: string;
7
+ consumer?: string;
8
+ };
9
+
10
+ /** Paging / sort options forwarded to `LeadModel.getByCompany` → `GET /lead/company/get`. */
11
+ export type LeadsByCompanyListOpts = {
12
+ skip?: number;
13
+ take?: number;
14
+ sortBy?: string;
15
+ sortOrder?: "ASC" | "DESC" | "asc" | "desc" | string;
16
+ sort?: string;
17
+ sort_column?: string;
18
+ sort_dir?: "asc" | "desc" | string;
19
+ page?: number;
20
+ page_size?: number;
21
+ searchColumn?: string;
22
+ search_column?: string;
23
+ searchText?: string;
24
+ search_text?: string;
25
+ search?: string;
26
+ };
27
+
28
+ function leadToPlain(lead: unknown): Record<string, unknown> | null {
29
+ if (lead == null) return null;
30
+ if (isStateTreeNode(lead)) {
31
+ return getSnapshot(lead) as Record<string, unknown>;
32
+ }
33
+ if (typeof lead === "object") return lead as Record<string, unknown>;
34
+ return null;
35
+ }
36
+
37
+ function leadsToPlain(list: unknown[] | null): Record<string, unknown>[] {
38
+ if (!Array.isArray(list)) return [];
39
+ return list.map((x) => leadToPlain(x)).filter((x): x is Record<string, unknown> => x != null);
40
+ }
41
+
42
+ /**
43
+ * Lead by id: `LeadModel.getRaw` / `get` → `GET /lead/get?lead_id=…`.
44
+ * Returns the mapped MST snapshot when successful, plus the raw API envelope from `getRaw`.
45
+ */
46
+ export async function fetchLeadDetails(
47
+ leadId: string,
48
+ connection: BlazeoLeadConnection = {}
49
+ ): Promise<
50
+ | { ok: true; lead: Record<string, unknown> | null; rawGet: unknown }
51
+ | { ok: false; reason: "missing_base_url"; detail: string }
52
+ > {
53
+ const ready = ensureBlazeoHttpReady(connection);
54
+ if (!ready.ok) {
55
+ return { ok: false, reason: "missing_base_url", detail: ready.error };
56
+ }
57
+ const id = String(leadId ?? "").trim();
58
+ if (!id) {
59
+ return {
60
+ ok: true,
61
+ lead: null,
62
+ rawGet: { status: "failure", message: "leadId is empty" },
63
+ };
64
+ }
65
+ const rawGet = await LeadModel.getRaw(id);
66
+ const model = await LeadModel.get(id);
67
+ return { ok: true, lead: leadToPlain(model), rawGet };
68
+ }
69
+
70
+ /**
71
+ * Single lead by email + company: `GET /lead/getbyemail`.
72
+ */
73
+ export async function fetchLeadByEmail(
74
+ email: string,
75
+ companyKey: string,
76
+ connection: BlazeoLeadConnection = {}
77
+ ): Promise<
78
+ | { ok: true; lead: Record<string, unknown> | null }
79
+ | { ok: false; reason: "missing_base_url"; detail: string }
80
+ > {
81
+ const ready = ensureBlazeoHttpReady(connection);
82
+ if (!ready.ok) {
83
+ return { ok: false, reason: "missing_base_url", detail: ready.error };
84
+ }
85
+ const model = await LeadModel.getByEmail(String(email).trim(), String(companyKey).trim());
86
+ return { ok: true, lead: leadToPlain(model) };
87
+ }
88
+
89
+ /**
90
+ * Paged list: `LeadModel.getByCompany` → `GET /lead/company/get`.
91
+ */
92
+ export async function fetchLeadsByCompany(
93
+ companyKey: string,
94
+ listOpts: LeadsByCompanyListOpts = {},
95
+ connection: BlazeoLeadConnection = {}
96
+ ): Promise<
97
+ | { ok: true; leads: Record<string, unknown>[] }
98
+ | { ok: false; reason: "missing_base_url"; detail: string }
99
+ > {
100
+ const ready = ensureBlazeoHttpReady(connection);
101
+ if (!ready.ok) {
102
+ return { ok: false, reason: "missing_base_url", detail: ready.error };
103
+ }
104
+ const models = await LeadModel.getByCompany(String(companyKey).trim(), listOpts);
105
+ return { ok: true, leads: leadsToPlain(models ?? []) };
106
+ }
@@ -1,8 +0,0 @@
1
- /** `GET /Calendar/Participant/Add` — attach `participantId` to this calendar. */
2
- export declare function addParticipantToCalendar(calendar: any, participantId: string): any;
3
- /** `GET /Calendar/Participant/Remove` */
4
- export declare function removeParticipantFromCalendar(calendar: any, participantId: string): any;
5
- /** `POST /Calendar/Participant/Availability/OpeningHour/Save` — one day/slot. */
6
- export declare function saveCalendarOpeningHour(calendar: any, payload: any): any;
7
- /** `POST /Calendar/Participant/Availability/OpeningHours/Save` — batch body (API-specific shape). */
8
- export declare function saveCalendarOpeningHoursBatch(calendar: any, payload: any): any;
@@ -1 +0,0 @@
1
- {"version":3,"file":"blazeoCalendarRelationMethods.d.ts","sourceRoot":"","sources":["../../src/calendar/blazeoCalendarRelationMethods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,cAAc,GAAG;IACxD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC/E,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAClF,eAAe,CACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC3C,gBAAgB,CACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,GAC3C,OAAO,CAAC,8BAA8B,CAAC,CAAC;CAC5C,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,0BAA0B,EACpC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,8BAA8B,CAAC,CAEzC;AAED,yCAAyC;AACzC,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,0BAA0B,EACpC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,8BAA8B,CAAC,CAEzC;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,0BAA0B,EACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,8BAA8B,CAAC,CAEzC;AAED,qGAAqG;AACrG,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,0BAA0B,EACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,GAC3C,OAAO,CAAC,8BAA8B,CAAC,CAEzC"}
@@ -1,16 +0,0 @@
1
- /** `GET /Calendar/Participant/Add` — attach `participantId` to this calendar. */
2
- export function addParticipantToCalendar(calendar, participantId) {
3
- return calendar.addParticipant(participantId);
4
- }
5
- /** `GET /Calendar/Participant/Remove` */
6
- export function removeParticipantFromCalendar(calendar, participantId) {
7
- return calendar.removeParticipant(participantId);
8
- }
9
- /** `POST /Calendar/Participant/Availability/OpeningHour/Save` — one day/slot. */
10
- export function saveCalendarOpeningHour(calendar, payload) {
11
- return calendar.saveOpeningHour(payload);
12
- }
13
- /** `POST /Calendar/Participant/Availability/OpeningHours/Save` — batch body (API-specific shape). */
14
- export function saveCalendarOpeningHoursBatch(calendar, payload) {
15
- return calendar.saveOpeningHours(payload);
16
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"blazeoCalendarRelationMethods.js","sourceRoot":"","sources":["../../src/calendar/blazeoCalendarRelationMethods.ts"],"names":[],"mappings":"AAsCA,iFAAiF;AACjF,MAAM,UAAU,wBAAwB,CACtC,QAAoC,EACpC,aAAqB;IAErB,OAAO,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AAChD,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,6BAA6B,CAC3C,QAAoC,EACpC,aAAqB;IAErB,OAAO,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AACnD,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,uBAAuB,CACrC,QAAoC,EACpC,OAAgC;IAEhC,OAAO,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,6BAA6B,CAC3C,QAAoC,EACpC,OAA4C;IAE5C,OAAO,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC"}
@@ -1,39 +0,0 @@
1
- export interface UnifiedCalendarMember {
2
- id: number | string;
3
- name: string;
4
- email: string | null;
5
- /** When API exposes status; otherwise derived from participant info flags. */
6
- status: number | null;
7
- /** Full row from Participants/GetInfo (plain object). */
8
- participantInfo?: Record<string, unknown> | null;
9
- __typename?: string;
10
- }
11
- export interface UnifiedParticipantWithHours extends UnifiedCalendarMember {
12
- openingHours: UnifiedOpeningHourRow[];
13
- }
14
- export interface UnifiedOpeningHourRow {
15
- id?: number | string;
16
- createdOn?: string;
17
- modifiedOn?: string;
18
- member: number | string;
19
- openingHourId?: string;
20
- calendarId?: string;
21
- participantId?: string;
22
- days: string[];
23
- startHour: number;
24
- startMinute: number;
25
- endHour: number;
26
- endMinute: number;
27
- off: boolean;
28
- __typename?: string;
29
- }
30
- export type UnifiedCalendarView = Record<string, unknown> & {
31
- members: UnifiedCalendarMember[];
32
- openingHours: UnifiedOpeningHourRow[];
33
- participants?: UnifiedParticipantWithHours[];
34
- };
35
- /**
36
- * Build a consumer-friendly `{ id, name, members, openingHours }` shape where
37
- * `openingHours[].member` references `members[].id`.
38
- */
39
- export declare function buildUnifiedCalendarView(calendarSnapshot: Record<string, any> | null, openingHoursRows: any[], participants: any[] | null | undefined, participantsInfo: any[] | null | undefined): UnifiedCalendarView | null;