@blackcode_sa/metaestetics-api 1.7.27 → 1.7.29

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.d.mts CHANGED
@@ -1433,6 +1433,7 @@ interface Practitioner {
1433
1433
  clinicWorkingHours: PractitionerClinicWorkingHours[];
1434
1434
  clinicsInfo: ClinicInfo[];
1435
1435
  procedures: string[];
1436
+ freeConsultations?: Record<string, string> | null;
1436
1437
  proceduresInfo: ProcedureSummaryInfo[];
1437
1438
  reviewInfo: PractitionerReviewInfo;
1438
1439
  isActive: boolean;
@@ -1451,6 +1452,7 @@ interface CreatePractitionerData {
1451
1452
  clinics?: string[];
1452
1453
  clinicWorkingHours?: PractitionerClinicWorkingHours[];
1453
1454
  clinicsInfo?: ClinicInfo[];
1455
+ freeConsultations?: Record<string, string> | null;
1454
1456
  isActive: boolean;
1455
1457
  isVerified: boolean;
1456
1458
  status?: PractitionerStatus;
@@ -1464,6 +1466,7 @@ interface CreateDraftPractitionerData {
1464
1466
  clinics?: string[];
1465
1467
  clinicWorkingHours?: PractitionerClinicWorkingHours[];
1466
1468
  clinicsInfo?: ClinicInfo[];
1469
+ freeConsultations?: Record<string, string> | null;
1467
1470
  isActive?: boolean;
1468
1471
  isVerified?: boolean;
1469
1472
  }
@@ -6008,12 +6011,166 @@ declare class ClinicAdminService extends BaseService {
6008
6011
  getActiveManagedClinics(adminId: string): Promise<Clinic[]>;
6009
6012
  }
6010
6013
 
6014
+ declare class ProcedureService extends BaseService {
6015
+ private categoryService;
6016
+ private subcategoryService;
6017
+ private technologyService;
6018
+ private productService;
6019
+ private mediaService;
6020
+ constructor(db: Firestore, auth: Auth, app: FirebaseApp, categoryService: CategoryService, subcategoryService: SubcategoryService, technologyService: TechnologyService, productService: ProductService, mediaService: MediaService);
6021
+ /**
6022
+ * Process media resource (string URL or File object)
6023
+ * @param media String URL or File object
6024
+ * @param ownerId Owner ID for the media (usually procedureId)
6025
+ * @param collectionName Collection name for organizing files
6026
+ * @returns URL string after processing
6027
+ */
6028
+ private processMedia;
6029
+ /**
6030
+ * Process array of media resources (strings or Files)
6031
+ * @param mediaArray Array of string URLs or File objects
6032
+ * @param ownerId Owner ID for the media
6033
+ * @param collectionName Collection name for organizing files
6034
+ * @returns Array of URL strings after processing
6035
+ */
6036
+ private processMediaArray;
6037
+ /**
6038
+ * Creates a new procedure
6039
+ * @param data - The data for creating a new procedure
6040
+ * @returns The created procedure
6041
+ */
6042
+ createProcedure(data: CreateProcedureData): Promise<Procedure>;
6043
+ /**
6044
+ * Gets a procedure by ID
6045
+ * @param id - The ID of the procedure to get
6046
+ * @returns The procedure if found, null otherwise
6047
+ */
6048
+ getProcedure(id: string): Promise<Procedure | null>;
6049
+ /**
6050
+ * Gets all procedures for a clinic branch
6051
+ * @param clinicBranchId - The ID of the clinic branch
6052
+ * @returns List of procedures
6053
+ */
6054
+ getProceduresByClinicBranch(clinicBranchId: string): Promise<Procedure[]>;
6055
+ /**
6056
+ * Gets all procedures for a practitioner
6057
+ * @param practitionerId - The ID of the practitioner
6058
+ * @returns List of procedures
6059
+ */
6060
+ getProceduresByPractitioner(practitionerId: string): Promise<Procedure[]>;
6061
+ /**
6062
+ * Updates a procedure
6063
+ * @param id - The ID of the procedure to update
6064
+ * @param data - The data to update the procedure with
6065
+ * @returns The updated procedure
6066
+ */
6067
+ updateProcedure(id: string, data: UpdateProcedureData): Promise<Procedure>;
6068
+ /**
6069
+ * Deactivates a procedure (soft delete)
6070
+ * @param id - The ID of the procedure to deactivate
6071
+ */
6072
+ deactivateProcedure(id: string): Promise<void>;
6073
+ /**
6074
+ * Deletes a procedure permanently
6075
+ * @param id - The ID of the procedure to delete
6076
+ * @returns A boolean indicating if the deletion was successful
6077
+ */
6078
+ deleteProcedure(id: string): Promise<boolean>;
6079
+ /**
6080
+ * Gets all procedures that a practitioner is certified to perform
6081
+ * @param practitioner - The practitioner's profile
6082
+ * @returns Object containing allowed technologies, families, categories, subcategories
6083
+ */
6084
+ getAllowedTechnologies(practitioner: Practitioner): Promise<{
6085
+ technologies: Technology[];
6086
+ families: ProcedureFamily[];
6087
+ categories: string[];
6088
+ subcategories: string[];
6089
+ }>;
6090
+ /**
6091
+ * Gets all procedures with optional pagination
6092
+ *
6093
+ * @param pagination - Optional number of procedures per page (0 or undefined returns all)
6094
+ * @param lastDoc - Optional last document for pagination (if continuing from a previous page)
6095
+ * @returns Object containing procedures array and the last document for pagination
6096
+ */
6097
+ getAllProcedures(pagination?: number, lastDoc?: any): Promise<{
6098
+ procedures: Procedure[];
6099
+ lastDoc: any;
6100
+ }>;
6101
+ /**
6102
+ * Searches and filters procedures based on multiple criteria
6103
+ *
6104
+ * @param filters - Various filters to apply
6105
+ * @param filters.nameSearch - Optional search text for procedure name
6106
+ * @param filters.treatmentBenefits - Optional array of treatment benefits to filter by
6107
+ * @param filters.procedureFamily - Optional procedure family to filter by
6108
+ * @param filters.procedureCategory - Optional procedure category to filter by
6109
+ * @param filters.procedureSubcategory - Optional procedure subcategory to filter by
6110
+ * @param filters.procedureTechnology - Optional procedure technology to filter by
6111
+ * @param filters.location - Optional location for distance-based search
6112
+ * @param filters.radiusInKm - Optional radius in kilometers (required if location is provided)
6113
+ * @param filters.minPrice - Optional minimum price
6114
+ * @param filters.maxPrice - Optional maximum price
6115
+ * @param filters.minRating - Optional minimum rating (0-5)
6116
+ * @param filters.maxRating - Optional maximum rating (0-5)
6117
+ * @param filters.pagination - Optional number of results per page
6118
+ * @param filters.lastDoc - Optional last document for pagination
6119
+ * @param filters.isActive - Optional filter for active procedures only
6120
+ * @returns Filtered procedures and the last document for pagination
6121
+ */
6122
+ getProceduresByFilters(filters: {
6123
+ nameSearch?: string;
6124
+ treatmentBenefits?: TreatmentBenefit[];
6125
+ procedureFamily?: ProcedureFamily;
6126
+ procedureCategory?: string;
6127
+ procedureSubcategory?: string;
6128
+ procedureTechnology?: string;
6129
+ location?: {
6130
+ latitude: number;
6131
+ longitude: number;
6132
+ };
6133
+ radiusInKm?: number;
6134
+ minPrice?: number;
6135
+ maxPrice?: number;
6136
+ minRating?: number;
6137
+ maxRating?: number;
6138
+ pagination?: number;
6139
+ lastDoc?: any;
6140
+ isActive?: boolean;
6141
+ }): Promise<{
6142
+ procedures: (Procedure & {
6143
+ distance?: number;
6144
+ })[];
6145
+ lastDoc: any;
6146
+ }>;
6147
+ /**
6148
+ * Helper method to apply in-memory filters to procedures
6149
+ * Used by getProceduresByFilters to apply filters that can't be done in Firestore queries
6150
+ *
6151
+ * @param procedures - The procedures to filter
6152
+ * @param filters - The filters to apply
6153
+ * @returns Filtered procedures
6154
+ */
6155
+ private applyInMemoryFilters;
6156
+ /**
6157
+ * Creates a consultation procedure without requiring a product
6158
+ * This is a special method for consultation procedures that don't use products
6159
+ * @param data - The data for creating a consultation procedure (without productId)
6160
+ * @returns The created procedure
6161
+ */
6162
+ createConsultationProcedure(data: Omit<CreateProcedureData, "productId">): Promise<Procedure>;
6163
+ }
6164
+
6011
6165
  declare class PractitionerService extends BaseService {
6012
6166
  private clinicService?;
6013
6167
  private mediaService;
6014
- constructor(db: Firestore, auth: Auth, app: FirebaseApp, clinicService?: ClinicService);
6168
+ private procedureService?;
6169
+ constructor(db: Firestore, auth: Auth, app: FirebaseApp, clinicService?: ClinicService, procedureService?: ProcedureService);
6015
6170
  private getClinicService;
6171
+ private getProcedureService;
6016
6172
  setClinicService(clinicService: ClinicService): void;
6173
+ setProcedureService(procedureService: ProcedureService): void;
6017
6174
  /**
6018
6175
  * Handles profile photo upload for practitioners
6019
6176
  * @param profilePhoto - MediaResource (File, Blob, or URL string)
@@ -6180,6 +6337,21 @@ declare class PractitionerService extends BaseService {
6180
6337
  practitioners: Practitioner[];
6181
6338
  lastDoc: any;
6182
6339
  }>;
6340
+ /**
6341
+ * Enables free consultation for a practitioner in a specific clinic
6342
+ * Creates a free consultation procedure with hardcoded parameters
6343
+ * @param practitionerId - ID of the practitioner
6344
+ * @param clinicId - ID of the clinic
6345
+ * @returns The created consultation procedure
6346
+ */
6347
+ EnableFreeConsultation(practitionerId: string, clinicId: string): Promise<void>;
6348
+ /**
6349
+ * Disables free consultation for a practitioner in a specific clinic
6350
+ * Finds and deactivates the existing free consultation procedure
6351
+ * @param practitionerId - ID of the practitioner
6352
+ * @param clinicId - ID of the clinic
6353
+ */
6354
+ DisableFreeConsultation(practitionerId: string, clinicId: string): Promise<void>;
6183
6355
  }
6184
6356
 
6185
6357
  declare class UserService extends BaseService {
@@ -6615,150 +6787,6 @@ declare class NotificationService extends BaseService {
6615
6787
  getAppointmentNotifications(appointmentId: string): Promise<Notification[]>;
6616
6788
  }
6617
6789
 
6618
- declare class ProcedureService extends BaseService {
6619
- private categoryService;
6620
- private subcategoryService;
6621
- private technologyService;
6622
- private productService;
6623
- private mediaService;
6624
- constructor(db: Firestore, auth: Auth, app: FirebaseApp, categoryService: CategoryService, subcategoryService: SubcategoryService, technologyService: TechnologyService, productService: ProductService, mediaService: MediaService);
6625
- /**
6626
- * Process media resource (string URL or File object)
6627
- * @param media String URL or File object
6628
- * @param ownerId Owner ID for the media (usually procedureId)
6629
- * @param collectionName Collection name for organizing files
6630
- * @returns URL string after processing
6631
- */
6632
- private processMedia;
6633
- /**
6634
- * Process array of media resources (strings or Files)
6635
- * @param mediaArray Array of string URLs or File objects
6636
- * @param ownerId Owner ID for the media
6637
- * @param collectionName Collection name for organizing files
6638
- * @returns Array of URL strings after processing
6639
- */
6640
- private processMediaArray;
6641
- /**
6642
- * Creates a new procedure
6643
- * @param data - The data for creating a new procedure
6644
- * @returns The created procedure
6645
- */
6646
- createProcedure(data: CreateProcedureData): Promise<Procedure>;
6647
- /**
6648
- * Gets a procedure by ID
6649
- * @param id - The ID of the procedure to get
6650
- * @returns The procedure if found, null otherwise
6651
- */
6652
- getProcedure(id: string): Promise<Procedure | null>;
6653
- /**
6654
- * Gets all procedures for a clinic branch
6655
- * @param clinicBranchId - The ID of the clinic branch
6656
- * @returns List of procedures
6657
- */
6658
- getProceduresByClinicBranch(clinicBranchId: string): Promise<Procedure[]>;
6659
- /**
6660
- * Gets all procedures for a practitioner
6661
- * @param practitionerId - The ID of the practitioner
6662
- * @returns List of procedures
6663
- */
6664
- getProceduresByPractitioner(practitionerId: string): Promise<Procedure[]>;
6665
- /**
6666
- * Updates a procedure
6667
- * @param id - The ID of the procedure to update
6668
- * @param data - The data to update the procedure with
6669
- * @returns The updated procedure
6670
- */
6671
- updateProcedure(id: string, data: UpdateProcedureData): Promise<Procedure>;
6672
- /**
6673
- * Deactivates a procedure (soft delete)
6674
- * @param id - The ID of the procedure to deactivate
6675
- */
6676
- deactivateProcedure(id: string): Promise<void>;
6677
- /**
6678
- * Deletes a procedure permanently
6679
- * @param id - The ID of the procedure to delete
6680
- * @returns A boolean indicating if the deletion was successful
6681
- */
6682
- deleteProcedure(id: string): Promise<boolean>;
6683
- /**
6684
- * Gets all procedures that a practitioner is certified to perform
6685
- * @param practitioner - The practitioner's profile
6686
- * @returns Object containing allowed technologies, families, categories, subcategories
6687
- */
6688
- getAllowedTechnologies(practitioner: Practitioner): Promise<{
6689
- technologies: Technology[];
6690
- families: ProcedureFamily[];
6691
- categories: string[];
6692
- subcategories: string[];
6693
- }>;
6694
- /**
6695
- * Gets all procedures with optional pagination
6696
- *
6697
- * @param pagination - Optional number of procedures per page (0 or undefined returns all)
6698
- * @param lastDoc - Optional last document for pagination (if continuing from a previous page)
6699
- * @returns Object containing procedures array and the last document for pagination
6700
- */
6701
- getAllProcedures(pagination?: number, lastDoc?: any): Promise<{
6702
- procedures: Procedure[];
6703
- lastDoc: any;
6704
- }>;
6705
- /**
6706
- * Searches and filters procedures based on multiple criteria
6707
- *
6708
- * @param filters - Various filters to apply
6709
- * @param filters.nameSearch - Optional search text for procedure name
6710
- * @param filters.treatmentBenefits - Optional array of treatment benefits to filter by
6711
- * @param filters.procedureFamily - Optional procedure family to filter by
6712
- * @param filters.procedureCategory - Optional procedure category to filter by
6713
- * @param filters.procedureSubcategory - Optional procedure subcategory to filter by
6714
- * @param filters.procedureTechnology - Optional procedure technology to filter by
6715
- * @param filters.location - Optional location for distance-based search
6716
- * @param filters.radiusInKm - Optional radius in kilometers (required if location is provided)
6717
- * @param filters.minPrice - Optional minimum price
6718
- * @param filters.maxPrice - Optional maximum price
6719
- * @param filters.minRating - Optional minimum rating (0-5)
6720
- * @param filters.maxRating - Optional maximum rating (0-5)
6721
- * @param filters.pagination - Optional number of results per page
6722
- * @param filters.lastDoc - Optional last document for pagination
6723
- * @param filters.isActive - Optional filter for active procedures only
6724
- * @returns Filtered procedures and the last document for pagination
6725
- */
6726
- getProceduresByFilters(filters: {
6727
- nameSearch?: string;
6728
- treatmentBenefits?: TreatmentBenefit[];
6729
- procedureFamily?: ProcedureFamily;
6730
- procedureCategory?: string;
6731
- procedureSubcategory?: string;
6732
- procedureTechnology?: string;
6733
- location?: {
6734
- latitude: number;
6735
- longitude: number;
6736
- };
6737
- radiusInKm?: number;
6738
- minPrice?: number;
6739
- maxPrice?: number;
6740
- minRating?: number;
6741
- maxRating?: number;
6742
- pagination?: number;
6743
- lastDoc?: any;
6744
- isActive?: boolean;
6745
- }): Promise<{
6746
- procedures: (Procedure & {
6747
- distance?: number;
6748
- })[];
6749
- lastDoc: any;
6750
- }>;
6751
- /**
6752
- * Helper method to apply in-memory filters to procedures
6753
- * Used by getProceduresByFilters to apply filters that can't be done in Firestore queries
6754
- *
6755
- * @param procedures - The procedures to filter
6756
- * @param filters - The filters to apply
6757
- * @returns Filtered procedures
6758
- */
6759
- private applyInMemoryFilters;
6760
- }
6761
-
6762
6790
  declare class PractitionerInviteService extends BaseService {
6763
6791
  constructor(db: Firestore, auth: Auth, app: FirebaseApp);
6764
6792
  /**
@@ -11914,6 +11942,7 @@ declare const practitionerSchema: z.ZodObject<{
11914
11942
  description?: string | null | undefined;
11915
11943
  }>, "many">;
11916
11944
  procedures: z.ZodArray<z.ZodString, "many">;
11945
+ freeConsultations: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
11917
11946
  proceduresInfo: z.ZodArray<z.ZodObject<{
11918
11947
  id: z.ZodString;
11919
11948
  name: z.ZodString;
@@ -12115,6 +12144,7 @@ declare const practitionerSchema: z.ZodObject<{
12115
12144
  averageRating: number;
12116
12145
  recommendationPercentage: number;
12117
12146
  };
12147
+ freeConsultations?: Record<string, string> | null | undefined;
12118
12148
  }, {
12119
12149
  id: string;
12120
12150
  createdAt: Date | Timestamp;
@@ -12231,6 +12261,7 @@ declare const practitionerSchema: z.ZodObject<{
12231
12261
  averageRating: number;
12232
12262
  recommendationPercentage: number;
12233
12263
  };
12264
+ freeConsultations?: Record<string, string> | null | undefined;
12234
12265
  }>;
12235
12266
  /**
12236
12267
  * Šema za validaciju podataka pri kreiranju zdravstvenog radnika
@@ -12590,6 +12621,7 @@ declare const createPractitionerSchema: z.ZodObject<{
12590
12621
  featuredPhoto: string;
12591
12622
  description?: string | null | undefined;
12592
12623
  }>, "many">>;
12624
+ freeConsultations: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
12593
12625
  proceduresInfo: z.ZodOptional<z.ZodArray<z.ZodObject<{
12594
12626
  id: z.ZodString;
12595
12627
  name: z.ZodString;
@@ -12728,6 +12760,7 @@ declare const createPractitionerSchema: z.ZodObject<{
12728
12760
  featuredPhoto: string;
12729
12761
  description?: string | null | undefined;
12730
12762
  }[] | undefined;
12763
+ freeConsultations?: Record<string, string> | null | undefined;
12731
12764
  status?: PractitionerStatus | undefined;
12732
12765
  proceduresInfo?: {
12733
12766
  id: string;
@@ -12830,6 +12863,7 @@ declare const createPractitionerSchema: z.ZodObject<{
12830
12863
  featuredPhoto: string;
12831
12864
  description?: string | null | undefined;
12832
12865
  }[] | undefined;
12866
+ freeConsultations?: Record<string, string> | null | undefined;
12833
12867
  status?: PractitionerStatus | undefined;
12834
12868
  proceduresInfo?: {
12835
12869
  id: string;
@@ -13207,6 +13241,7 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
13207
13241
  featuredPhoto: string;
13208
13242
  description?: string | null | undefined;
13209
13243
  }>, "many">>;
13244
+ freeConsultations: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
13210
13245
  proceduresInfo: z.ZodOptional<z.ZodArray<z.ZodObject<{
13211
13246
  id: z.ZodString;
13212
13247
  name: z.ZodString;
@@ -13343,6 +13378,7 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
13343
13378
  featuredPhoto: string;
13344
13379
  description?: string | null | undefined;
13345
13380
  }[] | undefined;
13381
+ freeConsultations?: Record<string, string> | null | undefined;
13346
13382
  proceduresInfo?: {
13347
13383
  id: string;
13348
13384
  name: string;
@@ -13442,6 +13478,7 @@ declare const createDraftPractitionerSchema: z.ZodObject<{
13442
13478
  featuredPhoto: string;
13443
13479
  description?: string | null | undefined;
13444
13480
  }[] | undefined;
13481
+ freeConsultations?: Record<string, string> | null | undefined;
13445
13482
  isVerified?: boolean | undefined;
13446
13483
  proceduresInfo?: {
13447
13484
  id: string;