@lyxa.ai/core 1.2.96 → 1.2.97
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/libraries/mongo/models/blocked-time.model.d.ts +0 -1
- package/dist/libraries/mongo/models/blocked-time.model.js +0 -5
- package/dist/libraries/mongo/models/blocked-time.model.js.map +1 -1
- package/dist/libraries/mongo/models/professional-schedule.js.map +1 -1
- package/dist/libraries/mongo/models/professional.model.js.map +1 -1
- package/dist/libraries/mongo/models/service-cart.model.d.ts +2 -2
- package/dist/libraries/mongo/models/service-cart.model.js +8 -4
- package/dist/libraries/mongo/models/service-cart.model.js.map +1 -1
- package/dist/libraries/mongo/models/service-order.model.d.ts +5 -4
- package/dist/libraries/mongo/models/service-order.model.js +22 -12
- package/dist/libraries/mongo/models/service-order.model.js.map +1 -1
- package/dist/libraries/mongo/models/shared/work-hour.model.d.ts +2 -2
- package/dist/libraries/mongo/models/shared/work-hour.model.js +4 -4
- package/dist/libraries/mongo/models/shared/work-hour.model.js.map +1 -1
- package/dist/types/README.md +1 -1
- package/dist/types/package.json +1 -1
- package/dist/utilities/start-end-of-day.d.ts +4 -0
- package/dist/utilities/start-end-of-day.js +12 -0
- package/dist/utilities/start-end-of-day.js.map +1 -0
- package/dist/utilities/workHourSetting.d.ts +1 -0
- package/dist/utilities/workHourSetting.js +5 -1
- package/dist/utilities/workHourSetting.js.map +1 -1
- package/package.json +1 -1
|
@@ -21,7 +21,6 @@ let BlockedTime = class BlockedTime {
|
|
|
21
21
|
timeTo;
|
|
22
22
|
professionals;
|
|
23
23
|
reason;
|
|
24
|
-
isDeleted;
|
|
25
24
|
createdBy;
|
|
26
25
|
};
|
|
27
26
|
exports.BlockedTime = BlockedTime;
|
|
@@ -49,10 +48,6 @@ __decorate([
|
|
|
49
48
|
(0, typegoose_1.prop)({ type: String }),
|
|
50
49
|
__metadata("design:type", String)
|
|
51
50
|
], BlockedTime.prototype, "reason", void 0);
|
|
52
|
-
__decorate([
|
|
53
|
-
(0, typegoose_1.prop)({ type: Boolean, default: false }),
|
|
54
|
-
__metadata("design:type", Boolean)
|
|
55
|
-
], BlockedTime.prototype, "isDeleted", void 0);
|
|
56
51
|
__decorate([
|
|
57
52
|
(0, typegoose_1.prop)({ ref: () => vendor_model_1.Vendor }),
|
|
58
53
|
__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocked-time.model.js","sourceRoot":"/","sources":["libraries/mongo/models/blocked-time.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAsE;AACtE,iDAAwC;AACxC,6DAAoD;AACpD,uCAAiC;AAS1B,IAAM,WAAW,GAAjB,MAAM,WAAW;IAEb,MAAM,CAAe;IAGrB,IAAI,CAAQ;IAGZ,QAAQ,CAAU;IAGlB,MAAM,CAAU;IAGhB,aAAa,CAAuB;IAGpC,MAAM,CAAU;IAGhB,SAAS,
|
|
1
|
+
{"version":3,"file":"blocked-time.model.js","sourceRoot":"/","sources":["libraries/mongo/models/blocked-time.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAsE;AACtE,iDAAwC;AACxC,6DAAoD;AACpD,uCAAiC;AAS1B,IAAM,WAAW,GAAjB,MAAM,WAAW;IAEb,MAAM,CAAe;IAGrB,IAAI,CAAQ;IAGZ,QAAQ,CAAU;IAGlB,MAAM,CAAU;IAGhB,aAAa,CAAuB;IAGpC,MAAM,CAAU;IAGhB,SAAS,CAAe;CAClC,CAAA;AArBY,kCAAW;AAEb;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CAChB;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACX,IAAI;yCAAC;AAGZ;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACA;AAGlB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACF;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iCAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,gBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;;kDACrB;AAGpC;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;2CACA;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,EAAE,CAAC;;8CACG;sBApBtB,WAAW;IAPvB,IAAA,iBAAK,EAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC7B,IAAA,wBAAY,EAAC;QACV,aAAa,EAAE;YACX,UAAU,EAAE,cAAc;YAC1B,UAAU,EAAE,IAAI;SACnB;KACJ,CAAC;GACW,WAAW,CAqBvB","sourcesContent":["import { index, modelOptions, prop, Ref } from \"@typegoose/typegoose\";\nimport { Vendor } from \"./vendor.model\";\nimport { Professional } from \"./professional.model\";\nimport { Types } from \"mongoose\";\n\n@index({ vendor: 1, date: 1 })\n@modelOptions({\n schemaOptions: {\n collection: 'blockedTimes',\n timestamps: true\n }\n})\nexport class BlockedTime {\n @prop({ ref: () => Vendor, required: true })\n public vendor!: Ref<Vendor>;\n \n @prop({ required: true })\n public date!: Date;\n\n @prop({ required: true })\n public timeFrom!: string; // \"HH:mm\"\n\n @prop({ required: true })\n public timeTo!: string; // \"HH:mm\"\n \n @prop({ ref: () => Professional, type: () => [Types.ObjectId] })\n public professionals!: Ref<Professional>[];\n\n @prop({ type: String })\n public reason?: string;\n\n @prop({ ref: () => Vendor })\n public createdBy?: Ref<Vendor>;\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"professional-schedule.js","sourceRoot":"/","sources":["libraries/mongo/models/professional-schedule.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA+D;AAC/D,6DAAoD;AACpD,kDAAiK;AACjK,+DAAqD;AACrD,mEAAyD;AACzD,uCAA2C;AAC3C,iDAAwC;AASjC,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAEtB,YAAY,CAAqB;IAGjC,QAAQ,CAAQ;IAGhB,MAAM,CAAQ;IAQd,IAAI,CAA4B;IAIhC,YAAY,CAAqB;IAGjC,eAAe,CAAyB;IAMxC,aAAa,CAAiB;IAI9B,MAAM,CAAU;IAGhB,oBAAoB,CAAuB;IAI3C,WAAW,CAAW;IAMtB,iBAAiB,CAAiC;IASlD,MAAM,CAAe;CAC/B,CAAA;AAxDY,oDAAoB;AAEtB;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iCAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0DACV;AAGjC;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;8BACpB,IAAI;sDAAC;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACT,IAAI;oDAAC;AAQd;IANN,IAAA,gBAAI,EAAC;QACF,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,+BAAwB;QAC9B,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;KACd,CAAC;;kDACqC;AAIhC;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,kCAAY,EAAE,CAAC;;0DACM;AAGjC;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,sCAAc,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,gBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;;6DACnB;AAMxC;IAJN,IAAA,gBAAI,EAAC;QACF,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,oBAAa;KACtB,CAAC;;2DACmC;AAI9B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;oDACA;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iCAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,gBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;;kEACd;AAI3C;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;yDACX;AAMtB;IAJN,IAAA,gBAAI,EAAC;QACF,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,oCAA6B;KACtC,CAAC;;+DACuD;AASlD;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDAChB;+BAvDnB,oBAAoB;IANhC,IAAA,wBAAY,EAAC;QACV,aAAa,EAAE;YACX,UAAU,EAAE,uBAAuB;YACnC,UAAU,EAAE,IAAI;SACnB;KACJ,CAAC;GACW,oBAAoB,CAwDhC","sourcesContent":["import { modelOptions, prop, Ref } from \"@typegoose/typegoose\";\nimport { Professional } from \"./professional.model\";\nimport { BookingStatus, ProfessionalRecurrencePattern, ProfessionalScheduleType, ProfessionalStatus, ServiceOrderStatus, Status } from \"../../../utilities/enum\";\nimport { ServiceOrder } from \"./service-order.model\";\nimport { ServicePackage } from \"./service-package.model\";\nimport mongoose, { Types } from \"mongoose\";\nimport { Vendor } from \"./vendor.model\";\n\n\n@modelOptions({\n schemaOptions: {\n collection: \"professionalSchedules\",\n timestamps: true\n }\n})\nexport class ProfessionalSchedule {\n @prop({ ref: () => Professional, required: true })\n public professional!: Ref<Professional>;\n\n @prop({ required: true, index: true })\n public timeFrom!: Date;\n\n @prop({ required: true })\n public timeTo!: Date;\n\n @prop({\n type: String,\n enum: ProfessionalScheduleType,\n required: true,\n index: true\n })\n public type!: ProfessionalScheduleType;\n\n // For BOOKING type\n @prop({ ref: () => ServiceOrder })\n public serviceOrder?: Ref<ServiceOrder>;\n\n @prop({ ref: () => ServicePackage, type: () => [Types.ObjectId] })\n public servicePackages?: Ref<ServicePackage>[];\n\n @prop({\n type: String,\n enum: BookingStatus\n })\n public bookingStatus?: BookingStatus;\n\n // For BLOCKED type\n @prop({ type: String })\n public reason?: string;\n\n @prop({ ref: () => Professional, type: () => [Types.ObjectId] })\n public blockedProfessionals?: Ref<Professional>[];\n\n // Recurrence settings\n @prop({ type: Boolean, default: false })\n public isRecurring!: boolean;\n\n @prop({\n type: String,\n enum: ProfessionalRecurrencePattern\n })\n public recurrencePattern?: ProfessionalRecurrencePattern;\n\n // @prop()\n // public recurrenceEndDate?: Date;\n\n // @prop({ ref: () => 'ProfessionalSchedule' })\n // public parentSchedule?: Ref<'ProfessionalSchedule'>;\n\n @prop({ ref: () => Vendor, required: true })\n public vendor!: Ref<Vendor>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"professional-schedule.js","sourceRoot":"/","sources":["libraries/mongo/models/professional-schedule.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA+D;AAC/D,6DAAoD;AACpD,kDAAiK;AACjK,+DAAqD;AACrD,mEAAyD;AACzD,uCAA2C;AAC3C,iDAAwC;AASjC,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAEtB,YAAY,CAAqB;IAGjC,QAAQ,CAAQ;IAGhB,MAAM,CAAQ;IAQd,IAAI,CAA4B;IAIhC,YAAY,CAAqB;IAGjC,eAAe,CAAyB;IAMxC,aAAa,CAAiB;IAI9B,MAAM,CAAU;IAGhB,oBAAoB,CAAuB;IAI3C,WAAW,CAAW;IAMtB,iBAAiB,CAAiC;IASlD,MAAM,CAAe;CAC/B,CAAA;AAxDY,oDAAoB;AAEtB;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iCAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0DACV;AAGjC;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;8BACpB,IAAI;sDAAC;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACT,IAAI;oDAAC;AAQd;IANN,IAAA,gBAAI,EAAC;QACF,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,+BAAwB;QAC9B,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;KACd,CAAC;;kDACqC;AAIhC;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,kCAAY,EAAE,CAAC;;0DACM;AAGjC;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,sCAAc,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,gBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;;6DACnB;AAMxC;IAJN,IAAA,gBAAI,EAAC;QACF,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,oBAAa;KACtB,CAAC;;2DACmC;AAI9B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;oDACA;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iCAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,gBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;;kEACd;AAI3C;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;yDACX;AAMtB;IAJN,IAAA,gBAAI,EAAC;QACF,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,oCAA6B;KACtC,CAAC;;+DACuD;AASlD;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDAChB;+BAvDnB,oBAAoB;IANhC,IAAA,wBAAY,EAAC;QACV,aAAa,EAAE;YACX,UAAU,EAAE,uBAAuB;YACnC,UAAU,EAAE,IAAI;SACnB;KACJ,CAAC;GACW,oBAAoB,CAwDhC","sourcesContent":["import { modelOptions, prop, Ref } from \"@typegoose/typegoose\";\nimport { Professional } from \"./professional.model\";\nimport { BookingStatus, ProfessionalRecurrencePattern, ProfessionalScheduleType, ProfessionalStatus, ServiceOrderStatus, Status } from \"../../../utilities/enum\";\nimport { ServiceOrder } from \"./service-order.model\";\nimport { ServicePackage } from \"./service-package.model\";\nimport mongoose, { Types } from \"mongoose\";\nimport { Vendor } from \"./vendor.model\";\n \n \n@modelOptions({\n schemaOptions: {\n collection: \"professionalSchedules\",\n timestamps: true\n }\n})\nexport class ProfessionalSchedule {\n @prop({ ref: () => Professional, required: true })\n public professional!: Ref<Professional>;\n\n @prop({ required: true, index: true })\n public timeFrom!: Date;\n\n @prop({ required: true })\n public timeTo!: Date;\n\n @prop({\n type: String,\n enum: ProfessionalScheduleType,\n required: true,\n index: true\n })\n public type!: ProfessionalScheduleType;\n\n // For BOOKING type\n @prop({ ref: () => ServiceOrder })\n public serviceOrder?: Ref<ServiceOrder>;\n\n @prop({ ref: () => ServicePackage, type: () => [Types.ObjectId] })\n public servicePackages?: Ref<ServicePackage>[];\n\n @prop({\n type: String,\n enum: BookingStatus\n })\n public bookingStatus?: BookingStatus;\n\n // For BLOCKED type\n @prop({ type: String })\n public reason?: string;\n\n @prop({ ref: () => Professional, type: () => [Types.ObjectId] })\n public blockedProfessionals?: Ref<Professional>[];\n\n // Recurrence settings\n @prop({ type: Boolean, default: false })\n public isRecurring!: boolean;\n\n @prop({\n type: String,\n enum: ProfessionalRecurrencePattern\n })\n public recurrencePattern?: ProfessionalRecurrencePattern;\n\n // @prop()\n // public recurrenceEndDate?: Date;\n\n // @prop({ ref: () => 'ProfessionalSchedule' })\n // public parentSchedule?: Ref<'ProfessionalSchedule'>;\n\n @prop({ ref: () => Vendor, required: true })\n public vendor!: Ref<Vendor>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"professional.model.js","sourceRoot":"/","sources":["libraries/mongo/models/professional.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAoE;AACpE,iDAAwC;AACxC,mEAAyD;AACzD,kDAAqE;AACrE,0DAA2D;AAC3D,8DAAqE;AAS9D,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEjB,IAAI,CAAU;IAGd,KAAK,CAAU;IAGf,WAAW,CAAU;IAGrB,KAAK,CAAU;IAGf,QAAQ,CAAU;IAGlB,WAAW,CAAU;IAGrB,MAAM,CAAe;IAGrB,YAAY,CAA8B;IAG1C,OAAO,CAAyB;IAGhC,SAAS,CAAU;IAGnB,YAAY,CAAU;IAGtB,MAAM,CAAU;IAGhB,aAAa,CAAsB;CAC1C,CAAA;AAvCY,oCAAY;AAEjB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;0CAChB;AAGd;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACH;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;iDACX;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;2CACjB;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8CACE;AAGlB;IADN,IAAA,gBAAI,GAAE;;iDACqB;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CAChB;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,2CAAyB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;kDACZ;AAG1C;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,sCAAc,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;6CACV;AAGhC;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;+CACT;AAGnB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;kDACN;AAGtB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAM,EAAE,OAAO,EAAE,aAAM,CAAC,MAAM,EAAE,CAAC;;4CACtD;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAkB,EAAE,OAAO,EAAE,yBAAkB,CAAC,SAAS,EAAE,CAAC;;mDAC9D;uBAtC9B,YAAY;IAPxB,IAAA,eAAG,EAAe,MAAM,EAAE,KAAK,WAAW,IAAI;QAC9C,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAA,uBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,EAAE,CAAC;IACR,CAAC,CAAC;IACD,IAAA,wBAAY,EAAC,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;GACtE,YAAY,CAuCxB","sourcesContent":["import { prop, Ref, modelOptions, pre } from '@typegoose/typegoose';\nimport { Vendor } from './vendor.model';\nimport { ServicePackage } from './service-package.model';\nimport { ProfessionalStatus, Status } from '../../../utilities/enum';\nimport { hashPassword } from '../../../utilities/password';\nimport { TeamMemberWorkHourSetting } from './shared/work-hour.model';\n\n@pre<Professional>('save', async function (next) {\n\tif (this.isModified('password')) {\n\t\tthis.password = await hashPassword(this.password);\n\t}\n\tnext();\n})\n@modelOptions({ schemaOptions: { collection: 'professionals', timestamps: true } })\nexport class Professional {\n\t@prop({ required: true, trim: true })\n\tpublic name!: string;\n\n\t@prop({ required: true })\n\tpublic image!: string;\n\n\t@prop({ required: true, unique: true })\n\tpublic phoneNumber!: string;\n\n\t@prop({ required: true, unique: true })\n\tpublic email!: string;\n\n\t@prop({ type: String })\n\tpublic password!: string;\n\n\t@prop()\n\tpublic nationality?: string;\n\n\t@prop({ ref: () => Vendor, required: true })\n\tpublic vendor!: Ref<Vendor>;\n\n\t@prop({ type: () => TeamMemberWorkHourSetting, default: [] })\n\tpublic availability!: TeamMemberWorkHourSetting[]\n\n\t@prop({ ref: () => ServicePackage, default: [] })\n\tpublic worksOn!: Ref<ServicePackage>[];\n\n\t@prop({ type: Number, default: 0 })\n\tpublic avgRating?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic totalReviews!: number;\n\n\t@prop({ required: true, type: String, enum: Status, default: Status.ACTIVE })\n\tpublic status!: Status;\n\n\t@prop({ required: true, type: String, enum: ProfessionalStatus, default: ProfessionalStatus.AVAILABLE })\n\tpublic currentStatus?: ProfessionalStatus;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"professional.model.js","sourceRoot":"/","sources":["libraries/mongo/models/professional.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAoE;AACpE,iDAAwC;AACxC,mEAAyD;AACzD,kDAAqE;AACrE,0DAA2D;AAC3D,8DAAqE;AAS9D,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEjB,IAAI,CAAU;IAGd,KAAK,CAAU;IAGf,WAAW,CAAU;IAGrB,KAAK,CAAU;IAGf,QAAQ,CAAU;IAGlB,WAAW,CAAU;IAGrB,MAAM,CAAe;IAGrB,YAAY,CAA8B;IAG1C,OAAO,CAAyB;IAGhC,SAAS,CAAU;IAGnB,YAAY,CAAU;IAGtB,MAAM,CAAU;IAGhB,aAAa,CAAsB;CAC1C,CAAA;AAvCY,oCAAY;AAEjB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;0CAChB;AAGd;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACH;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;iDACX;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;2CACjB;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8CACE;AAGlB;IADN,IAAA,gBAAI,GAAE;;iDACqB;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CAChB;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,2CAAyB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;kDACZ;AAG1C;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,sCAAc,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;6CACV;AAGhC;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;+CACT;AAGnB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;kDACN;AAGtB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAM,EAAE,OAAO,EAAE,aAAM,CAAC,MAAM,EAAE,CAAC;;4CACtD;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAkB,EAAE,OAAO,EAAE,yBAAkB,CAAC,SAAS,EAAE,CAAC;;mDAC9D;uBAtC9B,YAAY;IAPxB,IAAA,eAAG,EAAe,MAAM,EAAE,KAAK,WAAW,IAAI;QAC9C,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAA,uBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,EAAE,CAAC;IACR,CAAC,CAAC;IACD,IAAA,wBAAY,EAAC,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;GACtE,YAAY,CAuCxB","sourcesContent":["import { prop, Ref, modelOptions, pre } from '@typegoose/typegoose';\nimport { Vendor } from './vendor.model';\nimport { ServicePackage } from './service-package.model';\nimport { ProfessionalStatus, Status } from '../../../utilities/enum';\nimport { hashPassword } from '../../../utilities/password';\nimport { TeamMemberWorkHourSetting } from './shared/work-hour.model';\n\n@pre<Professional>('save', async function (next) {\n\tif (this.isModified('password')) {\n\t\tthis.password = await hashPassword(this.password);\n\t}\n\tnext();\n})\n@modelOptions({ schemaOptions: { collection: 'professionals', timestamps: true } })\nexport class Professional {\n\t@prop({ required: true, trim: true })\n\tpublic name!: string;\n\n\t@prop({ required: true })\n\tpublic image!: string;\n\n\t@prop({ required: true, unique: true })\n\tpublic phoneNumber!: string;\n\n\t@prop({ required: true, unique: true })\n\tpublic email!: string;\n\n\t@prop({ type: String })\n\tpublic password!: string;\n\n\t@prop()\n\tpublic nationality?: string;\n\n\t@prop({ ref: () => Vendor, required: true })\n\tpublic vendor!: Ref<Vendor>;\n\n\t@prop({ type: () => TeamMemberWorkHourSetting, default: [] })\n\tpublic availability!: TeamMemberWorkHourSetting[]\n\n\t@prop({ ref: () => ServicePackage, default: [] })\n\tpublic worksOn!: Ref<ServicePackage>[];\n\n\t@prop({ type: Number, default: 0 })\n\tpublic avgRating?: number;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic totalReviews!: number;\n \n\t@prop({ required: true, type: String, enum: Status, default: Status.ACTIVE })\n\tpublic status!: Status;\n\n\t@prop({ required: true, type: String, enum: ProfessionalStatus, default: ProfessionalStatus.AVAILABLE })\n\tpublic currentStatus?: ProfessionalStatus;\n}\n"]}
|
|
@@ -5,7 +5,6 @@ import { Vendor } from './vendor.model';
|
|
|
5
5
|
import { ServiceOrderRecurrencePattern, ServiceCartStatus } from '../../../utilities/enum';
|
|
6
6
|
import { ServiceLineItem } from './service-line-item.model';
|
|
7
7
|
import { UserAddress } from './shared/address.model';
|
|
8
|
-
import { StartEndTime } from './shared/work-hour.model';
|
|
9
8
|
import { Service } from './service.model';
|
|
10
9
|
export declare class ServiceCart extends TimeStamps {
|
|
11
10
|
user: Ref<User>;
|
|
@@ -13,7 +12,8 @@ export declare class ServiceCart extends TimeStamps {
|
|
|
13
12
|
service: Ref<Service>;
|
|
14
13
|
serviceLocation?: UserAddress;
|
|
15
14
|
date: Date;
|
|
16
|
-
|
|
15
|
+
timeFrom: string;
|
|
16
|
+
timeTo: string;
|
|
17
17
|
recurrencePattern?: ServiceOrderRecurrencePattern;
|
|
18
18
|
status: ServiceCartStatus;
|
|
19
19
|
serviceLineItems: Ref<ServiceLineItem>[];
|
|
@@ -17,7 +17,6 @@ const vendor_model_1 = require("./vendor.model");
|
|
|
17
17
|
const enum_1 = require("../../../utilities/enum");
|
|
18
18
|
const service_line_item_model_1 = require("./service-line-item.model");
|
|
19
19
|
const address_model_1 = require("./shared/address.model");
|
|
20
|
-
const work_hour_model_1 = require("./shared/work-hour.model");
|
|
21
20
|
const service_model_1 = require("./service.model");
|
|
22
21
|
let ServiceCart = class ServiceCart extends defaultClasses_1.TimeStamps {
|
|
23
22
|
user;
|
|
@@ -25,7 +24,8 @@ let ServiceCart = class ServiceCart extends defaultClasses_1.TimeStamps {
|
|
|
25
24
|
service;
|
|
26
25
|
serviceLocation;
|
|
27
26
|
date;
|
|
28
|
-
|
|
27
|
+
timeFrom;
|
|
28
|
+
timeTo;
|
|
29
29
|
recurrencePattern;
|
|
30
30
|
status;
|
|
31
31
|
serviceLineItems;
|
|
@@ -53,8 +53,12 @@ __decorate([
|
|
|
53
53
|
], ServiceCart.prototype, "date", void 0);
|
|
54
54
|
__decorate([
|
|
55
55
|
(0, typegoose_1.prop)({ required: true }),
|
|
56
|
-
__metadata("design:type",
|
|
57
|
-
], ServiceCart.prototype, "
|
|
56
|
+
__metadata("design:type", String)
|
|
57
|
+
], ServiceCart.prototype, "timeFrom", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, typegoose_1.prop)({ required: true }),
|
|
60
|
+
__metadata("design:type", String)
|
|
61
|
+
], ServiceCart.prototype, "timeTo", void 0);
|
|
58
62
|
__decorate([
|
|
59
63
|
(0, typegoose_1.prop)({ enum: enum_1.ServiceOrderRecurrencePattern, default: enum_1.ServiceOrderRecurrencePattern.ONETIME }),
|
|
60
64
|
__metadata("design:type", String)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-cart.model.js","sourceRoot":"/","sources":["libraries/mongo/models/service-cart.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAgF;AAChF,4EAAqE;AACrE,6CAAoC;AACpC,iDAAwC;AACxC,kDAA2F;AAC3F,uEAA4D;AAC5D,0DAAqD;
|
|
1
|
+
{"version":3,"file":"service-cart.model.js","sourceRoot":"/","sources":["libraries/mongo/models/service-cart.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAgF;AAChF,4EAAqE;AACrE,6CAAoC;AACpC,iDAAwC;AACxC,kDAA2F;AAC3F,uEAA4D;AAC5D,0DAAqD;AAErD,mDAA0C;AAyBnC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,2BAAU;IAEnC,IAAI,CAAa;IAGjB,MAAM,CAAe;IAGrB,OAAO,CAAgB;IAGvB,eAAe,CAAe;IAG3B,IAAI,CAAQ;IAGZ,QAAQ,CAAU;IAGlB,MAAM,CAAU;IAGnB,iBAAiB,CAAgC;IAQjD,MAAM,CAAqB;IAO3B,gBAAgB,CAAyB;CAChD,CAAA;AAvCY,kCAAW;AAEhB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAI,EAAE,CAAC;;yCAClB;AAGjB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,EAAE,CAAC;;2CAChB;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,uBAAO,EAAE,CAAC;;4CACf;AAGvB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,2BAAW,EAAE,CAAC;8BACpB,2BAAW;oDAAC;AAG3B;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACX,IAAI;yCAAC;AAGZ;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACA;AAGlB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACF;AAGnB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,oCAA6B,EAAE,OAAO,EAAE,oCAA6B,CAAC,OAAO,EAAE,CAAC;;sDACtC;AAQjD;IANN,IAAA,gBAAI,EAAC;QACL,IAAI,EAAE,wBAAiB;QACvB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,wBAAiB,CAAC,MAAM;QACjC,QAAQ,EAAE,IAAI;KACd,CAAC;;2CACgC;AAO3B;IALN,IAAA,gBAAI,EAAC;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,yCAAe;QAC1B,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,KAAK;KACjB,CAAC;;qDAC8C;sBAtCpC,WAAW;IAvBvB,IAAA,wBAAY,EAAC;QACb,aAAa,EAAE;YACd,UAAU,EAAE,cAAc;YAC1B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC1B,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC5B;QACD,OAAO,EAAE;YACR,UAAU,EAAE,oBAAQ,CAAC,KAAK;SAC1B;KACD,CAAC;IACD,IAAA,iBAAK,EAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAClB,IAAA,iBAAK,EAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACpB,IAAA,iBAAK,EAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACpB,IAAA,iBAAK,EACL,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EACtB;QACC,MAAM,EAAE,IAAI;QACZ,uBAAuB,EAAE;YACxB,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,wBAAiB,CAAC,MAAM,EAAE,wBAAiB,CAAC,MAAM,CAAC,EAAE;YACrE,SAAS,EAAE,IAAI;SACf;KACD,CACD;GACY,WAAW,CAuCvB","sourcesContent":["import { Index, modelOptions, prop, Ref, Severity } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { User } from './user.model';\nimport { Vendor } from './vendor.model';\nimport { ServiceOrderRecurrencePattern, ServiceCartStatus } from '../../../utilities/enum';\nimport { ServiceLineItem } from './service-line-item.model';\nimport { UserAddress } from './shared/address.model';\nimport { StartEndTime } from './shared/work-hour.model';\nimport { Service } from './service.model';\n\n@modelOptions({\n\tschemaOptions: {\n\t\tcollection: 'serviceCarts',\n\t\ttoJSON: { virtuals: true },\n\t\ttoObject: { virtuals: true },\n\t},\n\toptions: {\n\t\tallowMixed: Severity.ALLOW,\n\t},\n})\n@Index({ user: 1 })\n@Index({ vendor: 1 })\n@Index({ status: 1 })\n@Index(\n\t{ user: 1, vendor: 1 },\n\t{\n\t\tunique: true,\n\t\tpartialFilterExpression: {\n\t\t\tstatus: { $in: [ServiceCartStatus.ACTIVE, ServiceCartStatus.LOCKED] },\n\t\t\tdeletedAt: null,\n\t\t},\n\t}\n)\nexport class ServiceCart extends TimeStamps {\n\t@prop({ required: true, ref: () => User })\n\tpublic user!: Ref<User>;\n\n\t@prop({ required: true, ref: () => Vendor })\n\tpublic vendor!: Ref<Vendor>;\n\n\t@prop({ required: true, ref: () => Service })\n\tpublic service!: Ref<Service>;\n\n\t@prop({ required: false, type: UserAddress })\n\tpublic serviceLocation?: UserAddress;\n\n @prop({ required: true })\n public date!: Date;\n\n @prop({ required: true })\n public timeFrom!: string; // \"HH:mm\"\n\n @prop({ required: true })\n public timeTo!: string; // \"HH:mm\"\n\n\t@prop({ enum: ServiceOrderRecurrencePattern, default: ServiceOrderRecurrencePattern.ONETIME })\n\tpublic recurrencePattern?: ServiceOrderRecurrencePattern\n\n\t@prop({\n\t\tenum: ServiceCartStatus,\n\t\ttype: String,\n\t\tdefault: ServiceCartStatus.ACTIVE,\n\t\trequired: true,\n\t})\n\tpublic status!: ServiceCartStatus;\n\n\t@prop({\n\t\tref: () => ServiceLineItem,\n\t\tforeignField: 'cart',\n\t\tlocalField: '_id',\n\t})\n\tpublic serviceLineItems: Ref<ServiceLineItem>[];\n}\n"]}
|
|
@@ -11,7 +11,6 @@ import { ServiceOrderFinance } from "./embedded/service-order-finance.model";
|
|
|
11
11
|
import { ServiceOrderCancel } from "./embedded/service-order-cance.model";
|
|
12
12
|
import { ServiceOrderStatusTimeline } from "./embedded/status-timeline.model";
|
|
13
13
|
import { Service } from "./service.model";
|
|
14
|
-
import { StartEndTime } from "./shared/work-hour.model";
|
|
15
14
|
export declare class ServiceOrder {
|
|
16
15
|
orderId: string;
|
|
17
16
|
service: Ref<Service>;
|
|
@@ -21,11 +20,11 @@ export declare class ServiceOrder {
|
|
|
21
20
|
status: ServiceOrderStatus;
|
|
22
21
|
priority: ServiceOrderPriority;
|
|
23
22
|
date: Date;
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
timeFrom: string;
|
|
24
|
+
timeTo: string;
|
|
26
25
|
userNotes?: string;
|
|
27
26
|
vendorNotes?: string;
|
|
28
|
-
|
|
27
|
+
professionals: Ref<Professional>[];
|
|
29
28
|
serviceTimer?: ServiceTimer;
|
|
30
29
|
flag?: ServiceOrderFlag;
|
|
31
30
|
confirmedAt?: Date;
|
|
@@ -41,4 +40,6 @@ export declare class ServiceOrder {
|
|
|
41
40
|
paymentInformation?: PaymentInformation;
|
|
42
41
|
orderCancel?: ServiceOrderCancel;
|
|
43
42
|
statusTimeline: ServiceOrderStatusTimeline[];
|
|
43
|
+
serviceDuration: number;
|
|
44
|
+
bufferTime: number;
|
|
44
45
|
}
|
|
@@ -23,7 +23,7 @@ const service_order_finance_model_1 = require("./embedded/service-order-finance.
|
|
|
23
23
|
const service_order_cance_model_1 = require("./embedded/service-order-cance.model");
|
|
24
24
|
const status_timeline_model_1 = require("./embedded/status-timeline.model");
|
|
25
25
|
const service_model_1 = require("./service.model");
|
|
26
|
-
const
|
|
26
|
+
const mongoose_1 = require("mongoose");
|
|
27
27
|
let ServiceOrder = class ServiceOrder {
|
|
28
28
|
orderId;
|
|
29
29
|
service;
|
|
@@ -33,11 +33,11 @@ let ServiceOrder = class ServiceOrder {
|
|
|
33
33
|
status;
|
|
34
34
|
priority;
|
|
35
35
|
date;
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
timeFrom;
|
|
37
|
+
timeTo;
|
|
38
38
|
userNotes;
|
|
39
39
|
vendorNotes;
|
|
40
|
-
|
|
40
|
+
professionals;
|
|
41
41
|
serviceTimer;
|
|
42
42
|
flag;
|
|
43
43
|
confirmedAt;
|
|
@@ -53,6 +53,8 @@ let ServiceOrder = class ServiceOrder {
|
|
|
53
53
|
paymentInformation;
|
|
54
54
|
orderCancel;
|
|
55
55
|
statusTimeline;
|
|
56
|
+
serviceDuration;
|
|
57
|
+
bufferTime;
|
|
56
58
|
};
|
|
57
59
|
exports.ServiceOrder = ServiceOrder;
|
|
58
60
|
__decorate([
|
|
@@ -89,12 +91,12 @@ __decorate([
|
|
|
89
91
|
], ServiceOrder.prototype, "date", void 0);
|
|
90
92
|
__decorate([
|
|
91
93
|
(0, typegoose_1.prop)({ required: true }),
|
|
92
|
-
__metadata("design:type",
|
|
93
|
-
], ServiceOrder.prototype, "
|
|
94
|
+
__metadata("design:type", String)
|
|
95
|
+
], ServiceOrder.prototype, "timeFrom", void 0);
|
|
94
96
|
__decorate([
|
|
95
|
-
(0, typegoose_1.prop)({
|
|
96
|
-
__metadata("design:type",
|
|
97
|
-
], ServiceOrder.prototype, "
|
|
97
|
+
(0, typegoose_1.prop)({ required: true }),
|
|
98
|
+
__metadata("design:type", String)
|
|
99
|
+
], ServiceOrder.prototype, "timeTo", void 0);
|
|
98
100
|
__decorate([
|
|
99
101
|
(0, typegoose_1.prop)({ type: String }),
|
|
100
102
|
__metadata("design:type", String)
|
|
@@ -104,9 +106,9 @@ __decorate([
|
|
|
104
106
|
__metadata("design:type", String)
|
|
105
107
|
], ServiceOrder.prototype, "vendorNotes", void 0);
|
|
106
108
|
__decorate([
|
|
107
|
-
(0, typegoose_1.prop)({ ref: () => professional_model_1.Professional }),
|
|
108
|
-
__metadata("design:type",
|
|
109
|
-
], ServiceOrder.prototype, "
|
|
109
|
+
(0, typegoose_1.prop)({ ref: () => professional_model_1.Professional, type: () => [mongoose_1.Types.ObjectId] }),
|
|
110
|
+
__metadata("design:type", Array)
|
|
111
|
+
], ServiceOrder.prototype, "professionals", void 0);
|
|
110
112
|
__decorate([
|
|
111
113
|
(0, typegoose_1.prop)({ type: () => service_timer_model_1.ServiceTimer }),
|
|
112
114
|
__metadata("design:type", service_timer_model_1.ServiceTimer)
|
|
@@ -167,6 +169,14 @@ __decorate([
|
|
|
167
169
|
(0, typegoose_1.prop)({ type: () => [status_timeline_model_1.ServiceOrderStatusTimeline], default: [] }),
|
|
168
170
|
__metadata("design:type", Array)
|
|
169
171
|
], ServiceOrder.prototype, "statusTimeline", void 0);
|
|
172
|
+
__decorate([
|
|
173
|
+
(0, typegoose_1.prop)({ type: Number }),
|
|
174
|
+
__metadata("design:type", Number)
|
|
175
|
+
], ServiceOrder.prototype, "serviceDuration", void 0);
|
|
176
|
+
__decorate([
|
|
177
|
+
(0, typegoose_1.prop)({ type: Number }),
|
|
178
|
+
__metadata("design:type", Number)
|
|
179
|
+
], ServiceOrder.prototype, "bufferTime", void 0);
|
|
170
180
|
exports.ServiceOrder = ServiceOrder = __decorate([
|
|
171
181
|
(0, typegoose_1.modelOptions)({
|
|
172
182
|
schemaOptions: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-order.model.js","sourceRoot":"/","sources":["libraries/mongo/models/service-order.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA+D;AAC/D,6CAAoC;AACpC,iDAAwC;AAExC,kDAAiI;AACjI,6DAAoD;AACpD,wEAA8D;AAC9D,kFAAuE;AACvE,6DAAmD;AACnD,oFAA0E;AAC1E,wFAA6E;AAC7E,oFAA0E;AAC1E,4EAA8E;AAC9E,mDAA0C;
|
|
1
|
+
{"version":3,"file":"service-order.model.js","sourceRoot":"/","sources":["libraries/mongo/models/service-order.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { modelOptions, prop, Ref } from \"@typegoose/typegoose\";\nimport { User } from \"./user.model\";\nimport { Vendor } from \"./vendor.model\";\nimport { ServicePackage } from \"./service-package.model\";\nimport { ServiceOrderRecurrencePattern, PaymentMethod, ServiceOrderPriority, ServiceOrderStatus } from \"../../../utilities/enum\";\nimport { Professional } from \"./professional.model\";\nimport { ServiceTimer } from \"./embedded/service-timer.model\";\nimport { ServiceOrderFlag } from \"./embedded/service-order-flag.model\";\nimport { ServiceCart } from \"./service-cart.model\";\nimport { PaymentInformation } from \"./embedded/payment-infromation.model\";\nimport { ServiceOrderFinance } from \"./embedded/service-order-finance.model\";\nimport { ServiceOrderCancel } from \"./embedded/service-order-cance.model\";\nimport { ServiceOrderStatusTimeline } from \"./embedded/status-timeline.model\";\nimport { Service } from \"./service.model\";\nimport { StartEndTime } from \"./shared/work-hour.model\";\nimport { Types } from \"mongoose\";\n\n@modelOptions({\n schemaOptions: {\n collection: \"serviceOrder\"\n }\n})\nexport class ServiceOrder {\n @prop({ type: String, required: true, unique: true })\n public orderId!: string\n\n @prop({ ref: () => Service, required: true })\n public service!: Ref<Service>\n\n @prop({ ref: () => User, required: true })\n public user!: Ref<User>\n\n @prop({ ref: () => Vendor, required: true })\n public vendor!: Ref<Vendor>\n\n @prop({ ref: () => ServiceCart, required: true })\n public cart!: Ref<ServiceCart>\n\n @prop({ enum: ServiceOrderStatus, default: ServiceOrderStatus.PENDING })\n status!: ServiceOrderStatus\n\n @prop({ enum: ServiceOrderPriority, default: ServiceOrderPriority.NORMAL })\n public priority!: ServiceOrderPriority\n\n @prop({ required: true })\n public date!: Date;\n\n @prop({ required: true })\n public timeFrom!: string; // \"HH:mm\"\n\n @prop({ required: true })\n public timeTo!: string; // \"HH:mm\"\n\n @prop({ type: String })\n public userNotes?: string;\n\n @prop({ type: String })\n public vendorNotes?: string;\n\n @prop({ ref: () => Professional, type: () => [Types.ObjectId] })\n public professionals!: Ref<Professional>[];\n\n @prop({ type: () => ServiceTimer })\n public serviceTimer?: ServiceTimer\n\n @prop({ type: () => ServiceOrderFlag })\n public flag?: ServiceOrderFlag\n\n @prop()\n public confirmedAt?: Date;\n\n @prop()\n public autoConfirmedAt?: Date;\n\n @prop({ default: false })\n public isUrgent!: boolean;\n\n @prop()\n public urgentAt?: Date;\n\n @prop({ default: false })\n public isOverdue!: boolean;\n\n @prop()\n public overdueAt?: Date;\n\n @prop({ required: true, type: ServiceOrderFinance })\n public finance: ServiceOrderFinance\n\n @prop({ enum: ServiceOrderRecurrencePattern, default: ServiceOrderRecurrencePattern.ONETIME })\n public recurrencePattern?: ServiceOrderRecurrencePattern\n\n @prop({ default: false })\n public isPaid!: boolean;\n\n @prop({ enum: PaymentMethod, type: String })\n public paymentMethod?: PaymentMethod;\n\n @prop({ type: () => PaymentInformation })\n public paymentInformation?: PaymentInformation;\n\n @prop({ type: () => ServiceOrderCancel })\n public orderCancel?: ServiceOrderCancel;\n\n @prop({ type: () => [ServiceOrderStatusTimeline], default: [] })\n public statusTimeline: ServiceOrderStatusTimeline[];\n\n @prop({ type: Number })\n public serviceDuration!: number; // minutes\n\n @prop({ type: Number })\n public bufferTime: number; // minutes\n}"]}
|
|
@@ -20,8 +20,8 @@ export declare class WorkHourSetting {
|
|
|
20
20
|
holidayHours?: HolidayHour[];
|
|
21
21
|
}
|
|
22
22
|
export declare class TimeSlot {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
timeFrom: string;
|
|
24
|
+
timeTo: string;
|
|
25
25
|
services: Ref<Service>[];
|
|
26
26
|
}
|
|
27
27
|
export declare class TeamMemberWorkHourSetting {
|
|
@@ -80,19 +80,19 @@ __decorate([
|
|
|
80
80
|
__metadata("design:type", Array)
|
|
81
81
|
], WorkHourSetting.prototype, "holidayHours", void 0);
|
|
82
82
|
class TimeSlot {
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
timeFrom;
|
|
84
|
+
timeTo;
|
|
85
85
|
services;
|
|
86
86
|
}
|
|
87
87
|
exports.TimeSlot = TimeSlot;
|
|
88
88
|
__decorate([
|
|
89
89
|
(0, typegoose_1.prop)({ required: true }),
|
|
90
90
|
__metadata("design:type", String)
|
|
91
|
-
], TimeSlot.prototype, "
|
|
91
|
+
], TimeSlot.prototype, "timeFrom", void 0);
|
|
92
92
|
__decorate([
|
|
93
93
|
(0, typegoose_1.prop)({ required: true }),
|
|
94
94
|
__metadata("design:type", String)
|
|
95
|
-
], TimeSlot.prototype, "
|
|
95
|
+
], TimeSlot.prototype, "timeTo", void 0);
|
|
96
96
|
__decorate([
|
|
97
97
|
(0, typegoose_1.prop)({ ref: () => service_model_1.Service }),
|
|
98
98
|
__metadata("design:type", Array)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-hour.model.js","sourceRoot":"/","sources":["libraries/mongo/models/shared/work-hour.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAiD;AACjD,qDAAoF;AACpF,oDAA2C;AAE3C,MAAa,YAAY;IAEjB,KAAK,CAAU;IAGf,GAAG,CAAU;CACpB;AAND,oCAMC;AAJO;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;2CACjB;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;yCACnB;AAGrB,MAAa,UAAU;IAEf,GAAG,CAAW;IAGd,MAAM,CAAc;IAGpB,YAAY,CAAkB;CACrC;AATD,gCASC;AAPO;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAO,EAAE,CAAC;;uCACjC;AAGd;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAU,EAAE,CAAC;;0CAC9B;AAGpB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;gDACb;AAGtC,MAAa,WAAW;IAEhB,IAAI,CAAQ;IAOZ,MAAM,CAAqB;IAG3B,WAAW,CAAgB;CAClC;AAbD,kCAaC;AAXO;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;8BACvB,IAAI;yCAAC;AAOZ;IALN,IAAA,gBAAI,EAAC;QACL,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,wBAAiB;KACvB,CAAC;;2CACgC;AAG3B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BACR,YAAY;gDAAC;AAGnC,MAAa,eAAe;IAEpB,WAAW,CAAgB;IAG3B,YAAY,CAAiB;CACpC;AAND,0CAMC;AAJO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;oDACd;AAG3B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;qDACb;AAGrC,MAAa,QAAQ;IAEb,
|
|
1
|
+
{"version":3,"file":"work-hour.model.js","sourceRoot":"/","sources":["libraries/mongo/models/shared/work-hour.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAiD;AACjD,qDAAoF;AACpF,oDAA2C;AAE3C,MAAa,YAAY;IAEjB,KAAK,CAAU;IAGf,GAAG,CAAU;CACpB;AAND,oCAMC;AAJO;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;2CACjB;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;yCACnB;AAGrB,MAAa,UAAU;IAEf,GAAG,CAAW;IAGd,MAAM,CAAc;IAGpB,YAAY,CAAkB;CACrC;AATD,gCASC;AAPO;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAO,EAAE,CAAC;;uCACjC;AAGd;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAU,EAAE,CAAC;;0CAC9B;AAGpB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;gDACb;AAGtC,MAAa,WAAW;IAEhB,IAAI,CAAQ;IAOZ,MAAM,CAAqB;IAG3B,WAAW,CAAgB;CAClC;AAbD,kCAaC;AAXO;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;8BACvB,IAAI;yCAAC;AAOZ;IALN,IAAA,gBAAI,EAAC;QACL,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,wBAAiB;KACvB,CAAC;;2CACgC;AAG3B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BACR,YAAY;gDAAC;AAGnC,MAAa,eAAe;IAEpB,WAAW,CAAgB;IAG3B,YAAY,CAAiB;CACpC;AAND,0CAMC;AAJO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;oDACd;AAG3B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;qDACb;AAGrC,MAAa,QAAQ;IAEb,QAAQ,CAAU;IAGlB,MAAM,CAAU;IAGhB,QAAQ,CAAiB;CAChC;AATD,4BASC;AAPO;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACA;AAGlB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCACF;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,uBAAO,EAAE,CAAC;;0CACG;AAIjC,MAAa,yBAAyB;IAE9B,GAAG,CAAW;IAGd,SAAS,CAAW;IAGpB,SAAS,CAAc;CAC9B;AATD,8DASC;AAPO;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAO,EAAE,CAAC;;sDACjC;AAGd;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;4DACZ;AAGpB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;4DAChB","sourcesContent":["import { prop, Ref } from '@typegoose/typegoose';\nimport { HolidayWorkStatus, WeekDay, WorkStatus } from '../../../../utilities/enum';\nimport { Service } from '../service.model';\n\nexport class StartEndTime {\n\t@prop({ required: true, type: String })\n\tpublic start!: string;\n\n\t@prop({ required: true, type: String })\n\tpublic end!: string;\n}\n\nexport class NormalHour {\n\t@prop({ required: true, type: Number, enum: WeekDay })\n\tpublic day!: WeekDay;\n\n\t@prop({ required: true, type: String, enum: WorkStatus })\n\tpublic status!: WorkStatus;\n\n\t@prop({ type: () => [StartEndTime], default: [] })\n\tpublic openingHours?: StartEndTime[];\n}\n\nexport class HolidayHour {\n\t@prop({ required: true, type: Date })\n\tpublic date?: Date;\n\n\t@prop({\n\t\trequired: true,\n\t\ttype: String,\n\t\tenum: HolidayWorkStatus,\n\t})\n\tpublic status!: HolidayWorkStatus;\n\n\t@prop({ type: StartEndTime })\n\tpublic closingHour?: StartEndTime;\n}\n\nexport class WorkHourSetting {\n\t@prop({ type: () => [NormalHour], default: [] })\n\tpublic normalHours?: NormalHour[];\n\n\t@prop({ type: () => [HolidayHour], default: [] })\n\tpublic holidayHours?: HolidayHour[];\n}\n\nexport class TimeSlot {\n\t@prop({ required: true })\n\tpublic timeFrom!: string; // Format: \"HH:mm\" (e.g., \"09:00\")\n\n\t@prop({ required: true })\n\tpublic timeTo!: string; // Format: \"HH:mm\" (e.g., \"17:00\")\n\n\t@prop({ ref: () => Service })\n\tpublic services!: Ref<Service>[]\n}\n\n\nexport class TeamMemberWorkHourSetting {\n\t@prop({ required: true, type: Number, enum: WeekDay })\n\tpublic day!: WeekDay;\n\n\t@prop({ type: Boolean, default: true })\n\tpublic isEnabled!: boolean;\n\n\t@prop({ type: () => [TimeSlot], default: [] })\n\tpublic timeSlots!: TimeSlot[];\n}"]}
|
package/dist/types/README.md
CHANGED
package/dist/types/package.json
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getStartEndOfDay = void 0;
|
|
4
|
+
const getStartEndOfDay = (date) => {
|
|
5
|
+
const startOfDay = new Date(date);
|
|
6
|
+
startOfDay.setHours(0, 0, 0, 0);
|
|
7
|
+
const endOfDay = new Date(date);
|
|
8
|
+
endOfDay.setHours(23, 59, 59, 999);
|
|
9
|
+
return { startOfDay, endOfDay };
|
|
10
|
+
};
|
|
11
|
+
exports.getStartEndOfDay = getStartEndOfDay;
|
|
12
|
+
//# sourceMappingURL=start-end-of-day.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-end-of-day.js","sourceRoot":"/","sources":["utilities/start-end-of-day.ts"],"names":[],"mappings":";;;AAAO,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAE,EAAE;IAC3C,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACpC,CAAC,CAAA;AANY,QAAA,gBAAgB,oBAM5B","sourcesContent":["export const getStartEndOfDay = (date: Date) => {\n const startOfDay = new Date(date);\n startOfDay.setHours(0, 0, 0, 0);\n const endOfDay = new Date(date);\n endOfDay.setHours(23, 59, 59, 999);\n return { startOfDay, endOfDay };\n}"]}
|
|
@@ -22,3 +22,4 @@ export declare const subtractSegment: (segment: {
|
|
|
22
22
|
export declare const adminAfterHolidayWorkingHours: (workHourSetting: any) => StartEndTime[];
|
|
23
23
|
export declare const isLyxaOpen: (workHourSetting: any) => boolean;
|
|
24
24
|
export declare const getShopAndLyxaOpenTimings: (shop: any, adminSettings: any, scheduledFor?: Date) => StartEndTime[];
|
|
25
|
+
export declare const getVendorAndLyxaOpenTimings: (vendor: any, adminSettings: any, date: Date) => StartEndTime[];
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getShopAndLyxaOpenTimings = exports.isLyxaOpen = exports.adminAfterHolidayWorkingHours = exports.subtractSegment = exports.getHolidayIntersectedHours = exports.checkWithinHolidayHours = exports.checkWithinNormalHours = exports.getIntersectedHours = exports.calculateIntersection = exports.parseTimeString = exports.getFullDayHours = exports.getDaysOfWeek = void 0;
|
|
6
|
+
exports.getVendorAndLyxaOpenTimings = exports.getShopAndLyxaOpenTimings = exports.isLyxaOpen = exports.adminAfterHolidayWorkingHours = exports.subtractSegment = exports.getHolidayIntersectedHours = exports.checkWithinHolidayHours = exports.checkWithinNormalHours = exports.getIntersectedHours = exports.calculateIntersection = exports.parseTimeString = exports.getFullDayHours = exports.getDaysOfWeek = void 0;
|
|
7
7
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
8
8
|
const utc_1 = __importDefault(require("dayjs/plugin/utc"));
|
|
9
9
|
const timezone_1 = __importDefault(require("dayjs/plugin/timezone"));
|
|
@@ -165,4 +165,8 @@ const getShopAndLyxaOpenTimings = (shop, adminSettings, scheduledFor) => {
|
|
|
165
165
|
return (0, exports.checkWithinHolidayHours)(shopNormalWorkingHours, shop.workHourSetting?.holidayHours ?? [], currentDate);
|
|
166
166
|
};
|
|
167
167
|
exports.getShopAndLyxaOpenTimings = getShopAndLyxaOpenTimings;
|
|
168
|
+
const getVendorAndLyxaOpenTimings = (vendor, adminSettings, date) => {
|
|
169
|
+
return (0, exports.getShopAndLyxaOpenTimings)(vendor, adminSettings, date);
|
|
170
|
+
};
|
|
171
|
+
exports.getVendorAndLyxaOpenTimings = getVendorAndLyxaOpenTimings;
|
|
168
172
|
//# sourceMappingURL=workHourSetting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workHourSetting.js","sourceRoot":"/","sources":["utilities/workHourSetting.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs, { Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport minMax from 'dayjs/plugin/minMax';\nimport { HolidayHour, NormalHour, StartEndTime } from '../libraries/mongo/models/shared/work-hour.model';\nimport { HolidayWorkStatus, WeekDay, WorkStatus } from './enum';\nimport { LyxaTimezone } from './time';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(minMax);\n\nexport const getDaysOfWeek = (): string[] => {\n\treturn Array.from({ length: 7 }, (_, i) => dayjs().day(i).format('dddd'));\n};\n\nexport const getFullDayHours = (): StartEndTime[] => {\n\treturn [{ start: '0000', end: '2359' }];\n};\n\nexport const parseTimeString = (timeHHMM: string, zone: string): dayjs.Dayjs => {\n\tconst hour = Number(timeHHMM.slice(0, 2));\n\tconst minute = Number(timeHHMM.slice(2));\n\treturn dayjs().tz(zone).hour(hour).minute(minute).second(0).millisecond(0);\n};\nexport const calculateIntersection = (\n\topening: StartEndTime,\n\tvalid: StartEndTime,\n\ttimeZone: string\n): StartEndTime | null => {\n\tconst openingStart = parseTimeString(opening.start, timeZone);\n\tconst openingEnd = parseTimeString(opening.end, timeZone);\n\tconst validStart = parseTimeString(valid.start, timeZone);\n\tconst validEnd = parseTimeString(valid.end, timeZone);\n\n\tconst intersectionStart = dayjs.max(openingStart, validStart);\n\tconst intersectionEnd = dayjs.min(openingEnd, validEnd);\n\n\treturn intersectionStart && intersectionEnd && intersectionStart.isBefore(intersectionEnd)\n\t\t? {\n\t\t\t\tstart: intersectionStart.format('HHmm'),\n\t\t\t\tend: intersectionEnd.format('HHmm'),\n\t\t\t}\n\t\t: null;\n};\n\nexport const getIntersectedHours = (\n\topeningHours: StartEndTime[],\n\tvalidHours: StartEndTime[],\n\ttimeZone = 'Asia/Dhaka'\n): StartEndTime[] => {\n\tconst intersections: StartEndTime[] = [];\n\n\tfor (const opening of openingHours) {\n\t\tfor (const valid of validHours) {\n\t\t\tconst intersection = calculateIntersection(opening, valid, timeZone);\n\n\t\t\tif (intersection !== null) {\n\t\t\t\tintersections.push(intersection);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn intersections;\n};\n\nexport const checkWithinNormalHours = (\n\thours: StartEndTime[],\n\tnormalTimings: NormalHour[],\n\tday: keyof typeof WeekDay\n): StartEndTime[] => {\n\tconst dayTiming = normalTimings.find(timing => timing.day === WeekDay[day]);\n\n\tif (!dayTiming) return [];\n\n\tconst statusHandlers = {\n\t\t[WorkStatus.CLOSED]: () => [],\n\t\t[WorkStatus.FULL_DAY]: () => getFullDayHours(),\n\t\t[WorkStatus.OPEN]: () =>\n\t\t\tdayTiming.openingHours?.length ? getIntersectedHours(dayTiming.openingHours, hours) : [],\n\t};\n\n\treturn statusHandlers[dayTiming.status]?.() || [];\n};\n\nexport const checkWithinHolidayHours = (\n\thours: StartEndTime[],\n\tholidayTimings: HolidayHour[],\n\tcurrentDate: Dayjs\n): StartEndTime[] => {\n\tif (!holidayTimings.length) {\n\t\treturn hours;\n\t}\n\n\t/** Find If Today Is Holiday */\n\tconst currentDateInTimezone = currentDate.tz(LyxaTimezone);\n\tconst todaysHoliday = holidayTimings.find(holiday => {\n\t\tif (!holiday.date) return false;\n\t\tconst holidayDate = dayjs(holiday.date).tz(LyxaTimezone);\n\t\treturn currentDateInTimezone.isSame(holidayDate, 'day');\n\t});\n\n\t/** No holiday today - return original hours */\n\tif (!todaysHoliday) return hours;\n\n\t/** Handle holiday status --> Full Day Holiday */\n\tif (todaysHoliday.status === HolidayWorkStatus.FULL_DAY) return [];\n\n\t/** Handle holiday status --> Certain Hour Closed Holiday */\n\tif (\n\t\ttodaysHoliday.status === HolidayWorkStatus.CLOSED &&\n\t\ttodaysHoliday.closingHour?.start &&\n\t\ttodaysHoliday.closingHour?.end\n\t) {\n\t\treturn getHolidayIntersectedHours(hours, [todaysHoliday.closingHour]);\n\t}\n\n\t/** Default fallback - return original hours */\n\treturn hours;\n};\n\nexport const getHolidayIntersectedHours = (\n\topeningHours: StartEndTime[],\n\tclosingHours: StartEndTime[],\n\ttimeZone = 'Asia/Dhaka'\n): StartEndTime[] => {\n\tif (!openingHours.length || !closingHours.length) {\n\t\treturn openingHours;\n\t}\n\n\tconst result: StartEndTime[] = [];\n\n\tfor (const opening of openingHours) {\n\t\tconst openingStart = parseTimeString(opening.start, timeZone);\n\t\tconst openingEnd = parseTimeString(opening.end, timeZone);\n\n\t\tlet segments = [{ start: openingStart, end: openingEnd }];\n\n\t\t/** Applying each closing period to current segments */\n\t\tfor (const closing of closingHours) {\n\t\t\tconst closingStart = parseTimeString(closing.start, timeZone);\n\t\t\tconst closingEnd = parseTimeString(closing.end, timeZone);\n\t\t\tconst block = { start: closingStart, end: closingEnd };\n\n\t\t\tsegments = segments.flatMap(segment => subtractSegment(segment, block));\n\t\t}\n\n\t\t/** Converting segments to result format */\n\t\tfor (const segment of segments) {\n\t\t\tresult.push({\n\t\t\t\tstart: segment.start.format('HHmm'),\n\t\t\t\tend: segment.end.format('HHmm'),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n};\nexport const subtractSegment = (\n\tsegment: { start: dayjs.Dayjs; end: dayjs.Dayjs },\n\tblock: { start: dayjs.Dayjs; end: dayjs.Dayjs }\n): { start: dayjs.Dayjs; end: dayjs.Dayjs }[] => {\n\tconst { start, end } = segment;\n\tconst { start: blockStart, end: blockEnd } = block;\n\n\t/** Sequence Matter */\n\t/** No Overlap */\n\tif (end.isBefore(blockStart) || start.isAfter(blockEnd)) return [segment];\n\n\t/** Fully Overlapped */\n\tif (blockStart.isBefore(start) && blockEnd.isAfter(end)) return [];\n\n\t/** Block Inside Segment (Middle Cut) */\n\tif (blockStart.isAfter(start) && blockEnd.isBefore(end)) {\n\t\treturn [\n\t\t\t{ start, end: blockStart },\n\t\t\t{ start: blockEnd, end },\n\t\t];\n\t}\n\n\t/** Overlap At Start */\n\tif (blockStart.isBefore(end) && blockEnd.isBefore(end) && blockEnd.isAfter(start)) {\n\t\treturn [{ start: blockEnd, end }];\n\t}\n\n\t/** Overlap At End */\n\tif (blockEnd.isAfter(start) && blockStart.isAfter(start) && blockStart.isBefore(end)) {\n\t\treturn [{ start, end: blockStart }];\n\t}\n\n\treturn [];\n};\n\nexport const adminAfterHolidayWorkingHours = (workHourSetting: any) => {\n\tconst fullDayHours = getFullDayHours();\n\tconst now = dayjs().tz(LyxaTimezone);\n\tconst currentDayIndex = now.day(); // 0 (Sunday) through 6 (Saturday)\n\tconst currentDay = getDaysOfWeek()[currentDayIndex] as keyof typeof WeekDay;\n\tconst currentDate = dayjs().utc().startOf('day');\n\n\t/**Admin Normal Working Hour*/\n\tconst adminNormalWorkingHours = checkWithinNormalHours(\n\t\tfullDayHours,\n\t\tworkHourSetting.normalHours,\n\t\tcurrentDay\n\t);\n\t/**Admin Working Hour After Subtracting From Admin Holiday Hour */\n\treturn checkWithinHolidayHours(adminNormalWorkingHours, workHourSetting.holidayHours, currentDate);\n};\n\nexport const isLyxaOpen = (workHourSetting: any) => {\n\tconst currentTime = new Date().getHours() * 100 + new Date().getMinutes();\n\tconst lyxaOpenHour = adminAfterHolidayWorkingHours(workHourSetting);\n\treturn lyxaOpenHour.some(\n\t\ttiming => parseInt(timing.start) <= currentTime && currentTime <= parseInt(timing.end)\n\t);\n};\n\nexport const getShopAndLyxaOpenTimings = (shop: any, adminSettings: any, scheduledFor?: Date) => {\n\tconst fullDayHours = [{ start: '0000', end: '2359' }];\n\tconst now = scheduledFor ? dayjs(scheduledFor).tz(LyxaTimezone) : dayjs().tz(LyxaTimezone); // ✅ current time in correct timezone\n\tconst currentDayIndex = now.day(); // 0 (Sunday) through 6 (Saturday)\n\tconst currentDay = getDaysOfWeek()[currentDayIndex] as keyof typeof WeekDay;\n\tconst currentDate = scheduledFor ? dayjs(scheduledFor).utc().startOf('day') : dayjs().utc().startOf('day');\n\n\tconst adminNormalWorkingHours = checkWithinNormalHours(\n\t\tfullDayHours,\n\t\tadminSettings.workHourSetting?.normalHours ?? [],\n\t\tcurrentDay\n\t);\n\n\tconst adminAfterHolidayWorkingHours = checkWithinHolidayHours(\n\t\tadminNormalWorkingHours,\n\t\tadminSettings.workHourSetting?.holidayHours ?? [],\n\t\tcurrentDate\n\t);\n\n\tconst shopNormalWorkingHours = checkWithinNormalHours(\n\t\tadminAfterHolidayWorkingHours,\n\t\tshop.workHourSetting?.normalHours ?? [],\n\t\tcurrentDay\n\t);\n\n\treturn checkWithinHolidayHours(\n\t\tshopNormalWorkingHours,\n\t\tshop.workHourSetting?.holidayHours ?? [],\n\t\tcurrentDate\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"workHourSetting.js","sourceRoot":"/","sources":["utilities/workHourSetting.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs, { Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport minMax from 'dayjs/plugin/minMax';\nimport { HolidayHour, NormalHour, StartEndTime } from '../libraries/mongo/models/shared/work-hour.model';\nimport { HolidayWorkStatus, WeekDay, WorkStatus } from './enum';\nimport { LyxaTimezone } from './time';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(minMax);\n\nexport const getDaysOfWeek = (): string[] => {\n\treturn Array.from({ length: 7 }, (_, i) => dayjs().day(i).format('dddd'));\n};\n\nexport const getFullDayHours = (): StartEndTime[] => {\n\treturn [{ start: '0000', end: '2359' }];\n};\n\nexport const parseTimeString = (timeHHMM: string, zone: string): dayjs.Dayjs => {\n\tconst hour = Number(timeHHMM.slice(0, 2));\n\tconst minute = Number(timeHHMM.slice(2));\n\treturn dayjs().tz(zone).hour(hour).minute(minute).second(0).millisecond(0);\n};\nexport const calculateIntersection = (\n\topening: StartEndTime,\n\tvalid: StartEndTime,\n\ttimeZone: string\n): StartEndTime | null => {\n\tconst openingStart = parseTimeString(opening.start, timeZone);\n\tconst openingEnd = parseTimeString(opening.end, timeZone);\n\tconst validStart = parseTimeString(valid.start, timeZone);\n\tconst validEnd = parseTimeString(valid.end, timeZone);\n\n\tconst intersectionStart = dayjs.max(openingStart, validStart);\n\tconst intersectionEnd = dayjs.min(openingEnd, validEnd);\n\n\treturn intersectionStart && intersectionEnd && intersectionStart.isBefore(intersectionEnd)\n\t\t? {\n\t\t\tstart: intersectionStart.format('HHmm'),\n\t\t\tend: intersectionEnd.format('HHmm'),\n\t\t}\n\t\t: null;\n};\n\nexport const getIntersectedHours = (\n\topeningHours: StartEndTime[],\n\tvalidHours: StartEndTime[],\n\ttimeZone = 'Asia/Dhaka'\n): StartEndTime[] => {\n\tconst intersections: StartEndTime[] = [];\n\n\tfor (const opening of openingHours) {\n\t\tfor (const valid of validHours) {\n\t\t\tconst intersection = calculateIntersection(opening, valid, timeZone);\n\n\t\t\tif (intersection !== null) {\n\t\t\t\tintersections.push(intersection);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn intersections;\n};\n\nexport const checkWithinNormalHours = (\n\thours: StartEndTime[],\n\tnormalTimings: NormalHour[],\n\tday: keyof typeof WeekDay\n): StartEndTime[] => {\n\tconst dayTiming = normalTimings.find(timing => timing.day === WeekDay[day]);\n\n\tif (!dayTiming) return [];\n\n\tconst statusHandlers = {\n\t\t[WorkStatus.CLOSED]: () => [],\n\t\t[WorkStatus.FULL_DAY]: () => getFullDayHours(),\n\t\t[WorkStatus.OPEN]: () =>\n\t\t\tdayTiming.openingHours?.length ? getIntersectedHours(dayTiming.openingHours, hours) : [],\n\t};\n\n\treturn statusHandlers[dayTiming.status]?.() || [];\n};\n\nexport const checkWithinHolidayHours = (\n\thours: StartEndTime[],\n\tholidayTimings: HolidayHour[],\n\tcurrentDate: Dayjs\n): StartEndTime[] => {\n\tif (!holidayTimings.length) {\n\t\treturn hours;\n\t}\n\n\t/** Find If Today Is Holiday */\n\tconst currentDateInTimezone = currentDate.tz(LyxaTimezone);\n\tconst todaysHoliday = holidayTimings.find(holiday => {\n\t\tif (!holiday.date) return false;\n\t\tconst holidayDate = dayjs(holiday.date).tz(LyxaTimezone);\n\t\treturn currentDateInTimezone.isSame(holidayDate, 'day');\n\t});\n\n\t/** No holiday today - return original hours */\n\tif (!todaysHoliday) return hours;\n\n\t/** Handle holiday status --> Full Day Holiday */\n\tif (todaysHoliday.status === HolidayWorkStatus.FULL_DAY) return [];\n\n\t/** Handle holiday status --> Certain Hour Closed Holiday */\n\tif (\n\t\ttodaysHoliday.status === HolidayWorkStatus.CLOSED &&\n\t\ttodaysHoliday.closingHour?.start &&\n\t\ttodaysHoliday.closingHour?.end\n\t) {\n\t\treturn getHolidayIntersectedHours(hours, [todaysHoliday.closingHour]);\n\t}\n\n\t/** Default fallback - return original hours */\n\treturn hours;\n};\n\nexport const getHolidayIntersectedHours = (\n\topeningHours: StartEndTime[],\n\tclosingHours: StartEndTime[],\n\ttimeZone = 'Asia/Dhaka'\n): StartEndTime[] => {\n\tif (!openingHours.length || !closingHours.length) {\n\t\treturn openingHours;\n\t}\n\n\tconst result: StartEndTime[] = [];\n\n\tfor (const opening of openingHours) {\n\t\tconst openingStart = parseTimeString(opening.start, timeZone);\n\t\tconst openingEnd = parseTimeString(opening.end, timeZone);\n\n\t\tlet segments = [{ start: openingStart, end: openingEnd }];\n\n\t\t/** Applying each closing period to current segments */\n\t\tfor (const closing of closingHours) {\n\t\t\tconst closingStart = parseTimeString(closing.start, timeZone);\n\t\t\tconst closingEnd = parseTimeString(closing.end, timeZone);\n\t\t\tconst block = { start: closingStart, end: closingEnd };\n\n\t\t\tsegments = segments.flatMap(segment => subtractSegment(segment, block));\n\t\t}\n\n\t\t/** Converting segments to result format */\n\t\tfor (const segment of segments) {\n\t\t\tresult.push({\n\t\t\t\tstart: segment.start.format('HHmm'),\n\t\t\t\tend: segment.end.format('HHmm'),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n};\nexport const subtractSegment = (\n\tsegment: { start: dayjs.Dayjs; end: dayjs.Dayjs },\n\tblock: { start: dayjs.Dayjs; end: dayjs.Dayjs }\n): { start: dayjs.Dayjs; end: dayjs.Dayjs }[] => {\n\tconst { start, end } = segment;\n\tconst { start: blockStart, end: blockEnd } = block;\n\n\t/** Sequence Matter */\n\t/** No Overlap */\n\tif (end.isBefore(blockStart) || start.isAfter(blockEnd)) return [segment];\n\n\t/** Fully Overlapped */\n\tif (blockStart.isBefore(start) && blockEnd.isAfter(end)) return [];\n\n\t/** Block Inside Segment (Middle Cut) */\n\tif (blockStart.isAfter(start) && blockEnd.isBefore(end)) {\n\t\treturn [\n\t\t\t{ start, end: blockStart },\n\t\t\t{ start: blockEnd, end },\n\t\t];\n\t}\n\n\t/** Overlap At Start */\n\tif (blockStart.isBefore(end) && blockEnd.isBefore(end) && blockEnd.isAfter(start)) {\n\t\treturn [{ start: blockEnd, end }];\n\t}\n\n\t/** Overlap At End */\n\tif (blockEnd.isAfter(start) && blockStart.isAfter(start) && blockStart.isBefore(end)) {\n\t\treturn [{ start, end: blockStart }];\n\t}\n\n\treturn [];\n};\n\nexport const adminAfterHolidayWorkingHours = (workHourSetting: any) => {\n\tconst fullDayHours = getFullDayHours();\n\tconst now = dayjs().tz(LyxaTimezone);\n\tconst currentDayIndex = now.day(); // 0 (Sunday) through 6 (Saturday)\n\tconst currentDay = getDaysOfWeek()[currentDayIndex] as keyof typeof WeekDay;\n\tconst currentDate = dayjs().utc().startOf('day');\n\n\t/**Admin Normal Working Hour*/\n\tconst adminNormalWorkingHours = checkWithinNormalHours(\n\t\tfullDayHours,\n\t\tworkHourSetting.normalHours,\n\t\tcurrentDay\n\t);\n\t/**Admin Working Hour After Subtracting From Admin Holiday Hour */\n\treturn checkWithinHolidayHours(adminNormalWorkingHours, workHourSetting.holidayHours, currentDate);\n};\n\nexport const isLyxaOpen = (workHourSetting: any) => {\n\tconst currentTime = new Date().getHours() * 100 + new Date().getMinutes();\n\tconst lyxaOpenHour = adminAfterHolidayWorkingHours(workHourSetting);\n\treturn lyxaOpenHour.some(\n\t\ttiming => parseInt(timing.start) <= currentTime && currentTime <= parseInt(timing.end)\n\t);\n};\n\nexport const getShopAndLyxaOpenTimings = (shop: any, adminSettings: any, scheduledFor?: Date) => {\n\tconst fullDayHours = [{ start: '0000', end: '2359' }];\n\tconst now = scheduledFor ? dayjs(scheduledFor).tz(LyxaTimezone) : dayjs().tz(LyxaTimezone); // ✅ current time in correct timezone\n\tconst currentDayIndex = now.day(); // 0 (Sunday) through 6 (Saturday)\n\tconst currentDay = getDaysOfWeek()[currentDayIndex] as keyof typeof WeekDay;\n\tconst currentDate = scheduledFor ? dayjs(scheduledFor).utc().startOf('day') : dayjs().utc().startOf('day');\n\n\tconst adminNormalWorkingHours = checkWithinNormalHours(\n\t\tfullDayHours,\n\t\tadminSettings.workHourSetting?.normalHours ?? [],\n\t\tcurrentDay\n\t);\n\n\tconst adminAfterHolidayWorkingHours = checkWithinHolidayHours(\n\t\tadminNormalWorkingHours,\n\t\tadminSettings.workHourSetting?.holidayHours ?? [],\n\t\tcurrentDate\n\t);\n\n\tconst shopNormalWorkingHours = checkWithinNormalHours(\n\t\tadminAfterHolidayWorkingHours,\n\t\tshop.workHourSetting?.normalHours ?? [],\n\t\tcurrentDay\n\t);\n\n\treturn checkWithinHolidayHours(\n\t\tshopNormalWorkingHours,\n\t\tshop.workHourSetting?.holidayHours ?? [],\n\t\tcurrentDate\n\t);\n}\n\nexport const getVendorAndLyxaOpenTimings = (vendor: any, adminSettings: any, date: Date) => {\n\treturn getShopAndLyxaOpenTimings(vendor, adminSettings, date);\n}\n"]}
|