@viridial/shared 1.0.59 → 1.0.61

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.
@@ -0,0 +1,27 @@
1
+ import type { PriceAlert, PriceAlertCreate } from '../types/price-alert.types';
2
+ /**
3
+ * Service de gestion des alertes de prix
4
+ */
5
+ export declare const priceAlertService: {
6
+ /**
7
+ * Créer une nouvelle alerte de prix
8
+ */
9
+ create(data: PriceAlertCreate): Promise<PriceAlert>;
10
+ /**
11
+ * Récupérer toutes les alertes de l'utilisateur connecté
12
+ */
13
+ getMyAlerts(): Promise<PriceAlert[]>;
14
+ /**
15
+ * Récupérer toutes les alertes pour une propriété
16
+ */
17
+ getByProperty(propertyId: number): Promise<PriceAlert[]>;
18
+ /**
19
+ * Désactiver une alerte
20
+ */
21
+ deactivate(id: number): Promise<void>;
22
+ /**
23
+ * Supprimer une alerte
24
+ */
25
+ delete(id: number): Promise<void>;
26
+ };
27
+ //# sourceMappingURL=price-alert.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price-alert.service.d.ts","sourceRoot":"","sources":["../../api/price-alert.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAE9E;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;iBACgB,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKzD;;OAEG;mBACkB,OAAO,CAAC,UAAU,EAAE,CAAC;IAK1C;;OAEG;8BAC6B,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAO9D;;OAEG;mBACkB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C;;OAEG;eACc,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC,CAAA"}
@@ -0,0 +1,40 @@
1
+ import { httpClient } from './http.client';
2
+ import { API_ENDPOINTS } from '../constants/api.constants';
3
+ /**
4
+ * Service de gestion des alertes de prix
5
+ */
6
+ export const priceAlertService = {
7
+ /**
8
+ * Créer une nouvelle alerte de prix
9
+ */
10
+ async create(data) {
11
+ const response = await httpClient.post(API_ENDPOINTS.PRICE_ALERTS.BASE, data);
12
+ return response.data;
13
+ },
14
+ /**
15
+ * Récupérer toutes les alertes de l'utilisateur connecté
16
+ */
17
+ async getMyAlerts() {
18
+ const response = await httpClient.get(API_ENDPOINTS.PRICE_ALERTS.MY_ALERTS);
19
+ return response.data;
20
+ },
21
+ /**
22
+ * Récupérer toutes les alertes pour une propriété
23
+ */
24
+ async getByProperty(propertyId) {
25
+ const response = await httpClient.get(API_ENDPOINTS.PRICE_ALERTS.BY_PROPERTY(propertyId));
26
+ return response.data;
27
+ },
28
+ /**
29
+ * Désactiver une alerte
30
+ */
31
+ async deactivate(id) {
32
+ await httpClient.put(API_ENDPOINTS.PRICE_ALERTS.DEACTIVATE(id));
33
+ },
34
+ /**
35
+ * Supprimer une alerte
36
+ */
37
+ async delete(id) {
38
+ await httpClient.delete(API_ENDPOINTS.PRICE_ALERTS.BY_ID(id));
39
+ }
40
+ };
@@ -0,0 +1,69 @@
1
+ import type { VisitAppointment, VisitAppointmentCreate, VisitAppointmentUpdate, VisitExchangeRequest } from '../types/visit-appointment.types';
2
+ /**
3
+ * Service de gestion des rendez-vous de visite
4
+ */
5
+ export declare const visitAppointmentService: {
6
+ /**
7
+ * Créer un nouveau rendez-vous de visite
8
+ */
9
+ create(data: VisitAppointmentCreate): Promise<VisitAppointment>;
10
+ /**
11
+ * Récupérer toutes les visites pour une propriété
12
+ */
13
+ getByProperty(propertyId: number, params?: {
14
+ page?: number;
15
+ size?: number;
16
+ }): Promise<VisitAppointment[]>;
17
+ /**
18
+ * Récupérer les visites à venir pour une propriété
19
+ */
20
+ getUpcomingByProperty(propertyId: number): Promise<VisitAppointment[]>;
21
+ /**
22
+ * Récupérer toutes les visites de l'utilisateur connecté
23
+ */
24
+ getMyVisits(): Promise<VisitAppointment[]>;
25
+ /**
26
+ * Récupérer toutes les visites pour un agent
27
+ */
28
+ getByAgent(agentId: number, params?: {
29
+ page?: number;
30
+ size?: number;
31
+ }): Promise<VisitAppointment[]>;
32
+ /**
33
+ * Récupérer les visites à venir pour un agent
34
+ */
35
+ getUpcomingByAgent(agentId: number): Promise<VisitAppointment[]>;
36
+ /**
37
+ * Vérifier la disponibilité d'un créneau pour un agent
38
+ */
39
+ checkAvailability(agentId: number, startTime: string, durationMinutes?: number): Promise<boolean>;
40
+ /**
41
+ * Confirmer un rendez-vous
42
+ */
43
+ confirm(id: number): Promise<VisitAppointment>;
44
+ /**
45
+ * Annuler un rendez-vous
46
+ */
47
+ cancel(id: number, reason?: string): Promise<VisitAppointment>;
48
+ /**
49
+ * Marquer une visite comme complétée
50
+ */
51
+ complete(id: number, agentNotes?: string): Promise<VisitAppointment>;
52
+ /**
53
+ * Récupérer un rendez-vous par son ID
54
+ */
55
+ getById(id: number): Promise<VisitAppointment>;
56
+ /**
57
+ * Mettre à jour un rendez-vous
58
+ */
59
+ update(id: number, data: VisitAppointmentUpdate): Promise<VisitAppointment>;
60
+ /**
61
+ * Proposer un échange de créneau
62
+ */
63
+ proposeExchange(id: number, data: VisitExchangeRequest): Promise<VisitAppointment>;
64
+ /**
65
+ * Supprimer un rendez-vous
66
+ */
67
+ delete(id: number): Promise<void>;
68
+ };
69
+ //# sourceMappingURL=visit-appointment.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visit-appointment.service.d.ts","sourceRoot":"","sources":["../../api/visit-appointment.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAE9I;;GAEG;AACH,eAAO,MAAM,uBAAuB;IAClC;;OAEG;iBACgB,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKrE;;OAEG;8BAC6B,MAAM,WAAW;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQ/G;;OAEG;sCACqC,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAO5E;;OAEG;mBACkB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAKhD;;OAEG;wBACuB,MAAM,WAAW;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQzG;;OAEG;gCAC+B,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOtE;;OAEG;+BAC8B,MAAM,aAAa,MAAM,oBAAmB,MAAM,GAAQ,OAAO,CAAC,OAAO,CAAC;IAQ3G;;OAEG;gBACe,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKpD;;OAEG;eACc,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IASpE;;OAEG;iBACgB,MAAM,eAAe,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS1E;;OAEG;gBACe,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKpD;;OAEG;eACc,MAAM,QAAQ,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKjF;;OAEG;wBACuB,MAAM,QAAQ,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKxF;;OAEG;eACc,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC,CAAA"}
@@ -0,0 +1,104 @@
1
+ import { httpClient } from './http.client';
2
+ import { API_ENDPOINTS } from '../constants/api.constants';
3
+ /**
4
+ * Service de gestion des rendez-vous de visite
5
+ */
6
+ export const visitAppointmentService = {
7
+ /**
8
+ * Créer un nouveau rendez-vous de visite
9
+ */
10
+ async create(data) {
11
+ const response = await httpClient.post(API_ENDPOINTS.VISITS.BASE, data);
12
+ return response.data;
13
+ },
14
+ /**
15
+ * Récupérer toutes les visites pour une propriété
16
+ */
17
+ async getByProperty(propertyId, params) {
18
+ const response = await httpClient.get(API_ENDPOINTS.VISITS.BY_PROPERTY(propertyId), { params });
19
+ return response.data;
20
+ },
21
+ /**
22
+ * Récupérer les visites à venir pour une propriété
23
+ */
24
+ async getUpcomingByProperty(propertyId) {
25
+ const response = await httpClient.get(API_ENDPOINTS.VISITS.BY_PROPERTY_UPCOMING(propertyId));
26
+ return response.data;
27
+ },
28
+ /**
29
+ * Récupérer toutes les visites de l'utilisateur connecté
30
+ */
31
+ async getMyVisits() {
32
+ const response = await httpClient.get(API_ENDPOINTS.VISITS.MY_VISITS);
33
+ return response.data;
34
+ },
35
+ /**
36
+ * Récupérer toutes les visites pour un agent
37
+ */
38
+ async getByAgent(agentId, params) {
39
+ const response = await httpClient.get(API_ENDPOINTS.VISITS.BY_AGENT(agentId), { params });
40
+ return response.data;
41
+ },
42
+ /**
43
+ * Récupérer les visites à venir pour un agent
44
+ */
45
+ async getUpcomingByAgent(agentId) {
46
+ const response = await httpClient.get(API_ENDPOINTS.VISITS.BY_AGENT_UPCOMING(agentId));
47
+ return response.data;
48
+ },
49
+ /**
50
+ * Vérifier la disponibilité d'un créneau pour un agent
51
+ */
52
+ async checkAvailability(agentId, startTime, durationMinutes = 60) {
53
+ const response = await httpClient.get(API_ENDPOINTS.VISITS.CHECK_AVAILABILITY(agentId), { params: { startTime, durationMinutes } });
54
+ return response.data;
55
+ },
56
+ /**
57
+ * Confirmer un rendez-vous
58
+ */
59
+ async confirm(id) {
60
+ const response = await httpClient.put(API_ENDPOINTS.VISITS.CONFIRM(id));
61
+ return response.data;
62
+ },
63
+ /**
64
+ * Annuler un rendez-vous
65
+ */
66
+ async cancel(id, reason) {
67
+ const response = await httpClient.put(API_ENDPOINTS.VISITS.CANCEL(id), null, { params: reason ? { reason } : {} });
68
+ return response.data;
69
+ },
70
+ /**
71
+ * Marquer une visite comme complétée
72
+ */
73
+ async complete(id, agentNotes) {
74
+ const response = await httpClient.put(API_ENDPOINTS.VISITS.COMPLETE(id), null, { params: agentNotes ? { agentNotes } : {} });
75
+ return response.data;
76
+ },
77
+ /**
78
+ * Récupérer un rendez-vous par son ID
79
+ */
80
+ async getById(id) {
81
+ const response = await httpClient.get(API_ENDPOINTS.VISITS.BY_ID(id));
82
+ return response.data;
83
+ },
84
+ /**
85
+ * Mettre à jour un rendez-vous
86
+ */
87
+ async update(id, data) {
88
+ const response = await httpClient.put(API_ENDPOINTS.VISITS.BY_ID(id), data);
89
+ return response.data;
90
+ },
91
+ /**
92
+ * Proposer un échange de créneau
93
+ */
94
+ async proposeExchange(id, data) {
95
+ const response = await httpClient.post(API_ENDPOINTS.VISITS.EXCHANGE(id), data);
96
+ return response.data;
97
+ },
98
+ /**
99
+ * Supprimer un rendez-vous
100
+ */
101
+ async delete(id) {
102
+ await httpClient.delete(API_ENDPOINTS.VISITS.BY_ID(id));
103
+ }
104
+ };
@@ -21,6 +21,27 @@ export declare const API_ENDPOINTS: {
21
21
  readonly PRICE_HISTORY_STATS: (id: number) => string;
22
22
  readonly PRICE_HISTORY_DELETE: (id: number) => string;
23
23
  };
