@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.mjs CHANGED
@@ -255,7 +255,7 @@ var UserRole = /* @__PURE__ */ ((UserRole2) => {
255
255
  var USERS_COLLECTION = "users";
256
256
 
257
257
  // src/services/auth.service.ts
258
- import { z as z18 } from "zod";
258
+ import { z as z19 } from "zod";
259
259
 
260
260
  // src/validations/schemas.ts
261
261
  import { z as z3 } from "zod";
@@ -792,7 +792,7 @@ var USER_ERRORS = {
792
792
  };
793
793
 
794
794
  // src/services/user.service.ts
795
- import { z as z14 } from "zod";
795
+ import { z as z15 } from "zod";
796
796
 
797
797
  // src/services/patient/patient.service.ts
798
798
  import {
@@ -2525,7 +2525,7 @@ import {
2525
2525
  updateDoc as updateDoc7,
2526
2526
  setDoc as setDoc6,
2527
2527
  deleteDoc,
2528
- Timestamp as Timestamp7,
2528
+ Timestamp as Timestamp6,
2529
2529
  serverTimestamp as serverTimestamp8
2530
2530
  } from "firebase/firestore";
2531
2531
 
@@ -2654,52 +2654,8 @@ var SubscriptionModel = /* @__PURE__ */ ((SubscriptionModel2) => {
2654
2654
 
2655
2655
  // src/validations/clinic.schema.ts
2656
2656
  import { z as z12 } from "zod";
2657
- import { Timestamp as Timestamp6 } from "firebase/firestore";
2658
-
2659
- // src/validations/practitioner.schema.ts
2660
- import { z as z11 } from "zod";
2661
2657
  import { Timestamp as Timestamp5 } from "firebase/firestore";
2662
2658
 
2663
- // src/backoffice/types/static/certification.types.ts
2664
- var CertificationLevel = /* @__PURE__ */ ((CertificationLevel2) => {
2665
- CertificationLevel2["AESTHETICIAN"] = "aesthetician";
2666
- CertificationLevel2["NURSE_ASSISTANT"] = "nurse_assistant";
2667
- CertificationLevel2["NURSE"] = "nurse";
2668
- CertificationLevel2["NURSE_PRACTITIONER"] = "nurse_practitioner";
2669
- CertificationLevel2["PHYSICIAN_ASSISTANT"] = "physician_assistant";
2670
- CertificationLevel2["DOCTOR"] = "doctor";
2671
- CertificationLevel2["SPECIALIST"] = "specialist";
2672
- CertificationLevel2["PLASTIC_SURGEON"] = "plastic_surgeon";
2673
- return CertificationLevel2;
2674
- })(CertificationLevel || {});
2675
- var CertificationSpecialty = /* @__PURE__ */ ((CertificationSpecialty3) => {
2676
- CertificationSpecialty3["LASER"] = "laser";
2677
- CertificationSpecialty3["INJECTABLES"] = "injectables";
2678
- CertificationSpecialty3["CHEMICAL_PEELS"] = "chemical_peels";
2679
- CertificationSpecialty3["MICRODERMABRASION"] = "microdermabrasion";
2680
- CertificationSpecialty3["BODY_CONTOURING"] = "body_contouring";
2681
- CertificationSpecialty3["SKIN_CARE"] = "skin_care";
2682
- CertificationSpecialty3["WOUND_CARE"] = "wound_care";
2683
- CertificationSpecialty3["ANESTHESIA"] = "anesthesia";
2684
- return CertificationSpecialty3;
2685
- })(CertificationSpecialty || {});
2686
-
2687
- // src/types/practitioner/index.ts
2688
- var PRACTITIONERS_COLLECTION = "practitioners";
2689
- var REGISTER_TOKENS_COLLECTION = "register_tokens";
2690
- var PractitionerStatus = /* @__PURE__ */ ((PractitionerStatus2) => {
2691
- PractitionerStatus2["DRAFT"] = "draft";
2692
- PractitionerStatus2["ACTIVE"] = "active";
2693
- return PractitionerStatus2;
2694
- })(PractitionerStatus || {});
2695
- var PractitionerTokenStatus = /* @__PURE__ */ ((PractitionerTokenStatus2) => {
2696
- PractitionerTokenStatus2["ACTIVE"] = "active";
2697
- PractitionerTokenStatus2["USED"] = "used";
2698
- PractitionerTokenStatus2["EXPIRED"] = "expired";
2699
- PractitionerTokenStatus2["REVOKED"] = "revoked";
2700
- return PractitionerTokenStatus2;
2701
- })(PractitionerTokenStatus || {});
2702
-
2703
2659
  // src/validations/reviews.schema.ts
2704
2660
  import { z as z10 } from "zod";
2705
2661
  var baseReviewSchema = z10.object({
@@ -2833,6 +2789,9 @@ var createReviewSchema = z10.object({
2833
2789
  }
2834
2790
  );
2835
2791
 
2792
+ // src/validations/shared.schema.ts
2793
+ import { z as z11 } from "zod";
2794
+
2836
2795
  // src/backoffice/types/static/procedure-family.types.ts
2837
2796
  var ProcedureFamily = /* @__PURE__ */ ((ProcedureFamily2) => {
2838
2797
  ProcedureFamily2["AESTHETICS"] = "aesthetics";
@@ -2859,59 +2818,21 @@ var Currency = /* @__PURE__ */ ((Currency2) => {
2859
2818
  return Currency2;
2860
2819
  })(Currency || {});
2861
2820
 
2862
- // src/validations/practitioner.schema.ts
2863
- var practitionerBasicInfoSchema = z11.object({
2864
- firstName: z11.string().min(2).max(50),
2865
- lastName: z11.string().min(2).max(50),
2866
- title: z11.string().min(2).max(100),
2821
+ // src/validations/shared.schema.ts
2822
+ var sharedClinicContactInfoSchema = z11.object({
2867
2823
  email: z11.string().email(),
2868
- phoneNumber: z11.string().regex(/^\+?[1-9]\d{1,14}$/, "Invalid phone number"),
2869
- dateOfBirth: z11.instanceof(Timestamp5).or(z11.date()),
2870
- gender: z11.enum(["male", "female", "other"]),
2871
- profileImageUrl: z11.string().url().optional(),
2872
- bio: z11.string().max(1e3).optional(),
2873
- languages: z11.array(z11.string()).min(1)
2874
- });
2875
- var practitionerCertificationSchema = z11.object({
2876
- level: z11.nativeEnum(CertificationLevel),
2877
- specialties: z11.array(z11.nativeEnum(CertificationSpecialty)),
2878
- licenseNumber: z11.string().min(3).max(50),
2879
- issuingAuthority: z11.string().min(2).max(100),
2880
- issueDate: z11.instanceof(Timestamp5).or(z11.date()),
2881
- expiryDate: z11.instanceof(Timestamp5).or(z11.date()).optional(),
2882
- verificationStatus: z11.enum(["pending", "verified", "rejected"])
2883
- });
2884
- var timeSlotSchema = z11.object({
2885
- start: z11.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format"),
2886
- end: z11.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format")
2887
- }).nullable();
2888
- var practitionerWorkingHoursSchema = z11.object({
2889
- practitionerId: z11.string().min(1),
2890
- clinicId: z11.string().min(1),
2891
- monday: timeSlotSchema,
2892
- tuesday: timeSlotSchema,
2893
- wednesday: timeSlotSchema,
2894
- thursday: timeSlotSchema,
2895
- friday: timeSlotSchema,
2896
- saturday: timeSlotSchema,
2897
- sunday: timeSlotSchema,
2898
- createdAt: z11.instanceof(Timestamp5).or(z11.date()),
2899
- updatedAt: z11.instanceof(Timestamp5).or(z11.date())
2824
+ phoneNumber: z11.string(),
2825
+ alternativePhoneNumber: z11.string().nullable().optional(),
2826
+ website: z11.string().nullable().optional()
2900
2827
  });
2901
- var practitionerClinicWorkingHoursSchema = z11.object({
2902
- clinicId: z11.string().min(1),
2903
- workingHours: z11.object({
2904
- monday: timeSlotSchema,
2905
- tuesday: timeSlotSchema,
2906
- wednesday: timeSlotSchema,
2907
- thursday: timeSlotSchema,
2908
- friday: timeSlotSchema,
2909
- saturday: timeSlotSchema,
2910
- sunday: timeSlotSchema
2911
- }),
2912
- isActive: z11.boolean(),
2913
- createdAt: z11.instanceof(Timestamp5).or(z11.date()),
2914
- updatedAt: z11.instanceof(Timestamp5).or(z11.date())
2828
+ var sharedClinicLocationSchema = z11.object({
2829
+ address: z11.string(),
2830
+ city: z11.string(),
2831
+ country: z11.string(),
2832
+ postalCode: z11.string(),
2833
+ latitude: z11.number().min(-90).max(90),
2834
+ longitude: z11.number().min(-180).max(180),
2835
+ geohash: z11.string().nullable().optional()
2915
2836
  });
2916
2837
  var procedureSummaryInfoSchema = z11.object({
2917
2838
  id: z11.string().min(1),
@@ -2931,79 +2852,22 @@ var procedureSummaryInfoSchema = z11.object({
2931
2852
  practitionerId: z11.string().min(1),
2932
2853
  practitionerName: z11.string().min(1)
2933
2854
  });
2934
- var practitionerSchema = z11.object({
2935
- id: z11.string().min(1),
2936
- userRef: z11.string().min(1),
2937
- basicInfo: practitionerBasicInfoSchema,
2938
- certification: practitionerCertificationSchema,
2939
- clinics: z11.array(z11.string()),
2940
- clinicWorkingHours: z11.array(practitionerClinicWorkingHoursSchema),
2941
- clinicsInfo: z11.array(clinicInfoSchema),
2942
- procedures: z11.array(z11.string()),
2943
- proceduresInfo: z11.array(procedureSummaryInfoSchema),
2944
- reviewInfo: practitionerReviewInfoSchema,
2945
- isActive: z11.boolean(),
2946
- isVerified: z11.boolean(),
2947
- status: z11.nativeEnum(PractitionerStatus),
2948
- createdAt: z11.instanceof(Timestamp5).or(z11.date()),
2949
- updatedAt: z11.instanceof(Timestamp5).or(z11.date())
2950
- });
2951
- var createPractitionerSchema = z11.object({
2952
- userRef: z11.string().min(1),
2953
- basicInfo: practitionerBasicInfoSchema,
2954
- certification: practitionerCertificationSchema,
2955
- clinics: z11.array(z11.string()).optional(),
2956
- clinicWorkingHours: z11.array(practitionerClinicWorkingHoursSchema).optional(),
2957
- clinicsInfo: z11.array(clinicInfoSchema).optional(),
2958
- proceduresInfo: z11.array(procedureSummaryInfoSchema).optional(),
2959
- isActive: z11.boolean(),
2960
- isVerified: z11.boolean(),
2961
- status: z11.nativeEnum(PractitionerStatus).optional()
2962
- });
2963
- var createDraftPractitionerSchema = z11.object({
2964
- basicInfo: practitionerBasicInfoSchema,
2965
- certification: practitionerCertificationSchema,
2966
- clinics: z11.array(z11.string()).optional(),
2967
- clinicWorkingHours: z11.array(practitionerClinicWorkingHoursSchema).optional(),
2968
- clinicsInfo: z11.array(clinicInfoSchema).optional(),
2969
- proceduresInfo: z11.array(procedureSummaryInfoSchema).optional(),
2970
- isActive: z11.boolean().optional().default(false),
2971
- isVerified: z11.boolean().optional().default(false)
2972
- });
2973
- var practitionerTokenSchema = z11.object({
2974
- id: z11.string().min(1),
2975
- token: z11.string().min(6),
2976
- practitionerId: z11.string().min(1),
2977
- email: z11.string().email(),
2978
- clinicId: z11.string().min(1),
2979
- status: z11.nativeEnum(PractitionerTokenStatus),
2980
- createdBy: z11.string().min(1),
2981
- createdAt: z11.instanceof(Timestamp5).or(z11.date()),
2982
- expiresAt: z11.instanceof(Timestamp5).or(z11.date()),
2983
- usedBy: z11.string().optional(),
2984
- usedAt: z11.instanceof(Timestamp5).or(z11.date()).optional()
2985
- });
2986
- var createPractitionerTokenSchema = z11.object({
2987
- practitionerId: z11.string().min(1),
2988
- email: z11.string().email(),
2989
- clinicId: z11.string().min(1),
2990
- expiresAt: z11.date().optional()
2855
+ var clinicInfoSchema = z11.object({
2856
+ id: z11.string(),
2857
+ featuredPhoto: z11.string(),
2858
+ name: z11.string(),
2859
+ description: z11.string().nullable().optional(),
2860
+ location: sharedClinicLocationSchema,
2861
+ contactInfo: sharedClinicContactInfoSchema
2991
2862
  });
2992
- var practitionerSignupSchema = z11.object({
2993
- email: z11.string().email(),
2994
- password: z11.string().min(8),
2995
- firstName: z11.string().min(2).max(50),
2996
- lastName: z11.string().min(2).max(50),
2997
- token: z11.string().optional(),
2998
- profileData: z11.object({
2999
- basicInfo: z11.object({
3000
- phoneNumber: z11.string().optional(),
3001
- profileImageUrl: z11.string().optional(),
3002
- gender: z11.enum(["male", "female", "other"]).optional(),
3003
- bio: z11.string().optional()
3004
- }).optional(),
3005
- certification: z11.any().optional()
3006
- }).optional()
2863
+ var doctorInfoSchema = z11.object({
2864
+ id: z11.string(),
2865
+ name: z11.string(),
2866
+ description: z11.string().nullable().optional(),
2867
+ photo: z11.string(),
2868
+ rating: z11.number().min(0).max(5),
2869
+ services: z11.array(z11.string())
2870
+ // List of procedure IDs practitioner offers
3007
2871
  });
3008
2872
 
3009
2873
  // src/validations/clinic.schema.ts
@@ -3056,23 +2920,6 @@ var adminInfoSchema = z12.object({
3056
2920
  name: z12.string(),
3057
2921
  email: z12.string().email()
3058
2922
  });
3059
- var clinicInfoSchema = z12.object({
3060
- id: z12.string(),
3061
- featuredPhoto: z12.string(),
3062
- name: z12.string(),
3063
- description: z12.string().nullable().optional(),
3064
- location: clinicLocationSchema,
3065
- contactInfo: clinicContactInfoSchema
3066
- });
3067
- var doctorInfoSchema = z12.object({
3068
- id: z12.string(),
3069
- name: z12.string(),
3070
- description: z12.string().nullable().optional(),
3071
- photo: z12.string(),
3072
- rating: z12.number().min(0).max(5),
3073
- services: z12.array(z12.string())
3074
- // List of procedure IDs practitioner offers
3075
- });
3076
2923
  var clinicAdminSchema = z12.object({
3077
2924
  id: z12.string(),
3078
2925
  userRef: z12.string(),
@@ -3082,8 +2929,8 @@ var clinicAdminSchema = z12.object({
3082
2929
  clinicsManagedInfo: z12.array(clinicInfoSchema),
3083
2930
  contactInfo: contactPersonSchema,
3084
2931
  roleTitle: z12.string(),
3085
- createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp6)),
3086
- updatedAt: z12.instanceof(Date).or(z12.instanceof(Timestamp6)),
2932
+ createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
2933
+ updatedAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
3087
2934
  isActive: z12.boolean()
3088
2935
  });
3089
2936
  var adminTokenSchema = z12.object({
@@ -3092,9 +2939,9 @@ var adminTokenSchema = z12.object({
3092
2939
  email: z12.string().email().optional().nullable(),
3093
2940
  status: z12.nativeEnum(AdminTokenStatus),
3094
2941
  usedByUserRef: z12.string().optional(),
3095
- createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp6)),
2942
+ createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
3096
2943
  // Timestamp
3097
- expiresAt: z12.instanceof(Date).or(z12.instanceof(Timestamp6))
2944
+ expiresAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5))
3098
2945
  // Timestamp
3099
2946
  });
3100
2947
  var createAdminTokenSchema = z12.object({
@@ -3114,9 +2961,9 @@ var clinicGroupSchema = z12.object({
3114
2961
  adminsInfo: z12.array(adminInfoSchema),
3115
2962
  adminTokens: z12.array(adminTokenSchema),
3116
2963
  ownerId: z12.string().nullable(),
3117
- createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp6)),
2964
+ createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
3118
2965
  // Timestamp
3119
- updatedAt: z12.instanceof(Date).or(z12.instanceof(Timestamp6)),
2966
+ updatedAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
3120
2967
  // Timestamp
3121
2968
  isActive: z12.boolean(),
3122
2969
  logo: z12.string().optional().nullable(),
@@ -3156,9 +3003,9 @@ var clinicSchema = z12.object({
3156
3003
  // servicesInfo: z.array(serviceInfoSchema), // Deprecated, use proceduresInfo
3157
3004
  reviewInfo: clinicReviewInfoSchema,
3158
3005
  admins: z12.array(z12.string()),
3159
- createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp6)),
3006
+ createdAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
3160
3007
  // Timestamp
3161
- updatedAt: z12.instanceof(Date).or(z12.instanceof(Timestamp6)),
3008
+ updatedAt: z12.instanceof(Date).or(z12.instanceof(Timestamp5)),
3162
3009
  // Timestamp
3163
3010
  isActive: z12.boolean(),
3164
3011
  isVerified: z12.boolean(),
@@ -3368,8 +3215,8 @@ async function createClinicAdmin(db, data, clinicGroupService) {
3368
3215
  try {
3369
3216
  clinicAdminSchema.parse({
3370
3217
  ...adminData,
3371
- createdAt: Timestamp7.now(),
3372
- updatedAt: Timestamp7.now()
3218
+ createdAt: Timestamp6.now(),
3219
+ updatedAt: Timestamp6.now()
3373
3220
  });
3374
3221
  console.log("[CLINIC_ADMIN] Admin object validation passed");
3375
3222
  } catch (schemaError) {
@@ -3738,7 +3585,182 @@ import {
3738
3585
  arrayUnion as arrayUnion5,
3739
3586
  arrayRemove as arrayRemove4
3740
3587
  } from "firebase/firestore";
3588
+
3589
+ // src/types/practitioner/index.ts
3590
+ var PRACTITIONERS_COLLECTION = "practitioners";
3591
+ var REGISTER_TOKENS_COLLECTION = "register_tokens";
3592
+ var PractitionerStatus = /* @__PURE__ */ ((PractitionerStatus2) => {
3593
+ PractitionerStatus2["DRAFT"] = "draft";
3594
+ PractitionerStatus2["ACTIVE"] = "active";
3595
+ return PractitionerStatus2;
3596
+ })(PractitionerStatus || {});
3597
+ var PractitionerTokenStatus = /* @__PURE__ */ ((PractitionerTokenStatus2) => {
3598
+ PractitionerTokenStatus2["ACTIVE"] = "active";
3599
+ PractitionerTokenStatus2["USED"] = "used";
3600
+ PractitionerTokenStatus2["EXPIRED"] = "expired";
3601
+ PractitionerTokenStatus2["REVOKED"] = "revoked";
3602
+ return PractitionerTokenStatus2;
3603
+ })(PractitionerTokenStatus || {});
3604
+
3605
+ // src/validations/practitioner.schema.ts
3741
3606
  import { z as z13 } from "zod";
3607
+ import { Timestamp as Timestamp7 } from "firebase/firestore";
3608
+
3609
+ // src/backoffice/types/static/certification.types.ts
3610
+ var CertificationLevel = /* @__PURE__ */ ((CertificationLevel2) => {
3611
+ CertificationLevel2["AESTHETICIAN"] = "aesthetician";
3612
+ CertificationLevel2["NURSE_ASSISTANT"] = "nurse_assistant";
3613
+ CertificationLevel2["NURSE"] = "nurse";
3614
+ CertificationLevel2["NURSE_PRACTITIONER"] = "nurse_practitioner";
3615
+ CertificationLevel2["PHYSICIAN_ASSISTANT"] = "physician_assistant";
3616
+ CertificationLevel2["DOCTOR"] = "doctor";
3617
+ CertificationLevel2["SPECIALIST"] = "specialist";
3618
+ CertificationLevel2["PLASTIC_SURGEON"] = "plastic_surgeon";
3619
+ return CertificationLevel2;
3620
+ })(CertificationLevel || {});
3621
+ var CertificationSpecialty = /* @__PURE__ */ ((CertificationSpecialty3) => {
3622
+ CertificationSpecialty3["LASER"] = "laser";
3623
+ CertificationSpecialty3["INJECTABLES"] = "injectables";
3624
+ CertificationSpecialty3["CHEMICAL_PEELS"] = "chemical_peels";
3625
+ CertificationSpecialty3["MICRODERMABRASION"] = "microdermabrasion";
3626
+ CertificationSpecialty3["BODY_CONTOURING"] = "body_contouring";
3627
+ CertificationSpecialty3["SKIN_CARE"] = "skin_care";
3628
+ CertificationSpecialty3["WOUND_CARE"] = "wound_care";
3629
+ CertificationSpecialty3["ANESTHESIA"] = "anesthesia";
3630
+ return CertificationSpecialty3;
3631
+ })(CertificationSpecialty || {});
3632
+
3633
+ // src/validations/practitioner.schema.ts
3634
+ var practitionerBasicInfoSchema = z13.object({
3635
+ firstName: z13.string().min(2).max(50),
3636
+ lastName: z13.string().min(2).max(50),
3637
+ title: z13.string().min(2).max(100),
3638
+ email: z13.string().email(),
3639
+ phoneNumber: z13.string().regex(/^\+?[1-9]\d{1,14}$/, "Invalid phone number"),
3640
+ dateOfBirth: z13.instanceof(Timestamp7).or(z13.date()),
3641
+ gender: z13.enum(["male", "female", "other"]),
3642
+ profileImageUrl: z13.string().url().optional(),
3643
+ bio: z13.string().max(1e3).optional(),
3644
+ languages: z13.array(z13.string()).min(1)
3645
+ });
3646
+ var practitionerCertificationSchema = z13.object({
3647
+ level: z13.nativeEnum(CertificationLevel),
3648
+ specialties: z13.array(z13.nativeEnum(CertificationSpecialty)),
3649
+ licenseNumber: z13.string().min(3).max(50),
3650
+ issuingAuthority: z13.string().min(2).max(100),
3651
+ issueDate: z13.instanceof(Timestamp7).or(z13.date()),
3652
+ expiryDate: z13.instanceof(Timestamp7).or(z13.date()).optional(),
3653
+ verificationStatus: z13.enum(["pending", "verified", "rejected"])
3654
+ });
3655
+ var timeSlotSchema = z13.object({
3656
+ start: z13.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format"),
3657
+ end: z13.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format")
3658
+ }).nullable();
3659
+ var practitionerWorkingHoursSchema = z13.object({
3660
+ practitionerId: z13.string().min(1),
3661
+ clinicId: z13.string().min(1),
3662
+ monday: timeSlotSchema,
3663
+ tuesday: timeSlotSchema,
3664
+ wednesday: timeSlotSchema,
3665
+ thursday: timeSlotSchema,
3666
+ friday: timeSlotSchema,
3667
+ saturday: timeSlotSchema,
3668
+ sunday: timeSlotSchema,
3669
+ createdAt: z13.instanceof(Timestamp7).or(z13.date()),
3670
+ updatedAt: z13.instanceof(Timestamp7).or(z13.date())
3671
+ });
3672
+ var practitionerClinicWorkingHoursSchema = z13.object({
3673
+ clinicId: z13.string().min(1),
3674
+ workingHours: z13.object({
3675
+ monday: timeSlotSchema,
3676
+ tuesday: timeSlotSchema,
3677
+ wednesday: timeSlotSchema,
3678
+ thursday: timeSlotSchema,
3679
+ friday: timeSlotSchema,
3680
+ saturday: timeSlotSchema,
3681
+ sunday: timeSlotSchema
3682
+ }),
3683
+ isActive: z13.boolean(),
3684
+ createdAt: z13.instanceof(Timestamp7).or(z13.date()),
3685
+ updatedAt: z13.instanceof(Timestamp7).or(z13.date())
3686
+ });
3687
+ var practitionerSchema = z13.object({
3688
+ id: z13.string().min(1),
3689
+ userRef: z13.string().min(1),
3690
+ basicInfo: practitionerBasicInfoSchema,
3691
+ certification: practitionerCertificationSchema,
3692
+ clinics: z13.array(z13.string()),
3693
+ clinicWorkingHours: z13.array(practitionerClinicWorkingHoursSchema),
3694
+ clinicsInfo: z13.array(clinicInfoSchema),
3695
+ procedures: z13.array(z13.string()),
3696
+ proceduresInfo: z13.array(procedureSummaryInfoSchema),
3697
+ reviewInfo: practitionerReviewInfoSchema,
3698
+ isActive: z13.boolean(),
3699
+ isVerified: z13.boolean(),
3700
+ status: z13.nativeEnum(PractitionerStatus),
3701
+ createdAt: z13.instanceof(Timestamp7).or(z13.date()),
3702
+ updatedAt: z13.instanceof(Timestamp7).or(z13.date())
3703
+ });
3704
+ var createPractitionerSchema = z13.object({
3705
+ userRef: z13.string().min(1),
3706
+ basicInfo: practitionerBasicInfoSchema,
3707
+ certification: practitionerCertificationSchema,
3708
+ clinics: z13.array(z13.string()).optional(),
3709
+ clinicWorkingHours: z13.array(practitionerClinicWorkingHoursSchema).optional(),
3710
+ clinicsInfo: z13.array(clinicInfoSchema).optional(),
3711
+ proceduresInfo: z13.array(procedureSummaryInfoSchema).optional(),
3712
+ isActive: z13.boolean(),
3713
+ isVerified: z13.boolean(),
3714
+ status: z13.nativeEnum(PractitionerStatus).optional()
3715
+ });
3716
+ var createDraftPractitionerSchema = z13.object({
3717
+ basicInfo: practitionerBasicInfoSchema,
3718
+ certification: practitionerCertificationSchema,
3719
+ clinics: z13.array(z13.string()).optional(),
3720
+ clinicWorkingHours: z13.array(practitionerClinicWorkingHoursSchema).optional(),
3721
+ clinicsInfo: z13.array(clinicInfoSchema).optional(),
3722
+ proceduresInfo: z13.array(procedureSummaryInfoSchema).optional(),
3723
+ isActive: z13.boolean().optional().default(false),
3724
+ isVerified: z13.boolean().optional().default(false)
3725
+ });
3726
+ var practitionerTokenSchema = z13.object({
3727
+ id: z13.string().min(1),
3728
+ token: z13.string().min(6),
3729
+ practitionerId: z13.string().min(1),
3730
+ email: z13.string().email(),
3731
+ clinicId: z13.string().min(1),
3732
+ status: z13.nativeEnum(PractitionerTokenStatus),
3733
+ createdBy: z13.string().min(1),
3734
+ createdAt: z13.instanceof(Timestamp7).or(z13.date()),
3735
+ expiresAt: z13.instanceof(Timestamp7).or(z13.date()),
3736
+ usedBy: z13.string().optional(),
3737
+ usedAt: z13.instanceof(Timestamp7).or(z13.date()).optional()
3738
+ });
3739
+ var createPractitionerTokenSchema = z13.object({
3740
+ practitionerId: z13.string().min(1),
3741
+ email: z13.string().email(),
3742
+ clinicId: z13.string().min(1),
3743
+ expiresAt: z13.date().optional()
3744
+ });
3745
+ var practitionerSignupSchema = z13.object({
3746
+ email: z13.string().email(),
3747
+ password: z13.string().min(8),
3748
+ firstName: z13.string().min(2).max(50),
3749
+ lastName: z13.string().min(2).max(50),
3750
+ token: z13.string().optional(),
3751
+ profileData: z13.object({
3752
+ basicInfo: z13.object({
3753
+ phoneNumber: z13.string().optional(),
3754
+ profileImageUrl: z13.string().optional(),
3755
+ gender: z13.enum(["male", "female", "other"]).optional(),
3756
+ bio: z13.string().optional()
3757
+ }).optional(),
3758
+ certification: z13.any().optional()
3759
+ }).optional()
3760
+ });
3761
+
3762
+ // src/services/practitioner/practitioner.service.ts
3763
+ import { z as z14 } from "zod";
3742
3764
  import { distanceBetween } from "geofire-common";
3743
3765
  var PractitionerService = class extends BaseService {
3744
3766
  constructor(db, auth, app, clinicService) {
@@ -3807,7 +3829,7 @@ var PractitionerService = class extends BaseService {
3807
3829
  }
3808
3830
  return createdPractitioner;
3809
3831
  } catch (error) {
3810
- if (error instanceof z13.ZodError) {
3832
+ if (error instanceof z14.ZodError) {
3811
3833
  throw new Error(`Invalid practitioner data: ${error.message}`);
3812
3834
  }
3813
3835
  console.error("Error creating practitioner:", error);
@@ -3862,7 +3884,8 @@ var PractitionerService = class extends BaseService {
3862
3884
  name: clinicData.name,
3863
3885
  location: clinicData.location,
3864
3886
  contactInfo: clinicData.contactInfo,
3865
- featuredPhoto: clinicData.coverPhoto || "",
3887
+ // Make sure we're using the right property for featuredPhoto
3888
+ featuredPhoto: clinicData.featuredPhotos && clinicData.featuredPhotos.length > 0 ? clinicData.featuredPhotos[0] : clinicData.coverPhoto || "",
3866
3889
  description: clinicData.description || null
3867
3890
  });
3868
3891
  }
@@ -3919,7 +3942,7 @@ var PractitionerService = class extends BaseService {
3919
3942
  await setDoc7(doc8(this.db, tokenPath), token);
3920
3943
  return { practitioner: savedPractitioner, token };
3921
3944
  } catch (error) {
3922
- if (error instanceof z13.ZodError) {
3945
+ if (error instanceof z14.ZodError) {
3923
3946
  throw new Error("Invalid practitioner data: " + error.message);
3924
3947
  }
3925
3948
  throw error;
@@ -3972,7 +3995,7 @@ var PractitionerService = class extends BaseService {
3972
3995
  await setDoc7(doc8(this.db, tokenPath), token);
3973
3996
  return token;
3974
3997
  } catch (error) {
3975
- if (error instanceof z13.ZodError) {
3998
+ if (error instanceof z14.ZodError) {
3976
3999
  throw new Error("Invalid token data: " + error.message);
3977
4000
  }
3978
4001
  throw error;
@@ -4132,7 +4155,7 @@ var PractitionerService = class extends BaseService {
4132
4155
  }
4133
4156
  return updatedPractitioner;
4134
4157
  } catch (error) {
4135
- if (error instanceof z13.ZodError) {
4158
+ if (error instanceof z14.ZodError) {
4136
4159
  throw new Error(`Invalid practitioner update data: ${error.message}`);
4137
4160
  }
4138
4161
  console.error(`Error updating practitioner ${practitionerId}:`, error);
@@ -4660,7 +4683,7 @@ var UserService = class extends BaseService {
4660
4683
  });
4661
4684
  return this.getUserById(uid);
4662
4685
  } catch (error) {
4663
- if (error instanceof z14.ZodError) {
4686
+ if (error instanceof z15.ZodError) {
4664
4687
  throw USER_ERRORS.VALIDATION_ERROR;
4665
4688
  }
4666
4689
  throw error;
@@ -4757,7 +4780,7 @@ import {
4757
4780
  Timestamp as Timestamp10
4758
4781
  } from "firebase/firestore";
4759
4782
  import { geohashForLocation as geohashForLocation2 } from "geofire-common";
4760
- import { z as z15 } from "zod";
4783
+ import { z as z16 } from "zod";
4761
4784
 
4762
4785
  // src/services/clinic/utils/photos.utils.ts
4763
4786
  import {
@@ -4961,7 +4984,7 @@ async function createClinicGroup(db, data, ownerId, isDefault = false, clinicAdm
4961
4984
  });
4962
4985
  return groupData;
4963
4986
  } catch (error) {
4964
- if (error instanceof z15.ZodError) {
4987
+ if (error instanceof z16.ZodError) {
4965
4988
  console.error(
4966
4989
  "[CLINIC_GROUP] Zod validation error:",
4967
4990
  JSON.stringify(error.errors, null, 2)
@@ -5376,7 +5399,7 @@ import {
5376
5399
  import {
5377
5400
  geohashForLocation as geohashForLocation4
5378
5401
  } from "geofire-common";
5379
- import { z as z17 } from "zod";
5402
+ import { z as z18 } from "zod";
5380
5403
 
5381
5404
  // src/services/clinic/utils/clinic.utils.ts
5382
5405
  import {
@@ -5397,7 +5420,7 @@ import {
5397
5420
  distanceBetween as distanceBetween2,
5398
5421
  geohashQueryBounds
5399
5422
  } from "geofire-common";
5400
- import { z as z16 } from "zod";
5423
+ import { z as z17 } from "zod";
5401
5424
  async function getClinic(db, clinicId) {
5402
5425
  const docRef = doc11(db, CLINICS_COLLECTION, clinicId);
5403
5426
  const docSnap = await getDoc14(docRef);
@@ -6082,7 +6105,7 @@ var ClinicService = class extends BaseService {
6082
6105
  if (!savedClinic) throw new Error("Failed to retrieve created clinic");
6083
6106
  return savedClinic;
6084
6107
  } catch (error) {
6085
- if (error instanceof z17.ZodError) {
6108
+ if (error instanceof z18.ZodError) {
6086
6109
  throw new Error("Invalid clinic data: " + error.message);
6087
6110
  }
6088
6111
  console.error("Error creating clinic:", error);
@@ -6130,7 +6153,7 @@ var ClinicService = class extends BaseService {
6130
6153
  if (!updatedClinic) throw new Error("Failed to retrieve updated clinic");
6131
6154
  return updatedClinic;
6132
6155
  } catch (error) {
6133
- if (error instanceof z17.ZodError) {
6156
+ if (error instanceof z18.ZodError) {
6134
6157
  throw new Error(
6135
6158
  "Invalid clinic update data: " + error.errors.map((e) => `${e.path.join(".")} - ${e.message}`).join(", ")
6136
6159
  );
@@ -6589,7 +6612,7 @@ var AuthService = class extends BaseService {
6589
6612
  clinicAdmin: adminProfile
6590
6613
  };
6591
6614
  } catch (error) {
6592
- if (error instanceof z18.ZodError) {
6615
+ if (error instanceof z19.ZodError) {
6593
6616
  console.error(
6594
6617
  "[AUTH] Zod validation error in signUpClinicAdmin:",
6595
6618
  JSON.stringify(error.errors, null, 2)
@@ -6762,7 +6785,7 @@ var AuthService = class extends BaseService {
6762
6785
  email
6763
6786
  );
6764
6787
  } catch (error) {
6765
- if (error instanceof z18.ZodError) {
6788
+ if (error instanceof z19.ZodError) {
6766
6789
  throw AUTH_ERRORS.VALIDATION_ERROR;
6767
6790
  }
6768
6791
  const firebaseError = error;
@@ -6885,7 +6908,7 @@ var AuthService = class extends BaseService {
6885
6908
  await emailSchema.parseAsync(email);
6886
6909
  await sendPasswordResetEmail(this.auth, email);
6887
6910
  } catch (error) {
6888
- if (error instanceof z18.ZodError) {
6911
+ if (error instanceof z19.ZodError) {
6889
6912
  throw AUTH_ERRORS.VALIDATION_ERROR;
6890
6913
  }
6891
6914
  const firebaseError = error;
@@ -6924,7 +6947,7 @@ var AuthService = class extends BaseService {
6924
6947
  await passwordSchema.parseAsync(newPassword);
6925
6948
  await confirmPasswordReset(this.auth, oobCode, newPassword);
6926
6949
  } catch (error) {
6927
- if (error instanceof z18.ZodError) {
6950
+ if (error instanceof z19.ZodError) {
6928
6951
  throw AUTH_ERRORS.VALIDATION_ERROR;
6929
6952
  }
6930
6953
  const firebaseError = error;
@@ -7093,7 +7116,7 @@ var AuthService = class extends BaseService {
7093
7116
  practitioner
7094
7117
  };
7095
7118
  } catch (error) {
7096
- if (error instanceof z18.ZodError) {
7119
+ if (error instanceof z19.ZodError) {
7097
7120
  console.error(
7098
7121
  "[AUTH] Zod validation error in signUpPractitioner:",
7099
7122
  JSON.stringify(error.errors, null, 2)
@@ -7385,59 +7408,59 @@ import {
7385
7408
  var PROCEDURES_COLLECTION = "procedures";
7386
7409
 
7387
7410
  // src/validations/procedure.schema.ts
7388
- import { z as z19 } from "zod";
7389
- var createProcedureSchema = z19.object({
7390
- name: z19.string().min(1).max(200),
7391
- description: z19.string().min(1).max(2e3),
7392
- family: z19.nativeEnum(ProcedureFamily),
7393
- categoryId: z19.string().min(1),
7394
- subcategoryId: z19.string().min(1),
7395
- technologyId: z19.string().min(1),
7396
- productId: z19.string().min(1),
7397
- price: z19.number().min(0),
7398
- currency: z19.nativeEnum(Currency),
7399
- pricingMeasure: z19.nativeEnum(PricingMeasure),
7400
- duration: z19.number().min(1).max(480),
7411
+ import { z as z20 } from "zod";
7412
+ var createProcedureSchema = z20.object({
7413
+ name: z20.string().min(1).max(200),
7414
+ description: z20.string().min(1).max(2e3),
7415
+ family: z20.nativeEnum(ProcedureFamily),
7416
+ categoryId: z20.string().min(1),
7417
+ subcategoryId: z20.string().min(1),
7418
+ technologyId: z20.string().min(1),
7419
+ productId: z20.string().min(1),
7420
+ price: z20.number().min(0),
7421
+ currency: z20.nativeEnum(Currency),
7422
+ pricingMeasure: z20.nativeEnum(PricingMeasure),
7423
+ duration: z20.number().min(1).max(480),
7401
7424
  // Max 8 hours
7402
- practitionerId: z19.string().min(1),
7403
- clinicBranchId: z19.string().min(1)
7425
+ practitionerId: z20.string().min(1),
7426
+ clinicBranchId: z20.string().min(1)
7404
7427
  });
7405
- var updateProcedureSchema = z19.object({
7406
- name: z19.string().min(3).max(100).optional(),
7407
- description: z19.string().min(3).max(1e3).optional(),
7408
- price: z19.number().min(0).optional(),
7409
- currency: z19.nativeEnum(Currency).optional(),
7410
- pricingMeasure: z19.nativeEnum(PricingMeasure).optional(),
7411
- duration: z19.number().min(0).optional(),
7412
- isActive: z19.boolean().optional(),
7413
- practitionerId: z19.string().optional(),
7414
- categoryId: z19.string().optional(),
7415
- subcategoryId: z19.string().optional(),
7416
- technologyId: z19.string().optional(),
7417
- productId: z19.string().optional(),
7418
- clinicBranchId: z19.string().optional()
7428
+ var updateProcedureSchema = z20.object({
7429
+ name: z20.string().min(3).max(100).optional(),
7430
+ description: z20.string().min(3).max(1e3).optional(),
7431
+ price: z20.number().min(0).optional(),
7432
+ currency: z20.nativeEnum(Currency).optional(),
7433
+ pricingMeasure: z20.nativeEnum(PricingMeasure).optional(),
7434
+ duration: z20.number().min(0).optional(),
7435
+ isActive: z20.boolean().optional(),
7436
+ practitionerId: z20.string().optional(),
7437
+ categoryId: z20.string().optional(),
7438
+ subcategoryId: z20.string().optional(),
7439
+ technologyId: z20.string().optional(),
7440
+ productId: z20.string().optional(),
7441
+ clinicBranchId: z20.string().optional()
7419
7442
  });
7420
7443
  var procedureSchema = createProcedureSchema.extend({
7421
- id: z19.string().min(1),
7422
- category: z19.any(),
7444
+ id: z20.string().min(1),
7445
+ category: z20.any(),
7423
7446
  // We'll validate the full category object separately
7424
- subcategory: z19.any(),
7447
+ subcategory: z20.any(),
7425
7448
  // We'll validate the full subcategory object separately
7426
- technology: z19.any(),
7449
+ technology: z20.any(),
7427
7450
  // We'll validate the full technology object separately
7428
- product: z19.any(),
7451
+ product: z20.any(),
7429
7452
  // We'll validate the full product object separately
7430
- blockingConditions: z19.array(z19.any()),
7453
+ blockingConditions: z20.array(z20.any()),
7431
7454
  // We'll validate blocking conditions separately
7432
- treatmentBenefits: z19.array(z19.any()),
7455
+ treatmentBenefits: z20.array(z20.any()),
7433
7456
  // We'll validate treatment benefits separately
7434
- preRequirements: z19.array(z19.any()),
7457
+ preRequirements: z20.array(z20.any()),
7435
7458
  // We'll validate requirements separately
7436
- postRequirements: z19.array(z19.any()),
7459
+ postRequirements: z20.array(z20.any()),
7437
7460
  // We'll validate requirements separately
7438
- certificationRequirement: z19.any(),
7461
+ certificationRequirement: z20.any(),
7439
7462
  // We'll validate certification requirement separately
7440
- documentationTemplates: z19.array(z19.any()),
7463
+ documentationTemplates: z20.array(z20.any()),
7441
7464
  // We'll validate documentation templates separately
7442
7465
  clinicInfo: clinicInfoSchema,
7443
7466
  // Clinic info validation
@@ -7445,9 +7468,9 @@ var procedureSchema = createProcedureSchema.extend({
7445
7468
  // Doctor info validation
7446
7469
  reviewInfo: procedureReviewInfoSchema,
7447
7470
  // Procedure review info validation
7448
- isActive: z19.boolean(),
7449
- createdAt: z19.date(),
7450
- updatedAt: z19.date()
7471
+ isActive: z20.boolean(),
7472
+ createdAt: z20.date(),
7473
+ updatedAt: z20.date()
7451
7474
  });
7452
7475
 
7453
7476
  // src/services/procedure/procedure.service.ts
@@ -8516,42 +8539,42 @@ import {
8516
8539
  } from "firebase/firestore";
8517
8540
 
8518
8541
  // src/validations/calendar.schema.ts
8519
- import { z as z21 } from "zod";
8542
+ import { z as z22 } from "zod";
8520
8543
  import { Timestamp as Timestamp18 } from "firebase/firestore";
8521
8544
 
8522
8545
  // src/validations/profile-info.schema.ts
8523
- import { z as z20 } from "zod";
8546
+ import { z as z21 } from "zod";
8524
8547
  import { Timestamp as Timestamp17 } from "firebase/firestore";
8525
- var clinicInfoSchema2 = z20.object({
8526
- id: z20.string(),
8527
- featuredPhoto: z20.string(),
8528
- name: z20.string(),
8529
- description: z20.string(),
8548
+ var clinicInfoSchema2 = z21.object({
8549
+ id: z21.string(),
8550
+ featuredPhoto: z21.string(),
8551
+ name: z21.string(),
8552
+ description: z21.string(),
8530
8553
  location: clinicLocationSchema,
8531
8554
  contactInfo: clinicContactInfoSchema
8532
8555
  });
8533
- var practitionerProfileInfoSchema = z20.object({
8534
- id: z20.string(),
8535
- practitionerPhoto: z20.string().nullable(),
8536
- name: z20.string(),
8537
- email: z20.string().email(),
8538
- phone: z20.string().nullable(),
8556
+ var practitionerProfileInfoSchema = z21.object({
8557
+ id: z21.string(),
8558
+ practitionerPhoto: z21.string().nullable(),
8559
+ name: z21.string(),
8560
+ email: z21.string().email(),
8561
+ phone: z21.string().nullable(),
8539
8562
  certification: practitionerCertificationSchema
8540
8563
  });
8541
- var patientProfileInfoSchema = z20.object({
8542
- id: z20.string(),
8543
- fullName: z20.string(),
8544
- email: z20.string().email(),
8545
- phone: z20.string().nullable(),
8546
- dateOfBirth: z20.instanceof(Timestamp17),
8547
- gender: z20.nativeEnum(Gender)
8564
+ var patientProfileInfoSchema = z21.object({
8565
+ id: z21.string(),
8566
+ fullName: z21.string(),
8567
+ email: z21.string().email(),
8568
+ phone: z21.string().nullable(),
8569
+ dateOfBirth: z21.instanceof(Timestamp17),
8570
+ gender: z21.nativeEnum(Gender)
8548
8571
  });
8549
8572
 
8550
8573
  // src/validations/calendar.schema.ts
8551
8574
  var MIN_APPOINTMENT_DURATION = 15;
8552
- var calendarEventTimeSchema = z21.object({
8553
- start: z21.instanceof(Date).or(z21.instanceof(Timestamp18)),
8554
- end: z21.instanceof(Date).or(z21.instanceof(Timestamp18))
8575
+ var calendarEventTimeSchema = z22.object({
8576
+ start: z22.instanceof(Date).or(z22.instanceof(Timestamp18)),
8577
+ end: z22.instanceof(Date).or(z22.instanceof(Timestamp18))
8555
8578
  }).refine(
8556
8579
  (data) => {
8557
8580
  const startDate = data.start instanceof Timestamp18 ? data.start.toDate() : data.start;
@@ -8572,46 +8595,46 @@ var calendarEventTimeSchema = z21.object({
8572
8595
  path: ["start"]
8573
8596
  }
8574
8597
  );
8575
- var timeSlotSchema2 = z21.object({
8576
- start: z21.date(),
8577
- end: z21.date(),
8578
- isAvailable: z21.boolean()
8598
+ var timeSlotSchema2 = z22.object({
8599
+ start: z22.date(),
8600
+ end: z22.date(),
8601
+ isAvailable: z22.boolean()
8579
8602
  }).refine((data) => data.start < data.end, {
8580
8603
  message: "End time must be after start time",
8581
8604
  path: ["end"]
8582
8605
  });
8583
- var syncedCalendarEventSchema = z21.object({
8584
- eventId: z21.string(),
8585
- syncedCalendarProvider: z21.nativeEnum(SyncedCalendarProvider),
8586
- syncedAt: z21.instanceof(Date).or(z21.instanceof(Timestamp18))
8606
+ var syncedCalendarEventSchema = z22.object({
8607
+ eventId: z22.string(),
8608
+ syncedCalendarProvider: z22.nativeEnum(SyncedCalendarProvider),
8609
+ syncedAt: z22.instanceof(Date).or(z22.instanceof(Timestamp18))
8587
8610
  });
8588
- var procedureInfoSchema = z21.object({
8589
- name: z21.string(),
8590
- description: z21.string(),
8591
- duration: z21.number().min(MIN_APPOINTMENT_DURATION),
8592
- price: z21.number().min(0),
8593
- currency: z21.nativeEnum(Currency)
8611
+ var procedureInfoSchema = z22.object({
8612
+ name: z22.string(),
8613
+ description: z22.string(),
8614
+ duration: z22.number().min(MIN_APPOINTMENT_DURATION),
8615
+ price: z22.number().min(0),
8616
+ currency: z22.nativeEnum(Currency)
8594
8617
  });
8595
- var procedureCategorizationSchema = z21.object({
8596
- procedureFamily: z21.string(),
8618
+ var procedureCategorizationSchema = z22.object({
8619
+ procedureFamily: z22.string(),
8597
8620
  // Replace with proper enum when available
8598
- procedureCategory: z21.string(),
8621
+ procedureCategory: z22.string(),
8599
8622
  // Replace with proper enum when available
8600
- procedureSubcategory: z21.string(),
8623
+ procedureSubcategory: z22.string(),
8601
8624
  // Replace with proper enum when available
8602
- procedureTechnology: z21.string(),
8625
+ procedureTechnology: z22.string(),
8603
8626
  // Replace with proper enum when available
8604
- procedureProduct: z21.string()
8627
+ procedureProduct: z22.string()
8605
8628
  // Replace with proper enum when available
8606
8629
  });
8607
- var createAppointmentSchema2 = z21.object({
8608
- clinicId: z21.string().min(1, "Clinic ID is required"),
8609
- doctorId: z21.string().min(1, "Doctor ID is required"),
8610
- patientId: z21.string().min(1, "Patient ID is required"),
8611
- procedureId: z21.string().min(1, "Procedure ID is required"),
8630
+ var createAppointmentSchema2 = z22.object({
8631
+ clinicId: z22.string().min(1, "Clinic ID is required"),
8632
+ doctorId: z22.string().min(1, "Doctor ID is required"),
8633
+ patientId: z22.string().min(1, "Patient ID is required"),
8634
+ procedureId: z22.string().min(1, "Procedure ID is required"),
8612
8635
  eventLocation: clinicLocationSchema,
8613
8636
  eventTime: calendarEventTimeSchema,
8614
- description: z21.string().optional()
8637
+ description: z22.string().optional()
8615
8638
  }).refine(
8616
8639
  (data) => {
8617
8640
  return true;
@@ -8620,73 +8643,73 @@ var createAppointmentSchema2 = z21.object({
8620
8643
  message: "Invalid appointment parameters"
8621
8644
  }
8622
8645
  );
8623
- var updateAppointmentSchema2 = z21.object({
8624
- appointmentId: z21.string().min(1, "Appointment ID is required"),
8625
- clinicId: z21.string().min(1, "Clinic ID is required"),
8626
- doctorId: z21.string().min(1, "Doctor ID is required"),
8627
- patientId: z21.string().min(1, "Patient ID is required"),
8646
+ var updateAppointmentSchema2 = z22.object({
8647
+ appointmentId: z22.string().min(1, "Appointment ID is required"),
8648
+ clinicId: z22.string().min(1, "Clinic ID is required"),
8649
+ doctorId: z22.string().min(1, "Doctor ID is required"),
8650
+ patientId: z22.string().min(1, "Patient ID is required"),
8628
8651
  eventTime: calendarEventTimeSchema.optional(),
8629
- description: z21.string().optional(),
8630
- status: z21.nativeEnum(CalendarEventStatus).optional()
8652
+ description: z22.string().optional(),
8653
+ status: z22.nativeEnum(CalendarEventStatus).optional()
8631
8654
  });
8632
- var createCalendarEventSchema = z21.object({
8633
- id: z21.string(),
8634
- clinicBranchId: z21.string().nullable().optional(),
8635
- clinicBranchInfo: z21.any().nullable().optional(),
8636
- practitionerProfileId: z21.string().nullable().optional(),
8655
+ var createCalendarEventSchema = z22.object({
8656
+ id: z22.string(),
8657
+ clinicBranchId: z22.string().nullable().optional(),
8658
+ clinicBranchInfo: z22.any().nullable().optional(),
8659
+ practitionerProfileId: z22.string().nullable().optional(),
8637
8660
  practitionerProfileInfo: practitionerProfileInfoSchema.nullable().optional(),
8638
- patientProfileId: z21.string().nullable().optional(),
8661
+ patientProfileId: z22.string().nullable().optional(),
8639
8662
  patientProfileInfo: patientProfileInfoSchema.nullable().optional(),
8640
- procedureId: z21.string().nullable().optional(),
8641
- appointmentId: z21.string().nullable().optional(),
8642
- syncedCalendarEventId: z21.array(syncedCalendarEventSchema).nullable().optional(),
8643
- eventName: z21.string().min(1, "Event name is required"),
8663
+ procedureId: z22.string().nullable().optional(),
8664
+ appointmentId: z22.string().nullable().optional(),
8665
+ syncedCalendarEventId: z22.array(syncedCalendarEventSchema).nullable().optional(),
8666
+ eventName: z22.string().min(1, "Event name is required"),
8644
8667
  eventLocation: clinicLocationSchema.optional(),
8645
8668
  eventTime: calendarEventTimeSchema,
8646
- description: z21.string().optional(),
8647
- status: z21.nativeEnum(CalendarEventStatus),
8648
- syncStatus: z21.nativeEnum(CalendarSyncStatus),
8649
- eventType: z21.nativeEnum(CalendarEventType),
8650
- createdAt: z21.any(),
8669
+ description: z22.string().optional(),
8670
+ status: z22.nativeEnum(CalendarEventStatus),
8671
+ syncStatus: z22.nativeEnum(CalendarSyncStatus),
8672
+ eventType: z22.nativeEnum(CalendarEventType),
8673
+ createdAt: z22.any(),
8651
8674
  // FieldValue for server timestamp
8652
- updatedAt: z21.any()
8675
+ updatedAt: z22.any()
8653
8676
  // FieldValue for server timestamp
8654
8677
  });
8655
- var updateCalendarEventSchema = z21.object({
8656
- syncedCalendarEventId: z21.array(syncedCalendarEventSchema).nullable().optional(),
8657
- appointmentId: z21.string().nullable().optional(),
8658
- eventName: z21.string().optional(),
8678
+ var updateCalendarEventSchema = z22.object({
8679
+ syncedCalendarEventId: z22.array(syncedCalendarEventSchema).nullable().optional(),
8680
+ appointmentId: z22.string().nullable().optional(),
8681
+ eventName: z22.string().optional(),
8659
8682
  eventTime: calendarEventTimeSchema.optional(),
8660
- description: z21.string().optional(),
8661
- status: z21.nativeEnum(CalendarEventStatus).optional(),
8662
- syncStatus: z21.nativeEnum(CalendarSyncStatus).optional(),
8663
- eventType: z21.nativeEnum(CalendarEventType).optional(),
8664
- updatedAt: z21.any()
8683
+ description: z22.string().optional(),
8684
+ status: z22.nativeEnum(CalendarEventStatus).optional(),
8685
+ syncStatus: z22.nativeEnum(CalendarSyncStatus).optional(),
8686
+ eventType: z22.nativeEnum(CalendarEventType).optional(),
8687
+ updatedAt: z22.any()
8665
8688
  // FieldValue for server timestamp
8666
8689
  });
8667
- var calendarEventSchema = z21.object({
8668
- id: z21.string(),
8669
- clinicBranchId: z21.string().nullable().optional(),
8670
- clinicBranchInfo: z21.any().nullable().optional(),
8690
+ var calendarEventSchema = z22.object({
8691
+ id: z22.string(),
8692
+ clinicBranchId: z22.string().nullable().optional(),
8693
+ clinicBranchInfo: z22.any().nullable().optional(),
8671
8694
  // Will be replaced with proper clinic info schema
8672
- practitionerProfileId: z21.string().nullable().optional(),
8695
+ practitionerProfileId: z22.string().nullable().optional(),
8673
8696
  practitionerProfileInfo: practitionerProfileInfoSchema.nullable().optional(),
8674
- patientProfileId: z21.string().nullable().optional(),
8697
+ patientProfileId: z22.string().nullable().optional(),
8675
8698
  patientProfileInfo: patientProfileInfoSchema.nullable().optional(),
8676
- procedureId: z21.string().nullable().optional(),
8699
+ procedureId: z22.string().nullable().optional(),
8677
8700
  procedureInfo: procedureInfoSchema.nullable().optional(),
8678
8701
  procedureCategorization: procedureCategorizationSchema.nullable().optional(),
8679
- appointmentId: z21.string().nullable().optional(),
8680
- syncedCalendarEventId: z21.array(syncedCalendarEventSchema).nullable().optional(),
8681
- eventName: z21.string(),
8702
+ appointmentId: z22.string().nullable().optional(),
8703
+ syncedCalendarEventId: z22.array(syncedCalendarEventSchema).nullable().optional(),
8704
+ eventName: z22.string(),
8682
8705
  eventLocation: clinicLocationSchema.optional(),
8683
8706
  eventTime: calendarEventTimeSchema,
8684
- description: z21.string().optional(),
8685
- status: z21.nativeEnum(CalendarEventStatus),
8686
- syncStatus: z21.nativeEnum(CalendarSyncStatus),
8687
- eventType: z21.nativeEnum(CalendarEventType),
8688
- createdAt: z21.instanceof(Date).or(z21.instanceof(Timestamp18)),
8689
- updatedAt: z21.instanceof(Date).or(z21.instanceof(Timestamp18))
8707
+ description: z22.string().optional(),
8708
+ status: z22.nativeEnum(CalendarEventStatus),
8709
+ syncStatus: z22.nativeEnum(CalendarSyncStatus),
8710
+ eventType: z22.nativeEnum(CalendarEventType),
8711
+ createdAt: z22.instanceof(Date).or(z22.instanceof(Timestamp18)),
8712
+ updatedAt: z22.instanceof(Date).or(z22.instanceof(Timestamp18))
8690
8713
  });
8691
8714
 
8692
8715
  // src/services/calendar/utils/clinic.utils.ts
@@ -11297,7 +11320,7 @@ import {
11297
11320
  var REVIEWS_COLLECTION = "reviews";
11298
11321
 
11299
11322
  // src/services/reviews/reviews.service.ts
11300
- import { z as z22 } from "zod";
11323
+ import { z as z23 } from "zod";
11301
11324
  var ReviewService = class extends BaseService {
11302
11325
  constructor(db, auth, app) {
11303
11326
  super(db, auth, app);
@@ -11403,7 +11426,7 @@ var ReviewService = class extends BaseService {
11403
11426
  await Promise.all(updatePromises);
11404
11427
  return review;
11405
11428
  } catch (error) {
11406
- if (error instanceof z22.ZodError) {
11429
+ if (error instanceof z23.ZodError) {
11407
11430
  throw new Error(`Invalid review data: ${error.message}`);
11408
11431
  }
11409
11432
  throw error;
@@ -13729,54 +13752,54 @@ var ProductService = class extends BaseService {
13729
13752
  };
13730
13753
 
13731
13754
  // src/validations/notification.schema.ts
13732
- import { z as z23 } from "zod";
13733
- var baseNotificationSchema = z23.object({
13734
- id: z23.string().optional(),
13735
- userId: z23.string(),
13736
- notificationTime: z23.any(),
13755
+ import { z as z24 } from "zod";
13756
+ var baseNotificationSchema = z24.object({
13757
+ id: z24.string().optional(),
13758
+ userId: z24.string(),
13759
+ notificationTime: z24.any(),
13737
13760
  // Timestamp
13738
- notificationType: z23.nativeEnum(NotificationType),
13739
- notificationTokens: z23.array(z23.string()),
13740
- status: z23.nativeEnum(NotificationStatus),
13741
- createdAt: z23.any().optional(),
13761
+ notificationType: z24.nativeEnum(NotificationType),
13762
+ notificationTokens: z24.array(z24.string()),
13763
+ status: z24.nativeEnum(NotificationStatus),
13764
+ createdAt: z24.any().optional(),
13742
13765
  // Timestamp
13743
- updatedAt: z23.any().optional(),
13766
+ updatedAt: z24.any().optional(),
13744
13767
  // Timestamp
13745
- title: z23.string(),
13746
- body: z23.string(),
13747
- isRead: z23.boolean(),
13748
- userRole: z23.nativeEnum(UserRole)
13768
+ title: z24.string(),
13769
+ body: z24.string(),
13770
+ isRead: z24.boolean(),
13771
+ userRole: z24.nativeEnum(UserRole)
13749
13772
  });
13750
13773
  var preRequirementNotificationSchema = baseNotificationSchema.extend({
13751
- notificationType: z23.literal("preRequirement" /* PRE_REQUIREMENT */),
13752
- treatmentId: z23.string(),
13753
- requirements: z23.array(z23.string()),
13754
- deadline: z23.any()
13774
+ notificationType: z24.literal("preRequirement" /* PRE_REQUIREMENT */),
13775
+ treatmentId: z24.string(),
13776
+ requirements: z24.array(z24.string()),
13777
+ deadline: z24.any()
13755
13778
  // Timestamp
13756
13779
  });
13757
13780
  var postRequirementNotificationSchema = baseNotificationSchema.extend({
13758
- notificationType: z23.literal("postRequirement" /* POST_REQUIREMENT */),
13759
- treatmentId: z23.string(),
13760
- requirements: z23.array(z23.string()),
13761
- deadline: z23.any()
13781
+ notificationType: z24.literal("postRequirement" /* POST_REQUIREMENT */),
13782
+ treatmentId: z24.string(),
13783
+ requirements: z24.array(z24.string()),
13784
+ deadline: z24.any()
13762
13785
  // Timestamp
13763
13786
  });
13764
13787
  var appointmentReminderNotificationSchema = baseNotificationSchema.extend({
13765
- notificationType: z23.literal("appointmentReminder" /* APPOINTMENT_REMINDER */),
13766
- appointmentId: z23.string(),
13767
- appointmentTime: z23.any(),
13788
+ notificationType: z24.literal("appointmentReminder" /* APPOINTMENT_REMINDER */),
13789
+ appointmentId: z24.string(),
13790
+ appointmentTime: z24.any(),
13768
13791
  // Timestamp
13769
- treatmentType: z23.string(),
13770
- doctorName: z23.string()
13792
+ treatmentType: z24.string(),
13793
+ doctorName: z24.string()
13771
13794
  });
13772
13795
  var appointmentNotificationSchema = baseNotificationSchema.extend({
13773
- notificationType: z23.literal("appointmentNotification" /* APPOINTMENT_NOTIFICATION */),
13774
- appointmentId: z23.string(),
13775
- appointmentStatus: z23.string(),
13776
- previousStatus: z23.string(),
13777
- reason: z23.string().optional()
13796
+ notificationType: z24.literal("appointmentNotification" /* APPOINTMENT_NOTIFICATION */),
13797
+ appointmentId: z24.string(),
13798
+ appointmentStatus: z24.string(),
13799
+ previousStatus: z24.string(),
13800
+ reason: z24.string().optional()
13778
13801
  });
13779
- var notificationSchema = z23.discriminatedUnion("notificationType", [
13802
+ var notificationSchema = z24.discriminatedUnion("notificationType", [
13780
13803
  preRequirementNotificationSchema,
13781
13804
  postRequirementNotificationSchema,
13782
13805
  appointmentReminderNotificationSchema,
@@ -13916,7 +13939,6 @@ export {
13916
13939
  clinicContactInfoSchema,
13917
13940
  clinicGroupSchema,
13918
13941
  clinicGroupSetupSchema,
13919
- clinicInfoSchema,
13920
13942
  clinicLocationSchema,
13921
13943
  clinicReviewInfoSchema,
13922
13944
  clinicReviewSchema,
@@ -13944,7 +13966,6 @@ export {
13944
13966
  createProcedureReviewSchema,
13945
13967
  createReviewSchema,
13946
13968
  createUserOptionsSchema,
13947
- doctorInfoSchema,
13948
13969
  documentElementSchema,
13949
13970
  documentElementWithoutIdSchema,
13950
13971
  documentTemplateSchema,
@@ -13983,7 +14004,6 @@ export {
13983
14004
  procedureInfoSchema,
13984
14005
  procedureReviewInfoSchema,
13985
14006
  procedureReviewSchema,
13986
- procedureSummaryInfoSchema,
13987
14007
  requesterInfoSchema,
13988
14008
  reviewSchema,
13989
14009
  searchAppointmentsSchema,