@gymspace/shared 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/constants.d.ts +90 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/enums.d.ts +95 -0
- package/dist/enums.d.ts.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +307 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +282 -0
- package/dist/index.mjs.map +1 -0
- package/dist/interfaces.d.ts +67 -0
- package/dist/interfaces.d.ts.map +1 -0
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +56 -0
- package/src/constants.ts +185 -0
- package/src/enums.ts +110 -0
- package/src/index.ts +4 -0
- package/src/interfaces.ts +72 -0
- package/src/types.ts +100 -0
package/src/constants.ts
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// Permission constants
|
|
2
|
+
export const PERMISSIONS = {
|
|
3
|
+
// Organizations
|
|
4
|
+
ORGANIZATIONS_CREATE: 'ORGANIZATIONS_CREATE',
|
|
5
|
+
ORGANIZATIONS_READ: 'ORGANIZATIONS_READ',
|
|
6
|
+
ORGANIZATIONS_UPDATE: 'ORGANIZATIONS_UPDATE',
|
|
7
|
+
ORGANIZATIONS_DELETE: 'ORGANIZATIONS_DELETE',
|
|
8
|
+
|
|
9
|
+
// Gyms
|
|
10
|
+
GYMS_CREATE: 'GYMS_CREATE',
|
|
11
|
+
GYMS_READ: 'GYMS_READ',
|
|
12
|
+
GYMS_UPDATE: 'GYMS_UPDATE',
|
|
13
|
+
GYMS_DELETE: 'GYMS_DELETE',
|
|
14
|
+
|
|
15
|
+
// Collaborators
|
|
16
|
+
COLLABORATORS_CREATE: 'COLLABORATORS_CREATE',
|
|
17
|
+
COLLABORATORS_READ: 'COLLABORATORS_READ',
|
|
18
|
+
COLLABORATORS_UPDATE: 'COLLABORATORS_UPDATE',
|
|
19
|
+
COLLABORATORS_DELETE: 'COLLABORATORS_DELETE',
|
|
20
|
+
|
|
21
|
+
// Clients
|
|
22
|
+
CLIENTS_CREATE: 'CLIENTS_CREATE',
|
|
23
|
+
CLIENTS_READ: 'CLIENTS_READ',
|
|
24
|
+
CLIENTS_UPDATE: 'CLIENTS_UPDATE',
|
|
25
|
+
CLIENTS_DELETE: 'CLIENTS_DELETE',
|
|
26
|
+
|
|
27
|
+
// Contracts
|
|
28
|
+
CONTRACTS_CREATE: 'CONTRACTS_CREATE',
|
|
29
|
+
CONTRACTS_READ: 'CONTRACTS_READ',
|
|
30
|
+
CONTRACTS_UPDATE: 'CONTRACTS_UPDATE',
|
|
31
|
+
CONTRACTS_APPROVE: 'CONTRACTS_APPROVE',
|
|
32
|
+
CONTRACTS_CANCEL: 'CONTRACTS_CANCEL',
|
|
33
|
+
|
|
34
|
+
// Evaluations
|
|
35
|
+
EVALUATIONS_CREATE: 'EVALUATIONS_CREATE',
|
|
36
|
+
EVALUATIONS_READ: 'EVALUATIONS_READ',
|
|
37
|
+
EVALUATIONS_UPDATE: 'EVALUATIONS_UPDATE',
|
|
38
|
+
EVALUATIONS_DELETE: 'EVALUATIONS_DELETE',
|
|
39
|
+
|
|
40
|
+
// Check-ins
|
|
41
|
+
CHECKINS_CREATE: 'CHECKINS_CREATE',
|
|
42
|
+
CHECKINS_READ: 'CHECKINS_READ',
|
|
43
|
+
|
|
44
|
+
// Leads
|
|
45
|
+
LEADS_CREATE: 'LEADS_CREATE',
|
|
46
|
+
LEADS_READ: 'LEADS_READ',
|
|
47
|
+
LEADS_UPDATE: 'LEADS_UPDATE',
|
|
48
|
+
LEADS_DELETE: 'LEADS_DELETE',
|
|
49
|
+
|
|
50
|
+
// Reports
|
|
51
|
+
REPORTS_VIEW: 'REPORTS_VIEW',
|
|
52
|
+
REPORTS_FINANCIAL: 'REPORTS_FINANCIAL',
|
|
53
|
+
|
|
54
|
+
// Settings
|
|
55
|
+
SETTINGS_UPDATE: 'SETTINGS_UPDATE',
|
|
56
|
+
|
|
57
|
+
// Assets
|
|
58
|
+
ASSETS_CREATE: 'ASSETS_CREATE',
|
|
59
|
+
ASSETS_READ: 'ASSETS_READ',
|
|
60
|
+
ASSETS_DELETE: 'ASSETS_DELETE',
|
|
61
|
+
|
|
62
|
+
// Files
|
|
63
|
+
FILES_CREATE: 'FILES_CREATE',
|
|
64
|
+
FILES_READ: 'FILES_READ',
|
|
65
|
+
FILES_DELETE: 'FILES_DELETE',
|
|
66
|
+
|
|
67
|
+
// Products
|
|
68
|
+
PRODUCTS_CREATE: 'PRODUCTS_CREATE',
|
|
69
|
+
PRODUCTS_READ: 'PRODUCTS_READ',
|
|
70
|
+
PRODUCTS_UPDATE: 'PRODUCTS_UPDATE',
|
|
71
|
+
PRODUCTS_DELETE: 'PRODUCTS_DELETE',
|
|
72
|
+
|
|
73
|
+
// Product Categories
|
|
74
|
+
PRODUCT_CATEGORIES_CREATE: 'PRODUCT_CATEGORIES_CREATE',
|
|
75
|
+
PRODUCT_CATEGORIES_READ: 'PRODUCT_CATEGORIES_READ',
|
|
76
|
+
PRODUCT_CATEGORIES_UPDATE: 'PRODUCT_CATEGORIES_UPDATE',
|
|
77
|
+
PRODUCT_CATEGORIES_DELETE: 'PRODUCT_CATEGORIES_DELETE',
|
|
78
|
+
|
|
79
|
+
// Sales
|
|
80
|
+
SALES_CREATE: 'SALES_CREATE',
|
|
81
|
+
SALES_READ: 'SALES_READ',
|
|
82
|
+
SALES_UPDATE: 'SALES_UPDATE',
|
|
83
|
+
SALES_DELETE: 'SALES_DELETE',
|
|
84
|
+
|
|
85
|
+
// Suppliers
|
|
86
|
+
SUPPLIERS_CREATE: 'SUPPLIERS_CREATE',
|
|
87
|
+
SUPPLIERS_READ: 'SUPPLIERS_READ',
|
|
88
|
+
SUPPLIERS_UPDATE: 'SUPPLIERS_UPDATE',
|
|
89
|
+
SUPPLIERS_DELETE: 'SUPPLIERS_DELETE',
|
|
90
|
+
} as const;
|
|
91
|
+
|
|
92
|
+
// Role definitions
|
|
93
|
+
export const ROLE_PERMISSIONS = {
|
|
94
|
+
OWNER: Object.values(PERMISSIONS),
|
|
95
|
+
MANAGER: [
|
|
96
|
+
PERMISSIONS.GYMS_READ,
|
|
97
|
+
PERMISSIONS.COLLABORATORS_READ,
|
|
98
|
+
PERMISSIONS.CLIENTS_CREATE,
|
|
99
|
+
PERMISSIONS.CLIENTS_READ,
|
|
100
|
+
PERMISSIONS.CLIENTS_UPDATE,
|
|
101
|
+
PERMISSIONS.CONTRACTS_CREATE,
|
|
102
|
+
PERMISSIONS.CONTRACTS_READ,
|
|
103
|
+
PERMISSIONS.EVALUATIONS_CREATE,
|
|
104
|
+
PERMISSIONS.EVALUATIONS_READ,
|
|
105
|
+
PERMISSIONS.EVALUATIONS_UPDATE,
|
|
106
|
+
PERMISSIONS.CHECKINS_CREATE,
|
|
107
|
+
PERMISSIONS.CHECKINS_READ,
|
|
108
|
+
PERMISSIONS.REPORTS_VIEW,
|
|
109
|
+
PERMISSIONS.ASSETS_CREATE,
|
|
110
|
+
PERMISSIONS.ASSETS_READ,
|
|
111
|
+
PERMISSIONS.ASSETS_DELETE,
|
|
112
|
+
PERMISSIONS.FILES_CREATE,
|
|
113
|
+
PERMISSIONS.FILES_READ,
|
|
114
|
+
PERMISSIONS.FILES_DELETE,
|
|
115
|
+
PERMISSIONS.PRODUCTS_CREATE,
|
|
116
|
+
PERMISSIONS.PRODUCTS_READ,
|
|
117
|
+
PERMISSIONS.PRODUCTS_UPDATE,
|
|
118
|
+
PERMISSIONS.PRODUCTS_DELETE,
|
|
119
|
+
PERMISSIONS.PRODUCT_CATEGORIES_CREATE,
|
|
120
|
+
PERMISSIONS.PRODUCT_CATEGORIES_READ,
|
|
121
|
+
PERMISSIONS.PRODUCT_CATEGORIES_UPDATE,
|
|
122
|
+
PERMISSIONS.PRODUCT_CATEGORIES_DELETE,
|
|
123
|
+
PERMISSIONS.SALES_CREATE,
|
|
124
|
+
PERMISSIONS.SALES_READ,
|
|
125
|
+
PERMISSIONS.SALES_UPDATE,
|
|
126
|
+
PERMISSIONS.SUPPLIERS_CREATE,
|
|
127
|
+
PERMISSIONS.SUPPLIERS_READ,
|
|
128
|
+
PERMISSIONS.SUPPLIERS_UPDATE,
|
|
129
|
+
PERMISSIONS.SUPPLIERS_DELETE,
|
|
130
|
+
],
|
|
131
|
+
STAFF: [
|
|
132
|
+
PERMISSIONS.CLIENTS_READ,
|
|
133
|
+
PERMISSIONS.CHECKINS_CREATE,
|
|
134
|
+
PERMISSIONS.CHECKINS_READ,
|
|
135
|
+
PERMISSIONS.PRODUCTS_READ,
|
|
136
|
+
PERMISSIONS.PRODUCT_CATEGORIES_READ,
|
|
137
|
+
PERMISSIONS.SALES_CREATE,
|
|
138
|
+
PERMISSIONS.SALES_READ,
|
|
139
|
+
],
|
|
140
|
+
ADVISOR: [
|
|
141
|
+
PERMISSIONS.CLIENTS_READ,
|
|
142
|
+
PERMISSIONS.EVALUATIONS_CREATE,
|
|
143
|
+
PERMISSIONS.EVALUATIONS_READ,
|
|
144
|
+
PERMISSIONS.EVALUATIONS_UPDATE,
|
|
145
|
+
PERMISSIONS.ASSETS_CREATE,
|
|
146
|
+
PERMISSIONS.ASSETS_READ,
|
|
147
|
+
PERMISSIONS.FILES_CREATE,
|
|
148
|
+
PERMISSIONS.FILES_READ,
|
|
149
|
+
],
|
|
150
|
+
} as const;
|
|
151
|
+
|
|
152
|
+
// Cache TTL values (in seconds)
|
|
153
|
+
export const CACHE_TTL = {
|
|
154
|
+
USER_PERMISSIONS: 900, // 15 minutes
|
|
155
|
+
GYM_DATA: 1800, // 30 minutes
|
|
156
|
+
STATIC_DATA: 3600, // 60 minutes
|
|
157
|
+
REPORTS: 300, // 5 minutes
|
|
158
|
+
} as const;
|
|
159
|
+
|
|
160
|
+
// File size limits (in bytes)
|
|
161
|
+
export const FILE_LIMITS = {
|
|
162
|
+
MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB
|
|
163
|
+
MAX_IMAGE_SIZE: 5 * 1024 * 1024, // 5MB
|
|
164
|
+
MAX_DOCUMENT_SIZE: 10 * 1024 * 1024, // 10MB
|
|
165
|
+
} as const;
|
|
166
|
+
|
|
167
|
+
// Pagination defaults
|
|
168
|
+
export const PAGINATION_DEFAULTS = {
|
|
169
|
+
PAGE: 1,
|
|
170
|
+
LIMIT: 20,
|
|
171
|
+
MAX_LIMIT: 100,
|
|
172
|
+
} as const;
|
|
173
|
+
|
|
174
|
+
// Date formats
|
|
175
|
+
export const DATE_FORMATS = {
|
|
176
|
+
DATE_ONLY: 'YYYY-MM-DD',
|
|
177
|
+
DATETIME: 'YYYY-MM-DD HH:mm:ss',
|
|
178
|
+
TIME_ONLY: 'HH:mm:ss',
|
|
179
|
+
} as const;
|
|
180
|
+
|
|
181
|
+
// Headers
|
|
182
|
+
export const HEADERS = {
|
|
183
|
+
GYM_ID: 'X-Gym-Id',
|
|
184
|
+
REQUEST_ID: 'X-Request-Id',
|
|
185
|
+
} as const;
|
package/src/enums.ts
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
export enum UserType {
|
|
2
|
+
OWNER = 'owner',
|
|
3
|
+
COLLABORATOR = 'collaborator',
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export enum SubscriptionStatus {
|
|
7
|
+
ACTIVE = 'active',
|
|
8
|
+
INACTIVE = 'inactive',
|
|
9
|
+
EXPIRED = 'expired',
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export enum CollaboratorStatus {
|
|
13
|
+
PENDING = 'pending',
|
|
14
|
+
ACTIVE = 'active',
|
|
15
|
+
INACTIVE = 'inactive',
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export enum InvitationStatus {
|
|
19
|
+
PENDING = 'pending',
|
|
20
|
+
ACCEPTED = 'accepted',
|
|
21
|
+
EXPIRED = 'expired',
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export enum ClientStatus {
|
|
25
|
+
ACTIVE = 'active',
|
|
26
|
+
INACTIVE = 'inactive',
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export enum PlanStatus {
|
|
30
|
+
ACTIVE = 'active',
|
|
31
|
+
INACTIVE = 'inactive',
|
|
32
|
+
ARCHIVED = 'archived',
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export enum ContractStatus {
|
|
36
|
+
PENDING = 'pending',
|
|
37
|
+
ACTIVE = 'active',
|
|
38
|
+
EXPIRING_SOON = 'expiring_soon',
|
|
39
|
+
EXPIRED = 'expired',
|
|
40
|
+
CANCELLED = 'cancelled',
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export enum PaymentFrequency {
|
|
44
|
+
MONTHLY = 'monthly',
|
|
45
|
+
QUARTERLY = 'quarterly',
|
|
46
|
+
ANNUAL = 'annual',
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export enum AssetStatus {
|
|
50
|
+
ACTIVE = 'active',
|
|
51
|
+
DELETED = 'deleted',
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export enum EvaluationType {
|
|
55
|
+
INITIAL = 'initial',
|
|
56
|
+
PROGRESS = 'progress',
|
|
57
|
+
FINAL = 'final',
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export enum EvaluationStatus {
|
|
61
|
+
OPEN = 'open',
|
|
62
|
+
IN_PROGRESS = 'in_progress',
|
|
63
|
+
COMPLETED = 'completed',
|
|
64
|
+
CANCELLED = 'cancelled',
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export enum CommentType {
|
|
68
|
+
PROGRESS_NOTE = 'progress_note',
|
|
69
|
+
PHONE_CALL = 'phone_call',
|
|
70
|
+
MEETING = 'meeting',
|
|
71
|
+
REMINDER = 'reminder',
|
|
72
|
+
OTHER = 'other',
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export enum AssetCategory {
|
|
76
|
+
MEDICAL_DOCUMENT = 'medical_document',
|
|
77
|
+
IDENTIFICATION = 'identification',
|
|
78
|
+
INSURANCE = 'insurance',
|
|
79
|
+
CONTRACT_COPY = 'contract_copy',
|
|
80
|
+
OTHER = 'other',
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export enum ContractAssetType {
|
|
84
|
+
PAYMENT_RECEIPT = 'payment_receipt',
|
|
85
|
+
CONTRACT_DOCUMENT = 'contract_document',
|
|
86
|
+
IDENTIFICATION = 'identification',
|
|
87
|
+
OTHER = 'other',
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export enum EvaluationAssetStage {
|
|
91
|
+
INITIAL = 'initial',
|
|
92
|
+
PROGRESS = 'progress',
|
|
93
|
+
FINAL = 'final',
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export enum EvaluationAssetCategory {
|
|
97
|
+
BODY_PHOTO = 'body_photo',
|
|
98
|
+
MEASUREMENT_PHOTO = 'measurement_photo',
|
|
99
|
+
DOCUMENT = 'document',
|
|
100
|
+
REPORT = 'report',
|
|
101
|
+
OTHER = 'other',
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export enum LeadStatus {
|
|
105
|
+
NEW = 'NEW',
|
|
106
|
+
CONTACTED = 'CONTACTED',
|
|
107
|
+
INTERESTED = 'INTERESTED',
|
|
108
|
+
CONVERTED = 'CONVERTED',
|
|
109
|
+
LOST = 'LOST',
|
|
110
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { UUID, Permission } from './types';
|
|
2
|
+
import { UserType, CollaboratorStatus } from './enums';
|
|
3
|
+
|
|
4
|
+
export interface IUser {
|
|
5
|
+
id: UUID;
|
|
6
|
+
email: string;
|
|
7
|
+
name: string;
|
|
8
|
+
phone?: string;
|
|
9
|
+
userType: UserType;
|
|
10
|
+
emailVerifiedAt?: Date;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface IOrganization {
|
|
14
|
+
id: UUID;
|
|
15
|
+
ownerUserId: UUID;
|
|
16
|
+
name: string;
|
|
17
|
+
subscriptionPlanId: UUID;
|
|
18
|
+
subscriptionStatus: string;
|
|
19
|
+
subscriptionStart: Date;
|
|
20
|
+
subscriptionEnd: Date;
|
|
21
|
+
country: string;
|
|
22
|
+
currency: string;
|
|
23
|
+
timezone: string;
|
|
24
|
+
settings?: Record<string, any>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface IGym {
|
|
28
|
+
id: UUID;
|
|
29
|
+
organizationId: UUID;
|
|
30
|
+
name: string;
|
|
31
|
+
address?: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
phone?: string;
|
|
34
|
+
gymCode: string;
|
|
35
|
+
profileAssetId?: UUID;
|
|
36
|
+
coverAssetId?: UUID;
|
|
37
|
+
evaluationStructure?: Record<string, any>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface ICollaborator {
|
|
41
|
+
id: UUID;
|
|
42
|
+
userId: UUID;
|
|
43
|
+
gymId: UUID;
|
|
44
|
+
roleId: UUID;
|
|
45
|
+
status: CollaboratorStatus;
|
|
46
|
+
hiredDate?: Date;
|
|
47
|
+
invitationId?: UUID;
|
|
48
|
+
profileAssetId?: UUID;
|
|
49
|
+
coverAssetId?: UUID;
|
|
50
|
+
description?: string;
|
|
51
|
+
specialties?: string[];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface IRole {
|
|
55
|
+
id: UUID;
|
|
56
|
+
name: string;
|
|
57
|
+
permissions: Permission[];
|
|
58
|
+
description?: string;
|
|
59
|
+
canManageEvaluations: boolean;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface IRequestContext {
|
|
63
|
+
user: IUser;
|
|
64
|
+
gym?: IGym;
|
|
65
|
+
organization?: IOrganization;
|
|
66
|
+
permissions: Permission[];
|
|
67
|
+
hasPermission(permission: Permission): boolean;
|
|
68
|
+
canAccess(resource: string, action: string): boolean;
|
|
69
|
+
getGymId(): UUID | undefined;
|
|
70
|
+
getOrganizationId(): UUID | undefined;
|
|
71
|
+
getUserId(): UUID;
|
|
72
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
export type UUID = string;
|
|
2
|
+
|
|
3
|
+
export type Currency = 'USD' | 'EUR' | 'PEN' | 'MXN' | 'COP' | 'ARS' | 'CLP';
|
|
4
|
+
|
|
5
|
+
export type EntityType =
|
|
6
|
+
| 'user'
|
|
7
|
+
| 'organization'
|
|
8
|
+
| 'gym'
|
|
9
|
+
| 'collaborator'
|
|
10
|
+
| 'client'
|
|
11
|
+
| 'contract'
|
|
12
|
+
| 'evaluation'
|
|
13
|
+
| 'asset';
|
|
14
|
+
|
|
15
|
+
export type Permission =
|
|
16
|
+
| 'ORGANIZATIONS_CREATE'
|
|
17
|
+
| 'ORGANIZATIONS_READ'
|
|
18
|
+
| 'ORGANIZATIONS_UPDATE'
|
|
19
|
+
| 'ORGANIZATIONS_DELETE'
|
|
20
|
+
| 'GYMS_CREATE'
|
|
21
|
+
| 'GYMS_READ'
|
|
22
|
+
| 'GYMS_UPDATE'
|
|
23
|
+
| 'GYMS_DELETE'
|
|
24
|
+
| 'COLLABORATORS_CREATE'
|
|
25
|
+
| 'COLLABORATORS_READ'
|
|
26
|
+
| 'COLLABORATORS_UPDATE'
|
|
27
|
+
| 'COLLABORATORS_DELETE'
|
|
28
|
+
| 'CLIENTS_CREATE'
|
|
29
|
+
| 'CLIENTS_READ'
|
|
30
|
+
| 'CLIENTS_UPDATE'
|
|
31
|
+
| 'CLIENTS_DELETE'
|
|
32
|
+
| 'CONTRACTS_CREATE'
|
|
33
|
+
| 'CONTRACTS_READ'
|
|
34
|
+
| 'CONTRACTS_UPDATE'
|
|
35
|
+
| 'CONTRACTS_APPROVE'
|
|
36
|
+
| 'CONTRACTS_CANCEL'
|
|
37
|
+
| 'EVALUATIONS_CREATE'
|
|
38
|
+
| 'EVALUATIONS_READ'
|
|
39
|
+
| 'EVALUATIONS_UPDATE'
|
|
40
|
+
| 'EVALUATIONS_DELETE'
|
|
41
|
+
| 'CHECKINS_CREATE'
|
|
42
|
+
| 'CHECKINS_READ'
|
|
43
|
+
| 'LEADS_CREATE'
|
|
44
|
+
| 'LEADS_READ'
|
|
45
|
+
| 'LEADS_UPDATE'
|
|
46
|
+
| 'LEADS_DELETE'
|
|
47
|
+
| 'REPORTS_VIEW'
|
|
48
|
+
| 'REPORTS_FINANCIAL'
|
|
49
|
+
| 'SETTINGS_UPDATE'
|
|
50
|
+
| 'ASSETS_CREATE'
|
|
51
|
+
| 'ASSETS_READ'
|
|
52
|
+
| 'ASSETS_DELETE'
|
|
53
|
+
| 'FILES_CREATE'
|
|
54
|
+
| 'FILES_READ'
|
|
55
|
+
| 'FILES_DELETE'
|
|
56
|
+
| 'PRODUCTS_CREATE'
|
|
57
|
+
| 'PRODUCTS_READ'
|
|
58
|
+
| 'PRODUCTS_UPDATE'
|
|
59
|
+
| 'PRODUCTS_DELETE'
|
|
60
|
+
| 'PRODUCT_CATEGORIES_CREATE'
|
|
61
|
+
| 'PRODUCT_CATEGORIES_READ'
|
|
62
|
+
| 'PRODUCT_CATEGORIES_UPDATE'
|
|
63
|
+
| 'PRODUCT_CATEGORIES_DELETE'
|
|
64
|
+
| 'SALES_CREATE'
|
|
65
|
+
| 'SALES_READ'
|
|
66
|
+
| 'SALES_UPDATE'
|
|
67
|
+
| 'SALES_DELETE'
|
|
68
|
+
| 'SUPPLIERS_CREATE'
|
|
69
|
+
| 'SUPPLIERS_READ'
|
|
70
|
+
| 'SUPPLIERS_UPDATE'
|
|
71
|
+
| 'SUPPLIERS_DELETE';
|
|
72
|
+
|
|
73
|
+
export interface AuditFields {
|
|
74
|
+
createdByUserId: UUID;
|
|
75
|
+
updatedByUserId?: UUID;
|
|
76
|
+
createdAt: Date;
|
|
77
|
+
updatedAt: Date;
|
|
78
|
+
deletedAt?: Date;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface PaginationParams {
|
|
82
|
+
page: number;
|
|
83
|
+
limit: number;
|
|
84
|
+
sortBy?: string;
|
|
85
|
+
sortOrder?: 'asc' | 'desc';
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface PaginationMeta {
|
|
89
|
+
total: number;
|
|
90
|
+
page: number;
|
|
91
|
+
limit: number;
|
|
92
|
+
totalPages: number;
|
|
93
|
+
hasNext: boolean;
|
|
94
|
+
hasPrevious: boolean;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface PaginatedResponse<T> {
|
|
98
|
+
data: T[];
|
|
99
|
+
meta: PaginationMeta;
|
|
100
|
+
}
|