autopilot-core-sandbox 0.0.1

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.
Files changed (822) hide show
  1. package/README.md +53 -0
  2. package/dist/Provider.d.ts +21 -0
  3. package/dist/Provider.d.ts.map +1 -0
  4. package/dist/Provider.js +61 -0
  5. package/dist/Provider.js.map +1 -0
  6. package/dist/dist/Provider.d.ts +21 -0
  7. package/dist/dist/Provider.d.ts.map +1 -0
  8. package/dist/dist/Provider.js +61 -0
  9. package/dist/dist/Provider.js.map +1 -0
  10. package/dist/dist/index.d.ts +45 -0
  11. package/dist/dist/index.d.ts.map +1 -0
  12. package/dist/dist/index.js +61 -0
  13. package/dist/dist/index.js.map +1 -0
  14. package/dist/dist/interfaces/index.d.ts +1238 -0
  15. package/dist/dist/interfaces/index.d.ts.map +1 -0
  16. package/dist/dist/interfaces/index.js +3 -0
  17. package/dist/dist/interfaces/index.js.map +1 -0
  18. package/dist/dist/migrations/20260608222757_remote_schema.sql +5666 -0
  19. package/dist/dist/migrations/20260611174826_add_job_item_recurring_id_to_job_item.sql +7 -0
  20. package/dist/dist/migrations/20260625224612_add_dashboard_guided_tour_dismissed_to_settings_user.sql +5 -0
  21. package/dist/dist/migrations/20260627031433_support_chat_tables.sql +115 -0
  22. package/dist/dist/migrations/20260627031434_support_chat_rls.sql +37 -0
  23. package/dist/dist/migrations/20260704170209_add_estimate_scheduling.sql +121 -0
  24. package/dist/dist/migrations/20260704170210_add_estimate_scheduling_rls.sql +42 -0
  25. package/dist/dist/migrations/20260704235034_add_estimate_reminder_settings.sql +11 -0
  26. package/dist/dist/migrations/20260707003825_blocked_number_table.sql +32 -0
  27. package/dist/dist/migrations/20260707003826_blocked_number_rls.sql +22 -0
  28. package/dist/dist/migrations/20260709191055_sms_opt_out_table.sql +38 -0
  29. package/dist/dist/migrations/20260709191056_sms_opt_out_rls.sql +21 -0
  30. package/dist/dist/migrations/20260709214507_job_time_entry_table.sql +70 -0
  31. package/dist/dist/migrations/20260709214508_job_time_entry_rls.sql +21 -0
  32. package/dist/dist/migrations/20260711185956_phone_call_table.sql +99 -0
  33. package/dist/dist/migrations/20260711185957_phone_call_rls.sql +25 -0
  34. package/dist/dist/migrations/20260712014705_ai_voice_assistant_settings.sql +71 -0
  35. package/dist/dist/migrations/20260712014706_ai_voice_assistant_settings_rls.sql +14 -0
  36. package/dist/dist/migrations/20260712014707_ai_prompt_templates.sql +28 -0
  37. package/dist/dist/migrations/20260712014708_ai_prompt_templates_rls.sql +5 -0
  38. package/dist/dist/migrations/20260712014709_ai_prompt_templates_seed.sql +77 -0
  39. package/dist/dist/migrations/20260715011550_reminder_dispatch_table.sql +47 -0
  40. package/dist/dist/migrations/20260715011551_reminder_dispatch_rls.sql +22 -0
  41. package/dist/dist/migrations/20260715192923_dedup_sequence_contact_add_unique_constraint.sql +27 -0
  42. package/dist/dist/migrations/20260716194420_add_employee_location_tracking.sql +146 -0
  43. package/dist/dist/migrations/20260716194421_add_employee_location_tracking_rls.sql +154 -0
  44. package/dist/dist/migrations/20260716194422_get_client_map_last_completed_jobs.sql +28 -0
  45. package/dist/dist/migrations/20260717144535_add_blast_email_invalid_skipped_count.sql +2 -0
  46. package/dist/dist/migrations/20260717162900_create_blast_email_chunk.sql +36 -0
  47. package/dist/dist/migrations/20260717162901_add_blast_email_chunk_rls.sql +5 -0
  48. package/dist/dist/migrations/20260717162902_add_blast_email_chunk_progress_columns.sql +3 -0
  49. package/dist/dist/migrations/20260717162903_add_blast_email_bounce_tracking_columns.sql +4 -0
  50. package/dist/dist/migrations/20260717162904_create_email_hard_bounced.sql +23 -0
  51. package/dist/dist/migrations/20260717162905_add_email_hard_bounced_rls.sql +5 -0
  52. package/dist/dist/migrations/20260717164837_add_sequence_contact_sent_at.sql +19 -0
  53. package/dist/dist/migrations/20260717170920_add_sequence_contact_claim_index.sql +12 -0
  54. package/dist/dist/migrations/20260719215139_create_outbound_event.sql +59 -0
  55. package/dist/dist/migrations/20260719215140_create_outbound_event_rls.sql +16 -0
  56. package/dist/dist/migrations/20260719215141_create_webhook_delivery.sql +99 -0
  57. package/dist/dist/migrations/20260719215142_create_webhook_delivery_rls.sql +11 -0
  58. package/dist/dist/migrations/20260719215143_outbound_event_triggers.sql +219 -0
  59. package/dist/dist/migrations/20260719215144_create_api_key.sql +34 -0
  60. package/dist/dist/migrations/20260719215146_create_api_key_rls.sql +12 -0
  61. package/dist/dist/migrations/20260719215147_webhook_subscription_add_secret_active.sql +28 -0
  62. package/dist/dist/migrations/20260719215148_api_aggregate_create_functions.sql +479 -0
  63. package/dist/dist/migrations/20260721174837_webhook_subscription_generic_endpoints.sql +41 -0
  64. package/dist/dist/migrations/20260721185631_webhook_outbox_retention.sql +87 -0
  65. package/dist/dist/migrations/20260721190304_create_qb_sync_task.sql +120 -0
  66. package/dist/dist/migrations/20260721190306_qb_sync_task_rls.sql +8 -0
  67. package/dist/dist/migrations/20260721190307_qb_mapping_orphan_fks.sql +29 -0
  68. package/dist/dist/migrations/20260721190308_qb_task_retention.sql +90 -0
  69. package/dist/dist/migrations/20260721234401_create_permission_role.sql +83 -0
  70. package/dist/dist/migrations/20260721234402_permission_role_rls.sql +22 -0
  71. package/dist/dist/migrations/20260721234403_user_role_add_permission_role_id.sql +12 -0
  72. package/dist/dist/migrations/20260721234404_seed_permission_roles.sql +100 -0
  73. package/dist/dist/migrations/20260721234405_backfill_user_role_permission_role_id.sql +20 -0
  74. package/dist/dist/migrations/20260722193800_permission_role_add_manage_employees.sql +56 -0
  75. package/dist/dist/migrations/20260723025606_staging_new_employee_company_read_rls.sql +10 -0
  76. package/dist/dist/migrations/20260723134328_create_google_lsa_integration.sql +1016 -0
  77. package/dist/dist/migrations/20260723134329_google_lsa_integration_rls.sql +205 -0
  78. package/dist/dist/migrations/20260723150640_google_lsa_hardening.sql +169 -0
  79. package/dist/dist/migrations/20260723150641_google_lsa_hardening_rls.sql +12 -0
  80. package/dist/dist/migrations/20260724230721_google_lsa_facebook_exclusivity_attach.sql +104 -0
  81. package/dist/dist/migrations/20260724230722_google_lsa_facebook_exclusivity_attach_rls.sql +20 -0
  82. package/dist/dist/migrations/20260725172630_add_message_pagination_and_search.sql +265 -0
  83. package/dist/dist/migrations/20260725172631_add_message_pagination_and_search_rls.sql +72 -0
  84. package/dist/dist/migrations/20260725172632_optimize_message_thread_pagination_search.sql +245 -0
  85. package/dist/dist/migrations/20260725172633_harden_message_search_and_photo_pagination.sql +256 -0
  86. package/dist/dist/migrations/20260725172634_fix_message_thread_line_filter.sql +250 -0
  87. package/dist/dist/migrations/20260725174948_google_lsa_attach_bing_exclusivity_guard.sql +23 -0
  88. package/dist/dist/migrations/20260725200430_client_portal_settings.sql +41 -0
  89. package/dist/dist/migrations/20260725200431_client_portal_settings_rls.sql +21 -0
  90. package/dist/dist/migrations/20260725200433_client_portal_auth_tables.sql +81 -0
  91. package/dist/dist/migrations/20260725200434_client_portal_auth_rls.sql +18 -0
  92. package/dist/dist/migrations/20260725200435_portal_claim_login_attempt.sql +36 -0
  93. package/dist/dist/migrations/20260725200436_portal_appointment_request.sql +39 -0
  94. package/dist/dist/migrations/20260725200437_portal_appointment_request_rls.sql +10 -0
  95. package/dist/dist/migrations/20260725210000_google_reserve_integration.sql +85 -0
  96. package/dist/dist/migrations/20260725210001_google_reserve_integration_rls.sql +10 -0
  97. package/dist/dist/migrations/20260725220000_add_analytics_query_indexes.sql +47 -0
  98. package/dist/dist/migrations/20260725230000_onboarding_preload_data.sql +1074 -0
  99. package/dist/dist/migrations/20260725230001_onboarding_preload_data_rls.sql +40 -0
  100. package/dist/dist/migrations/20260725230002_add_pricebook_query_indexes.sql +13 -0
  101. package/dist/dist/migrations/20260726000000_facebook_ads_integration.sql +1538 -0
  102. package/dist/dist/migrations/20260726000001_facebook_ads_integration_rls.sql +356 -0
  103. package/dist/dist/migrations/20260726000002_facebook_ads_attach_lsa_exclusivity_guard.sql +25 -0
  104. package/dist/dist/migrations/20260726000003_facebook_ads_attach_bing_exclusivity_guard.sql +22 -0
  105. package/dist/dist/migrations/20260726010000_create_bing_ads_integration.sql +1112 -0
  106. package/dist/dist/migrations/20260726010001_bing_ads_integration_rls.sql +227 -0
  107. package/dist/dist/migrations/20260726220000_add_document_theme_settings.sql +11 -0
  108. package/dist/dist/migrations/20260726220001_update_document_theme_comments.sql +7 -0
  109. package/dist/dist/migrations/20260727210319_evolve_tier_for_pricing.sql +68 -0
  110. package/dist/dist/migrations/20260727210320_create_billing_addon.sql +85 -0
  111. package/dist/dist/migrations/20260727210321_create_billing_addon_rls.sql +21 -0
  112. package/dist/dist/migrations/20260728213930_create_usage_metering.sql +189 -0
  113. package/dist/dist/migrations/20260728213931_create_usage_metering_rls.sql +32 -0
  114. package/dist/dist/migrations/20260729004305_marketing_charge_txn_functions.sql +242 -0
  115. package/dist/dist/migrations/20260729004306_marketing_charge_txn_functions_rls.sql +37 -0
  116. package/dist/dist/migrations/20260729005524_update_deduct_from_balance_errcode.sql +42 -0
  117. package/dist/dist/migrations/20260730193601_fix_deduct_from_balance_lost_update.sql +46 -0
  118. package/dist/dist/migrations/20260730193602_add_blast_sms_chunk_reaper_columns.sql +27 -0
  119. package/dist/dist/migrations/20260731011415_create_google_calendar_connection.sql +84 -0
  120. package/dist/dist/migrations/20260731011416_google_calendar_connection_rls.sql +23 -0
  121. package/dist/dist/migrations/20260731011417_create_google_calendar_sync.sql +157 -0
  122. package/dist/dist/migrations/20260731011418_google_calendar_sync_rls.sql +26 -0
  123. package/dist/dist/migrations/20260731011419_event_outbound_triggers.sql +28 -0
  124. package/dist/dist/migrations/20260731011420_add_google_calendar_addon_key.sql +24 -0
  125. package/dist/dist/migrations/20260731011421_gcal_task_retention.sql +109 -0
  126. package/dist/dist/migrations/20260731234245_create_estimate_proposal.sql +157 -0
  127. package/dist/dist/migrations/20260731234247_estimate_proposal_rls.sql +46 -0
  128. package/dist/dist/migrations/20260731234248_add_proposal_estimate_settings.sql +17 -0
  129. package/dist/dist/migrations/20260731234249_add_estimate_proposals_addon_key.sql +25 -0
  130. package/dist/dist/migrations/20260731234250_approve_estimate_proposal_function.sql +133 -0
  131. package/dist/dist/migrations/20260801010609_save_estimate_proposal_function.sql +154 -0
  132. package/dist/dist/migrations/20260801173554_add_hide_autopilot_branding_setting.sql +6 -0
  133. package/dist/dist/migrations/20260806230917_add_client_billing_address_columns.sql +9 -0
  134. package/dist/dist/migrations/20260806230944_api_create_client_billing_address.sql +93 -0
  135. package/dist/dist/migrations/20260807014702_create_parent_id_company_id_keys.sql +20 -0
  136. package/dist/dist/migrations/20260807014703_create_contract_template.sql +30 -0
  137. package/dist/dist/migrations/20260807014704_create_contract.sql +233 -0
  138. package/dist/dist/migrations/20260807014705_create_contract_signature.sql +39 -0
  139. package/dist/dist/migrations/20260807014706_create_item_contract_requirement.sql +38 -0
  140. package/dist/dist/migrations/20260807014707_create_settings_contract.sql +23 -0
  141. package/dist/dist/migrations/20260807014708_contract_rls.sql +74 -0
  142. package/dist/dist/migrations/20260807014709_sign_contract_function.sql +92 -0
  143. package/dist/dist/migrations/20260807014710_create_settings_rental.sql +34 -0
  144. package/dist/dist/migrations/20260807014711_create_saved_location.sql +56 -0
  145. package/dist/dist/migrations/20260807014712_create_rental_task_option.sql +52 -0
  146. package/dist/dist/migrations/20260807014713_create_asset.sql +90 -0
  147. package/dist/dist/migrations/20260807014714_add_job_schedule_asset_fkeys.sql +39 -0
  148. package/dist/dist/migrations/20260807014715_rental_rls.sql +48 -0
  149. package/dist/dist/migrations/20260807014716_add_job_schedule_any_time.sql +7 -0
  150. package/dist/dist/migrations/20260807014717_add_job_schedule_target_location.sql +48 -0
  151. package/dist/dist/migrations/20260807014718_job_schedule_completion_guard.sql +53 -0
  152. package/dist/dist/migrations/20260807014719_add_job_schedule_list_sort_key.sql +7 -0
  153. package/dist/dist/migrations/20260807014720_add_item_duration.sql +11 -0
  154. package/dist/dist/migrations/20260807014721_add_settings_booking_enforce_rental_availability.sql +9 -0
  155. package/dist/dist/migrations/20260807014722_add_job_unsigned_rental_agreement.sql +10 -0
  156. package/dist/dist/migrations/20260807014723_add_item_size.sql +12 -0
  157. package/dist/dist/migrations/20260809193533_add_booking_path_button_labels.sql +11 -0
  158. package/dist/dist/migrations/20260809231721_add_route_distance_cache.sql +37 -0
  159. package/dist/dist/migrations/20260809231722_route_distance_cache_rls.sql +15 -0
  160. package/dist/dist/migrations/20260809231723_apply_rental_route_plan_function.sql +275 -0
  161. package/dist/dist/migrations/20260810171550_add_settings_job_default_job_types.sql +9 -0
  162. package/dist/dist/migrations/20260810212430_backfill_rental_task_option_sort_order.sql +61 -0
  163. package/dist/dist/migrations/20260811224317_add_settings_user_dnd_hint_dismissed.sql +9 -0
  164. package/dist/dist/migrations/20260813174503_repair_user_role_email_drift.sql +59 -0
  165. package/dist/dist/migrations/20260813174504_sync_user_role_email_trigger.sql +30 -0
  166. package/dist/dist/migrations/20260813175210_add_event_list_sort_key.sql +5 -0
  167. package/dist/dist/migrations/20260814172222_add_client_auto_bill_on_completion.sql +6 -0
  168. package/dist/dist/migrations/20260816160252_create_automation_rule.sql +99 -0
  169. package/dist/dist/migrations/20260816160253_automation_rule_rls.sql +19 -0
  170. package/dist/dist/migrations/20260816160254_create_settings_automation.sql +36 -0
  171. package/dist/dist/migrations/20260816160255_settings_automation_rls.sql +18 -0
  172. package/dist/dist/migrations/20260816160256_create_automation_event.sql +71 -0
  173. package/dist/dist/migrations/20260816160257_automation_event_rls.sql +12 -0
  174. package/dist/dist/migrations/20260816160258_create_automation_run.sql +129 -0
  175. package/dist/dist/migrations/20260816160259_automation_run_rls.sql +19 -0
  176. package/dist/dist/migrations/20260816160300_add_client_created_via.sql +25 -0
  177. package/dist/dist/migrations/20260816160301_add_estimate_sent_at.sql +39 -0
  178. package/dist/dist/migrations/20260816160302_add_message_automation_ref.sql +10 -0
  179. package/dist/dist/migrations/20260816160303_automation_event_triggers.sql +236 -0
  180. package/dist/dist/migrations/20260816160304_automation_retention.sql +142 -0
  181. package/dist/dist/migrations/20260816202404_add_automation_center_addon_key.sql +26 -0
  182. package/dist/dist/migrations/20260816225501_widen_automation_rule_trigger_action_checks.sql +25 -0
  183. package/dist/dist/migrations/20260816225502_widen_automation_event_type_check.sql +18 -0
  184. package/dist/dist/migrations/20260816225503_add_invoice_id_to_automation_tables.sql +18 -0
  185. package/dist/dist/migrations/20260816225504_add_job_rescheduled_capture_trigger.sql +51 -0
  186. package/dist/dist/migrations/20260816225505_add_lead_converted_capture_trigger.sql +26 -0
  187. package/dist/dist/migrations/20260816225506_fix_booking_request_import_guard.sql +27 -0
  188. package/dist/dist/migrations/20260816225507_widen_outbound_event_for_automation.sql +38 -0
  189. package/dist/dist/migrations/20260817002626_add_user_last_login_platform_columns.sql +14 -0
  190. package/dist/dist/migrations/20260817221703_create_deletion.sql +34 -0
  191. package/dist/dist/migrations/20260817221707_deletion_rls.sql +21 -0
  192. package/dist/dist/migrations/20260817221708_add_soft_delete_columns.sql +82 -0
  193. package/dist/dist/migrations/20260817221709_trash_functions.sql +434 -0
  194. package/dist/dist/migrations/20260817221710_outbound_event_soft_delete.sql +55 -0
  195. package/dist/dist/migrations/20260817221711_automation_soft_delete_events.sql +77 -0
  196. package/dist/dist/migrations/20260817221712_fix_estimate_address_cascade.sql +14 -0
  197. package/dist/dist/migrations/20260817232630_trash_batch_function.sql +67 -0
  198. package/dist/dist/migrations/20260819170204_create_email_spam_complaint.sql +23 -0
  199. package/dist/dist/migrations/20260819170205_add_email_spam_complaint_rls.sql +5 -0
  200. package/dist/dist/migrations/20260819170206_email_unsubscribed_upsert_constraints.sql +14 -0
  201. package/dist/dist/migrations/20260819180151_get_suppressed_emails_function.sql +23 -0
  202. package/dist/dist/migrations/20260819191143_is_deleted_backfill_guard.sql +29 -0
  203. package/dist/dist/migrations/20260819191144_trash_functions_no_dual_write.sql +319 -0
  204. package/dist/dist/migrations/20260819191145_client_map_jobs_deleted_at.sql +33 -0
  205. package/dist/dist/migrations/20260819191147_booking_declined_deleted_at.sql +28 -0
  206. package/dist/dist/migrations/20260819191148_onboarding_preload_no_address_is_deleted.sql +1019 -0
  207. package/dist/dist/migrations/20260820222756_add_settings_job_hide_task_timer.sql +2 -0
  208. package/dist/dist/migrations/20260824234151_add_blast_chunk_recipients.sql +13 -0
  209. package/dist/dist/migrations/20260824234152_add_blast_pause_cancel_columns.sql +10 -0
  210. package/dist/dist/migrations/20260825014725_get_job_ids_in_range.sql +42 -0
  211. package/dist/dist/migrations/20260825194452_add_failed_job_status.sql +15 -0
  212. package/dist/dist/migrations/20260825194457_remove_take_to_rental_task_options.sql +24 -0
  213. package/dist/dist/migrations/20260825194458_remove_take_to_job_schedules.sql +12 -0
  214. package/dist/dist/migrations/20260825194459_rework_apply_rental_route_plan_no_take_to.sql +168 -0
  215. package/dist/dist/migrations/20260825194500_drop_job_schedule_target_location.sql +24 -0
  216. package/dist/dist/migrations/20260825194501_add_job_schedule_size.sql +17 -0
  217. package/dist/dist/migrations/20260825233001_add_job_schedule_id_company_id_key.sql +11 -0
  218. package/dist/dist/migrations/20260825233002_create_route_plan.sql +52 -0
  219. package/dist/dist/migrations/20260825233003_create_route_plan_stop.sql +159 -0
  220. package/dist/dist/migrations/20260825233004_route_plan_rls.sql +32 -0
  221. package/dist/dist/migrations/20260825233005_apply_rental_route_plan_v2.sql +351 -0
  222. package/dist/dist/migrations/20260826150934_facebook_ads_lead_ingestion.sql +1711 -0
  223. package/dist/dist/migrations/20260826151141_facebook_ads_lead_ingestion_rls_v2.sql +43 -0
  224. package/dist/dist/migrations/20260826234722_facebook_messenger_ingestion.sql +703 -0
  225. package/dist/dist/migrations/20260826234723_facebook_messenger_ingestion_rls.sql +80 -0
  226. package/dist/dist/migrations/20260826234724_widen_automations_messenger.sql +46 -0
  227. package/dist/dist/migrations/20260827100001_add_route_plan_minutes.sql +10 -0
  228. package/dist/dist/migrations/20260827100002_add_route_plan_stop_leg_minutes.sql +9 -0
  229. package/dist/dist/migrations/20260827100003_apply_rental_route_plan_v3.sql +341 -0
  230. package/dist/dist/migrations/20260827230346_apply_rental_route_plan_v4.sql +366 -0
  231. package/dist/dist/migrations/20260829090911_create_fleet_schema.sql +3698 -0
  232. package/dist/dist/migrations/20260829090912_fleet_rls.sql +1011 -0
  233. package/dist/dist/migrations/20260831102212_add_online_booking_address_display.sql +8 -0
  234. package/dist/dist/providers/AddressProvider.d.ts +9 -0
  235. package/dist/dist/providers/AddressProvider.d.ts.map +1 -0
  236. package/dist/dist/providers/AddressProvider.js +207 -0
  237. package/dist/dist/providers/AddressProvider.js.map +1 -0
  238. package/dist/dist/providers/AutomationsProvider.d.ts +11 -0
  239. package/dist/dist/providers/AutomationsProvider.d.ts.map +1 -0
  240. package/dist/dist/providers/AutomationsProvider.js +170 -0
  241. package/dist/dist/providers/AutomationsProvider.js.map +1 -0
  242. package/dist/dist/providers/BlockedNumbersProvider.d.ts +13 -0
  243. package/dist/dist/providers/BlockedNumbersProvider.d.ts.map +1 -0
  244. package/dist/dist/providers/BlockedNumbersProvider.js +71 -0
  245. package/dist/dist/providers/BlockedNumbersProvider.js.map +1 -0
  246. package/dist/dist/providers/CategoryProvider.d.ts +8 -0
  247. package/dist/dist/providers/CategoryProvider.d.ts.map +1 -0
  248. package/dist/dist/providers/CategoryProvider.js +95 -0
  249. package/dist/dist/providers/CategoryProvider.js.map +1 -0
  250. package/dist/dist/providers/ClientProvider.d.ts +39 -0
  251. package/dist/dist/providers/ClientProvider.d.ts.map +1 -0
  252. package/dist/dist/providers/ClientProvider.js +253 -0
  253. package/dist/dist/providers/ClientProvider.js.map +1 -0
  254. package/dist/dist/providers/CompanyProvider.d.ts +7 -0
  255. package/dist/dist/providers/CompanyProvider.d.ts.map +1 -0
  256. package/dist/dist/providers/CompanyProvider.js +114 -0
  257. package/dist/dist/providers/CompanyProvider.js.map +1 -0
  258. package/dist/dist/providers/DashboardProvider.d.ts +78 -0
  259. package/dist/dist/providers/DashboardProvider.d.ts.map +1 -0
  260. package/dist/dist/providers/DashboardProvider.js +568 -0
  261. package/dist/dist/providers/DashboardProvider.js.map +1 -0
  262. package/dist/dist/providers/DiscountProvider.d.ts +8 -0
  263. package/dist/dist/providers/DiscountProvider.d.ts.map +1 -0
  264. package/dist/dist/providers/DiscountProvider.js +92 -0
  265. package/dist/dist/providers/DiscountProvider.js.map +1 -0
  266. package/dist/dist/providers/EmployeesProvider.d.ts +6 -0
  267. package/dist/dist/providers/EmployeesProvider.d.ts.map +1 -0
  268. package/dist/dist/providers/EmployeesProvider.js +185 -0
  269. package/dist/dist/providers/EmployeesProvider.js.map +1 -0
  270. package/dist/dist/providers/EstimatesProvider.d.ts +16 -0
  271. package/dist/dist/providers/EstimatesProvider.d.ts.map +1 -0
  272. package/dist/dist/providers/EstimatesProvider.js +251 -0
  273. package/dist/dist/providers/EstimatesProvider.js.map +1 -0
  274. package/dist/dist/providers/EventsProvider.d.ts +4 -0
  275. package/dist/dist/providers/EventsProvider.d.ts.map +1 -0
  276. package/dist/dist/providers/EventsProvider.js +24 -0
  277. package/dist/dist/providers/EventsProvider.js.map +1 -0
  278. package/dist/dist/providers/FilesProvider.d.ts +17 -0
  279. package/dist/dist/providers/FilesProvider.d.ts.map +1 -0
  280. package/dist/dist/providers/FilesProvider.js +201 -0
  281. package/dist/dist/providers/FilesProvider.js.map +1 -0
  282. package/dist/dist/providers/InvoicesProvider.d.ts +13 -0
  283. package/dist/dist/providers/InvoicesProvider.d.ts.map +1 -0
  284. package/dist/dist/providers/InvoicesProvider.js +207 -0
  285. package/dist/dist/providers/InvoicesProvider.js.map +1 -0
  286. package/dist/dist/providers/ItemProvider.d.ts +9 -0
  287. package/dist/dist/providers/ItemProvider.d.ts.map +1 -0
  288. package/dist/dist/providers/ItemProvider.js +201 -0
  289. package/dist/dist/providers/ItemProvider.js.map +1 -0
  290. package/dist/dist/providers/JobSourceProvider.d.ts +8 -0
  291. package/dist/dist/providers/JobSourceProvider.d.ts.map +1 -0
  292. package/dist/dist/providers/JobSourceProvider.js +75 -0
  293. package/dist/dist/providers/JobSourceProvider.js.map +1 -0
  294. package/dist/dist/providers/JobTypeProvider.d.ts +8 -0
  295. package/dist/dist/providers/JobTypeProvider.d.ts.map +1 -0
  296. package/dist/dist/providers/JobTypeProvider.js +75 -0
  297. package/dist/dist/providers/JobTypeProvider.js.map +1 -0
  298. package/dist/dist/providers/JobsProvider.d.ts +35 -0
  299. package/dist/dist/providers/JobsProvider.d.ts.map +1 -0
  300. package/dist/dist/providers/JobsProvider.js +863 -0
  301. package/dist/dist/providers/JobsProvider.js.map +1 -0
  302. package/dist/dist/providers/MessagesProvider.d.ts +33 -0
  303. package/dist/dist/providers/MessagesProvider.d.ts.map +1 -0
  304. package/dist/dist/providers/MessagesProvider.js +415 -0
  305. package/dist/dist/providers/MessagesProvider.js.map +1 -0
  306. package/dist/dist/providers/PaymentProvider.d.ts +9 -0
  307. package/dist/dist/providers/PaymentProvider.d.ts.map +1 -0
  308. package/dist/dist/providers/PaymentProvider.js +48 -0
  309. package/dist/dist/providers/PaymentProvider.js.map +1 -0
  310. package/dist/dist/providers/PermissionRolesProvider.d.ts +5 -0
  311. package/dist/dist/providers/PermissionRolesProvider.d.ts.map +1 -0
  312. package/dist/dist/providers/PermissionRolesProvider.js +30 -0
  313. package/dist/dist/providers/PermissionRolesProvider.js.map +1 -0
  314. package/dist/dist/providers/PhoneNumberProvider.d.ts +12 -0
  315. package/dist/dist/providers/PhoneNumberProvider.d.ts.map +1 -0
  316. package/dist/dist/providers/PhoneNumberProvider.js +184 -0
  317. package/dist/dist/providers/PhoneNumberProvider.js.map +1 -0
  318. package/dist/dist/providers/ProfileProvider.d.ts +6 -0
  319. package/dist/dist/providers/ProfileProvider.d.ts.map +1 -0
  320. package/dist/dist/providers/ProfileProvider.js +71 -0
  321. package/dist/dist/providers/ProfileProvider.js.map +1 -0
  322. package/dist/dist/providers/RentalsProvider.d.ts +28 -0
  323. package/dist/dist/providers/RentalsProvider.d.ts.map +1 -0
  324. package/dist/dist/providers/RentalsProvider.js +438 -0
  325. package/dist/dist/providers/RentalsProvider.js.map +1 -0
  326. package/dist/dist/providers/SettingsBookingProvider.d.ts +9 -0
  327. package/dist/dist/providers/SettingsBookingProvider.d.ts.map +1 -0
  328. package/dist/dist/providers/SettingsBookingProvider.js +163 -0
  329. package/dist/dist/providers/SettingsBookingProvider.js.map +1 -0
  330. package/dist/dist/providers/SettingsProvider.d.ts +8 -0
  331. package/dist/dist/providers/SettingsProvider.d.ts.map +1 -0
  332. package/dist/dist/providers/SettingsProvider.js +86 -0
  333. package/dist/dist/providers/SettingsProvider.js.map +1 -0
  334. package/dist/dist/providers/TagsProvider.d.ts +12 -0
  335. package/dist/dist/providers/TagsProvider.d.ts.map +1 -0
  336. package/dist/dist/providers/TagsProvider.js +210 -0
  337. package/dist/dist/providers/TagsProvider.js.map +1 -0
  338. package/dist/dist/providers/TimeCardProvider.d.ts +8 -0
  339. package/dist/dist/providers/TimeCardProvider.d.ts.map +1 -0
  340. package/dist/dist/providers/TimeCardProvider.js +93 -0
  341. package/dist/dist/providers/TimeCardProvider.js.map +1 -0
  342. package/dist/dist/providers/TrashProvider.d.ts +13 -0
  343. package/dist/dist/providers/TrashProvider.d.ts.map +1 -0
  344. package/dist/dist/providers/TrashProvider.js +98 -0
  345. package/dist/dist/providers/TrashProvider.js.map +1 -0
  346. package/dist/dist/providers/dashboardAnalytics.d.ts +9 -0
  347. package/dist/dist/providers/dashboardAnalytics.d.ts.map +1 -0
  348. package/dist/dist/providers/dashboardAnalytics.js +41 -0
  349. package/dist/dist/providers/dashboardAnalytics.js.map +1 -0
  350. package/dist/dist/providers/dashboardAnalytics.test.d.ts +2 -0
  351. package/dist/dist/providers/dashboardAnalytics.test.d.ts.map +1 -0
  352. package/dist/dist/providers/dashboardAnalytics.test.js +111 -0
  353. package/dist/dist/providers/dashboardAnalytics.test.js.map +1 -0
  354. package/dist/dist/server-safe/BlockedNumberFunctions.d.ts +11 -0
  355. package/dist/dist/server-safe/BlockedNumberFunctions.d.ts.map +1 -0
  356. package/dist/dist/server-safe/BlockedNumberFunctions.js +16 -0
  357. package/dist/dist/server-safe/BlockedNumberFunctions.js.map +1 -0
  358. package/dist/dist/server-safe/EmployeeFunctions.d.ts +14 -0
  359. package/dist/dist/server-safe/EmployeeFunctions.d.ts.map +1 -0
  360. package/dist/dist/server-safe/EmployeeFunctions.js +70 -0
  361. package/dist/dist/server-safe/EmployeeFunctions.js.map +1 -0
  362. package/dist/dist/server-safe/EmployeeLocationFunctions.d.ts +7 -0
  363. package/dist/dist/server-safe/EmployeeLocationFunctions.d.ts.map +1 -0
  364. package/dist/dist/server-safe/EmployeeLocationFunctions.js +47 -0
  365. package/dist/dist/server-safe/EmployeeLocationFunctions.js.map +1 -0
  366. package/dist/dist/server-safe/EstimateFunctions.d.ts +15 -0
  367. package/dist/dist/server-safe/EstimateFunctions.d.ts.map +1 -0
  368. package/dist/dist/server-safe/EstimateFunctions.js +34 -0
  369. package/dist/dist/server-safe/EstimateFunctions.js.map +1 -0
  370. package/dist/dist/server-safe/InvoiceFunctions.d.ts +21 -0
  371. package/dist/dist/server-safe/InvoiceFunctions.d.ts.map +1 -0
  372. package/dist/dist/server-safe/InvoiceFunctions.js +124 -0
  373. package/dist/dist/server-safe/InvoiceFunctions.js.map +1 -0
  374. package/dist/dist/server-safe/JobFunctions.d.ts +15 -0
  375. package/dist/dist/server-safe/JobFunctions.d.ts.map +1 -0
  376. package/dist/dist/server-safe/JobFunctions.js +56 -0
  377. package/dist/dist/server-safe/JobFunctions.js.map +1 -0
  378. package/dist/dist/server-safe/PaymentFunctions.d.ts +16 -0
  379. package/dist/dist/server-safe/PaymentFunctions.d.ts.map +1 -0
  380. package/dist/dist/server-safe/PaymentFunctions.js +80 -0
  381. package/dist/dist/server-safe/PaymentFunctions.js.map +1 -0
  382. package/dist/dist/server-safe/PermissionFunctions.d.ts +7 -0
  383. package/dist/dist/server-safe/PermissionFunctions.d.ts.map +1 -0
  384. package/dist/dist/server-safe/PermissionFunctions.js +39 -0
  385. package/dist/dist/server-safe/PermissionFunctions.js.map +1 -0
  386. package/dist/dist/server-safe/TagFunctions.d.ts +18 -0
  387. package/dist/dist/server-safe/TagFunctions.d.ts.map +1 -0
  388. package/dist/dist/server-safe/TagFunctions.js +52 -0
  389. package/dist/dist/server-safe/TagFunctions.js.map +1 -0
  390. package/dist/dist/server-safe/autoJobType.d.ts +16 -0
  391. package/dist/dist/server-safe/autoJobType.d.ts.map +1 -0
  392. package/dist/dist/server-safe/autoJobType.js +39 -0
  393. package/dist/dist/server-safe/autoJobType.js.map +1 -0
  394. package/dist/dist/server-safe/autoJobType.test.d.ts +2 -0
  395. package/dist/dist/server-safe/autoJobType.test.d.ts.map +1 -0
  396. package/dist/dist/server-safe/autoJobType.test.js +83 -0
  397. package/dist/dist/server-safe/autoJobType.test.js.map +1 -0
  398. package/dist/dist/server-safe/automations.d.ts +197 -0
  399. package/dist/dist/server-safe/automations.d.ts.map +1 -0
  400. package/dist/dist/server-safe/automations.js +757 -0
  401. package/dist/dist/server-safe/automations.js.map +1 -0
  402. package/dist/dist/server-safe/automations.test.d.ts +2 -0
  403. package/dist/dist/server-safe/automations.test.d.ts.map +1 -0
  404. package/dist/dist/server-safe/automations.test.js +441 -0
  405. package/dist/dist/server-safe/automations.test.js.map +1 -0
  406. package/dist/dist/server-safe/constants.d.ts +156 -0
  407. package/dist/dist/server-safe/constants.d.ts.map +1 -0
  408. package/dist/dist/server-safe/constants.js +186 -0
  409. package/dist/dist/server-safe/constants.js.map +1 -0
  410. package/dist/dist/server-safe/contracts.d.ts +3 -0
  411. package/dist/dist/server-safe/contracts.d.ts.map +1 -0
  412. package/dist/dist/server-safe/contracts.js +15 -0
  413. package/dist/dist/server-safe/contracts.js.map +1 -0
  414. package/dist/dist/server-safe/database.types.d.ts +9510 -0
  415. package/dist/dist/server-safe/database.types.d.ts.map +1 -0
  416. package/dist/dist/server-safe/database.types.js +40 -0
  417. package/dist/dist/server-safe/database.types.js.map +1 -0
  418. package/dist/dist/server-safe/entitlements.d.ts +99 -0
  419. package/dist/dist/server-safe/entitlements.d.ts.map +1 -0
  420. package/dist/dist/server-safe/entitlements.js +487 -0
  421. package/dist/dist/server-safe/entitlements.js.map +1 -0
  422. package/dist/dist/server-safe/facebookAdsLeads.d.ts +225 -0
  423. package/dist/dist/server-safe/facebookAdsLeads.d.ts.map +1 -0
  424. package/dist/dist/server-safe/facebookAdsLeads.js +376 -0
  425. package/dist/dist/server-safe/facebookAdsLeads.js.map +1 -0
  426. package/dist/dist/server-safe/facebookAdsLeads.test.d.ts +2 -0
  427. package/dist/dist/server-safe/facebookAdsLeads.test.d.ts.map +1 -0
  428. package/dist/dist/server-safe/facebookAdsLeads.test.js +189 -0
  429. package/dist/dist/server-safe/facebookAdsLeads.test.js.map +1 -0
  430. package/dist/dist/server-safe/facebookAdsLeadsSql.test.d.ts +2 -0
  431. package/dist/dist/server-safe/facebookAdsLeadsSql.test.d.ts.map +1 -0
  432. package/dist/dist/server-safe/facebookAdsLeadsSql.test.js +32 -0
  433. package/dist/dist/server-safe/facebookAdsLeadsSql.test.js.map +1 -0
  434. package/dist/dist/server-safe/facebookMessenger.d.ts +20 -0
  435. package/dist/dist/server-safe/facebookMessenger.d.ts.map +1 -0
  436. package/dist/dist/server-safe/facebookMessenger.js +63 -0
  437. package/dist/dist/server-safe/facebookMessenger.js.map +1 -0
  438. package/dist/dist/server-safe/facebookMessenger.test.d.ts +2 -0
  439. package/dist/dist/server-safe/facebookMessenger.test.d.ts.map +1 -0
  440. package/dist/dist/server-safe/facebookMessenger.test.js +51 -0
  441. package/dist/dist/server-safe/facebookMessenger.test.js.map +1 -0
  442. package/dist/dist/server-safe/helpers.d.ts +78 -0
  443. package/dist/dist/server-safe/helpers.d.ts.map +1 -0
  444. package/dist/dist/server-safe/helpers.js +569 -0
  445. package/dist/dist/server-safe/helpers.js.map +1 -0
  446. package/dist/dist/server-safe/index.d.ts +30 -0
  447. package/dist/dist/server-safe/index.d.ts.map +1 -0
  448. package/dist/dist/server-safe/index.js +46 -0
  449. package/dist/dist/server-safe/index.js.map +1 -0
  450. package/dist/dist/server-safe/permissions.d.ts +29 -0
  451. package/dist/dist/server-safe/permissions.d.ts.map +1 -0
  452. package/dist/dist/server-safe/permissions.js +180 -0
  453. package/dist/dist/server-safe/permissions.js.map +1 -0
  454. package/dist/dist/server-safe/proposals.d.ts +6 -0
  455. package/dist/dist/server-safe/proposals.d.ts.map +1 -0
  456. package/dist/dist/server-safe/proposals.js +58 -0
  457. package/dist/dist/server-safe/proposals.js.map +1 -0
  458. package/dist/dist/server-safe/rentalAvailability.d.ts +56 -0
  459. package/dist/dist/server-safe/rentalAvailability.d.ts.map +1 -0
  460. package/dist/dist/server-safe/rentalAvailability.js +124 -0
  461. package/dist/dist/server-safe/rentalAvailability.js.map +1 -0
  462. package/dist/dist/server-safe/rentalAvailability.test.d.ts +2 -0
  463. package/dist/dist/server-safe/rentalAvailability.test.d.ts.map +1 -0
  464. package/dist/dist/server-safe/rentalAvailability.test.js +290 -0
  465. package/dist/dist/server-safe/rentalAvailability.test.js.map +1 -0
  466. package/dist/dist/server-safe/rentals.d.ts +95 -0
  467. package/dist/dist/server-safe/rentals.d.ts.map +1 -0
  468. package/dist/dist/server-safe/rentals.js +432 -0
  469. package/dist/dist/server-safe/rentals.js.map +1 -0
  470. package/dist/dist/server-safe/rentals.test.d.ts +2 -0
  471. package/dist/dist/server-safe/rentals.test.d.ts.map +1 -0
  472. package/dist/dist/server-safe/rentals.test.js +1034 -0
  473. package/dist/dist/server-safe/rentals.test.js.map +1 -0
  474. package/dist/dist/server-safe/routeOptimization.d.ts +155 -0
  475. package/dist/dist/server-safe/routeOptimization.d.ts.map +1 -0
  476. package/dist/dist/server-safe/routeOptimization.js +120 -0
  477. package/dist/dist/server-safe/routeOptimization.js.map +1 -0
  478. package/dist/dist/server-safe/routeOptimization.test.d.ts +2 -0
  479. package/dist/dist/server-safe/routeOptimization.test.d.ts.map +1 -0
  480. package/dist/dist/server-safe/routeOptimization.test.js +234 -0
  481. package/dist/dist/server-safe/routeOptimization.test.js.map +1 -0
  482. package/dist/dist/server-safe/routePlanFingerprint.d.ts +13 -0
  483. package/dist/dist/server-safe/routePlanFingerprint.d.ts.map +1 -0
  484. package/dist/dist/server-safe/routePlanFingerprint.js +49 -0
  485. package/dist/dist/server-safe/routePlanFingerprint.js.map +1 -0
  486. package/dist/dist/server-safe/routePlanFingerprint.test.d.ts +2 -0
  487. package/dist/dist/server-safe/routePlanFingerprint.test.d.ts.map +1 -0
  488. package/dist/dist/server-safe/routePlanFingerprint.test.js +68 -0
  489. package/dist/dist/server-safe/routePlanFingerprint.test.js.map +1 -0
  490. package/dist/dist/server-safe/scheduleListOrder.d.ts +18 -0
  491. package/dist/dist/server-safe/scheduleListOrder.d.ts.map +1 -0
  492. package/dist/dist/server-safe/scheduleListOrder.js +92 -0
  493. package/dist/dist/server-safe/scheduleListOrder.js.map +1 -0
  494. package/dist/dist/server-safe/scheduleListOrder.test.d.ts +2 -0
  495. package/dist/dist/server-safe/scheduleListOrder.test.d.ts.map +1 -0
  496. package/dist/dist/server-safe/scheduleListOrder.test.js +260 -0
  497. package/dist/dist/server-safe/scheduleListOrder.test.js.map +1 -0
  498. package/dist/dist/server-safe/serviceMinutes.d.ts +13 -0
  499. package/dist/dist/server-safe/serviceMinutes.d.ts.map +1 -0
  500. package/dist/dist/server-safe/serviceMinutes.js +38 -0
  501. package/dist/dist/server-safe/serviceMinutes.js.map +1 -0
  502. package/dist/dist/server-safe/serviceMinutes.test.d.ts +2 -0
  503. package/dist/dist/server-safe/serviceMinutes.test.d.ts.map +1 -0
  504. package/dist/dist/server-safe/serviceMinutes.test.js +86 -0
  505. package/dist/dist/server-safe/serviceMinutes.test.js.map +1 -0
  506. package/dist/dist/server-safe/settingsSearch.d.ts +24 -0
  507. package/dist/dist/server-safe/settingsSearch.d.ts.map +1 -0
  508. package/dist/dist/server-safe/settingsSearch.js +8 -0
  509. package/dist/dist/server-safe/settingsSearch.js.map +1 -0
  510. package/dist/dist/server-safe/supportChat.d.ts +59 -0
  511. package/dist/dist/server-safe/supportChat.d.ts.map +1 -0
  512. package/dist/dist/server-safe/supportChat.js +56 -0
  513. package/dist/dist/server-safe/supportChat.js.map +1 -0
  514. package/dist/dist/server-safe/templates.d.ts +15 -0
  515. package/dist/dist/server-safe/templates.d.ts.map +1 -0
  516. package/dist/dist/server-safe/templates.js +91 -0
  517. package/dist/dist/server-safe/templates.js.map +1 -0
  518. package/dist/dist/server-safe/templates.test.d.ts +2 -0
  519. package/dist/dist/server-safe/templates.test.d.ts.map +1 -0
  520. package/dist/dist/server-safe/templates.test.js +62 -0
  521. package/dist/dist/server-safe/templates.test.js.map +1 -0
  522. package/dist/dist/server-safe/trash.d.ts +50 -0
  523. package/dist/dist/server-safe/trash.d.ts.map +1 -0
  524. package/dist/dist/server-safe/trash.js +100 -0
  525. package/dist/dist/server-safe/trash.js.map +1 -0
  526. package/dist/dist/utils/LogHandler.d.ts +3 -0
  527. package/dist/dist/utils/LogHandler.d.ts.map +1 -0
  528. package/dist/dist/utils/LogHandler.js +16 -0
  529. package/dist/dist/utils/LogHandler.js.map +1 -0
  530. package/dist/dist/utils/convertSupabaseImagesToAssets.d.ts +28 -0
  531. package/dist/dist/utils/convertSupabaseImagesToAssets.d.ts.map +1 -0
  532. package/dist/dist/utils/convertSupabaseImagesToAssets.js +14 -0
  533. package/dist/dist/utils/convertSupabaseImagesToAssets.js.map +1 -0
  534. package/dist/index.d.ts +45 -0
  535. package/dist/index.d.ts.map +1 -0
  536. package/dist/index.js +61 -0
  537. package/dist/index.js.map +1 -0
  538. package/dist/interfaces/index.d.ts +1238 -0
  539. package/dist/interfaces/index.d.ts.map +1 -0
  540. package/dist/interfaces/index.js +3 -0
  541. package/dist/interfaces/index.js.map +1 -0
  542. package/dist/providers/AddressProvider.d.ts +9 -0
  543. package/dist/providers/AddressProvider.d.ts.map +1 -0
  544. package/dist/providers/AddressProvider.js +207 -0
  545. package/dist/providers/AddressProvider.js.map +1 -0
  546. package/dist/providers/AutomationsProvider.d.ts +11 -0
  547. package/dist/providers/AutomationsProvider.d.ts.map +1 -0
  548. package/dist/providers/AutomationsProvider.js +170 -0
  549. package/dist/providers/AutomationsProvider.js.map +1 -0
  550. package/dist/providers/BlockedNumbersProvider.d.ts +7 -0
  551. package/dist/providers/BlockedNumbersProvider.d.ts.map +1 -0
  552. package/dist/providers/BlockedNumbersProvider.js +71 -0
  553. package/dist/providers/BlockedNumbersProvider.js.map +1 -0
  554. package/dist/providers/CategoryProvider.d.ts +8 -0
  555. package/dist/providers/CategoryProvider.d.ts.map +1 -0
  556. package/dist/providers/CategoryProvider.js +95 -0
  557. package/dist/providers/CategoryProvider.js.map +1 -0
  558. package/dist/providers/ClientProvider.d.ts +39 -0
  559. package/dist/providers/ClientProvider.d.ts.map +1 -0
  560. package/dist/providers/ClientProvider.js +253 -0
  561. package/dist/providers/ClientProvider.js.map +1 -0
  562. package/dist/providers/CompanyProvider.d.ts +7 -0
  563. package/dist/providers/CompanyProvider.d.ts.map +1 -0
  564. package/dist/providers/CompanyProvider.js +114 -0
  565. package/dist/providers/CompanyProvider.js.map +1 -0
  566. package/dist/providers/DashboardProvider.d.ts +78 -0
  567. package/dist/providers/DashboardProvider.d.ts.map +1 -0
  568. package/dist/providers/DashboardProvider.js +568 -0
  569. package/dist/providers/DashboardProvider.js.map +1 -0
  570. package/dist/providers/DiscountProvider.d.ts +8 -0
  571. package/dist/providers/DiscountProvider.d.ts.map +1 -0
  572. package/dist/providers/DiscountProvider.js +92 -0
  573. package/dist/providers/DiscountProvider.js.map +1 -0
  574. package/dist/providers/EmployeesProvider.d.ts +6 -0
  575. package/dist/providers/EmployeesProvider.d.ts.map +1 -0
  576. package/dist/providers/EmployeesProvider.js +185 -0
  577. package/dist/providers/EmployeesProvider.js.map +1 -0
  578. package/dist/providers/EstimatesProvider.d.ts +16 -0
  579. package/dist/providers/EstimatesProvider.d.ts.map +1 -0
  580. package/dist/providers/EstimatesProvider.js +251 -0
  581. package/dist/providers/EstimatesProvider.js.map +1 -0
  582. package/dist/providers/EventsProvider.d.ts +4 -0
  583. package/dist/providers/EventsProvider.d.ts.map +1 -0
  584. package/dist/providers/EventsProvider.js +24 -0
  585. package/dist/providers/EventsProvider.js.map +1 -0
  586. package/dist/providers/FilesProvider.d.ts +17 -0
  587. package/dist/providers/FilesProvider.d.ts.map +1 -0
  588. package/dist/providers/FilesProvider.js +201 -0
  589. package/dist/providers/FilesProvider.js.map +1 -0
  590. package/dist/providers/InvoicesProvider.d.ts +13 -0
  591. package/dist/providers/InvoicesProvider.d.ts.map +1 -0
  592. package/dist/providers/InvoicesProvider.js +207 -0
  593. package/dist/providers/InvoicesProvider.js.map +1 -0
  594. package/dist/providers/ItemProvider.d.ts +9 -0
  595. package/dist/providers/ItemProvider.d.ts.map +1 -0
  596. package/dist/providers/ItemProvider.js +201 -0
  597. package/dist/providers/ItemProvider.js.map +1 -0
  598. package/dist/providers/JobSourceProvider.d.ts +8 -0
  599. package/dist/providers/JobSourceProvider.d.ts.map +1 -0
  600. package/dist/providers/JobSourceProvider.js +75 -0
  601. package/dist/providers/JobSourceProvider.js.map +1 -0
  602. package/dist/providers/JobTypeProvider.d.ts +8 -0
  603. package/dist/providers/JobTypeProvider.d.ts.map +1 -0
  604. package/dist/providers/JobTypeProvider.js +75 -0
  605. package/dist/providers/JobTypeProvider.js.map +1 -0
  606. package/dist/providers/JobsProvider.d.ts +20 -0
  607. package/dist/providers/JobsProvider.d.ts.map +1 -0
  608. package/dist/providers/JobsProvider.js +863 -0
  609. package/dist/providers/JobsProvider.js.map +1 -0
  610. package/dist/providers/MessagesProvider.d.ts +14 -0
  611. package/dist/providers/MessagesProvider.d.ts.map +1 -0
  612. package/dist/providers/MessagesProvider.js +415 -0
  613. package/dist/providers/MessagesProvider.js.map +1 -0
  614. package/dist/providers/PaymentProvider.d.ts +9 -0
  615. package/dist/providers/PaymentProvider.d.ts.map +1 -0
  616. package/dist/providers/PaymentProvider.js +48 -0
  617. package/dist/providers/PaymentProvider.js.map +1 -0
  618. package/dist/providers/PermissionRolesProvider.d.ts +5 -0
  619. package/dist/providers/PermissionRolesProvider.d.ts.map +1 -0
  620. package/dist/providers/PermissionRolesProvider.js +30 -0
  621. package/dist/providers/PermissionRolesProvider.js.map +1 -0
  622. package/dist/providers/PhoneNumberProvider.d.ts +12 -0
  623. package/dist/providers/PhoneNumberProvider.d.ts.map +1 -0
  624. package/dist/providers/PhoneNumberProvider.js +184 -0
  625. package/dist/providers/PhoneNumberProvider.js.map +1 -0
  626. package/dist/providers/ProfileProvider.d.ts +6 -0
  627. package/dist/providers/ProfileProvider.d.ts.map +1 -0
  628. package/dist/providers/ProfileProvider.js +71 -0
  629. package/dist/providers/ProfileProvider.js.map +1 -0
  630. package/dist/providers/RentalsProvider.d.ts +28 -0
  631. package/dist/providers/RentalsProvider.d.ts.map +1 -0
  632. package/dist/providers/RentalsProvider.js +438 -0
  633. package/dist/providers/RentalsProvider.js.map +1 -0
  634. package/dist/providers/SettingsBookingProvider.d.ts +9 -0
  635. package/dist/providers/SettingsBookingProvider.d.ts.map +1 -0
  636. package/dist/providers/SettingsBookingProvider.js +163 -0
  637. package/dist/providers/SettingsBookingProvider.js.map +1 -0
  638. package/dist/providers/SettingsProvider.d.ts +8 -0
  639. package/dist/providers/SettingsProvider.d.ts.map +1 -0
  640. package/dist/providers/SettingsProvider.js +86 -0
  641. package/dist/providers/SettingsProvider.js.map +1 -0
  642. package/dist/providers/TagsProvider.d.ts +12 -0
  643. package/dist/providers/TagsProvider.d.ts.map +1 -0
  644. package/dist/providers/TagsProvider.js +210 -0
  645. package/dist/providers/TagsProvider.js.map +1 -0
  646. package/dist/providers/TimeCardProvider.d.ts +8 -0
  647. package/dist/providers/TimeCardProvider.d.ts.map +1 -0
  648. package/dist/providers/TimeCardProvider.js +93 -0
  649. package/dist/providers/TimeCardProvider.js.map +1 -0
  650. package/dist/providers/TrashProvider.d.ts +13 -0
  651. package/dist/providers/TrashProvider.d.ts.map +1 -0
  652. package/dist/providers/TrashProvider.js +98 -0
  653. package/dist/providers/TrashProvider.js.map +1 -0
  654. package/dist/providers/dashboardAnalytics.d.ts +9 -0
  655. package/dist/providers/dashboardAnalytics.d.ts.map +1 -0
  656. package/dist/providers/dashboardAnalytics.js +41 -0
  657. package/dist/providers/dashboardAnalytics.js.map +1 -0
  658. package/dist/providers/dashboardAnalytics.test.d.ts +2 -0
  659. package/dist/providers/dashboardAnalytics.test.d.ts.map +1 -0
  660. package/dist/providers/dashboardAnalytics.test.js +111 -0
  661. package/dist/providers/dashboardAnalytics.test.js.map +1 -0
  662. package/dist/server-safe/BlockedNumberFunctions.d.ts +11 -0
  663. package/dist/server-safe/BlockedNumberFunctions.d.ts.map +1 -0
  664. package/dist/server-safe/BlockedNumberFunctions.js +16 -0
  665. package/dist/server-safe/BlockedNumberFunctions.js.map +1 -0
  666. package/dist/server-safe/EmployeeFunctions.d.ts +14 -0
  667. package/dist/server-safe/EmployeeFunctions.d.ts.map +1 -0
  668. package/dist/server-safe/EmployeeFunctions.js +70 -0
  669. package/dist/server-safe/EmployeeFunctions.js.map +1 -0
  670. package/dist/server-safe/EmployeeLocationFunctions.d.ts +7 -0
  671. package/dist/server-safe/EmployeeLocationFunctions.d.ts.map +1 -0
  672. package/dist/server-safe/EmployeeLocationFunctions.js +47 -0
  673. package/dist/server-safe/EmployeeLocationFunctions.js.map +1 -0
  674. package/dist/server-safe/EstimateFunctions.d.ts +15 -0
  675. package/dist/server-safe/EstimateFunctions.d.ts.map +1 -0
  676. package/dist/server-safe/EstimateFunctions.js +34 -0
  677. package/dist/server-safe/EstimateFunctions.js.map +1 -0
  678. package/dist/server-safe/InvoiceFunctions.d.ts +21 -0
  679. package/dist/server-safe/InvoiceFunctions.d.ts.map +1 -0
  680. package/dist/server-safe/InvoiceFunctions.js +124 -0
  681. package/dist/server-safe/InvoiceFunctions.js.map +1 -0
  682. package/dist/server-safe/JobFunctions.d.ts +15 -0
  683. package/dist/server-safe/JobFunctions.d.ts.map +1 -0
  684. package/dist/server-safe/JobFunctions.js +56 -0
  685. package/dist/server-safe/JobFunctions.js.map +1 -0
  686. package/dist/server-safe/PaymentFunctions.d.ts +16 -0
  687. package/dist/server-safe/PaymentFunctions.d.ts.map +1 -0
  688. package/dist/server-safe/PaymentFunctions.js +80 -0
  689. package/dist/server-safe/PaymentFunctions.js.map +1 -0
  690. package/dist/server-safe/PermissionFunctions.d.ts +7 -0
  691. package/dist/server-safe/PermissionFunctions.d.ts.map +1 -0
  692. package/dist/server-safe/PermissionFunctions.js +39 -0
  693. package/dist/server-safe/PermissionFunctions.js.map +1 -0
  694. package/dist/server-safe/TagFunctions.d.ts +18 -0
  695. package/dist/server-safe/TagFunctions.d.ts.map +1 -0
  696. package/dist/server-safe/TagFunctions.js +52 -0
  697. package/dist/server-safe/TagFunctions.js.map +1 -0
  698. package/dist/server-safe/autoJobType.d.ts +16 -0
  699. package/dist/server-safe/autoJobType.d.ts.map +1 -0
  700. package/dist/server-safe/autoJobType.js +39 -0
  701. package/dist/server-safe/autoJobType.js.map +1 -0
  702. package/dist/server-safe/autoJobType.test.d.ts +2 -0
  703. package/dist/server-safe/autoJobType.test.d.ts.map +1 -0
  704. package/dist/server-safe/autoJobType.test.js +83 -0
  705. package/dist/server-safe/autoJobType.test.js.map +1 -0
  706. package/dist/server-safe/automations.d.ts +197 -0
  707. package/dist/server-safe/automations.d.ts.map +1 -0
  708. package/dist/server-safe/automations.js +757 -0
  709. package/dist/server-safe/automations.js.map +1 -0
  710. package/dist/server-safe/automations.test.d.ts +2 -0
  711. package/dist/server-safe/automations.test.d.ts.map +1 -0
  712. package/dist/server-safe/automations.test.js +441 -0
  713. package/dist/server-safe/automations.test.js.map +1 -0
  714. package/dist/server-safe/constants.d.ts +156 -0
  715. package/dist/server-safe/constants.d.ts.map +1 -0
  716. package/dist/server-safe/constants.js +186 -0
  717. package/dist/server-safe/constants.js.map +1 -0
  718. package/dist/server-safe/contracts.d.ts +3 -0
  719. package/dist/server-safe/contracts.d.ts.map +1 -0
  720. package/dist/server-safe/contracts.js +15 -0
  721. package/dist/server-safe/contracts.js.map +1 -0
  722. package/dist/server-safe/database.types.d.ts +9510 -0
  723. package/dist/server-safe/database.types.d.ts.map +1 -0
  724. package/dist/server-safe/database.types.js +40 -0
  725. package/dist/server-safe/database.types.js.map +1 -0
  726. package/dist/server-safe/entitlements.d.ts +99 -0
  727. package/dist/server-safe/entitlements.d.ts.map +1 -0
  728. package/dist/server-safe/entitlements.js +487 -0
  729. package/dist/server-safe/entitlements.js.map +1 -0
  730. package/dist/server-safe/helpers.d.ts +78 -0
  731. package/dist/server-safe/helpers.d.ts.map +1 -0
  732. package/dist/server-safe/helpers.js +569 -0
  733. package/dist/server-safe/helpers.js.map +1 -0
  734. package/dist/server-safe/index.d.ts +30 -0
  735. package/dist/server-safe/index.d.ts.map +1 -0
  736. package/dist/server-safe/index.js +46 -0
  737. package/dist/server-safe/index.js.map +1 -0
  738. package/dist/server-safe/permissions.d.ts +29 -0
  739. package/dist/server-safe/permissions.d.ts.map +1 -0
  740. package/dist/server-safe/permissions.js +180 -0
  741. package/dist/server-safe/permissions.js.map +1 -0
  742. package/dist/server-safe/proposals.d.ts +6 -0
  743. package/dist/server-safe/proposals.d.ts.map +1 -0
  744. package/dist/server-safe/proposals.js +58 -0
  745. package/dist/server-safe/proposals.js.map +1 -0
  746. package/dist/server-safe/rentalAvailability.d.ts +56 -0
  747. package/dist/server-safe/rentalAvailability.d.ts.map +1 -0
  748. package/dist/server-safe/rentalAvailability.js +124 -0
  749. package/dist/server-safe/rentalAvailability.js.map +1 -0
  750. package/dist/server-safe/rentalAvailability.test.d.ts +2 -0
  751. package/dist/server-safe/rentalAvailability.test.d.ts.map +1 -0
  752. package/dist/server-safe/rentalAvailability.test.js +290 -0
  753. package/dist/server-safe/rentalAvailability.test.js.map +1 -0
  754. package/dist/server-safe/rentals.d.ts +95 -0
  755. package/dist/server-safe/rentals.d.ts.map +1 -0
  756. package/dist/server-safe/rentals.js +432 -0
  757. package/dist/server-safe/rentals.js.map +1 -0
  758. package/dist/server-safe/rentals.test.d.ts +2 -0
  759. package/dist/server-safe/rentals.test.d.ts.map +1 -0
  760. package/dist/server-safe/rentals.test.js +1034 -0
  761. package/dist/server-safe/rentals.test.js.map +1 -0
  762. package/dist/server-safe/routeOptimization.d.ts +155 -0
  763. package/dist/server-safe/routeOptimization.d.ts.map +1 -0
  764. package/dist/server-safe/routeOptimization.js +120 -0
  765. package/dist/server-safe/routeOptimization.js.map +1 -0
  766. package/dist/server-safe/routeOptimization.test.d.ts +2 -0
  767. package/dist/server-safe/routeOptimization.test.d.ts.map +1 -0
  768. package/dist/server-safe/routeOptimization.test.js +234 -0
  769. package/dist/server-safe/routeOptimization.test.js.map +1 -0
  770. package/dist/server-safe/routePlanFingerprint.d.ts +13 -0
  771. package/dist/server-safe/routePlanFingerprint.d.ts.map +1 -0
  772. package/dist/server-safe/routePlanFingerprint.js +49 -0
  773. package/dist/server-safe/routePlanFingerprint.js.map +1 -0
  774. package/dist/server-safe/routePlanFingerprint.test.d.ts +2 -0
  775. package/dist/server-safe/routePlanFingerprint.test.d.ts.map +1 -0
  776. package/dist/server-safe/routePlanFingerprint.test.js +68 -0
  777. package/dist/server-safe/routePlanFingerprint.test.js.map +1 -0
  778. package/dist/server-safe/scheduleListOrder.d.ts +18 -0
  779. package/dist/server-safe/scheduleListOrder.d.ts.map +1 -0
  780. package/dist/server-safe/scheduleListOrder.js +92 -0
  781. package/dist/server-safe/scheduleListOrder.js.map +1 -0
  782. package/dist/server-safe/scheduleListOrder.test.d.ts +2 -0
  783. package/dist/server-safe/scheduleListOrder.test.d.ts.map +1 -0
  784. package/dist/server-safe/scheduleListOrder.test.js +260 -0
  785. package/dist/server-safe/scheduleListOrder.test.js.map +1 -0
  786. package/dist/server-safe/serviceMinutes.d.ts +13 -0
  787. package/dist/server-safe/serviceMinutes.d.ts.map +1 -0
  788. package/dist/server-safe/serviceMinutes.js +38 -0
  789. package/dist/server-safe/serviceMinutes.js.map +1 -0
  790. package/dist/server-safe/serviceMinutes.test.d.ts +2 -0
  791. package/dist/server-safe/serviceMinutes.test.d.ts.map +1 -0
  792. package/dist/server-safe/serviceMinutes.test.js +86 -0
  793. package/dist/server-safe/serviceMinutes.test.js.map +1 -0
  794. package/dist/server-safe/settingsSearch.d.ts +24 -0
  795. package/dist/server-safe/settingsSearch.d.ts.map +1 -0
  796. package/dist/server-safe/settingsSearch.js +8 -0
  797. package/dist/server-safe/settingsSearch.js.map +1 -0
  798. package/dist/server-safe/supportChat.d.ts +59 -0
  799. package/dist/server-safe/supportChat.d.ts.map +1 -0
  800. package/dist/server-safe/supportChat.js +56 -0
  801. package/dist/server-safe/supportChat.js.map +1 -0
  802. package/dist/server-safe/templates.d.ts +15 -0
  803. package/dist/server-safe/templates.d.ts.map +1 -0
  804. package/dist/server-safe/templates.js +91 -0
  805. package/dist/server-safe/templates.js.map +1 -0
  806. package/dist/server-safe/templates.test.d.ts +2 -0
  807. package/dist/server-safe/templates.test.d.ts.map +1 -0
  808. package/dist/server-safe/templates.test.js +62 -0
  809. package/dist/server-safe/templates.test.js.map +1 -0
  810. package/dist/server-safe/trash.d.ts +50 -0
  811. package/dist/server-safe/trash.d.ts.map +1 -0
  812. package/dist/server-safe/trash.js +100 -0
  813. package/dist/server-safe/trash.js.map +1 -0
  814. package/dist/utils/LogHandler.d.ts +3 -0
  815. package/dist/utils/LogHandler.d.ts.map +1 -0
  816. package/dist/utils/LogHandler.js +16 -0
  817. package/dist/utils/LogHandler.js.map +1 -0
  818. package/dist/utils/convertSupabaseImagesToAssets.d.ts +28 -0
  819. package/dist/utils/convertSupabaseImagesToAssets.d.ts.map +1 -0
  820. package/dist/utils/convertSupabaseImagesToAssets.js +14 -0
  821. package/dist/utils/convertSupabaseImagesToAssets.js.map +1 -0
  822. package/package.json +37 -0