24
+ readonly PRICE_ALERTS: {
25
+ readonly BASE: "/api/price-alerts";
26
+ readonly BY_ID: (id: number) => string;
27
+ readonly MY_ALERTS: "/api/price-alerts/my-alerts";
28
+ readonly BY_PROPERTY: (propertyId: number) => string;
29
+ readonly DEACTIVATE: (id: number) => string;
30
+ };
31
+ readonly VISITS: {
32
+ readonly BASE: "/api/visits";
33
+ readonly BY_ID: (id: number) => string;
34
+ readonly BY_PROPERTY: (propertyId: number) => string;
35
+ readonly BY_PROPERTY_UPCOMING: (propertyId: number) => string;
36
+ readonly MY_VISITS: "/api/visits/my-visits";
37
+ readonly BY_AGENT: (agentId: number) => string;
38
+ readonly BY_AGENT_UPCOMING: (agentId: number) => string;
39
+ readonly CHECK_AVAILABILITY: (agentId: number) => string;
40
+ readonly CONFIRM: (id: number) => string;
41
+ readonly CANCEL: (id: number) => string;
42
+ readonly COMPLETE: (id: number) => string;
43
+ readonly EXCHANGE: (id: number) => string;
44
+ };
24
45
  readonly USERS: {
25
46
  readonly BASE: "/api/identity/users";
26
47
  readonly BY_ID: (id: number) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"api.constants.d.ts","sourceRoot":"","sources":["../../constants/api.constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;6BAcV,MAAM;gCACH,MAAM;;;qCAGD,MAAM;2CACA,MAAM;4CACL,MAAM;;;;6BAKrB,MAAM;;;;;;gCAMH,MAAM;;;;6BAKT,MAAM;;;;;;;6BAQN,MAAM;sCACG,MAAM;;sCAEN,MAAM;;;;;;6BAOf,MAAM;;gCAEH,MAAM;;;;;;;iCAQP,MAAM;uDACgB,MAAM;8DACC,MAAM;kCAClC,MAAM;iCACP,MAAM;;;;;iCAKN,MAAM;gDACS,MAAM;uDACC,MAAM;qCACxB,MAAM;yCACF,MAAM;;;;;iCAKd,MAAM;qCACF,MAAM;;;;;;6BAOZ,MAAM;;iCAEF,MAAM;qCACF,MAAM;;;;;6BAMd,MAAM;;;;;6BAMN,MAAM;;6BAEN,MAAM;;;iCAGJ,MAAM;mCACJ,MAAM;kCACP,MAAM;;;;;6BAMT,MAAM;2CACQ,MAAM;iCAChB,MAAM;oCACH,MAAM;oCACN,MAAM;+BACX,MAAM;;;;;6BAMR,MAAM;2CACQ,MAAM;+CACF,MAAM;iDACJ,MAAM;mCACpB,MAAM;qCACJ,MAAM;qCACN,MAAM;oCACP,MAAM;;CAEnB,CAAA;AAEV;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,SAAS,CAAA"}
1
+ {"version":3,"file":"api.constants.d.ts","sourceRoot":"","sources":["../../constants/api.constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;6BAcV,MAAM;gCACH,MAAM;;;qCAGD,MAAM;2CACA,MAAM;4CACL,MAAM;;;;6BAKrB,MAAM;;2CAEQ,MAAM;kCACf,MAAM;;;;6BAKX,MAAM;2CACQ,MAAM;oDACG,MAAM;;qCAErB,MAAM;8CACG,MAAM;+CACL,MAAM;+BACtB,MAAM;8BACP,MAAM;gCACJ,MAAM;gCACN,MAAM;;;;6BAKT,MAAM;;;;;;gCAMH,MAAM;;;;6BAKT,MAAM;;;;;;;6BAQN,MAAM;sCACG,MAAM;;sCAEN,MAAM;;;;;;6BAOf,MAAM;;gCAEH,MAAM;;;;;;;iCAQP,MAAM;uDACgB,MAAM;8DACC,MAAM;kCAClC,MAAM;iCACP,MAAM;;;;;iCAKN,MAAM;gDACS,MAAM;uDACC,MAAM;qCACxB,MAAM;yCACF,MAAM;;;;;iCAKd,MAAM;qCACF,MAAM;;;;;;6BAOZ,MAAM;;iCAEF,MAAM;qCACF,MAAM;;;;;6BAMd,MAAM;;;;;6BAMN,MAAM;;6BAEN,MAAM;;;iCAGJ,MAAM;mCACJ,MAAM;kCACP,MAAM;;;;;6BAMT,MAAM;2CACQ,MAAM;iCAChB,MAAM;oCACH,MAAM;oCACN,MAAM;+BACX,MAAM;;;;;6BAMR,MAAM;2CACQ,MAAM;+CACF,MAAM;iDACJ,MAAM;mCACpB,MAAM;qCACJ,MAAM;qCACN,MAAM;oCACP,MAAM;;CAEnB,CAAA;AAEV;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,SAAS,CAAA"}
@@ -23,6 +23,29 @@ export const API_ENDPOINTS = {
23
23
  PRICE_HISTORY_STATS: (id) => `/api/properties/${id}/price-history/stats`,
24
24
  PRICE_HISTORY_DELETE: (id) => `/api/properties/price-history/${id}`
25
25
  },
26
+ // Price Alerts
27
+ PRICE_ALERTS: {
28
+ BASE: '/api/price-alerts',
29
+ BY_ID: (id) => `/api/price-alerts/${id}`,
30
+ MY_ALERTS: '/api/price-alerts/my-alerts',
31
+ BY_PROPERTY: (propertyId) => `/api/price-alerts/property/${propertyId}`,
32
+ DEACTIVATE: (id) => `/api/price-alerts/${id}/deactivate`
33
+ },
34
+ // Visit Appointments
35
+ VISITS: {
36
+ BASE: '/api/visits',
37
+ BY_ID: (id) => `/api/visits/${id}`,
38
+ BY_PROPERTY: (propertyId) => `/api/visits/property/${propertyId}`,
39
+ BY_PROPERTY_UPCOMING: (propertyId) => `/api/visits/property/${propertyId}/upcoming`,
40
+ MY_VISITS: '/api/visits/my-visits',
41
+ BY_AGENT: (agentId) => `/api/visits/agent/${agentId}`,
42
+ BY_AGENT_UPCOMING: (agentId) => `/api/visits/agent/${agentId}/upcoming`,
43
+ CHECK_AVAILABILITY: (agentId) => `/api/visits/agent/${agentId}/availability`,
44
+ CONFIRM: (id) => `/api/visits/${id}/confirm`,
45
+ CANCEL: (id) => `/api/visits/${id}/cancel`,
46
+ COMPLETE: (id) => `/api/visits/${id}/complete`,
47
+ EXCHANGE: (id) => `/api/visits/${id}/exchange`
48
+ },
26
49
  // Users
27
50
  USERS: {
28
51
  BASE: '/api/identity/users',
package/dist/index.d.ts CHANGED
@@ -19,6 +19,8 @@ export { contactService } from './api/contact.service';
19
19
  export type { PaginatedResponse } from './api/contact.service';
20
20
  export { reviewService } from './api/review.service';
21
21
  export { priceHistoryService } from './api/price-history.service';
22
+ export { priceAlertService } from './api/price-alert.service';
23
+ export { visitAppointmentService } from './api/visit-appointment.service';
22
24
  export { TaskStatusEnum } from './types/workflow.types';
23
25
  export type { Workflow, WorkflowCreate, WorkflowUpdate, WorkflowSearchParams, Task, TaskCreate, TaskUpdate, TaskSearchParams, TaskApproveParams, TaskRejectParams, TaskStatus } from './types/workflow.types';
24
26
  export type { Organization, OrganizationCreate, OrganizationUpdate, OrganizationSearchParams, OrganizationSettings, Team, TeamCreate, TeamUpdate, OrganizationUser } from './api/organization.service';
@@ -40,6 +42,10 @@ export type * from './types/role.types';
40
42
  export type * from './types/contact.types';
41
43
  export type * from './types/review.types';
42
44
  export type * from './types/price-history.types';
45
+ export type * from './types/price-alert.types';
46
+ export type * from './types/visit-appointment.types';
47
+ export type * from './types/price-alert.types';
48
+ export type * from './types/visit-appointment.types';
43
49
  export { PropertyType, PropertyStatus } from './types/property.types';
44
50
  export { tokenUtils } from './utils/token.utils';
45
51
  export { API_ENDPOINTS, API_BASE_URL } from './constants/api.constants';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,YAAY,EAAE,QAAQ,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,YAAY,EACV,QAAQ,EACR,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACX,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,UAAU,EACV,gBAAgB,EACjB,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAG/C,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,oBAAoB,CAAA;AACvC,mBAAmB,wBAAwB,CAAA;AAC3C,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,oBAAoB,CAAA;AACvC,mBAAmB,wBAAwB,CAAA;AAC3C,mBAAmB,qBAAqB,CAAA;AACxC,mBAAmB,uBAAuB,CAAA;AAC1C,mBAAmB,4BAA4B,CAAA;AAC/C,mBAAmB,wBAAwB,CAAA;AAC3C,mBAAmB,oBAAoB,CAAA;AACvC,mBAAmB,uBAAuB,CAAA;AAC1C,mBAAmB,sBAAsB,CAAA;AACzC,mBAAmB,6BAA6B,CAAA;AAGhD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGrE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGvE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -18,6 +18,8 @@ export { roleService } from './api/role.service';
18
18
  export { contactService } from './api/contact.service';
19
19
  export { reviewService } from './api/review.service';
20
20
  export { priceHistoryService } from './api/price-history.service';
21
+ export { priceAlertService } from './api/price-alert.service';
22
+ export { visitAppointmentService } from './api/visit-appointment.service';
21
23
  export { TaskStatusEnum } from './types/workflow.types';
22
24
  // Stores
23
25
  export { useAuthStore } from './stores/auth.store';
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Types pour les alertes de prix
3
+ */
4
+ export interface PriceAlert {
5
+ id: number;
6
+ propertyId: number;
7
+ propertyTitle?: string;
8
+ userId: number;
9
+ alertType: PriceAlertType;
10
+ targetPrice?: number;
11
+ percentageThreshold?: number;
12
+ isPercentage: boolean;
13
+ notified: boolean;
14
+ notifiedAt?: string;
15
+ active: boolean;
16
+ emailNotification: boolean;
17
+ inAppNotification: boolean;
18
+ createdAt: string;
19
+ updatedAt?: string;
20
+ }
21
+ export interface PriceAlertCreate {
22
+ propertyId: number;
23
+ alertType: PriceAlertType;
24
+ targetPrice?: number;
25
+ percentageThreshold?: number;
26
+ emailNotification?: boolean;
27
+ inAppNotification?: boolean;
28
+ }
29
+ export declare enum PriceAlertType {
30
+ PRICE_DROP = "PRICE_DROP",
31
+ PRICE_INCREASE = "PRICE_INCREASE",
32
+ PERCENTAGE_DROP = "PERCENTAGE_DROP",
33
+ PERCENTAGE_INCREASE = "PERCENTAGE_INCREASE"
34
+ }
35
+ //# sourceMappingURL=price-alert.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price-alert.types.d.ts","sourceRoot":"","sources":["../../types/price-alert.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,cAAc,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,cAAc,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,oBAAY,cAAc;IACxB,UAAU,eAAe;IACzB,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;CAC5C"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Types pour les alertes de prix
3
+ */
4
+ export var PriceAlertType;
5
+ (function (PriceAlertType) {
6
+ PriceAlertType["PRICE_DROP"] = "PRICE_DROP";
7
+ PriceAlertType["PRICE_INCREASE"] = "PRICE_INCREASE";
8
+ PriceAlertType["PERCENTAGE_DROP"] = "PERCENTAGE_DROP";
9
+ PriceAlertType["PERCENTAGE_INCREASE"] = "PERCENTAGE_INCREASE";
10
+ })(PriceAlertType || (PriceAlertType = {}));
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Types pour les rendez-vous de visite
3
+ */
4
+ export interface VisitAppointment {
5
+ id: number;
6
+ propertyId: number;
7
+ propertyTitle?: string;
8
+ userId?: number;
9
+ agentId: number;
10
+ agentName?: string;
11
+ visitorName?: string;
12
+ visitorEmail?: string;
13
+ visitorPhone?: string;
14
+ appointmentDate: string;
15
+ durationMinutes: number;
16
+ status: VisitStatus;
17
+ notes?: string;
18
+ agentNotes?: string;
19
+ reminderSent: boolean;
20
+ reminderSentAt?: string;
21
+ confirmedAt?: string;
22
+ cancelledAt?: string;
23
+ cancellationReason?: string;
24
+ createdAt: string;
25
+ updatedAt?: string;
26
+ }
27
+ export interface VisitAppointmentCreate {
28
+ propertyId: number;
29
+ agentId: number;
30
+ appointmentDate: string;
31
+ durationMinutes?: number;
32
+ visitorName?: string;
33
+ visitorEmail?: string;
34
+ visitorPhone?: string;
35
+ notes?: string;
36
+ }
37
+ export interface VisitAppointmentUpdate {
38
+ appointmentDate?: string;
39
+ durationMinutes?: number;
40
+ visitorName?: string;
41
+ visitorEmail?: string;
42
+ visitorPhone?: string;
43
+ notes?: string;
44
+ agentNotes?: string;
45
+ status?: VisitStatus;
46
+ cancellationReason?: string;
47
+ }
48
+ export interface VisitExchangeRequest {
49
+ newAgentId: number;
50
+ newAppointmentDate: string;
51
+ newDurationMinutes?: number;
52
+ message?: string;
53
+ }
54
+ export declare enum VisitStatus {
55
+ PENDING = "PENDING",
56
+ CONFIRMED = "CONFIRMED",
57
+ CANCELLED = "CANCELLED",
58
+ COMPLETED = "COMPLETED",
59
+ NO_SHOW = "NO_SHOW",
60
+ PENDING_EXCHANGE = "PENDING_EXCHANGE"
61
+ }
62
+ //# sourceMappingURL=visit-appointment.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visit-appointment.types.d.ts","sourceRoot":"","sources":["../../types/visit-appointment.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,gBAAgB,qBAAqB;CACtC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Types pour les rendez-vous de visite
3
+ */
4
+ export var VisitStatus;
5
+ (function (VisitStatus) {
6
+ VisitStatus["PENDING"] = "PENDING";
7
+ VisitStatus["CONFIRMED"] = "CONFIRMED";
8
+ VisitStatus["CANCELLED"] = "CANCELLED";
9
+ VisitStatus["COMPLETED"] = "COMPLETED";
10
+ VisitStatus["NO_SHOW"] = "NO_SHOW";
11
+ VisitStatus["PENDING_EXCHANGE"] = "PENDING_EXCHANGE";
12
+ })(VisitStatus || (VisitStatus = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viridial/shared",
3
- "version": "1.0.59",
3
+ "version": "1.0.61",
4
4
  "type": "module",
5
5
  "description": "Shared modules for Real Estate frontend applications - Vue 3, TypeScript, Pinia, Axios",
6
6
  "main": "./dist/index.js",