@blackcode_sa/metaestetics-api 1.6.1 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -131,7 +131,6 @@ __export(index_exports, {
131
131
  clinicContactInfoSchema: () => clinicContactInfoSchema,
132
132
  clinicGroupSchema: () => clinicGroupSchema,
133
133
  clinicGroupSetupSchema: () => clinicGroupSetupSchema,
134
- clinicInfoSchema: () => clinicInfoSchema,
135
134
  clinicLocationSchema: () => clinicLocationSchema,
136
135
  clinicReviewInfoSchema: () => clinicReviewInfoSchema,
137
136
  clinicReviewSchema: () => clinicReviewSchema,
@@ -159,7 +158,6 @@ __export(index_exports, {
159
158
  createProcedureReviewSchema: () => createProcedureReviewSchema,
160
159
  createReviewSchema: () => createReviewSchema,
161
160
  createUserOptionsSchema: () => createUserOptionsSchema,
162
- doctorInfoSchema: () => doctorInfoSchema,
163
161
  documentElementSchema: () => documentElementSchema,
164
162
  documentElementWithoutIdSchema: () => documentElementWithoutIdSchema,
165
163
  documentTemplateSchema: () => documentTemplateSchema,
@@ -198,7 +196,6 @@ __export(index_exports, {
198
196
  procedureInfoSchema: () => procedureInfoSchema,
199
197
  procedureReviewInfoSchema: () => procedureReviewInfoSchema,
200
198
  procedureReviewSchema: () => procedureReviewSchema,
201
- procedureSummaryInfoSchema: () => procedureSummaryInfoSchema,
202
199
  requesterInfoSchema: () => requesterInfoSchema,
203
200
  reviewSchema: () => reviewSchema,
204
201
  searchAppointmentsSchema: () => searchAppointmentsSchema,
@@ -464,7 +461,7 @@ var UserRole = /* @__PURE__ */ ((UserRole2) => {
464
461
  var USERS_COLLECTION = "users";
465
462
 
466
463
  // src/services/auth.service.ts
467
- var import_zod18 = require("zod");
464
+ var import_zod19 = require("zod");
468
465
 
469
466
  // src/validations/schemas.ts
470
467
  var import_zod3 = require("zod");
@@ -989,7 +986,7 @@ var USER_ERRORS = {
989
986
  };
990
987
 
991
988
  // src/services/user.service.ts
992
- var import_zod14 = require("zod");
989
+ var import_zod15 = require("zod");
993
990
 
994
991
  // src/services/patient/patient.service.ts
995
992
  var import_firestore11 = require("firebase/firestore");
@@ -2643,7 +2640,7 @@ var PatientService = class extends BaseService {
2643
2640
  };
2644
2641
 
2645
2642
  // src/services/clinic/utils/admin.utils.ts
2646
- var import_firestore14 = require("firebase/firestore");
2643
+ var import_firestore13 = require("firebase/firestore");
2647
2644
 
2648
2645
  // src/types/clinic/preferences.types.ts
2649
2646
  var PracticeType = /* @__PURE__ */ ((PracticeType2) => {
@@ -2770,52 +2767,8 @@ var SubscriptionModel = /* @__PURE__ */ ((SubscriptionModel2) => {
2770
2767
 
2771
2768
  // src/validations/clinic.schema.ts
2772
2769
  var import_zod12 = require("zod");
2773
- var import_firestore13 = require("firebase/firestore");
2774
-
2775
- // src/validations/practitioner.schema.ts
2776
- var import_zod11 = require("zod");
2777
2770
  var import_firestore12 = require("firebase/firestore");
2778
2771
 
2779
- // src/backoffice/types/static/certification.types.ts
2780
- var CertificationLevel = /* @__PURE__ */ ((CertificationLevel2) => {
2781
- CertificationLevel2["AESTHETICIAN"] = "aesthetician";
2782
- CertificationLevel2["NURSE_ASSISTANT"] = "nurse_assistant";
2783
- CertificationLevel2["NURSE"] = "nurse";
2784
- CertificationLevel2["NURSE_PRACTITIONER"] = "nurse_practitioner";
2785
- CertificationLevel2["PHYSICIAN_ASSISTANT"] = "physician_assistant";
2786
- CertificationLevel2["DOCTOR"] = "doctor";
2787
- CertificationLevel2["SPECIALIST"] = "specialist";
2788
- CertificationLevel2["PLASTIC_SURGEON"] = "plastic_surgeon";
2789
- return CertificationLevel2;
2790
- })(CertificationLevel || {});
2791
- var CertificationSpecialty = /* @__PURE__ */ ((CertificationSpecialty3) => {
2792
- CertificationSpecialty3["LASER"] = "laser";
2793
- CertificationSpecialty3["INJECTABLES"] = "injectables";
2794
- CertificationSpecialty3["CHEMICAL_PEELS"] = "chemical_peels";
2795
- CertificationSpecialty3["MICRODERMABRASION"] = "microdermabrasion";
2796
- CertificationSpecialty3["BODY_CONTOURING"] = "body_contouring";
2797
- CertificationSpecialty3["SKIN_CARE"] = "skin_care";
2798
- CertificationSpecialty3["WOUND_CARE"] = "wound_care";
2799
- CertificationSpecialty3["ANESTHESIA"] = "anesthesia";
2800
- return CertificationSpecialty3;
2801
- })(CertificationSpecialty || {});
2802
-
2803
- // src/types/practitioner/index.ts
2804
- var PRACTITIONERS_COLLECTION = "practitioners";
2805
- var REGISTER_TOKENS_COLLECTION = "register_tokens";
2806
- var PractitionerStatus = /* @__PURE__ */ ((PractitionerStatus2) => {
2807
- PractitionerStatus2["DRAFT"] = "draft";
2808
- PractitionerStatus2["ACTIVE"] = "active";
2809
- return PractitionerStatus2;
2810
- })(PractitionerStatus || {});
2811
- var PractitionerTokenStatus = /* @__PURE__ */ ((PractitionerTokenStatus2) => {
2812
- PractitionerTokenStatus2["ACTIVE"] = "active";
2813
- PractitionerTokenStatus2["USED"] = "used";
2814
- PractitionerTokenStatus2["EXPIRED"] = "expired";
2815
- PractitionerTokenStatus2["REVOKED"] = "revoked";
2816
- return PractitionerTokenStatus2;
2817
- })(PractitionerTokenStatus || {});
2818
-
2819
2772
  // src/validations/reviews.schema.ts
2820
2773
  var import_zod10 = require("zod");
2821
2774
  var baseReviewSchema = import_zod10.z.object({
@@ -2949,6 +2902,9 @@ var createReviewSchema = import_zod10.z.object({
2949
2902
  }
2950
2903
  );
2951
2904
 
2905
+ // src/validations/shared.schema.ts
2906
+ var import_zod11 = require("zod");
2907
+
2952
2908
  // src/backoffice/types/static/procedure-family.types.ts
2953
2909
  var ProcedureFamily = /* @__PURE__ */ ((ProcedureFamily2) => {
2954
2910
  ProcedureFamily2["AESTHETICS"] = "aesthetics";
@@ -2975,59 +2931,21 @@ var Currency = /* @__PURE__ */ ((Currency2) => {
2975
2931
  return Currency2;
2976
2932
  })(Currency || {});
2977
2933
 
2978
- // src/validations/practitioner.schema.ts
2979
- var practitionerBasicInfoSchema = import_zod11.z.object({
2980
- firstName: import_zod11.z.string().min(2).max(50),
2981
- lastName: import_zod11.z.string().min(2).max(50),
2982
- title: import_zod11.z.string().min(2).max(100),
2934
+ // src/validations/shared.schema.ts
2935
+ var sharedClinicContactInfoSchema = import_zod11.z.object({
2983
2936
  email: import_zod11.z.string().email(),
2984
- phoneNumber: import_zod11.z.string().regex(/^\+?[1-9]\d{1,14}$/, "Invalid phone number"),
2985
- dateOfBirth: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date()),
2986
- gender: import_zod11.z.enum(["male", "female", "other"]),
2987
- profileImageUrl: import_zod11.z.string().url().optional(),
2988
- bio: import_zod11.z.string().max(1e3).optional(),
2989
- languages: import_zod11.z.array(import_zod11.z.string()).min(1)
2990
- });
2991
- var practitionerCertificationSchema = import_zod11.z.object({
2992
- level: import_zod11.z.nativeEnum(CertificationLevel),
2993
- specialties: import_zod11.z.array(import_zod11.z.nativeEnum(CertificationSpecialty)),
2994
- licenseNumber: import_zod11.z.string().min(3).max(50),
2995
- issuingAuthority: import_zod11.z.string().min(2).max(100),
2996
- issueDate: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date()),
2997
- expiryDate: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date()).optional(),
2998
- verificationStatus: import_zod11.z.enum(["pending", "verified", "rejected"])
2999
- });
3000
- var timeSlotSchema = import_zod11.z.object({
3001
- start: import_zod11.z.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format"),
3002
- end: import_zod11.z.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format")
3003
- }).nullable();
3004
- var practitionerWorkingHoursSchema = import_zod11.z.object({
3005
- practitionerId: import_zod11.z.string().min(1),
3006
- clinicId: import_zod11.z.string().min(1),
3007
- monday: timeSlotSchema,
3008
- tuesday: timeSlotSchema,
3009
- wednesday: timeSlotSchema,
3010
- thursday: timeSlotSchema,
3011
- friday: timeSlotSchema,
3012
- saturday: timeSlotSchema,
3013
- sunday: timeSlotSchema,
3014
- createdAt: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date()),
3015
- updatedAt: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date())
2937
+ phoneNumber: import_zod11.z.string(),
2938
+ alternativePhoneNumber: import_zod11.z.string().nullable().optional(),
2939
+ website: import_zod11.z.string().nullable().optional()
3016
2940
  });
3017
- var practitionerClinicWorkingHoursSchema = import_zod11.z.object({
3018
- clinicId: import_zod11.z.string().min(1),
3019
- workingHours: import_zod11.z.object({
3020
- monday: timeSlotSchema,
3021
- tuesday: timeSlotSchema,
3022
- wednesday: timeSlotSchema,
3023
- thursday: timeSlotSchema,
3024
- friday: timeSlotSchema,
3025
- saturday: timeSlotSchema,
3026
- sunday: timeSlotSchema
3027
- }),
3028
- isActive: import_zod11.z.boolean(),
3029
- createdAt: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date()),
3030
- updatedAt: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date())
2941
+ var sharedClinicLocationSchema = import_zod11.z.object({
2942
+ address: import_zod11.z.string(),
2943
+ city: import_zod11.z.string(),
2944
+ country: import_zod11.z.string(),
2945
+ postalCode: import_zod11.z.string(),
2946
+ latitude: import_zod11.z.number().min(-90).max(90),
2947
+ longitude: import_zod11.z.number().min(-180).max(180),
2948
+ geohash: import_zod11.z.string().nullable().optional()
3031
2949
  });
3032
2950
  var procedureSummaryInfoSchema = import_zod11.z.object({
3033
2951
  id: import_zod11.z.string().min(1),
@@ -3047,79 +2965,22 @@ var procedureSummaryInfoSchema = import_zod11.z.object({
3047
2965
  practitionerId: import_zod11.z.string().min(1),
3048
2966
  practitionerName: import_zod11.z.string().min(1)
3049
2967
  });
3050
- var practitionerSchema = import_zod11.z.object({
3051
- id: import_zod11.z.string().min(1),
3052
- userRef: import_zod11.z.string().min(1),
3053
- basicInfo: practitionerBasicInfoSchema,
3054
- certification: practitionerCertificationSchema,
3055
- clinics: import_zod11.z.array(import_zod11.z.string()),
3056
- clinicWorkingHours: import_zod11.z.array(practitionerClinicWorkingHoursSchema),
3057
- clinicsInfo: import_zod11.z.array(clinicInfoSchema),
3058
- procedures: import_zod11.z.array(import_zod11.z.string()),
3059
- proceduresInfo: import_zod11.z.array(procedureSummaryInfoSchema),
3060
- reviewInfo: practitionerReviewInfoSchema,
3061
- isActive: import_zod11.z.boolean(),
3062
- isVerified: import_zod11.z.boolean(),
3063
- status: import_zod11.z.nativeEnum(PractitionerStatus),
3064
- createdAt: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date()),
3065
- updatedAt: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date())
3066
- });
3067
- var createPractitionerSchema = import_zod11.z.object({
3068
- userRef: import_zod11.z.string().min(1),
3069
- basicInfo: practitionerBasicInfoSchema,
3070
- certification: practitionerCertificationSchema,
3071
- clinics: import_zod11.z.array(import_zod11.z.string()).optional(),
3072
- clinicWorkingHours: import_zod11.z.array(practitionerClinicWorkingHoursSchema).optional(),
3073
- clinicsInfo: import_zod11.z.array(clinicInfoSchema).optional(),
3074
- proceduresInfo: import_zod11.z.array(procedureSummaryInfoSchema).optional(),
3075
- isActive: import_zod11.z.boolean(),
3076
- isVerified: import_zod11.z.boolean(),
3077
- status: import_zod11.z.nativeEnum(PractitionerStatus).optional()
2968
+ var clinicInfoSchema = import_zod11.z.object({
2969
+ id: import_zod11.z.string(),
2970
+ featuredPhoto: import_zod11.z.string(),
2971
+ name: import_zod11.z.string(),
2972
+ description: import_zod11.z.string().nullable().optional(),
2973
+ location: sharedClinicLocationSchema,
2974
+ contactInfo: sharedClinicContactInfoSchema
3078
2975
  });
3079
- var createDraftPractitionerSchema = import_zod11.z.object({
3080
- basicInfo: practitionerBasicInfoSchema,
3081
- certification: practitionerCertificationSchema,
3082
- clinics: import_zod11.z.array(import_zod11.z.string()).optional(),
3083
- clinicWorkingHours: import_zod11.z.array(practitionerClinicWorkingHoursSchema).optional(),
3084
- clinicsInfo: import_zod11.z.array(clinicInfoSchema).optional(),
3085
- proceduresInfo: import_zod11.z.array(procedureSummaryInfoSchema).optional(),
3086
- isActive: import_zod11.z.boolean().optional().default(false),
3087
- isVerified: import_zod11.z.boolean().optional().default(false)
3088
- });
3089
- var practitionerTokenSchema = import_zod11.z.object({
3090
- id: import_zod11.z.string().min(1),
3091
- token: import_zod11.z.string().min(6),
3092
- practitionerId: import_zod11.z.string().min(1),
3093
- email: import_zod11.z.string().email(),
3094
- clinicId: import_zod11.z.string().min(1),
3095
- status: import_zod11.z.nativeEnum(PractitionerTokenStatus),
3096
- createdBy: import_zod11.z.string().min(1),
3097
- createdAt: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date()),
3098
- expiresAt: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date()),
3099
- usedBy: import_zod11.z.string().optional(),
3100
- usedAt: import_zod11.z.instanceof(import_firestore12.Timestamp).or(import_zod11.z.date()).optional()
3101
- });
3102
- var createPractitionerTokenSchema = import_zod11.z.object({
3103
- practitionerId: import_zod11.z.string().min(1),
3104
- email: import_zod11.z.string().email(),
3105
- clinicId: import_zod11.z.string().min(1),
3106
- expiresAt: import_zod11.z.date().optional()
3107
- });
3108
- var practitionerSignupSchema = import_zod11.z.object({
3109
- email: import_zod11.z.string().email(),
3110
- password: import_zod11.z.string().min(8),
3111
- firstName: import_zod11.z.string().min(2).max(50),
3112
- lastName: import_zod11.z.string().min(2).max(50),
3113
- token: import_zod11.z.string().optional(),
3114
- profileData: import_zod11.z.object({
3115
- basicInfo: import_zod11.z.object({
3116
- phoneNumber: import_zod11.z.string().optional(),
3117
- profileImageUrl: import_zod11.z.string().optional(),
3118
- gender: import_zod11.z.enum(["male", "female", "other"]).optional(),
3119
- bio: import_zod11.z.string().optional()
3120
- }).optional(),
3121
- certification: import_zod11.z.any().optional()
3122
- }).optional()
2976
+ var doctorInfoSchema = import_zod11.z.object({
2977
+ id: import_zod11.z.string(),
2978
+ name: import_zod11.z.string(),
2979
+ description: import_zod11.z.string().nullable().optional(),
2980
+ photo: import_zod11.z.string(),
2981
+ rating: import_zod11.z.number().min(0).max(5),
2982
+ services: import_zod11.z.array(import_zod11.z.string())
2983
+ // List of procedure IDs practitioner offers
3123
2984
  });
3124
2985
 
3125
2986
  // src/validations/clinic.schema.ts
@@ -3172,23 +3033,6 @@ var adminInfoSchema = import_zod12.z.object({
3172
3033
  name: import_zod12.z.string(),
3173
3034
  email: import_zod12.z.string().email()
3174
3035
  });
3175
- var clinicInfoSchema = import_zod12.z.object({
3176
- id: import_zod12.z.string(),
3177
- featuredPhoto: import_zod12.z.string(),
3178
- name: import_zod12.z.string(),
3179
- description: import_zod12.z.string().nullable().optional(),
3180
- location: clinicLocationSchema,
3181
- contactInfo: clinicContactInfoSchema
3182
- });
3183
- var doctorInfoSchema = import_zod12.z.object({
3184
- id: import_zod12.z.string(),
3185
- name: import_zod12.z.string(),
3186
- description: import_zod12.z.string().nullable().optional(),
3187
- photo: import_zod12.z.string(),
3188
- rating: import_zod12.z.number().min(0).max(5),
3189
- services: import_zod12.z.array(import_zod12.z.string())
3190
- // List of procedure IDs practitioner offers
3191
- });
3192
3036
  var clinicAdminSchema = import_zod12.z.object({
3193
3037
  id: import_zod12.z.string(),
3194
3038
  userRef: import_zod12.z.string(),
@@ -3198,8 +3042,8 @@ var clinicAdminSchema = import_zod12.z.object({
3198
3042
  clinicsManagedInfo: import_zod12.z.array(clinicInfoSchema),
3199
3043
  contactInfo: contactPersonSchema,
3200
3044
  roleTitle: import_zod12.z.string(),
3201
- createdAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore13.Timestamp)),
3202
- updatedAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore13.Timestamp)),
3045
+ createdAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore12.Timestamp)),
3046
+ updatedAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore12.Timestamp)),
3203
3047
  isActive: import_zod12.z.boolean()
3204
3048
  });
3205
3049
  var adminTokenSchema = import_zod12.z.object({
@@ -3208,9 +3052,9 @@ var adminTokenSchema = import_zod12.z.object({
3208
3052
  email: import_zod12.z.string().email().optional().nullable(),
3209
3053
  status: import_zod12.z.nativeEnum(AdminTokenStatus),
3210
3054
  usedByUserRef: import_zod12.z.string().optional(),
3211
- createdAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore13.Timestamp)),
3055
+ createdAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore12.Timestamp)),
3212
3056
  // Timestamp
3213
- expiresAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore13.Timestamp))
3057
+ expiresAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore12.Timestamp))
3214
3058
  // Timestamp
3215
3059
  });
3216
3060
  var createAdminTokenSchema = import_zod12.z.object({
@@ -3230,9 +3074,9 @@ var clinicGroupSchema = import_zod12.z.object({
3230
3074
  adminsInfo: import_zod12.z.array(adminInfoSchema),
3231
3075
  adminTokens: import_zod12.z.array(adminTokenSchema),
3232
3076
  ownerId: import_zod12.z.string().nullable(),
3233
- createdAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore13.Timestamp)),
3077
+ createdAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore12.Timestamp)),
3234
3078
  // Timestamp
3235
- updatedAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore13.Timestamp)),
3079
+ updatedAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore12.Timestamp)),
3236
3080
  // Timestamp