@@ -0,0 +1,863 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useJobsProvider = void 0;
4
+ const react_1 = require("react");
5
+ const Provider_1 = require("../Provider");
6
+ const server_safe_1 = require("../server-safe");
7
+ const helpers_1 = require("../server-safe/helpers");
8
+ const JobFunctions_1 = require("../server-safe/JobFunctions");
9
+ const TagFunctions_1 = require("../server-safe/TagFunctions");
10
+ const trash_1 = require("../server-safe/trash");
11
+ const LogHandler_1 = require("../utils/LogHandler");
12
+ const RECURRING_TEMPLATE_PAGE_SIZE = 500;
13
+ const useJobsProvider = () => {
14
+ const { supabase, debugMode } = (0, Provider_1.useAutopilotProvider)();
15
+ const fetchRecurringJobTemplates = (0, react_1.useCallback)(async (companyId) => {
16
+ const recurringRows = [];
17
+ let from = 0;
18
+ while (true) {
19
+ const { data, error } = await supabase
20
+ .from('job_recurring')
21
+ .select('*, job_user_recurring(*)')
22
+ .eq('company_id', companyId)
23
+ .is('deleted_at', null)
24
+ .order('id', { ascending: true })
25
+ .range(from, from + RECURRING_TEMPLATE_PAGE_SIZE - 1);
26
+ if (error) {
27
+ (0, LogHandler_1.captureErrorException)('error fetching recurring templates', error);
28
+ throw error;
29
+ }
30
+ const page = data ?? [];
31
+ recurringRows.push(...page);
32
+ if (page.length < RECURRING_TEMPLATE_PAGE_SIZE)
33
+ break;
34
+ from += RECURRING_TEMPLATE_PAGE_SIZE;
35
+ }
36
+ return recurringRows.map((jobRecurring) => ({
37
+ ...jobRecurring,
38
+ job_user: jobRecurring.job_user_recurring,
39
+ }));
40
+ }, [supabase]);
41
+ const createJob = (0, react_1.useCallback)(async (jobData, schedule, tags, rrule) => {
42
+ const companyId = jobData.company_id;
43
+ if (jobData.estimate_id) {
44
+ const { data: existingJob, error: existingJobError } = await supabase
45
+ .from('job')
46
+ .select('id')
47
+ .eq('estimate_id', jobData.estimate_id)
48
+ .is('deleted_at', null)
49
+ .maybeSingle();
50
+ if (existingJobError) {
51
+ if (debugMode)
52
+ (0, LogHandler_1.captureErrorException)('createJob DUPLICATE CHECK ERROR: ', existingJobError);
53
+ throw existingJobError;
54
+ }
55
+ if (existingJob) {
56
+ throw new Error('A job already exists for this estimate');
57
+ }
58
+ }
59
+ if (!schedule?.length) {
60
+ throw new Error('createJob requires at least one schedule');
61
+ }
62
+ const { data: taxRate, error: taxRateError } = await supabase
63
+ .from('tax_rate')
64
+ .select()
65
+ .eq('company_id', companyId)
66
+ .eq('is_default', true);
67
+ if (taxRateError) {
68
+ if (debugMode)
69
+ (0, LogHandler_1.captureErrorException)('createJob TAX RATE ERROR: ', taxRateError);
70
+ throw taxRateError;
71
+ }
72
+ let taxRateId = null;
73
+ if (taxRate && taxRate[0]?.id) {
74
+ taxRateId = taxRate[0].id;
75
+ }
76
+ let jobRecurringId = jobData.job_recurring_id ?? null;
77
+ if (rrule) {
78
+ const recurringData = {
79
+ address_id: jobData.address_id,
80
+ client_id: jobData.client_id,
81
+ company_id: companyId,
82
+ start_time: schedule[0].start_time,
83
+ end_time: schedule[0].end_time,
84
+ job_source: jobData.job_source,
85
+ job_type: jobData.type,
86
+ notes: jobData.notes,
87
+ rrule,
88
+ tax_rate_id: jobData.tax_rate_id,
89
+ };
90
+ const { data: recurringJob, error: recurringError } = await supabase
91
+ .from('job_recurring')
92
+ .insert(recurringData)
93
+ .select()
94
+ .single();
95
+ if (recurringError) {
96
+ if (debugMode)
97
+ (0, LogHandler_1.captureErrorException)('createJob JOB-RECURRING ERROR', recurringError);
98
+ throw recurringError;
99
+ }
100
+ if (!recurringJob)
101
+ throw new Error('Missing job_recurring somehow');
102
+ jobRecurringId = recurringJob.id;
103
+ const recurringUsers = schedule[0].job_user ?? [];
104
+ if (recurringUsers.length > 0) {
105
+ const { error: jobUserRecurringError } = await supabase
106
+ .from('job_user_recurring')
107
+ .insert(recurringUsers.map((user) => ({
108
+ job_recurring_id: jobRecurringId,
109
+ user_id: user.id,
110
+ company_id: companyId,
111
+ })));
112
+ if (jobUserRecurringError) {
113
+ if (debugMode)
114
+ (0, LogHandler_1.captureErrorException)('createJob JOB-USER ERROR', jobUserRecurringError);
115
+ throw jobUserRecurringError;
116
+ }
117
+ }
118
+ const arrayOfJobs = await (0, helpers_1.createRecurringInstances)({
119
+ recurringJobId: jobRecurringId,
120
+ recurringData,
121
+ supabase: supabase,
122
+ });
123
+ if (!arrayOfJobs[0]?.job)
124
+ throw new Error(`createRecurringInstances didn't return any jobs`);
125
+ const completeNewJob = arrayOfJobs[0]?.job;
126
+ return completeNewJob;
127
+ }
128
+ const { data, error } = await supabase
129
+ .from('job')
130
+ .insert({
131
+ ...jobData,
132
+ job_number: undefined,
133
+ tax_rate_id: taxRateId,
134
+ job_recurring_id: jobRecurringId,
135
+ })
136
+ .select(`
137
+ *,
138
+ client: client_id (*),
139
+ address: address_id (*),
140
+ tax_rate: tax_rate_id(*),
141
+ items: job_item(*),
142
+ discounts: job_discount(*),
143
+ payments: payment(*)
144
+ `)
145
+ .single();
146
+ if (error) {
147
+ if (debugMode)
148
+ (0, LogHandler_1.captureErrorException)('createJob CLIENT-JOB ERROR', error);
149
+ throw error;
150
+ }
151
+ let jobScheduleData = [];
152
+ if (data && schedule && schedule.length > 0) {
153
+ const { data: insertedSchedules, error: scheduleError } = await supabase
154
+ .from('job_schedule')
155
+ .insert(schedule.map(({ job_user, ...task }) => ({
156
+ ...task,
157
+ job_id: data.id,
158
+ company_id: companyId,
159
+ })))
160
+ .select();
161
+ if (scheduleError) {
162
+ if (debugMode)
163
+ (0, LogHandler_1.captureErrorException)('createJob JOB-SCHEDULE ERROR', scheduleError);
164
+ throw scheduleError;
165
+ }
166
+ jobScheduleData = await Promise.all(insertedSchedules.map(async (s, i) => {
167
+ const users = schedule[i]?.job_user ?? [];
168
+ await Promise.all(users.map((user) => supabase
169
+ .from('job_user')
170
+ .insert({
171
+ job_id: data.id,
172
+ user_id: user.id,
173
+ company_id: companyId,
174
+ job_schedule_id: s.id,
175
+ })
176
+ .then(({ error: jobUserError }) => {
177
+ if (jobUserError) {
178
+ if (debugMode)
179
+ (0, LogHandler_1.captureErrorException)('createJob JOB-USER ERROR', jobUserError);
180
+ throw jobUserError;
181
+ }
182
+ })));
183
+ return { ...s, job_user: users };
184
+ }));
185
+ }
186
+ if (data && tags) {
187
+ await Promise.all(tags.map((tag) => (0, TagFunctions_1.createJobTagLinkFunction)({
188
+ companyId,
189
+ jobId: data.id,
190
+ jobRecurringId: data.job_recurring_id,
191
+ tag,
192
+ }, {
193
+ supabase: supabase,
194
+ debugMode,
195
+ captureErrorException: LogHandler_1.captureErrorException,
196
+ captureLogging: LogHandler_1.captureLogging,
197
+ })));
198
+ }
199
+ if (debugMode)
200
+ (0, LogHandler_1.captureLogging)('createJob CLIENT-JOB DATA', data);
201
+ (0, helpers_1.assertNonEmpty)(jobScheduleData, `createJob produced no schedules for job ${data.id}`);
202
+ const { job_payment_status, amount_due, total_amount } = (0, server_safe_1.calculateJobPaymentStatus)({
203
+ ...data,
204
+ job_schedule: jobScheduleData,
205
+ });
206
+ return {
207
+ ...data,
208
+ job_schedule: jobScheduleData,
209
+ job_payment_status,
210
+ amount_due,
211
+ total_amount,
212
+ };
213
+ }, [debugMode, supabase]);
214
+ const fetchJob = (0, react_1.useCallback)(async (companyId, jobId) => {
215
+ return (0, JobFunctions_1.fetchJobFunction)({ companyId, jobId }, { supabase: supabase, debugMode, captureErrorException: LogHandler_1.captureErrorException });
216
+ }, [debugMode, supabase]);
217
+ const updateJob = (0, react_1.useCallback)(async (jobId, jobDetails, recurringMode) => {
218
+ if (Object.keys(jobDetails).length > 0) {
219
+ const { error } = await supabase
220
+ .from('job')
221
+ .update(jobDetails)
222
+ .eq('id', jobId);
223
+ if (error) {
224
+ if (debugMode)
225
+ (0, LogHandler_1.captureErrorException)('updateJob ERROR', error);
226
+ throw error;
227
+ }
228
+ }
229
+ const { data, error: fetchError } = await supabase
230
+ .from('job')
231
+ .select()
232
+ .eq('id', jobId)
233
+ .single();
234
+ if (fetchError) {
235
+ if (debugMode)
236
+ (0, LogHandler_1.captureErrorException)('updateJob FETCH ERROR', fetchError);
237
+ throw fetchError;
238
+ }
239
+ if (recurringMode === 'this_and_future' && data.job_recurring_id) {
240
+ const recurringUpdates = {};
241
+ if ('notes' in jobDetails)
242
+ recurringUpdates.notes = jobDetails.notes;
243
+ if ('address_id' in jobDetails)
244
+ recurringUpdates.address_id = jobDetails.address_id;
245
+ if ('job_source' in jobDetails)
246
+ recurringUpdates.job_source = jobDetails.job_source;
247
+ if ('type' in jobDetails)
248
+ recurringUpdates.job_type = jobDetails.type;
249
+ if ('tax_rate_id' in jobDetails)
250
+ recurringUpdates.tax_rate_id = jobDetails.tax_rate_id;
251
+ if (Object.keys(recurringUpdates).length > 0) {
252
+ const { error: recurringError } = await supabase
253
+ .from('job_recurring')
254
+ .update(recurringUpdates)
255
+ .eq('id', data.job_recurring_id);
256
+ if (recurringError) {
257
+ if (debugMode)
258
+ (0, LogHandler_1.captureErrorException)('updateJob RECURRING ERROR', recurringError);
259
+ throw recurringError;
260
+ }
261
+ }
262
+ const futureSchedules = await (0, helpers_1.getFutureSchedules)(jobId, data.job_recurring_id, supabase, debugMode, LogHandler_1.captureErrorException);
263
+ const futureJobIds = [...new Set(futureSchedules.map((s) => s.job_id))];
264
+ if (futureJobIds.length > 0 && Object.keys(jobDetails).length > 0) {
265
+ const { error: futureJobsError } = await supabase
266
+ .from('job')
267
+ .update(jobDetails)
268
+ .in('id', futureJobIds);
269
+ if (futureJobsError) {
270
+ if (debugMode)
271
+ (0, LogHandler_1.captureErrorException)('updateJob FUTURE JOBS ERROR', futureJobsError);
272
+ throw futureJobsError;
273
+ }
274
+ }
275
+ }
276
+ if (debugMode)
277
+ (0, LogHandler_1.captureLogging)('updateJob DATA', data);
278
+ return data;
279
+ }, [supabase, debugMode]);
280
+ const updateJobSchedule = (0, react_1.useCallback)(async (jobId, scheduleId, updates, recurringMode) => {
281
+ const { error } = await supabase
282
+ .from('job_schedule')
283
+ .update(updates)
284
+ .eq('id', scheduleId);
285
+ if (error) {
286
+ if (debugMode)
287
+ (0, LogHandler_1.captureErrorException)('updateJobSchedule ERROR', error);
288
+ throw error;
289
+ }
290
+ if (recurringMode === 'this_and_future') {
291
+ const { data: job, error: jobFetchError } = await supabase
292
+ .from('job')
293
+ .select('job_recurring_id')
294
+ .eq('id', jobId)
295
+ .single();
296
+ if (jobFetchError) {
297
+ if (debugMode)
298
+ (0, LogHandler_1.captureErrorException)('updateJobSchedule JOB FETCH ERROR', jobFetchError);
299
+ throw jobFetchError;
300
+ }
301
+ if (job.job_recurring_id) {
302
+ const recurringUpdates = {};
303
+ if (updates.start_time)
304
+ recurringUpdates.start_time = updates.start_time;
305
+ if (updates.end_time)
306
+ recurringUpdates.end_time = updates.end_time;
307
+ if (Object.keys(recurringUpdates).length > 0) {
308
+ const { error: recurringError } = await supabase
309
+ .from('job_recurring')
310
+ .update(recurringUpdates)
311
+ .eq('id', job.job_recurring_id);
312
+ if (recurringError) {
313
+ if (debugMode)
314
+ (0, LogHandler_1.captureErrorException)('updateJobSchedule RECURRING ERROR', recurringError);
315
+ throw recurringError;
316
+ }
317
+ }
318
+ const futureSchedules = await (0, helpers_1.getFutureSchedules)(jobId, job.job_recurring_id, supabase, debugMode, LogHandler_1.captureErrorException);
319
+ if (futureSchedules.length > 0) {
320
+ const hasTimeChange = updates.start_time || updates.end_time;
321
+ if (hasTimeChange) {
322
+ const results = await Promise.all(futureSchedules.map((schedule) => {
323
+ const patchedUpdates = {};
324
+ if (updates.start_time) {
325
+ patchedUpdates.start_time = (0, helpers_1.applyTimeToDate)(schedule.start_time, updates.start_time);
326
+ }
327
+ if (updates.end_time) {
328
+ patchedUpdates.end_time = (0, helpers_1.applyTimeToDate)(schedule.end_time, updates.end_time);
329
+ }
330
+ if (updates.status) {
331
+ patchedUpdates.status = updates.status;
332
+ }
333
+ return supabase
334
+ .from('job_schedule')
335
+ .update(patchedUpdates)
336
+ .eq('id', schedule.id);
337
+ }));
338
+ const failedResult = results.find((r) => r.error);
339
+ if (failedResult?.error) {
340
+ if (debugMode)
341
+ (0, LogHandler_1.captureErrorException)('updateJobSchedule FUTURE TIME ERROR', failedResult.error);
342
+ throw failedResult.error;
343
+ }
344
+ }
345
+ else {
346
+ const { error: batchError } = await supabase
347
+ .from('job_schedule')
348
+ .update(updates)
349
+ .in('id', futureSchedules.map((s) => s.id));
350
+ if (batchError) {
351
+ if (debugMode)
352
+ (0, LogHandler_1.captureErrorException)('updateJobSchedule FUTURE BATCH ERROR', batchError);
353
+ throw batchError;
354
+ }
355
+ }
356
+ }
357
+ }
358
+ }
359
+ }, [supabase, debugMode]);
360
+ const createJobSchedule = (0, react_1.useCallback)(async (jobId, schedule) => {
361
+ const { job_user, ...scheduleFields } = schedule;
362
+ const { data, error } = await supabase
363
+ .from('job_schedule')
364
+ .insert({
365
+ ...scheduleFields,
366
+ job_id: jobId,
367
+ })
368
+ .select()
369
+ .single();
370
+ if (error) {
371
+ if (debugMode)
372
+ (0, LogHandler_1.captureErrorException)('createJobSchedule ERROR', error);
373
+ throw error;
374
+ }
375
+ const users = job_user ?? [];
376
+ if (users.length > 0) {
377
+ const { error: jobUserError } = await supabase.from('job_user').insert(users.map((user) => ({
378
+ job_id: jobId,
379
+ user_id: user.id,
380
+ company_id: scheduleFields.company_id,
381
+ job_schedule_id: data.id,
382
+ })));
383
+ if (jobUserError) {
384
+ if (debugMode)
385
+ (0, LogHandler_1.captureErrorException)('createJobSchedule JOB-USER ERROR', jobUserError);
386
+ throw jobUserError;
387
+ }
388
+ }
389
+ if (debugMode)
390
+ (0, LogHandler_1.captureLogging)('createJobSchedule DATA', data);
391
+ return { ...data, job_user: users };
392
+ }, [supabase, debugMode]);
393
+ const deleteJobSchedule = (0, react_1.useCallback)(async (jobId, scheduleId) => {
394
+ const { count, error: countError } = await supabase
395
+ .from('job_schedule')
396
+ .select('id', { count: 'exact', head: true })
397
+ .eq('job_id', jobId);
398
+ if (countError) {
399
+ if (debugMode)
400
+ (0, LogHandler_1.captureErrorException)('deleteJobSchedule COUNT ERROR', countError);
401
+ throw countError;
402
+ }
403
+ if ((count ?? 0) <= 1) {
404
+ throw new Error('Cannot delete all schedules — a job must have at least one');
405
+ }
406
+ const { error } = await supabase
407
+ .from('job_schedule')
408
+ .delete()
409
+ .eq('job_id', jobId)
410
+ .eq('id', scheduleId);
411
+ if (error) {
412
+ if (debugMode)
413
+ (0, LogHandler_1.captureErrorException)('deleteJobSchedule ERROR', error);
414
+ throw error;
415
+ }
416
+ }, [supabase, debugMode]);
417
+ const deleteJob = (0, react_1.useCallback)(async (jobId, jobRecurringId, recurringMode) => {
418
+ try {
419
+ await (0, trash_1.trashDeleteEntity)(supabase, 'job', jobId, jobRecurringId && recurringMode === 'this_and_future'
420
+ ? 'this_and_future'
421
+ : undefined);
422
+ }
423
+ catch (error) {
424
+ if (debugMode)
425
+ (0, LogHandler_1.captureErrorException)('deleteJob ERROR', error);
426
+ throw error;
427
+ }
428
+ }, [supabase, debugMode]);
429
+ const deleteJobs = (0, react_1.useCallback)(async (jobs) => {
430
+ const hasRecurring = jobs.some((job) => job.job_recurring_id);
431
+ if (hasRecurring) {
432
+ throw new Error('Recurring jobs must be deleted individually.');
433
+ }
434
+ try {
435
+ await (0, trash_1.trashDeleteEntities)(supabase, 'job', jobs.map((job) => job.id));
436
+ }
437
+ catch (error) {
438
+ if (debugMode)
439
+ (0, LogHandler_1.captureErrorException)('deleteJobs ERROR', error);
440
+ throw error;
441
+ }
442
+ }, [supabase, debugMode]);
443
+ const addJobUser = (0, react_1.useCallback)(async (jobId, jobScheduleId, userId, companyId, jobRecurringId, recurringMode) => {
444
+ const propagatedRecurringId = recurringMode === 'this_and_future' ? jobRecurringId : undefined;
445
+ const { data: existing, error: existingError } = await supabase
446
+ .from('job_user')
447
+ .select()
448
+ .eq('user_id', userId)
449
+ .eq('job_schedule_id', jobScheduleId)
450
+ .maybeSingle();
451
+ if (existingError) {
452
+ if (debugMode)
453
+ (0, LogHandler_1.captureErrorException)('addJobUser existing assignment check ERROR', existingError);
454
+ throw existingError;
455
+ }
456
+ if (existing && !propagatedRecurringId)
457
+ return existing;
458
+ let jobUser = existing;
459
+ if (!jobUser) {
460
+ const { data: insertData, error: insertError } = await supabase
461
+ .from('job_user')
462
+ .insert({
463
+ job_id: jobId,
464
+ user_id: userId,
465
+ company_id: companyId,
466
+ job_schedule_id: jobScheduleId,
467
+ })
468
+ .select()
469
+ .single();
470
+ if (insertError) {
471
+ if (debugMode)
472
+ (0, LogHandler_1.captureErrorException)('addJobUser insert ERROR', insertError);
473
+ throw insertError;
474
+ }
475
+ jobUser = insertData;
476
+ }
477
+ if (propagatedRecurringId) {
478
+ const { data: existingRecurring, error: existingRecurringError } = await supabase
479
+ .from('job_user_recurring')
480
+ .select('id')
481
+ .eq('user_id', userId)
482
+ .eq('job_recurring_id', propagatedRecurringId)
483
+ .maybeSingle();
484
+ if (existingRecurringError) {
485
+ if (debugMode)
486
+ (0, LogHandler_1.captureErrorException)('addJobUser recurring check ERROR', existingRecurringError);
487
+ throw existingRecurringError;
488
+ }
489
+ if (!existingRecurring) {
490
+ const { error: recurringError } = await supabase
491
+ .from('job_user_recurring')
492
+ .insert({
493
+ user_id: userId,
494
+ company_id: companyId,
495
+ job_recurring_id: propagatedRecurringId,
496
+ });
497
+ if (recurringError) {
498
+ if (debugMode)
499
+ (0, LogHandler_1.captureErrorException)('addJobUser insert ERROR', recurringError);
500
+ throw recurringError;
501
+ }
502
+ }
503
+ const futureSchedules = await (0, helpers_1.getFutureSchedules)(jobId, propagatedRecurringId, supabase, debugMode, LogHandler_1.captureErrorException);
504
+ if (futureSchedules.length > 0) {
505
+ const unassignedSchedules = futureSchedules.filter((schedule) => !schedule.job_user.some((user) => user.id === userId));
506
+ if (unassignedSchedules.length > 0) {
507
+ const { error: futureError } = await supabase
508
+ .from('job_user')
509
+ .insert(unassignedSchedules.map((schedule) => ({
510
+ job_id: schedule.job_id,
511
+ user_id: userId,
512
+ company_id: companyId,
513
+ job_schedule_id: schedule.id,
514
+ })));
515
+ if (futureError) {
516
+ if (debugMode)
517
+ (0, LogHandler_1.captureErrorException)('addJobUser future insert ERROR', futureError);
518
+ throw futureError;
519
+ }
520
+ }
521
+ }
522
+ }
523
+ if (debugMode)
524
+ (0, LogHandler_1.captureLogging)('addJobUser DATA', jobUser);
525
+ return jobUser;
526
+ }, [supabase, debugMode]);
527
+ const removeJobUser = (0, react_1.useCallback)(async (jobId, jobScheduleId, userId, companyId, jobRecurringId, recurringMode) => {
528
+ const { error } = await supabase
529
+ .from('job_user')
530
+ .delete()
531
+ .eq('user_id', userId)
532
+ .eq('company_id', companyId)
533
+ .eq('job_schedule_id', jobScheduleId);
534
+ if (error) {
535
+ if (debugMode)
536
+ (0, LogHandler_1.captureErrorException)('removeJobUser ERROR', error);
537
+ throw error;
538
+ }
539
+ if (jobRecurringId && recurringMode === 'this_and_future') {
540
+ const { error: recurringError } = await supabase
541
+ .from('job_user_recurring')
542
+ .delete()
543
+ .eq('user_id', userId)
544
+ .eq('job_recurring_id', jobRecurringId);
545
+ if (recurringError) {
546
+ if (debugMode)
547
+ (0, LogHandler_1.captureErrorException)('removeJobUser recurring ERROR', recurringError);
548
+ throw recurringError;
549
+ }
550
+ const futureSchedules = await (0, helpers_1.getFutureSchedules)(jobId, jobRecurringId, supabase, debugMode, LogHandler_1.captureErrorException);
551
+ if (futureSchedules.length > 0) {
552
+ const assignedScheduleIds = futureSchedules
553
+ .filter((schedule) => schedule.job_user.some((user) => user.id === userId))
554
+ .map((schedule) => schedule.id);
555
+ if (assignedScheduleIds.length > 0) {
556
+ const { error: futureError } = await supabase
557
+ .from('job_user')
558
+ .delete()
559
+ .eq('user_id', userId)
560
+ .in('job_schedule_id', assignedScheduleIds);
561
+ if (futureError) {
562
+ if (debugMode)
563
+ (0, LogHandler_1.captureErrorException)('removeJobUser future delete ERROR', futureError);
564
+ throw futureError;
565
+ }
566
+ }
567
+ }
568
+ }
569
+ }, [supabase, debugMode]);
570
+ const addNewJobItem = (0, react_1.useCallback)(async (companyId, jobItemData, jobId, invoiceId, markJobUnpaidUpfront, jobRecurringId, recurringMode) => {
571
+ let realJobId;
572
+ let realInvoiceId;
573
+ if (!jobId && !invoiceId)
574
+ throw new Error('Requires jobId or invoiceId');
575
+ if (jobId) {
576
+ realJobId = jobId;
577
+ const { data, error } = await supabase
578
+ .from('invoice')
579
+ .select('id')
580
+ .eq('job_id', jobId);
581
+ if (data) {
582
+ if (data[0]?.id)
583
+ realInvoiceId = data[0]?.id;
584
+ }
585
+ if (error)
586
+ throw new Error('error fetching invoice_id from job_id');
587
+ }
588
+ else if (invoiceId) {
589
+ realInvoiceId = invoiceId;
590
+ const { data, error } = await supabase
591
+ .from('invoice')
592
+ .select('job_id')
593
+ .eq('id', invoiceId);
594
+ if (data) {
595
+ if (data[0]?.job_id)
596
+ realJobId = data[0]?.job_id;
597
+ }
598
+ if (error)
599
+ throw new Error('error fetching job_id on invoice');
600
+ }
601
+ if (markJobUnpaidUpfront && realJobId) {
602
+ const { error: jobUpdateError } = await supabase
603
+ .from('job')
604
+ .update({ unpaid_upfront: true })
605
+ .eq('id', realJobId);
606
+ if (jobUpdateError)
607
+ throw new Error('error updating job unpaid_upfront = true');
608
+ }
609
+ let jobItemRecurringId;
610
+ if (jobRecurringId && recurringMode === 'this_and_future') {
611
+ const { data: recurringData, error: recurringInsertError } = await supabase
612
+ .from('job_item_recurring')
613
+ .insert({
614
+ company_id: companyId,
615
+ job_recurring_id: jobRecurringId,
616
+ item_name: jobItemData.item_name,
617
+ item_cost: jobItemData.item_cost,
618
+ item_price: jobItemData.item_price,
619
+ quantity: jobItemData.quantity,
620
+ taxable: jobItemData.taxable,
621
+ description: jobItemData.description,
622
+ payment_upfront: jobItemData.payment_upfront,
623
+ })
624
+ .select()
625
+ .single();
626
+ if (recurringInsertError) {
627
+ if (debugMode)
628
+ (0, LogHandler_1.captureErrorException)('addNewJobItem recurring insert ERROR', recurringInsertError);
629
+ throw recurringInsertError;
630
+ }
631
+ jobItemRecurringId = recurringData.id;
632
+ }
633
+ const { data, error } = await supabase
634
+ .from('job_item')
635
+ .insert({
636
+ ...jobItemData,
637
+ job_id: realJobId,
638
+ invoice_id: realInvoiceId,
639
+ company_id: companyId,
640
+ job_item_recurring_id: jobItemRecurringId,
641
+ })
642
+ .select()
643
+ .single();
644
+ if (error) {
645
+ if (debugMode)
646
+ (0, LogHandler_1.captureErrorException)('addNewJobItem ERROR', error);
647
+ throw error;
648
+ }
649
+ if (jobRecurringId &&
650
+ recurringMode === 'this_and_future' &&
651
+ jobItemRecurringId &&
652
+ realJobId) {
653
+ const futureSchedules = await (0, helpers_1.getFutureSchedules)(realJobId, jobRecurringId, supabase, debugMode, LogHandler_1.captureErrorException);
654
+ if (futureSchedules.length > 0) {
655
+ const futureJobIds = Array.from(new Set(futureSchedules.map((schedule) => schedule.job_id)));
656
+ if (futureJobIds.length > 0) {
657
+ const { data: futureInvoices, error: futureInvoiceError } = await supabase
658
+ .from('invoice')
659
+ .select('id, job_id')
660
+ .in('job_id', futureJobIds);
661
+ if (futureInvoiceError) {
662
+ if (debugMode)
663
+ (0, LogHandler_1.captureErrorException)('addNewJobItem future invoice fetch ERROR', futureInvoiceError);
664
+ throw futureInvoiceError;
665
+ }
666
+ const invoiceByJobId = new Map((futureInvoices ?? []).map((inv) => [inv.job_id, inv.id]));
667
+ const { error: futureError } = await supabase
668
+ .from('job_item')
669
+ .insert(futureJobIds.map((futureJobId) => ({
670
+ ...jobItemData,
671
+ job_id: futureJobId,
672
+ invoice_id: invoiceByJobId.get(futureJobId) ?? null,
673
+ company_id: companyId,
674
+ job_item_recurring_id: jobItemRecurringId,
675
+ })));
676
+ if (futureError) {
677
+ if (debugMode)
678
+ (0, LogHandler_1.captureErrorException)('addNewJobItem future insert ERROR', futureError);
679
+ throw futureError;
680
+ }
681
+ }
682
+ }
683
+ }
684
+ if (debugMode)
685
+ (0, LogHandler_1.captureLogging)('addNewJobItem DATA', data);
686
+ return data;
687
+ }, [supabase, debugMode]);
688
+ const updateJobItem = (0, react_1.useCallback)(async (itemData, jobId, jobRecurringId, recurringMode, jobItemRecurringId) => {
689
+ const { data, error } = await supabase
690
+ .from('job_item')
691
+ .update(itemData)
692
+ .eq('id', itemData.id)
693
+ .select()
694
+ .single();
695
+ if (error) {
696
+ if (debugMode)
697
+ (0, LogHandler_1.captureErrorException)('updateJobItem ERROR', error);
698
+ throw error;
699
+ }
700
+ if (jobRecurringId &&
701
+ recurringMode === 'this_and_future' &&
702
+ jobItemRecurringId) {
703
+ const propagatedFields = {
704
+ item_name: itemData.item_name,
705
+ item_cost: itemData.item_cost,
706
+ item_price: itemData.item_price,
707
+ quantity: itemData.quantity,
708
+ taxable: itemData.taxable,
709
+ description: itemData.description,
710
+ payment_upfront: itemData.payment_upfront,
711
+ };
712
+ const { error: recurringError } = await supabase
713
+ .from('job_item_recurring')
714
+ .update(propagatedFields)
715
+ .eq('id', jobItemRecurringId);
716
+ if (recurringError) {
717
+ if (debugMode)
718
+ (0, LogHandler_1.captureErrorException)('updateJobItem recurring ERROR', recurringError);
719
+ throw recurringError;
720
+ }
721
+ if (jobId) {
722
+ const futureSchedules = await (0, helpers_1.getFutureSchedules)(jobId, jobRecurringId, supabase, debugMode, LogHandler_1.captureErrorException);
723
+ if (futureSchedules.length > 0) {
724
+ const futureJobIds = Array.from(new Set(futureSchedules.map((schedule) => schedule.job_id)));
725
+ if (futureJobIds.length > 0) {
726
+ const { error: futureError } = await supabase
727
+ .from('job_item')
728
+ .update(propagatedFields)
729
+ .eq('job_item_recurring_id', jobItemRecurringId)
730
+ .in('job_id', futureJobIds);
731
+ if (futureError) {
732
+ if (debugMode)
733
+ (0, LogHandler_1.captureErrorException)('updateJobItem future update ERROR', futureError);
734
+ throw futureError;
735
+ }
736
+ }
737
+ }
738
+ }
739
+ }
740
+ if (debugMode)
741
+ (0, LogHandler_1.captureLogging)('updateJobItem DATA', data);
742
+ return data;
743
+ }, [supabase, debugMode]);
744
+ const deleteJobItem = (0, react_1.useCallback)(async (jobItemId, jobRecurringId, recurringMode) => {
745
+ let jobItemRecurringIdForRecurring;
746
+ let jobIdForRecurring;
747
+ if (jobRecurringId && recurringMode === 'this_and_future') {
748
+ const { data: existing, error: fetchError } = await supabase
749
+ .from('job_item')
750
+ .select('job_item_recurring_id, job_id')
751
+ .eq('id', jobItemId)
752
+ .single();
753
+ if (fetchError) {
754
+ if (debugMode)
755
+ (0, LogHandler_1.captureErrorException)('deleteJobItem fetch ERROR', fetchError);
756
+ throw fetchError;
757
+ }
758
+ jobItemRecurringIdForRecurring = existing?.job_item_recurring_id;
759
+ jobIdForRecurring = existing?.job_id;
760
+ }
761
+ const { error } = await supabase
762
+ .from('job_item')
763
+ .delete()
764
+ .eq('id', jobItemId);
765
+ if (error) {
766
+ if (debugMode)
767
+ (0, LogHandler_1.captureErrorException)('deleteJobItem ERROR', error);
768
+ throw error;
769
+ }
770
+ if (jobRecurringId &&
771
+ recurringMode === 'this_and_future' &&
772
+ jobItemRecurringIdForRecurring) {
773
+ const { error: recurringError } = await supabase
774
+ .from('job_item_recurring')
775
+ .delete()
776
+ .eq('id', jobItemRecurringIdForRecurring);
777
+ if (recurringError) {
778
+ if (debugMode)
779
+ (0, LogHandler_1.captureErrorException)('deleteJobItem recurring ERROR', recurringError);
780
+ throw recurringError;
781
+ }
782
+ if (jobIdForRecurring) {
783
+ const futureSchedules = await (0, helpers_1.getFutureSchedules)(jobIdForRecurring, jobRecurringId, supabase, debugMode, LogHandler_1.captureErrorException);
784
+ if (futureSchedules.length > 0) {
785
+ const futureJobIds = Array.from(new Set(futureSchedules.map((schedule) => schedule.job_id)));
786
+ if (futureJobIds.length > 0) {
787
+ const { error: futureError } = await supabase
788
+ .from('job_item')
789
+ .delete()
790
+ .eq('job_item_recurring_id', jobItemRecurringIdForRecurring)
791
+ .in('job_id', futureJobIds);
792
+ if (futureError) {
793
+ if (debugMode)
794
+ (0, LogHandler_1.captureErrorException)('deleteJobItem future delete ERROR', futureError);
795
+ throw futureError;
796
+ }
797
+ }
798
+ }
799
+ }
800
+ }
801
+ }, [supabase, debugMode]);
802
+ const deleteJobItemsByJob = (0, react_1.useCallback)(async (jobId) => {
803
+ const { error } = await supabase
804
+ .from('job_item')
805
+ .delete()
806
+ .eq('job_id', jobId);
807
+ if (error) {
808
+ if (debugMode)
809
+ (0, LogHandler_1.captureErrorException)('deleteJobItemsByJob ERROR', error);
810
+ throw error;
811
+ }
812
+ }, [supabase, debugMode]);
813
+ const deleteOrphanJobItemsByInvoice = (0, react_1.useCallback)(async (invoiceId) => {
814
+ const { error } = await supabase
815
+ .from('job_item')
816
+ .delete()
817
+ .eq('invoice_id', invoiceId)
818
+ .is('job_id', null);
819
+ if (error) {
820
+ if (debugMode)
821
+ (0, LogHandler_1.captureErrorException)('deleteOrphanJobItemsByInvoice ERROR', error);
822
+ throw error;
823
+ }
824
+ }, [supabase, debugMode]);
825
+ const value = (0, react_1.useMemo)(() => ({
826
+ fetchRecurringJobTemplates,
827
+ createJob,
828
+ fetchJob,
829
+ updateJob,
830
+ createJobSchedule,
831
+ updateJobSchedule,
832
+ deleteJobSchedule,
833
+ deleteJob,
834
+ deleteJobs,
835
+ addJobUser,
836
+ removeJobUser,
837
+ addNewJobItem,
838
+ updateJobItem,
839
+ deleteJobItem,
840
+ deleteJobItemsByJob,
841
+ deleteOrphanJobItemsByInvoice,
842
+ }), [
843
+ fetchRecurringJobTemplates,
844
+ createJob,
845
+ fetchJob,
846
+ updateJob,
847
+ createJobSchedule,
848
+ updateJobSchedule,
849
+ deleteJobSchedule,
850
+ deleteJob,
851
+ deleteJobs,
852
+ addJobUser,
853
+ removeJobUser,
854
+ addNewJobItem,
855
+ updateJobItem,
856
+ deleteJobItem,
857
+ deleteJobItemsByJob,
858
+ deleteOrphanJobItemsByInvoice,
859
+ ]);
860
+ return value;
861
+ };
862
+ exports.useJobsProvider = useJobsProvider;
863
+ //# sourceMappingURL=JobsProvider.js.map