types-salon-management 1.0.55 → 1.0.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/appointment-groups/add-group-member.request.d.ts +4 -0
- package/dist/api/appointment-groups/add-group-member.request.d.ts.map +1 -0
- package/dist/api/appointment-groups/add-group-member.request.js +3 -0
- package/dist/api/appointment-groups/add-group-member.request.js.map +1 -0
- package/dist/api/appointment-groups/appointment-group.dto.d.ts +25 -0
- package/dist/api/appointment-groups/appointment-group.dto.d.ts.map +1 -0
- package/dist/api/appointment-groups/appointment-group.dto.js +3 -0
- package/dist/api/appointment-groups/appointment-group.dto.js.map +1 -0
- package/dist/api/appointment-groups/create-group-from-appointments.request.d.ts +7 -0
- package/dist/api/appointment-groups/create-group-from-appointments.request.d.ts.map +1 -0
- package/dist/api/appointment-groups/create-group-from-appointments.request.js +3 -0
- package/dist/api/appointment-groups/create-group-from-appointments.request.js.map +1 -0
- package/dist/api/appointment-groups/index.d.ts +5 -0
- package/dist/api/appointment-groups/index.d.ts.map +1 -0
- package/dist/api/appointment-groups/index.js +21 -0
- package/dist/api/appointment-groups/index.js.map +1 -0
- package/dist/api/appointment-groups/update-primary-contact.request.d.ts +4 -0
- package/dist/api/appointment-groups/update-primary-contact.request.d.ts.map +1 -0
- package/dist/api/appointment-groups/update-primary-contact.request.js +3 -0
- package/dist/api/appointment-groups/update-primary-contact.request.js.map +1 -0
- package/dist/api/appointments/book-appointment.request.d.ts +9 -0
- package/dist/api/appointments/book-appointment.request.d.ts.map +1 -1
- package/dist/api/calendar/calendar.dto.d.ts +1 -1
- package/dist/api/calendar/calendar.dto.d.ts.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/package.json +1 -1
- package/src/api/appointment-groups/add-group-member.request.ts +3 -0
- package/src/api/appointment-groups/appointment-group.dto.ts +26 -0
- package/src/api/appointment-groups/create-group-from-appointments.request.ts +6 -0
- package/src/api/appointment-groups/index.ts +4 -0
- package/src/api/appointment-groups/update-primary-contact.request.ts +3 -0
- package/src/api/appointments/book-appointment.request.ts +9 -0
- package/src/api/calendar/calendar.dto.ts +1 -1
- package/src/api/index.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-group-member.request.d.ts","sourceRoot":"","sources":["../../../src/api/appointment-groups/add-group-member.request.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-group-member.request.js","sourceRoot":"","sources":["../../../src/api/appointment-groups/add-group-member.request.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AppointmentDetailDto } from '../appointments/appointment.dto';
|
|
2
|
+
/** Member row in a group drawer — extends appointment detail with group-specific fields. */
|
|
3
|
+
export interface AppointmentGroupMemberDto extends AppointmentDetailDto {
|
|
4
|
+
isPrimary: boolean;
|
|
5
|
+
/** Sum of line item unit prices (decimal string). */
|
|
6
|
+
totalPrice: string;
|
|
7
|
+
/** Earliest active occupancy start — used for per-card date/time in the drawer. */
|
|
8
|
+
appointmentStartAt: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface AppointmentGroupDetailDto {
|
|
11
|
+
id: string;
|
|
12
|
+
locationId: string;
|
|
13
|
+
name: string | null;
|
|
14
|
+
primaryAppointmentId: string | null;
|
|
15
|
+
primaryClientName: string | null;
|
|
16
|
+
memberCount: number;
|
|
17
|
+
/** Sum of all member totalPrice values (decimal string). */
|
|
18
|
+
totalPrice: string;
|
|
19
|
+
/** True when any member has status completed (invoice linkage deferred post-M6). */
|
|
20
|
+
hasSale: boolean;
|
|
21
|
+
/** True when only one member — staging group awaiting a second appointment. */
|
|
22
|
+
isStaging: boolean;
|
|
23
|
+
members: AppointmentGroupMemberDto[];
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=appointment-group.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appointment-group.dto.d.ts","sourceRoot":"","sources":["../../../src/api/appointment-groups/appointment-group.dto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,4FAA4F;AAC5F,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACrE,SAAS,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,OAAO,EAAE,OAAO,CAAC;IACjB,+EAA+E;IAC/E,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,yBAAyB,EAAE,CAAC;CACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appointment-group.dto.js","sourceRoot":"","sources":["../../../src/api/appointment-groups/appointment-group.dto.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface CreateGroupFromAppointmentsRequest {
|
|
2
|
+
/** Pre-selected appointment — becomes primary contact (organizer). */
|
|
3
|
+
primaryAppointmentId: string;
|
|
4
|
+
/** Clicked appointment — added as a non-primary member. */
|
|
5
|
+
secondaryAppointmentId: string;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=create-group-from-appointments.request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-group-from-appointments.request.d.ts","sourceRoot":"","sources":["../../../src/api/appointment-groups/create-group-from-appointments.request.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kCAAkC;IACjD,sEAAsE;IACtE,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-group-from-appointments.request.js","sourceRoot":"","sources":["../../../src/api/appointment-groups/create-group-from-appointments.request.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/appointment-groups/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./appointment-group.dto"), exports);
|
|
18
|
+
__exportStar(require("./add-group-member.request"), exports);
|
|
19
|
+
__exportStar(require("./create-group-from-appointments.request"), exports);
|
|
20
|
+
__exportStar(require("./update-primary-contact.request"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/appointment-groups/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,6DAA2C;AAC3C,2EAAyD;AACzD,mEAAiD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-primary-contact.request.d.ts","sourceRoot":"","sources":["../../../src/api/appointment-groups/update-primary-contact.request.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2CAA2C;IAC1D,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-primary-contact.request.js","sourceRoot":"","sources":["../../../src/api/appointment-groups/update-primary-contact.request.ts"],"names":[],"mappings":""}
|
|
@@ -30,5 +30,14 @@ export interface BookAppointmentRequest {
|
|
|
30
30
|
* exclusion constraints reject the overlap with a 409.
|
|
31
31
|
*/
|
|
32
32
|
allowOverlap?: boolean;
|
|
33
|
+
/** When true, creates a new group with this booking (staging until a second member joins). */
|
|
34
|
+
createGroup?: boolean;
|
|
35
|
+
/** When set, adds this booking to an existing group (member is never primary). */
|
|
36
|
+
groupId?: string;
|
|
37
|
+
/**
|
|
38
|
+
* With `createGroup`, links an existing ungrouped appointment as primary contact;
|
|
39
|
+
* the new booking becomes a secondary member.
|
|
40
|
+
*/
|
|
41
|
+
primaryAppointmentId?: string;
|
|
33
42
|
}
|
|
34
43
|
//# sourceMappingURL=book-appointment.request.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"book-appointment.request.d.ts","sourceRoot":"","sources":["../../../src/api/appointments/book-appointment.request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAE5E,MAAM,WAAW,uCAAuC;IACtD,WAAW,EAAE,0BAA0B,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,uCAAuC,EAAE,CAAC;CAC9D;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,0BAA0B,EAAE,CAAC;IACpC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"book-appointment.request.d.ts","sourceRoot":"","sources":["../../../src/api/appointments/book-appointment.request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAE5E,MAAM,WAAW,uCAAuC;IACtD,WAAW,EAAE,0BAA0B,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,uCAAuC,EAAE,CAAC;CAC9D;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,0BAA0B,EAAE,CAAC;IACpC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,8FAA8F;IAC9F,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B"}
|
|
@@ -44,7 +44,7 @@ export interface CalendarStaffBlockDto {
|
|
|
44
44
|
/** SSE `calendar.changed` payload; tells other sessions which location's feed is stale. */
|
|
45
45
|
export interface CalendarChangedEvent {
|
|
46
46
|
locationId: string;
|
|
47
|
-
changeType: 'book' | 'reschedule' | 'staff_block' | 'status' | 'update';
|
|
47
|
+
changeType: 'book' | 'reschedule' | 'staff_block' | 'status' | 'update' | 'group';
|
|
48
48
|
entityId: string;
|
|
49
49
|
}
|
|
50
50
|
export interface CalendarFeedDto {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.dto.d.ts","sourceRoot":"","sources":["../../../src/api/calendar/calendar.dto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE7G,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,yEAAyE;IACzE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,2BAA2B,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,iCAAiC,EAAE,CAAC;CACvD;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2FAA2F;AAC3F,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"calendar.dto.d.ts","sourceRoot":"","sources":["../../../src/api/calendar/calendar.dto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE7G,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,yEAAyE;IACzE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,2BAA2B,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,iCAAiC,EAAE,CAAC;CACvD;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2FAA2F;AAC3F,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAClF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC"}
|
package/dist/api/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from './gst-number/index';
|
|
|
10
10
|
export * from './cancellation-reason';
|
|
11
11
|
export * from './location-closures/index';
|
|
12
12
|
export * from './appointments/index';
|
|
13
|
+
export * from './appointment-groups/index';
|
|
13
14
|
export * from './staff-blocks/index';
|
|
14
15
|
export * from './calendar/index';
|
|
15
16
|
export * from './location';
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC"}
|
package/dist/api/index.js
CHANGED
|
@@ -26,6 +26,7 @@ __exportStar(require("./gst-number/index"), exports);
|
|
|
26
26
|
__exportStar(require("./cancellation-reason"), exports);
|
|
27
27
|
__exportStar(require("./location-closures/index"), exports);
|
|
28
28
|
__exportStar(require("./appointments/index"), exports);
|
|
29
|
+
__exportStar(require("./appointment-groups/index"), exports);
|
|
29
30
|
__exportStar(require("./staff-blocks/index"), exports);
|
|
30
31
|
__exportStar(require("./calendar/index"), exports);
|
|
31
32
|
__exportStar(require("./location"), exports);
|
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAqE;AACrE,0CAAwB;AACxB,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB;AACzB,+CAA6B;AAC7B,8CAA4B;AAC5B,qDAAmC;AACnC,wDAAsC;AACtC,4DAA0C;AAC1C,uDAAqC;AACrC,uDAAqC;AACrC,mDAAiC;AACjC,6CAA2B;AAC3B,mDAAiC;AACjC,+CAA6B;AAC7B,2DAAyC;AACzC,oDAAkC;AAClC,gDAA8B;AAC9B,uDAAqC;AACrC,oDAAkC;AAClC,4DAA0C;AAC1C,6DAA2C;AAC3C,mDAAiC;AACjC,yDAAuC;AACvC,qDAAmC;AACnC,sDAAoC;AACpC,0DAAwC;AACxC,kDAAgC;AAChC,mDAAiC;AACjC,+DAA6C;AAC7C,qDAAmC;AACnC,6DAA2C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAqE;AACrE,0CAAwB;AACxB,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB;AACzB,+CAA6B;AAC7B,8CAA4B;AAC5B,qDAAmC;AACnC,wDAAsC;AACtC,4DAA0C;AAC1C,uDAAqC;AACrC,6DAA2C;AAC3C,uDAAqC;AACrC,mDAAiC;AACjC,6CAA2B;AAC3B,mDAAiC;AACjC,+CAA6B;AAC7B,2DAAyC;AACzC,oDAAkC;AAClC,gDAA8B;AAC9B,uDAAqC;AACrC,oDAAkC;AAClC,4DAA0C;AAC1C,6DAA2C;AAC3C,mDAAiC;AACjC,yDAAuC;AACvC,qDAAmC;AACnC,sDAAoC;AACpC,0DAAwC;AACxC,kDAAgC;AAChC,mDAAiC;AACjC,+DAA6C;AAC7C,qDAAmC;AACnC,6DAA2C"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { AppointmentDetailDto } from '../appointments/appointment.dto';
|
|
2
|
+
|
|
3
|
+
/** Member row in a group drawer — extends appointment detail with group-specific fields. */
|
|
4
|
+
export interface AppointmentGroupMemberDto extends AppointmentDetailDto {
|
|
5
|
+
isPrimary: boolean;
|
|
6
|
+
/** Sum of line item unit prices (decimal string). */
|
|
7
|
+
totalPrice: string;
|
|
8
|
+
/** Earliest active occupancy start — used for per-card date/time in the drawer. */
|
|
9
|
+
appointmentStartAt: string | null;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface AppointmentGroupDetailDto {
|
|
13
|
+
id: string;
|
|
14
|
+
locationId: string;
|
|
15
|
+
name: string | null;
|
|
16
|
+
primaryAppointmentId: string | null;
|
|
17
|
+
primaryClientName: string | null;
|
|
18
|
+
memberCount: number;
|
|
19
|
+
/** Sum of all member totalPrice values (decimal string). */
|
|
20
|
+
totalPrice: string;
|
|
21
|
+
/** True when any member has status completed (invoice linkage deferred post-M6). */
|
|
22
|
+
hasSale: boolean;
|
|
23
|
+
/** True when only one member — staging group awaiting a second appointment. */
|
|
24
|
+
isStaging: boolean;
|
|
25
|
+
members: AppointmentGroupMemberDto[];
|
|
26
|
+
}
|
|
@@ -33,4 +33,13 @@ export interface BookAppointmentRequest {
|
|
|
33
33
|
* exclusion constraints reject the overlap with a 409.
|
|
34
34
|
*/
|
|
35
35
|
allowOverlap?: boolean;
|
|
36
|
+
/** When true, creates a new group with this booking (staging until a second member joins). */
|
|
37
|
+
createGroup?: boolean;
|
|
38
|
+
/** When set, adds this booking to an existing group (member is never primary). */
|
|
39
|
+
groupId?: string;
|
|
40
|
+
/**
|
|
41
|
+
* With `createGroup`, links an existing ungrouped appointment as primary contact;
|
|
42
|
+
* the new booking becomes a secondary member.
|
|
43
|
+
*/
|
|
44
|
+
primaryAppointmentId?: string;
|
|
36
45
|
}
|
|
@@ -47,7 +47,7 @@ export interface CalendarStaffBlockDto {
|
|
|
47
47
|
/** SSE `calendar.changed` payload; tells other sessions which location's feed is stale. */
|
|
48
48
|
export interface CalendarChangedEvent {
|
|
49
49
|
locationId: string;
|
|
50
|
-
changeType: 'book' | 'reschedule' | 'staff_block' | 'status' | 'update';
|
|
50
|
+
changeType: 'book' | 'reschedule' | 'staff_block' | 'status' | 'update' | 'group';
|
|
51
51
|
entityId: string;
|
|
52
52
|
}
|
|
53
53
|
|
package/src/api/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from './gst-number/index';
|
|
|
10
10
|
export * from './cancellation-reason';
|
|
11
11
|
export * from './location-closures/index';
|
|
12
12
|
export * from './appointments/index';
|
|
13
|
+
export * from './appointment-groups/index';
|
|
13
14
|
export * from './staff-blocks/index';
|
|
14
15
|
export * from './calendar/index';
|
|
15
16
|
export * from './location';
|