3237
3081
  isActive: import_zod12.z.boolean(),
3238
3082
  logo: import_zod12.z.string().optional().nullable(),
@@ -3272,9 +3116,9 @@ var clinicSchema = import_zod12.z.object({
3272
3116
  // servicesInfo: z.array(serviceInfoSchema), // Deprecated, use proceduresInfo
3273
3117
  reviewInfo: clinicReviewInfoSchema,
3274
3118
  admins: import_zod12.z.array(import_zod12.z.string()),
3275
- createdAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore13.Timestamp)),
3119
+ createdAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore12.Timestamp)),
3276
3120
  // Timestamp
3277
- updatedAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore13.Timestamp)),
3121
+ updatedAt: import_zod12.z.instanceof(Date).or(import_zod12.z.instanceof(import_firestore12.Timestamp)),
3278
3122
  // Timestamp
3279
3123
  isActive: import_zod12.z.boolean(),
3280
3124
  isVerified: import_zod12.z.boolean(),
@@ -3464,7 +3308,7 @@ async function createClinicAdmin(db, data, clinicGroupService) {
3464
3308
  }
3465
3309
  console.log("[CLINIC_ADMIN] Preparing admin data object");
3466
3310
  const adminData = {
3467
- id: (0, import_firestore14.doc)((0, import_firestore14.collection)(db, CLINIC_ADMINS_COLLECTION)).id,
3311
+ id: (0, import_firestore13.doc)((0, import_firestore13.collection)(db, CLINIC_ADMINS_COLLECTION)).id,
3468
3312
  // Generate a new ID for the admin document
3469
3313
  userRef: validatedData.userRef,
3470
3314
  clinicGroupId: clinicGroupId || "",
@@ -3477,15 +3321,15 @@ async function createClinicAdmin(db, data, clinicGroupService) {
3477
3321
  contactInfo: validatedData.contactInfo,
3478
3322
  roleTitle: validatedData.roleTitle,
3479
3323
  isActive: validatedData.isActive,
3480
- createdAt: (0, import_firestore14.serverTimestamp)(),
3481
- updatedAt: (0, import_firestore14.serverTimestamp)()
3324
+ createdAt: (0, import_firestore13.serverTimestamp)(),
3325
+ updatedAt: (0, import_firestore13.serverTimestamp)()
3482
3326
  };
3483
3327
  console.log("[CLINIC_ADMIN] Validating complete admin object");
3484
3328
  try {
3485
3329
  clinicAdminSchema.parse({
3486
3330
  ...adminData,
3487
- createdAt: import_firestore14.Timestamp.now(),
3488
- updatedAt: import_firestore14.Timestamp.now()
3331
+ createdAt: import_firestore13.Timestamp.now(),
3332
+ updatedAt: import_firestore13.Timestamp.now()
3489
3333
  });
3490
3334
  console.log("[CLINIC_ADMIN] Admin object validation passed");
3491
3335
  } catch (schemaError) {
@@ -3499,7 +3343,7 @@ async function createClinicAdmin(db, data, clinicGroupService) {
3499
3343
  adminId: adminData.id
3500
3344
  });
3501
3345
  try {
3502
- await (0, import_firestore14.setDoc)((0, import_firestore14.doc)(db, CLINIC_ADMINS_COLLECTION, adminData.id), adminData);
3346
+ await (0, import_firestore13.setDoc)((0, import_firestore13.doc)(db, CLINIC_ADMINS_COLLECTION, adminData.id), adminData);
3503
3347
  console.log("[CLINIC_ADMIN] Admin saved successfully");
3504
3348
  } catch (firestoreError) {
3505
3349
  console.error(
@@ -3548,30 +3392,30 @@ async function checkClinicGroupExists(db, groupId, clinicGroupService) {
3548
3392
  return !!group;
3549
3393
  }
3550
3394
  async function getClinicAdmin(db, adminId) {
3551
- const docRef = (0, import_firestore14.doc)(db, CLINIC_ADMINS_COLLECTION, adminId);
3552
- const docSnap = await (0, import_firestore14.getDoc)(docRef);
3395
+ const docRef = (0, import_firestore13.doc)(db, CLINIC_ADMINS_COLLECTION, adminId);
3396
+ const docSnap = await (0, import_firestore13.getDoc)(docRef);
3553
3397
  if (docSnap.exists()) {
3554
3398
  return docSnap.data();
3555
3399
  }
3556
3400
  return null;
3557
3401
  }
3558
3402
  async function getClinicAdminByUserRef(db, userRef) {
3559
- const q = (0, import_firestore14.query)(
3560
- (0, import_firestore14.collection)(db, CLINIC_ADMINS_COLLECTION),
3561
- (0, import_firestore14.where)("userRef", "==", userRef)
3403
+ const q = (0, import_firestore13.query)(
3404
+ (0, import_firestore13.collection)(db, CLINIC_ADMINS_COLLECTION),
3405
+ (0, import_firestore13.where)("userRef", "==", userRef)
3562
3406
  );
3563
- const querySnapshot = await (0, import_firestore14.getDocs)(q);
3407
+ const querySnapshot = await (0, import_firestore13.getDocs)(q);
3564
3408
  if (querySnapshot.empty) {
3565
3409
  return null;
3566
3410
  }
3567
3411
  return querySnapshot.docs[0].data();
3568
3412
  }
3569
3413
  async function getClinicAdminsByGroup(db, clinicGroupId) {
3570
- const q = (0, import_firestore14.query)(
3571
- (0, import_firestore14.collection)(db, CLINIC_ADMINS_COLLECTION),
3572
- (0, import_firestore14.where)("clinicGroupId", "==", clinicGroupId)
3414
+ const q = (0, import_firestore13.query)(
3415
+ (0, import_firestore13.collection)(db, CLINIC_ADMINS_COLLECTION),
3416
+ (0, import_firestore13.where)("clinicGroupId", "==", clinicGroupId)
3573
3417
  );
3574
- const querySnapshot = await (0, import_firestore14.getDocs)(q);
3418
+ const querySnapshot = await (0, import_firestore13.getDocs)(q);
3575
3419
  return querySnapshot.docs.map((doc32) => doc32.data());
3576
3420
  }
3577
3421
  async function updateClinicAdmin(db, adminId, data) {
@@ -3581,9 +3425,9 @@ async function updateClinicAdmin(db, adminId, data) {
3581
3425
  }
3582
3426
  const updatedData = {
3583
3427
  ...data,
3584
- updatedAt: (0, import_firestore14.serverTimestamp)()
3428
+ updatedAt: (0, import_firestore13.serverTimestamp)()
3585
3429
  };
3586
- await (0, import_firestore14.updateDoc)((0, import_firestore14.doc)(db, CLINIC_ADMINS_COLLECTION, adminId), updatedData);
3430
+ await (0, import_firestore13.updateDoc)((0, import_firestore13.doc)(db, CLINIC_ADMINS_COLLECTION, adminId), updatedData);
3587
3431
  const updatedAdmin = await getClinicAdmin(db, adminId);
3588
3432
  if (!updatedAdmin) {
3589
3433
  throw new Error("Failed to retrieve updated admin");
@@ -3595,7 +3439,7 @@ async function deleteClinicAdmin(db, adminId) {
3595
3439
  if (!admin) {
3596
3440
  throw new Error("Clinic admin not found");
3597
3441
  }
3598
- await (0, import_firestore14.deleteDoc)((0, import_firestore14.doc)(db, CLINIC_ADMINS_COLLECTION, adminId));
3442
+ await (0, import_firestore13.deleteDoc)((0, import_firestore13.doc)(db, CLINIC_ADMINS_COLLECTION, adminId));
3599
3443
  }
3600
3444
  async function addClinicToManaged(db, adminId, clinicId, requesterId, clinicService) {
3601
3445
  const admin = await getClinicAdmin(db, adminId);
@@ -3837,7 +3681,182 @@ var ClinicAdminService = class extends BaseService {
3837
3681
 
3838
3682
  // src/services/practitioner/practitioner.service.ts
3839
3683
  var import_firestore15 = require("firebase/firestore");
3684
+
3685
+ // src/types/practitioner/index.ts
3686
+ var PRACTITIONERS_COLLECTION = "practitioners";
3687
+ var REGISTER_TOKENS_COLLECTION = "register_tokens";
3688
+ var PractitionerStatus = /* @__PURE__ */ ((PractitionerStatus2) => {
3689
+ PractitionerStatus2["DRAFT"] = "draft";
3690
+ PractitionerStatus2["ACTIVE"] = "active";
3691
+ return PractitionerStatus2;
3692
+ })(PractitionerStatus || {});
3693
+ var PractitionerTokenStatus = /* @__PURE__ */ ((PractitionerTokenStatus2) => {
3694
+ PractitionerTokenStatus2["ACTIVE"] = "active";
3695
+ PractitionerTokenStatus2["USED"] = "used";
3696
+ PractitionerTokenStatus2["EXPIRED"] = "expired";
3697
+ PractitionerTokenStatus2["REVOKED"] = "revoked";
3698
+ return PractitionerTokenStatus2;
3699
+ })(PractitionerTokenStatus || {});
3700
+
3701
+ // src/validations/practitioner.schema.ts
3840
3702
  var import_zod13 = require("zod");
3703
+ var import_firestore14 = require("firebase/firestore");
3704
+
3705
+ // src/backoffice/types/static/certification.types.ts
3706
+ var CertificationLevel = /* @__PURE__ */ ((CertificationLevel2) => {
3707
+ CertificationLevel2["AESTHETICIAN"] = "aesthetician";
3708
+ CertificationLevel2["NURSE_ASSISTANT"] = "nurse_assistant";
3709
+ CertificationLevel2["NURSE"] = "nurse";
3710
+ CertificationLevel2["NURSE_PRACTITIONER"] = "nurse_practitioner";
3711
+ CertificationLevel2["PHYSICIAN_ASSISTANT"] = "physician_assistant";
3712
+ CertificationLevel2["DOCTOR"] = "doctor";
3713
+ CertificationLevel2["SPECIALIST"] = "specialist";
3714
+ CertificationLevel2["PLASTIC_SURGEON"] = "plastic_surgeon";
3715
+ return CertificationLevel2;
3716
+ })(CertificationLevel || {});
3717
+ var CertificationSpecialty = /* @__PURE__ */ ((CertificationSpecialty3) => {
3718
+ CertificationSpecialty3["LASER"] = "laser";
3719
+ CertificationSpecialty3["INJECTABLES"] = "injectables";
3720
+ CertificationSpecialty3["CHEMICAL_PEELS"] = "chemical_peels";
3721
+ CertificationSpecialty3["MICRODERMABRASION"] = "microdermabrasion";
3722
+ CertificationSpecialty3["BODY_CONTOURING"] = "body_contouring";
3723
+ CertificationSpecialty3["SKIN_CARE"] = "skin_care";
3724
+ CertificationSpecialty3["WOUND_CARE"] = "wound_care";
3725
+ CertificationSpecialty3["ANESTHESIA"] = "anesthesia";
3726
+ return CertificationSpecialty3;
3727
+ })(CertificationSpecialty || {});
3728
+
3729
+ // src/validations/practitioner.schema.ts
3730
+ var practitionerBasicInfoSchema = import_zod13.z.object({
3731
+ firstName: import_zod13.z.string().min(2).max(50),
3732
+ lastName: import_zod13.z.string().min(2).max(50),
3733
+ title: import_zod13.z.string().min(2).max(100),
3734
+ email: import_zod13.z.string().email(),
3735
+ phoneNumber: import_zod13.z.string().regex(/^\+?[1-9]\d{1,14}$/, "Invalid phone number"),
3736
+ dateOfBirth: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date()),
3737
+ gender: import_zod13.z.enum(["male", "female", "other"]),
3738
+ profileImageUrl: import_zod13.z.string().url().optional(),
3739
+ bio: import_zod13.z.string().max(1e3).optional(),
3740
+ languages: import_zod13.z.array(import_zod13.z.string()).min(1)
3741
+ });
3742
+ var practitionerCertificationSchema = import_zod13.z.object({
3743
+ level: import_zod13.z.nativeEnum(CertificationLevel),
3744
+ specialties: import_zod13.z.array(import_zod13.z.nativeEnum(CertificationSpecialty)),
3745
+ licenseNumber: import_zod13.z.string().min(3).max(50),
3746
+ issuingAuthority: import_zod13.z.string().min(2).max(100),
3747
+ issueDate: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date()),
3748
+ expiryDate: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date()).optional(),
3749
+ verificationStatus: import_zod13.z.enum(["pending", "verified", "rejected"])
3750
+ });
3751
+ var timeSlotSchema = import_zod13.z.object({
3752
+ start: import_zod13.z.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format"),
3753
+ end: import_zod13.z.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format")
3754
+ }).nullable();
3755
+ var practitionerWorkingHoursSchema = import_zod13.z.object({
3756
+ practitionerId: import_zod13.z.string().min(1),
3757
+ clinicId: import_zod13.z.string().min(1),
3758
+ monday: timeSlotSchema,
3759
+ tuesday: timeSlotSchema,
3760
+ wednesday: timeSlotSchema,
3761
+ thursday: timeSlotSchema,
3762
+ friday: timeSlotSchema,
3763
+ saturday: timeSlotSchema,
3764
+ sunday: timeSlotSchema,
3765
+ createdAt: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date()),
3766
+ updatedAt: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date())
3767
+ });
3768
+ var practitionerClinicWorkingHoursSchema = import_zod13.z.object({
3769
+ clinicId: import_zod13.z.string().min(1),
3770
+ workingHours: import_zod13.z.object({
3771
+ monday: timeSlotSchema,
3772
+ tuesday: timeSlotSchema,
3773
+ wednesday: timeSlotSchema,
3774
+ thursday: timeSlotSchema,
3775
+ friday: timeSlotSchema,
3776
+ saturday: timeSlotSchema,
3777
+ sunday: timeSlotSchema
3778
+ }),
3779
+ isActive: import_zod13.z.boolean(),
3780
+ createdAt: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date()),
3781
+ updatedAt: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date())
3782
+ });
3783
+ var practitionerSchema = import_zod13.z.object({
3784
+ id: import_zod13.z.string().min(1),
3785
+ userRef: import_zod13.z.string().min(1),
3786
+ basicInfo: practitionerBasicInfoSchema,
3787
+ certification: practitionerCertificationSchema,
3788
+ clinics: import_zod13.z.array(import_zod13.z.string()),
3789
+ clinicWorkingHours: import_zod13.z.array(practitionerClinicWorkingHoursSchema),
3790
+ clinicsInfo: import_zod13.z.array(clinicInfoSchema),
3791
+ procedures: import_zod13.z.array(import_zod13.z.string()),
3792
+ proceduresInfo: import_zod13.z.array(procedureSummaryInfoSchema),
3793
+ reviewInfo: practitionerReviewInfoSchema,
3794
+ isActive: import_zod13.z.boolean(),
3795
+ isVerified: import_zod13.z.boolean(),
3796
+ status: import_zod13.z.nativeEnum(PractitionerStatus),
3797
+ createdAt: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date()),
3798
+ updatedAt: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date())
3799
+ });
3800
+ var createPractitionerSchema = import_zod13.z.object({
3801
+ userRef: import_zod13.z.string().min(1),
3802
+ basicInfo: practitionerBasicInfoSchema,
3803
+ certification: practitionerCertificationSchema,
3804
+ clinics: import_zod13.z.array(import_zod13.z.string()).optional(),
3805
+ clinicWorkingHours: import_zod13.z.array(practitionerClinicWorkingHoursSchema).optional(),
3806
+ clinicsInfo: import_zod13.z.array(clinicInfoSchema).optional(),
3807
+ proceduresInfo: import_zod13.z.array(procedureSummaryInfoSchema).optional(),
3808
+ isActive: import_zod13.z.boolean(),
3809
+ isVerified: import_zod13.z.boolean(),
3810
+ status: import_zod13.z.nativeEnum(PractitionerStatus).optional()
3811
+ });
3812
+ var createDraftPractitionerSchema = import_zod13.z.object({
3813
+ basicInfo: practitionerBasicInfoSchema,
3814
+ certification: practitionerCertificationSchema,
3815
+ clinics: import_zod13.z.array(import_zod13.z.string()).optional(),
3816
+ clinicWorkingHours: import_zod13.z.array(practitionerClinicWorkingHoursSchema).optional(),
3817
+ clinicsInfo: import_zod13.z.array(clinicInfoSchema).optional(),
3818
+ proceduresInfo: import_zod13.z.array(procedureSummaryInfoSchema).optional(),
3819
+ isActive: import_zod13.z.boolean().optional().default(false),
3820
+ isVerified: import_zod13.z.boolean().optional().default(false)
3821
+ });
3822
+ var practitionerTokenSchema = import_zod13.z.object({
3823
+ id: import_zod13.z.string().min(1),
3824
+ token: import_zod13.z.string().min(6),
3825
+ practitionerId: import_zod13.z.string().min(1),
3826
+ email: import_zod13.z.string().email(),
3827
+ clinicId: import_zod13.z.string().min(1),
3828
+ status: import_zod13.z.nativeEnum(PractitionerTokenStatus),
3829
+ createdBy: import_zod13.z.string().min(1),
3830
+ createdAt: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date()),
3831
+ expiresAt: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date()),
3832
+ usedBy: import_zod13.z.string().optional(),
3833
+ usedAt: import_zod13.z.instanceof(import_firestore14.Timestamp).or(import_zod13.z.date()).optional()
3834
+ });
3835
+ var createPractitionerTokenSchema = import_zod13.z.object({
3836
+ practitionerId: import_zod13.z.string().min(1),
3837
+ email: import_zod13.z.string().email(),
3838
+ clinicId: import_zod13.z.string().min(1),
3839
+ expiresAt: import_zod13.z.date().optional()
3840
+ });
3841
+ var practitionerSignupSchema = import_zod13.z.object({
3842
+ email: import_zod13.z.string().email(),
3843
+ password: import_zod13.z.string().min(8),
3844
+ firstName: import_zod13.z.string().min(2).max(50),
3845
+ lastName: import_zod13.z.string().min(2).max(50),
3846
+ token: import_zod13.z.string().optional(),
3847
+ profileData: import_zod13.z.object({
3848
+ basicInfo: import_zod13.z.object({
3849
+ phoneNumber: import_zod13.z.string().optional(),
3850
+ profileImageUrl: import_zod13.z.string().optional(),
3851
+ gender: import_zod13.z.enum(["male", "female", "other"]).optional(),
3852
+ bio: import_zod13.z.string().optional()
3853
+ }).optional(),
3854
+ certification: import_zod13.z.any().optional()
3855
+ }).optional()
3856
+ });
3857
+
3858
+ // src/services/practitioner/practitioner.service.ts
3859
+ var import_zod14 = require("zod");
3841
3860
  var import_geofire_common2 = require("geofire-common");
3842
3861
  var PractitionerService = class extends BaseService {
3843
3862
  constructor(db, auth, app, clinicService) {
@@ -3906,7 +3925,7 @@ var PractitionerService = class extends BaseService {
3906
3925
  }
3907
3926
  return createdPractitioner;
3908
3927
  } catch (error) {
3909
- if (error instanceof import_zod13.z.ZodError) {
3928
+ if (error instanceof import_zod14.z.ZodError) {
3910
3929
  throw new Error(`Invalid practitioner data: ${error.message}`);
3911
3930
  }
3912
3931
  console.error("Error creating practitioner:", error);
@@ -3961,7 +3980,8 @@ var PractitionerService = class extends BaseService {
3961
3980
  name: clinicData.name,
3962
3981
  location: clinicData.location,
3963
3982
  contactInfo: clinicData.contactInfo,
3964
- featuredPhoto: clinicData.coverPhoto || "",
3983
+ // Make sure we're using the right property for featuredPhoto
3984
+ featuredPhoto: clinicData.featuredPhotos && clinicData.featuredPhotos.length > 0 ? clinicData.featuredPhotos[0] : clinicData.coverPhoto || "",
3965
3985
  description: clinicData.description || null
3966
3986
  });
3967
3987
  }
@@ -4018,7 +4038,7 @@ var PractitionerService = class extends BaseService {
4018
4038
  await (0, import_firestore15.setDoc)((0, import_firestore15.doc)(this.db, tokenPath), token);
4019
4039
  return { practitioner: savedPractitioner, token };
4020
4040
  } catch (error) {
4021
- if (error instanceof import_zod13.z.ZodError) {
4041
+ if (error instanceof import_zod14.z.ZodError) {
4022
4042
  throw new Error("Invalid practitioner data: " + error.message);
4023
4043
  }
4024
4044
  throw error;
@@ -4071,7 +4091,7 @@ var PractitionerService = class extends BaseService {
4071
4091
  await (0, import_firestore15.setDoc)((0, import_firestore15.doc)(this.db, tokenPath), token);
4072
4092
  return token;
4073
4093
  } catch (error) {
4074
- if (error instanceof import_zod13.z.ZodError) {
4094
+ if (error instanceof import_zod14.z.ZodError) {
4075
4095
  throw new Error("Invalid token data: " + error.message);
4076
4096
  }
4077
4097
  throw error;
@@ -4231,7 +4251,7 @@ var PractitionerService = class extends BaseService {
4231
4251
  }
4232
4252
  return updatedPractitioner;
4233
4253
  } catch (error) {
4234
- if (error instanceof import_zod13.z.ZodError) {
4254
+ if (error instanceof import_zod14.z.ZodError) {
4235
4255
  throw new Error(`Invalid practitioner update data: ${error.message}`);
4236
4256
  }
4237
4257
  console.error(`Error updating practitioner ${practitionerId}:`, error);
@@ -4759,7 +4779,7 @@ var UserService = class extends BaseService {
4759
4779
  });
4760
4780
  return this.getUserById(uid);
4761
4781
  } catch (error) {
4762
- if (error instanceof import_zod14.z.ZodError) {
4782
+ if (error instanceof import_zod15.z.ZodError) {
4763
4783
  throw USER_ERRORS.VALIDATION_ERROR;
4764
4784
  }
4765
4785
  throw error;
@@ -4846,7 +4866,7 @@ var UserService = class extends BaseService {
4846
4866
  // src/services/clinic/utils/clinic-group.utils.ts
4847
4867
  var import_firestore17 = require("firebase/firestore");
4848
4868
  var import_geofire_common3 = require("geofire-common");
4849
- var import_zod15 = require("zod");
4869
+ var import_zod16 = require("zod");
4850
4870
 
4851
4871
  // src/services/clinic/utils/photos.utils.ts
4852
4872
  var import_storage3 = require("firebase/storage");
@@ -5044,7 +5064,7 @@ async function createClinicGroup(db, data, ownerId, isDefault = false, clinicAdm
5044
5064
  });
5045
5065
  return groupData;
5046
5066
  } catch (error) {
5047
- if (error instanceof import_zod15.z.ZodError) {
5067
+ if (error instanceof import_zod16.z.ZodError) {
5048
5068
  console.error(
5049
5069
  "[CLINIC_GROUP] Zod validation error:",
5050
5070
  JSON.stringify(error.errors, null, 2)
@@ -5449,12 +5469,12 @@ var ClinicGroupService = class extends BaseService {
5449
5469
  // src/services/clinic/clinic.service.ts
5450
5470
  var import_firestore21 = require("firebase/firestore");
5451
5471
  var import_geofire_common7 = require("geofire-common");
5452
- var import_zod17 = require("zod");
5472
+ var import_zod18 = require("zod");
5453
5473
 
5454
5474
  // src/services/clinic/utils/clinic.utils.ts
5455
5475
  var import_firestore18 = require("firebase/firestore");
5456
5476
  var import_geofire_common4 = require("geofire-common");
5457
- var import_zod16 = require("zod");
5477
+ var import_zod17 = require("zod");
5458
5478
  async function getClinic(db, clinicId) {
5459
5479
  const docRef = (0, import_firestore18.doc)(db, CLINICS_COLLECTION, clinicId);
5460
5480
  const docSnap = await (0, import_firestore18.getDoc)(docRef);
@@ -6126,7 +6146,7 @@ var ClinicService = class extends BaseService {
6126
6146
  if (!savedClinic) throw new Error("Failed to retrieve created clinic");
6127
6147
  return savedClinic;
6128
6148
  } catch (error) {
6129
- if (error instanceof import_zod17.z.ZodError) {
6149
+ if (error instanceof import_zod18.z.ZodError) {
6130
6150
  throw new Error("Invalid clinic data: " + error.message);
6131
6151
  }
6132
6152
  console.error("Error creating clinic:", error);
@@ -6174,7 +6194,7 @@ var ClinicService = class extends BaseService {
6174
6194
  if (!updatedClinic) throw new Error("Failed to retrieve updated clinic");
6175
6195
  return updatedClinic;
6176
6196
  } catch (error) {
6177
- if (error instanceof import_zod17.z.ZodError) {
6197
+ if (error instanceof import_zod18.z.ZodError) {
6178
6198
  throw new Error(
6179
6199
  "Invalid clinic update data: " + error.errors.map((e) => `${e.path.join(".")} - ${e.message}`).join(", ")
6180
6200
  );
@@ -6633,7 +6653,7 @@ var AuthService = class extends BaseService {
6633
6653
  clinicAdmin: adminProfile
6634
6654
  };
6635
6655
  } catch (error) {
6636
- if (error instanceof import_zod18.z.ZodError) {
6656
+ if (error instanceof import_zod19.z.ZodError) {
6637
6657
  console.error(
6638
6658
  "[AUTH] Zod validation error in signUpClinicAdmin:",
6639
6659
  JSON.stringify(error.errors, null, 2)
@@ -6806,7 +6826,7 @@ var AuthService = class extends BaseService {
6806
6826
  email
6807
6827
  );
6808
6828
  } catch (error) {
6809
- if (error instanceof import_zod18.z.ZodError) {
6829
+ if (error instanceof import_zod19.z.ZodError) {
6810
6830
  throw AUTH_ERRORS.VALIDATION_ERROR;
6811
6831
  }
6812
6832
  const firebaseError = error;
@@ -6929,7 +6949,7 @@ var AuthService = class extends BaseService {
6929
6949
  await emailSchema.parseAsync(email);
6930
6950
  await (0, import_auth5.sendPasswordResetEmail)(this.auth, email);
6931
6951
  } catch (error) {
6932
- if (error instanceof import_zod18.z.ZodError) {
6952
+ if (error instanceof import_zod19.z.ZodError) {
6933
6953
  throw AUTH_ERRORS.VALIDATION_ERROR;
6934
6954
  }
6935
6955
  const firebaseError = error;
@@ -6968,7 +6988,7 @@ var AuthService = class extends BaseService {
6968
6988
  await passwordSchema.parseAsync(newPassword);
6969
6989
  await (0, import_auth5.confirmPasswordReset)(this.auth, oobCode, newPassword);
6970
6990
  } catch (error) {
6971
- if (error instanceof import_zod18.z.ZodError) {
6991
+ if (error instanceof import_zod19.z.ZodError) {
6972
6992
  throw AUTH_ERRORS.VALIDATION_ERROR;
6973
6993
  }
6974
6994
  const firebaseError = error;
@@ -7137,7 +7157,7 @@ var AuthService = class extends BaseService {
7137
7157
  practitioner
7138
7158
  };
7139
7159
  } catch (error) {
7140
- if (error instanceof import_zod18.z.ZodError) {
7160
+ if (error instanceof import_zod19.z.ZodError) {
7141
7161
  console.error(
7142
7162
  "[AUTH] Zod validation error in signUpPractitioner:",
7143
7163
  JSON.stringify(error.errors, null, 2)
@@ -7402,59 +7422,59 @@ var import_firestore24 = require("firebase/firestore");
7402
7422
  var PROCEDURES_COLLECTION = "procedures";
7403
7423
 
7404
7424
  // src/validations/procedure.schema.ts
7405
- var import_zod19 = require("zod");
7406
- var createProcedureSchema = import_zod19.z.object({
7407
- name: import_zod19.z.string().min(1).max(200),
7408
- description: import_zod19.z.string().min(1).max(2e3),
7409
- family: import_zod19.z.nativeEnum(ProcedureFamily),
7410
- categoryId: import_zod19.z.string().min(1),
7411
- subcategoryId: import_zod19.z.string().min(1),
7412
- technologyId: import_zod19.z.string().min(1),
7413
- productId: import_zod19.z.string().min(1),
7414
- price: import_zod19.z.number().min(0),
7415
- currency: import_zod19.z.nativeEnum(Currency),
7416
- pricingMeasure: import_zod19.z.nativeEnum(PricingMeasure),
7417
- duration: import_zod19.z.number().min(1).max(480),
7425
+ var import_zod20 = require("zod");
7426
+ var createProcedureSchema = import_zod20.z.object({
7427
+ name: import_zod20.z.string().min(1).max(200),
7428
+ description: import_zod20.z.string().min(1).max(2e3),
7429
+ family: import_zod20.z.nativeEnum(ProcedureFamily),
7430
+ categoryId: import_zod20.z.string().min(1),
7431
+ subcategoryId: import_zod20.z.string().min(1),
7432
+ technologyId: import_zod20.z.string().min(1),
7433
+ productId: import_zod20.z.string().min(1),
7434
+ price: import_zod20.z.number().min(0),
7435
+ currency: import_zod20.z.nativeEnum(Currency),
7436
+ pricingMeasure: import_zod20.z.nativeEnum(PricingMeasure),
7437
+ duration: import_zod20.z.number().min(1).max(480),
7418
7438
  // Max 8 hours
7419
- practitionerId: import_zod19.z.string().min(1),
7420
- clinicBranchId: import_zod19.z.string().min(1)
7439
+ practitionerId: import_zod20.z.string().min(1),
7440
+ clinicBranchId: import_zod20.z.string().min(1)
7421
7441
  });
7422
- var updateProcedureSchema = import_zod19.z.object({
7423
- name: import_zod19.z.string().min(3).max(100).optional(),
7424
- description: import_zod19.z.string().min(3).max(1e3).optional(),
7425
- price: import_zod19.z.number().min(0).optional(),
7426
- currency: import_zod19.z.nativeEnum(Currency).optional(),
7427
- pricingMeasure: import_zod19.z.nativeEnum(PricingMeasure).optional(),
7428
- duration: import_zod19.z.number().min(0).optional(),
7429
- isActive: import_zod19.z.boolean().optional(),
7430
- practitionerId: import_zod19.z.string().optional(),
7431
- categoryId: import_zod19.z.string().optional(),
7432
- subcategoryId: import_zod19.z.string().optional(),
7433
- technologyId: import_zod19.z.string().optional(),
7434
- productId: import_zod19.z.string().optional(),
7435
- clinicBranchId: import_zod19.z.string().optional()
7442
+ var updateProcedureSchema = import_zod20.z.object({
7443
+ name: import_zod20.z.string().min(3).max(100).optional(),
7444
+ description: import_zod20.z.string().min(3).max(1e3).optional(),
7445
+ price: import_zod20.z.number().min(0).optional(),
7446
+ currency: import_zod20.z.nativeEnum(Currency).optional(),
7447
+ pricingMeasure: import_zod20.z.nativeEnum(PricingMeasure).optional(),
7448
+ duration: import_zod20.z.number().min(0).optional(),
7449
+ isActive: import_zod20.z.boolean().optional(),
7450
+ practitionerId: import_zod20.z.string().optional(),
7451
+ categoryId: import_zod20.z.string().optional(),
7452
+ subcategoryId: import_zod20.z.string().optional(),
7453
+ technologyId: import_zod20.z.string().optional(),
7454
+ productId: import_zod20.z.string().optional(),
7455
+ clinicBranchId: import_zod20.z.string().optional()
7436
7456
  });
7437
7457
  var procedureSchema = createProcedureSchema.extend({
7438
- id: import_zod19.z.string().min(1),
7439
- category: import_zod19.z.any(),
7458
+ id: import_zod20.z.string().min(1),
7459
+ category: import_zod20.z.any(),
7440
7460
  // We'll validate the full category object separately
7441
- subcategory: import_zod19.z.any(),
7461
+ subcategory: import_zod20.z.any(),
7442
7462
  // We'll validate the full subcategory object separately
7443
- technology: import_zod19.z.any(),
7463
+ technology: import_zod20.z.any(),
7444
7464
  // We'll validate the full technology object separately
7445
- product: import_zod19.z.any(),
7465
+ product: import_zod20.z.any(),
7446
7466
  // We'll validate the full product object separately
7447
- blockingConditions: import_zod19.z.array(import_zod19.z.any()),
7467
+ blockingConditions: import_zod20.z.array(import_zod20.z.any()),
7448
7468
  // We'll validate blocking conditions separately
7449
- treatmentBenefits: import_zod19.z.array(import_zod19.z.any()),
7469
+ treatmentBenefits: import_zod20.z.array(import_zod20.z.any()),
7450
7470
  // We'll validate treatment benefits separately
7451
- preRequirements: import_zod19.z.array(import_zod19.z.any()),
7471
+ preRequirements: import_zod20.z.array(import_zod20.z.any()),
7452
7472
  // We'll validate requirements separately
7453
- postRequirements: import_zod19.z.array(import_zod19.z.any()),
7473
+ postRequirements: import_zod20.z.array(import_zod20.z.any()),
7454
7474
  // We'll validate requirements separately
7455
- certificationRequirement: import_zod19.z.any(),
7475
+ certificationRequirement: import_zod20.z.any(),
7456
7476
  // We'll validate certification requirement separately
7457
- documentationTemplates: import_zod19.z.array(import_zod19.z.any()),
7477
+ documentationTemplates: import_zod20.z.array(import_zod20.z.any()),
7458
7478
  // We'll validate documentation templates separately
7459
7479
  clinicInfo: clinicInfoSchema,
7460
7480
  // Clinic info validation
@@ -7462,9 +7482,9 @@ var procedureSchema = createProcedureSchema.extend({
7462
7482
  // Doctor info validation
7463
7483
  reviewInfo: procedureReviewInfoSchema,
7464
7484
  // Procedure review info validation
7465
- isActive: import_zod19.z.boolean(),
7466
- createdAt: import_zod19.z.date(),
7467
- updatedAt: import_zod19.z.date()
7485
+ isActive: import_zod20.z.boolean(),
7486
+ createdAt: import_zod20.z.date(),
7487
+ updatedAt: import_zod20.z.date()
7468
7488
  });
7469
7489
 
7470
7490
  // src/services/procedure/procedure.service.ts
@@ -8499,42 +8519,42 @@ var SYNCED_CALENDARS_COLLECTION = "syncedCalendars";
8499
8519
  var import_firestore37 = require("firebase/firestore");
8500
8520
 
8501
8521
  // src/validations/calendar.schema.ts
8502
- var import_zod21 = require("zod");
8522
+ var import_zod22 = require("zod");
8503
8523
  var import_firestore28 = require("firebase/firestore");
8504
8524
 
8505
8525
  // src/validations/profile-info.schema.ts
8506
- var import_zod20 = require("zod");
8526
+ var import_zod21 = require("zod");
8507
8527
  var import_firestore27 = require("firebase/firestore");
8508
- var clinicInfoSchema2 = import_zod20.z.object({
8509
- id: import_zod20.z.string(),
8510
- featuredPhoto: import_zod20.z.string(),
8511
- name: import_zod20.z.string(),
8512
- description: import_zod20.z.string(),
8528
+ var clinicInfoSchema2 = import_zod21.z.object({
8529
+ id: import_zod21.z.string(),
8530
+ featuredPhoto: import_zod21.z.string(),
8531
+ name: import_zod21.z.string(),
8532
+ description: import_zod21.z.string(),
8513
8533
  location: clinicLocationSchema,
8514
8534
  contactInfo: clinicContactInfoSchema
8515
8535
  });
8516
- var practitionerProfileInfoSchema = import_zod20.z.object({
8517
- id: import_zod20.z.string(),
8518
- practitionerPhoto: import_zod20.z.string().nullable(),
8519
- name: import_zod20.z.string(),
8520
- email: import_zod20.z.string().email(),
8521
- phone: import_zod20.z.string().nullable(),
8536
+ var practitionerProfileInfoSchema = import_zod21.z.object({
8537
+ id: import_zod21.z.string(),
8538
+ practitionerPhoto: import_zod21.z.string().nullable(),
8539
+ name: import_zod21.z.string(),
8540
+ email: import_zod21.z.string().email(),
8541
+ phone: import_zod21.z.string().nullable(),
8522
8542
  certification: practitionerCertificationSchema
8523
8543
  });
8524
- var patientProfileInfoSchema = import_zod20.z.object({
8525
- id: import_zod20.z.string(),
8526
- fullName: import_zod20.z.string(),
8527
- email: import_zod20.z.string().email(),
8528
- phone: import_zod20.z.string().nullable(),
8529
- dateOfBirth: import_zod20.z.instanceof(import_firestore27.Timestamp),
8530
- gender: import_zod20.z.nativeEnum(Gender)
8544
+ var patientProfileInfoSchema = import_zod21.z.object({
8545
+ id: import_zod21.z.string(),
8546
+ fullName: import_zod21.z.string(),
8547
+ email: import_zod21.z.string().email(),
8548
+ phone: import_zod21.z.string().nullable(),
8549
+ dateOfBirth: import_zod21.z.instanceof(import_firestore27.Timestamp),
8550
+ gender: import_zod21.z.nativeEnum(Gender)
8531
8551
  });
8532
8552
 
8533
8553
  // src/validations/calendar.schema.ts
8534
8554
  var MIN_APPOINTMENT_DURATION = 15;
8535
- var calendarEventTimeSchema = import_zod21.z.object({
8536
- start: import_zod21.z.instanceof(Date).or(import_zod21.z.instanceof(import_firestore28.Timestamp)),
8537
- end: import_zod21.z.instanceof(Date).or(import_zod21.z.instanceof(import_firestore28.Timestamp))
8555
+ var calendarEventTimeSchema = import_zod22.z.object({
8556
+ start: import_zod22.z.instanceof(Date).or(import_zod22.z.instanceof(import_firestore28.Timestamp)),
8557
+ end: import_zod22.z.instanceof(Date).or(import_zod22.z.instanceof(import_firestore28.Timestamp))
8538
8558
  }).refine(
8539
8559
  (data) => {
8540
8560
  const startDate = data.start instanceof import_firestore28.Timestamp ? data.start.toDate() : data.start;
@@ -8555,46 +8575,46 @@ var calendarEventTimeSchema = import_zod21.z.object({
8555
8575
  path: ["start"]
8556
8576
  }
8557
8577
  );
8558
- var timeSlotSchema2 = import_zod21.z.object({
8559
- start: import_zod21.z.date(),
8560
- end: import_zod21.z.date(),
8561
- isAvailable: import_zod21.z.boolean()
8578
+ var timeSlotSchema2 = import_zod22.z.object({
8579
+ start: import_zod22.z.date(),
8580
+ end: import_zod22.z.date(),
8581
+ isAvailable: import_zod22.z.boolean()
8562
8582
  }).refine((data) => data.start < data.end, {
8563
8583
  message: "End time must be after start time",
8564
8584
  path: ["end"]
8565
8585
  });
8566
- var syncedCalendarEventSchema = import_zod21.z.object({
8567
- eventId: import_zod21.z.string(),
8568
- syncedCalendarProvider: import_zod21.z.nativeEnum(SyncedCalendarProvider),
8569
- syncedAt: import_zod21.z.instanceof(Date).or(import_zod21.z.instanceof(import_firestore28.Timestamp))
8586
+ var syncedCalendarEventSchema = import_zod22.z.object({
8587
+ eventId: import_zod22.z.string(),
8588
+ syncedCalendarProvider: import_zod22.z.nativeEnum(SyncedCalendarProvider),
8589
+ syncedAt: import_zod22.z.instanceof(Date).or(import_zod22.z.instanceof(import_firestore28.Timestamp))
8570
8590
  });
8571
- var procedureInfoSchema = import_zod21.z.object({
8572
- name: import_zod21.z.string(),
8573
- description: import_zod21.z.string(),
8574
- duration: import_zod21.z.number().min(MIN_APPOINTMENT_DURATION),
8575
- price: import_zod21.z.number().min(0),
8576
- currency: import_zod21.z.nativeEnum(Currency)
8591
+ var procedureInfoSchema = import_zod22.z.object({
8592
+ name: import_zod22.z.string(),
8593
+ description: import_zod22.z.string(),
8594
+ duration: import_zod22.z.number().min(MIN_APPOINTMENT_DURATION),
8595
+ price: import_zod22.z.number().min(0),
8596
+ currency: import_zod22.z.nativeEnum(Currency)
8577
8597
  });
8578
- var procedureCategorizationSchema = import_zod21.z.object({
8579
- procedureFamily: import_zod21.z.string(),
8598
+ var procedureCategorizationSchema = import_zod22.z.object({
8599
+ procedureFamily: import_zod22.z.string(),
8580
8600
  // Replace with proper enum when available
8581
- procedureCategory: import_zod21.z.string(),
8601
+ procedureCategory: import_zod22.z.string(),
8582
8602
  // Replace with proper enum when available
8583
- procedureSubcategory: import_zod21.z.string(),
8603
+ procedureSubcategory: import_zod22.z.string(),
8584
8604
  // Replace with proper enum when available
8585
- procedureTechnology: import_zod21.z.string(),
8605
+ procedureTechnology: import_zod22.z.string(),
8586
8606
  // Replace with proper enum when available
8587
- procedureProduct: import_zod21.z.string()
8607
+ procedureProduct: import_zod22.z.string()
8588
8608
  // Replace with proper enum when available
8589
8609
  });
8590
- var createAppointmentSchema2 = import_zod21.z.object({
8591
- clinicId: import_zod21.z.string().min(1, "Clinic ID is required"),
8592
- doctorId: import_zod21.z.string().min(1, "Doctor ID is required"),
8593
- patientId: import_zod21.z.string().min(1, "Patient ID is required"),
8594
- procedureId: import_zod21.z.string().min(1, "Procedure ID is required"),
8610
+ var createAppointmentSchema2 = import_zod22.z.object({
8611
+ clinicId: import_zod22.z.string().min(1, "Clinic ID is required"),
8612
+ doctorId: import_zod22.z.string().min(1, "Doctor ID is required"),
8613
+ patientId: import_zod22.z.string().min(1, "Patient ID is required"),
8614
+ procedureId: import_zod22.z.string().min(1, "Procedure ID is required"),
8595
8615
  eventLocation: clinicLocationSchema,
8596
8616
  eventTime: calendarEventTimeSchema,
8597
- description: import_zod21.z.string().optional()
8617
+ description: import_zod22.z.string().optional()
8598
8618
  }).refine(
8599
8619
  (data) => {
8600
8620
  return true;
@@ -8603,73 +8623,73 @@ var createAppointmentSchema2 = import_zod21.z.object({
8603
8623
  message: "Invalid appointment parameters"
8604
8624
  }
8605
8625
  );
8606
- var updateAppointmentSchema2 = import_zod21.z.object({
8607
- appointmentId: import_zod21.z.string().min(1, "Appointment ID is required"),
8608
- clinicId: import_zod21.z.string().min(1, "Clinic ID is required"),
8609
- doctorId: import_zod21.z.string().min(1, "Doctor ID is required"),
8610
- patientId: import_zod21.z.string().min(1, "Patient ID is required"),
8626
+ var updateAppointmentSchema2 = import_zod22.z.object({
8627
+ appointmentId: import_zod22.z.string().min(1, "Appointment ID is required"),
8628
+ clinicId: import_zod22.z.string().min(1, "Clinic ID is required"),
8629
+ doctorId: import_zod22.z.string().min(1, "Doctor ID is required"),
8630
+ patientId: import_zod22.z.string().min(1, "Patient ID is required"),
8611
8631
  eventTime: calendarEventTimeSchema.optional(),
8612
- description: import_zod21.z.string().optional(),
8613
- status: import_zod21.z.nativeEnum(CalendarEventStatus).optional()
8632
+ description: import_zod22.z.string().optional(),
8633
+ status: import_zod22.z.nativeEnum(CalendarEventStatus).optional()
8614
8634
  });
8615
- var createCalendarEventSchema = import_zod21.z.object({
8616
- id: import_zod21.z.string(),
8617
- clinicBranchId: import_zod21.z.string().nullable().optional(),
8618
- clinicBranchInfo: import_zod21.z.any().nullable().optional(),
8619
- practitionerProfileId: import_zod21.z.string().nullable().optional(),
8635
+ var createCalendarEventSchema = import_zod22.z.object({
8636
+ id: import_zod22.z.string(),
8637
+ clinicBranchId: import_zod22.z.string().nullable().optional(),
8638
+ clinicBranchInfo: import_zod22.z.any().nullable().optional(),
8639
+ practitionerProfileId: import_zod22.z.string().nullable().optional(),
8620
8640
  practitionerProfileInfo: practitionerProfileInfoSchema.nullable().optional(),
8621
- patientProfileId: import_zod21.z.string().nullable().optional(),
8641
+ patientProfileId: import_zod22.z.string().nullable().optional(),
8622
8642
  patientProfileInfo: patientProfileInfoSchema.nullable().optional(),
8623
- procedureId: import_zod21.z.string().nullable().optional(),
8624
- appointmentId: import_zod21.z.string().nullable().optional(),
8625
- syncedCalendarEventId: import_zod21.z.array(syncedCalendarEventSchema).nullable().optional(),
8626
- eventName: import_zod21.z.string().min(1, "Event name is required"),
8643
+ procedureId: import_zod22.z.string().nullable().optional(),
8644
+ appointmentId: import_zod22.z.string().nullable().optional(),
8645
+ syncedCalendarEventId: import_zod22.z.array(syncedCalendarEventSchema).nullable().optional(),
8646
+ eventName: import_zod22.z.string().min(1, "Event name is required"),
8627
8647
  eventLocation: clinicLocationSchema.optional(),
8628
8648
  eventTime: calendarEventTimeSchema,
8629
- description: import_zod21.z.string().optional(),
8630
- status: import_zod21.z.nativeEnum(CalendarEventStatus),
8631
- syncStatus: import_zod21.z.nativeEnum(CalendarSyncStatus),
8632
- eventType: import_zod21.z.nativeEnum(CalendarEventType),
8633
- createdAt: import_zod21.z.any(),
8649
+ description: import_zod22.z.string().optional(),
8650
+ status: import_zod22.z.nativeEnum(CalendarEventStatus),
8651
+ syncStatus: import_zod22.z.nativeEnum(CalendarSyncStatus),
8652
+ eventType: import_zod22.z.nativeEnum(CalendarEventType),
8653
+ createdAt: import_zod22.z.any(),
8634
8654
  // FieldValue for server timestamp
8635
- updatedAt: import_zod21.z.any()
8655
+ updatedAt: import_zod22.z.any()
8636
8656
  // FieldValue for server timestamp
8637
8657
  });
8638
- var updateCalendarEventSchema = import_zod21.z.object({
8639
- syncedCalendarEventId: import_zod21.z.array(syncedCalendarEventSchema).nullable().optional(),
8640
- appointmentId: import_zod21.z.string().nullable().optional(),
8641
- eventName: import_zod21.z.string().optional(),
8658
+ var updateCalendarEventSchema = import_zod22.z.object({
8659
+ syncedCalendarEventId: import_zod22.z.array(syncedCalendarEventSchema).nullable().optional(),
8660
+ appointmentId: import_zod22.z.string().nullable().optional(),
8661
+ eventName: import_zod22.z.string().optional(),
8642
8662
  eventTime: calendarEventTimeSchema.optional(),
8643
- description: import_zod21.z.string().optional(),
8644
- status: import_zod21.z.nativeEnum(CalendarEventStatus).optional(),
8645
- syncStatus: import_zod21.z.nativeEnum(CalendarSyncStatus).optional(),
8646
- eventType: import_zod21.z.nativeEnum(CalendarEventType).optional(),
8647
- updatedAt: import_zod21.z.any()
8663
+ description: import_zod22.z.string().optional(),
8664
+ status: import_zod22.z.nativeEnum(CalendarEventStatus).optional(),
8665
+ syncStatus: import_zod22.z.nativeEnum(CalendarSyncStatus).optional(),
8666
+ eventType: import_zod22.z.nativeEnum(CalendarEventType).optional(),
8667
+ updatedAt: import_zod22.z.any()
8648
8668
  // FieldValue for server timestamp
8649
8669
  });
8650
- var calendarEventSchema = import_zod21.z.object({
8651
- id: import_zod21.z.string(),
8652
- clinicBranchId: import_zod21.z.string().nullable().optional(),
8653
- clinicBranchInfo: import_zod21.z.any().nullable().optional(),
8670
+ var calendarEventSchema = import_zod22.z.object({
8671
+ id: import_zod22.z.string(),
8672
+ clinicBranchId: import_zod22.z.string().nullable().optional(),
8673
+ clinicBranchInfo: import_zod22.z.any().nullable().optional(),
8654
8674
  // Will be replaced with proper clinic info schema
8655
- practitionerProfileId: import_zod21.z.string().nullable().optional(),
8675
+ practitionerProfileId: import_zod22.z.string().nullable().optional(),
8656
8676
  practitionerProfileInfo: practitionerProfileInfoSchema.nullable().optional(),
8657
- patientProfileId: import_zod21.z.string().nullable().optional(),
8677
+ patientProfileId: import_zod22.z.string().nullable().optional(),
8658
8678
  patientProfileInfo: patientProfileInfoSchema.nullable().optional(),
8659
- procedureId: import_zod21.z.string().nullable().optional(),
8679
+ procedureId: import_zod22.z.string().nullable().optional(),
8660
8680
  procedureInfo: procedureInfoSchema.nullable().optional(),
8661
8681
  procedureCategorization: procedureCategorizationSchema.nullable().optional(),
8662
- appointmentId: import_zod21.z.string().nullable().optional(),
8663
- syncedCalendarEventId: import_zod21.z.array(syncedCalendarEventSchema).nullable().optional(),
8664
- eventName: import_zod21.z.string(),
8682
+ appointmentId: import_zod22.z.string().nullable().optional(),
8683
+ syncedCalendarEventId: import_zod22.z.array(syncedCalendarEventSchema).nullable().optional(),
8684
+ eventName: import_zod22.z.string(),
8665
8685
  eventLocation: clinicLocationSchema.optional(),
8666
8686
  eventTime: calendarEventTimeSchema,
8667
- description: import_zod21.z.string().optional(),
8668
- status: import_zod21.z.nativeEnum(CalendarEventStatus),
8669
- syncStatus: import_zod21.z.nativeEnum(CalendarSyncStatus),
8670
- eventType: import_zod21.z.nativeEnum(CalendarEventType),
8671
- createdAt: import_zod21.z.instanceof(Date).or(import_zod21.z.instanceof(import_firestore28.Timestamp)),
8672
- updatedAt: import_zod21.z.instanceof(Date).or(import_zod21.z.instanceof(import_firestore28.Timestamp))
8687
+ description: import_zod22.z.string().optional(),
8688
+ status: import_zod22.z.nativeEnum(CalendarEventStatus),
8689
+ syncStatus: import_zod22.z.nativeEnum(CalendarSyncStatus),
8690
+ eventType: import_zod22.z.nativeEnum(CalendarEventType),
8691
+ createdAt: import_zod22.z.instanceof(Date).or(import_zod22.z.instanceof(import_firestore28.Timestamp)),
8692
+ updatedAt: import_zod22.z.instanceof(Date).or(import_zod22.z.instanceof(import_firestore28.Timestamp))
8673
8693
  });
8674
8694
 
8675
8695
  // src/services/calendar/utils/clinic.utils.ts
@@ -11207,7 +11227,7 @@ var import_firestore38 = require("firebase/firestore");
11207
11227
  var REVIEWS_COLLECTION = "reviews";
11208
11228
 
11209
11229
  // src/services/reviews/reviews.service.ts
11210
- var import_zod22 = require("zod");
11230
+ var import_zod23 = require("zod");
11211
11231
  var ReviewService = class extends BaseService {
11212
11232
  constructor(db, auth, app) {
11213
11233
  super(db, auth, app);
@@ -11313,7 +11333,7 @@ var ReviewService = class extends BaseService {
11313
11333
  await Promise.all(updatePromises);
11314
11334
  return review;
11315
11335
  } catch (error) {
11316
- if (error instanceof import_zod22.z.ZodError) {
11336
+ if (error instanceof import_zod23.z.ZodError) {
11317
11337
  throw new Error(`Invalid review data: ${error.message}`);
11318
11338
  }
11319
11339
  throw error;
@@ -13576,54 +13596,54 @@ var ProductService = class extends BaseService {
13576
13596
  };
13577
13597
 
13578
13598
  // src/validations/notification.schema.ts
13579
- var import_zod23 = require("zod");
13580
- var baseNotificationSchema = import_zod23.z.object({
13581
- id: import_zod23.z.string().optional(),
13582
- userId: import_zod23.z.string(),
13583
- notificationTime: import_zod23.z.any(),
13599
+ var import_zod24 = require("zod");
13600
+ var baseNotificationSchema = import_zod24.z.object({
13601
+ id: import_zod24.z.string().optional(),
13602
+ userId: import_zod24.z.string(),
13603
+ notificationTime: import_zod24.z.any(),
13584
13604
  // Timestamp
13585
- notificationType: import_zod23.z.nativeEnum(NotificationType),
13586
- notificationTokens: import_zod23.z.array(import_zod23.z.string()),
13587
- status: import_zod23.z.nativeEnum(NotificationStatus),
13588
- createdAt: import_zod23.z.any().optional(),
13605
+ notificationType: import_zod24.z.nativeEnum(NotificationType),
13606
+ notificationTokens: import_zod24.z.array(import_zod24.z.string()),
13607
+ status: import_zod24.z.nativeEnum(NotificationStatus),
13608
+ createdAt: import_zod24.z.any().optional(),
13589
13609
  // Timestamp
13590
- updatedAt: import_zod23.z.any().optional(),
13610
+ updatedAt: import_zod24.z.any().optional(),
13591
13611
  // Timestamp
13592
- title: import_zod23.z.string(),
13593
- body: import_zod23.z.string(),
13594
- isRead: import_zod23.z.boolean(),
13595
- userRole: import_zod23.z.nativeEnum(UserRole)
13612
+ title: import_zod24.z.string(),
13613
+ body: import_zod24.z.string(),
13614
+ isRead: import_zod24.z.boolean(),
13615
+ userRole: import_zod24.z.nativeEnum(UserRole)
13596
13616
  });
13597
13617
  var preRequirementNotificationSchema = baseNotificationSchema.extend({
13598
- notificationType: import_zod23.z.literal("preRequirement" /* PRE_REQUIREMENT */),
13599
- treatmentId: import_zod23.z.string(),
13600
- requirements: import_zod23.z.array(import_zod23.z.string()),
13601
- deadline: import_zod23.z.any()
13618
+ notificationType: import_zod24.z.literal("preRequirement" /* PRE_REQUIREMENT */),
13619
+ treatmentId: import_zod24.z.string(),
13620
+ requirements: import_zod24.z.array(import_zod24.z.string()),
13621
+ deadline: import_zod24.z.any()
13602
13622
  // Timestamp
13603
13623
  });
13604
13624
  var postRequirementNotificationSchema = baseNotificationSchema.extend({
13605
- notificationType: import_zod23.z.literal("postRequirement" /* POST_REQUIREMENT */),
13606
- treatmentId: import_zod23.z.string(),
13607
- requirements: import_zod23.z.array(import_zod23.z.string()),
13608
- deadline: import_zod23.z.any()
13625
+ notificationType: import_zod24.z.literal("postRequirement" /* POST_REQUIREMENT */),
13626
+ treatmentId: import_zod24.z.string(),
13627
+ requirements: import_zod24.z.array(import_zod24.z.string()),
13628
+ deadline: import_zod24.z.any()
13609
13629
  // Timestamp
13610
13630
  });
13611
13631
  var appointmentReminderNotificationSchema = baseNotificationSchema.extend({
13612
- notificationType: import_zod23.z.literal("appointmentReminder" /* APPOINTMENT_REMINDER */),
13613
- appointmentId: import_zod23.z.string(),
13614
- appointmentTime: import_zod23.z.any(),
13632
+ notificationType: import_zod24.z.literal("appointmentReminder" /* APPOINTMENT_REMINDER */),
13633
+ appointmentId: import_zod24.z.string(),
13634
+ appointmentTime: import_zod24.z.any(),
13615
13635
  // Timestamp
13616
- treatmentType: import_zod23.z.string(),
13617
- doctorName: import_zod23.z.string()
13636
+ treatmentType: import_zod24.z.string(),
13637
+ doctorName: import_zod24.z.string()
13618
13638
  });
13619
13639
  var appointmentNotificationSchema = baseNotificationSchema.extend({
13620
- notificationType: import_zod23.z.literal("appointmentNotification" /* APPOINTMENT_NOTIFICATION */),
13621
- appointmentId: import_zod23.z.string(),
13622
- appointmentStatus: import_zod23.z.string(),
13623
- previousStatus: import_zod23.z.string(),
13624
- reason: import_zod23.z.string().optional()
13640
+ notificationType: import_zod24.z.literal("appointmentNotification" /* APPOINTMENT_NOTIFICATION */),
13641
+ appointmentId: import_zod24.z.string(),
13642
+ appointmentStatus: import_zod24.z.string(),
13643
+ previousStatus: import_zod24.z.string(),
13644
+ reason: import_zod24.z.string().optional()
13625
13645
  });
13626
- var notificationSchema = import_zod23.z.discriminatedUnion("notificationType", [
13646
+ var notificationSchema = import_zod24.z.discriminatedUnion("notificationType", [
13627
13647
  preRequirementNotificationSchema,
13628
13648
  postRequirementNotificationSchema,
13629
13649
  appointmentReminderNotificationSchema,
@@ -13764,7 +13784,6 @@ var RequirementType = /* @__PURE__ */ ((RequirementType2) => {
13764
13784
  clinicContactInfoSchema,
13765
13785
  clinicGroupSchema,
13766
13786
  clinicGroupSetupSchema,
13767
- clinicInfoSchema,
13768
13787
  clinicLocationSchema,
13769
13788
  clinicReviewInfoSchema,
13770
13789
  clinicReviewSchema,
@@ -13792,7 +13811,6 @@ var RequirementType = /* @__PURE__ */ ((RequirementType2) => {
13792
13811
  createProcedureReviewSchema,
13793
13812
  createReviewSchema,
13794
13813
  createUserOptionsSchema,
13795
- doctorInfoSchema,
13796
13814
  documentElementSchema,
13797
13815
  documentElementWithoutIdSchema,
13798
13816
  documentTemplateSchema,
@@ -13831,7 +13849,6 @@ var RequirementType = /* @__PURE__ */ ((RequirementType2) => {
13831
13849
  procedureInfoSchema,
13832
13850
  procedureReviewInfoSchema,
13833
13851
  procedureReviewSchema,
13834
- procedureSummaryInfoSchema,
13835
13852
  requesterInfoSchema,
13836
13853
  reviewSchema,
13837
13854
  searchAppointmentsSchema,