@acorex/modules 20.0.12 → 20.0.13
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/calendar-management/README.md +271 -0
- package/calendar-management/index.d.ts +156 -0
- package/contact-management/README.md +150 -0
- package/contact-management/index.d.ts +15 -4
- package/fesm2022/acorex-modules-calendar-management.mjs +1509 -0
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-common-search-popup.component-B_bJ0ZRM.mjs +128 -0
- package/fesm2022/acorex-modules-common-search-popup.component-B_bJ0ZRM.mjs.map +1 -0
- package/fesm2022/acorex-modules-common.mjs +2 -2
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-DVjMlS0K.mjs +2548 -0
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-DVjMlS0K.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-address-type.entity-QMEODkhx.mjs → acorex-modules-contact-management-address-type.entity-CWIBwWfZ.mjs} +65 -38
- package/fesm2022/acorex-modules-contact-management-address-type.entity-CWIBwWfZ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-contact-address.entity-0f4Vaw_k.mjs → acorex-modules-contact-management-contact-address.entity-DO6GizbS.mjs} +49 -95
- package/fesm2022/acorex-modules-contact-management-contact-address.entity-DO6GizbS.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-contact-method.entity-ChEz1jW0.mjs → acorex-modules-contact-management-contact-method.entity-tEtMSV4f.mjs} +67 -69
- package/fesm2022/acorex-modules-contact-management-contact-method.entity-tEtMSV4f.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-contact-relationship.entity-DLfiEEfk.mjs → acorex-modules-contact-management-contact-relationship.entity-C-B5aOoq.mjs} +34 -63
- package/fesm2022/acorex-modules-contact-management-contact-relationship.entity-C-B5aOoq.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-contact-source.entity-hopVxiIT.mjs → acorex-modules-contact-management-contact-source.entity-Dw8jwcox.mjs} +67 -40
- package/fesm2022/acorex-modules-contact-management-contact-source.entity-Dw8jwcox.mjs.map +1 -0
- package/fesm2022/acorex-modules-contact-management-emergency-contact-category.entity-BJOOhcD1.mjs +680 -0
- package/fesm2022/acorex-modules-contact-management-emergency-contact-category.entity-BJOOhcD1.mjs.map +1 -0
- package/fesm2022/acorex-modules-contact-management-emergency-contact.entity-Cr7_5JKD.mjs +1062 -0
- package/fesm2022/acorex-modules-contact-management-emergency-contact.entity-Cr7_5JKD.mjs.map +1 -0
- package/fesm2022/acorex-modules-contact-management.mjs +1 -2331
- package/fesm2022/acorex-modules-contact-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-EsaVgkdd.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-CcNJIUk2.mjs → acorex-modules-report-management-report-create-root.component-DqrLa6vh.mjs} +4 -4
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-CcNJIUk2.mjs.map → acorex-modules-report-management-report-create-root.component-DqrLa6vh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-CAxcD_pe.mjs → acorex-modules-report-management-report-runner-root-page.component-S8qyvs79.mjs} +41 -24
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-S8qyvs79.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +670 -8
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +4 -2
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/package.json +9 -5
- package/report-management/index.d.ts +303 -5
- package/fesm2022/acorex-modules-common-search-popup.component-CNh7TFpe.mjs +0 -128
- package/fesm2022/acorex-modules-common-search-popup.component-CNh7TFpe.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-address-type.entity-QMEODkhx.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-address.entity-0f4Vaw_k.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-method.entity-ChEz1jW0.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-relationship.entity-DLfiEEfk.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-contact-source.entity-hopVxiIT.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CAxcD_pe.mjs.map +0 -1
@@ -0,0 +1,271 @@
|
|
1
|
+
# Calendar Management Module
|
2
|
+
|
3
|
+
This module provides comprehensive calendar management functionality for the ACoreX Platform, enabling administrators to define, manage, and configure calendar systems with support for multiple calendar types, inheritance, special days, and scoping.
|
4
|
+
|
5
|
+
## 🎯 **Core Features**
|
6
|
+
|
7
|
+
### **Calendar System**
|
8
|
+
|
9
|
+
- **Multiple Calendar Types**: Support for Gregorian, Persian (Jalali), Hijri (Islamic), Chinese, Hebrew, and custom calendar systems
|
10
|
+
- **Calendar Inheritance**: Hierarchical calendar structure where child calendars inherit from parent calendars
|
11
|
+
- **No Inheritance Depth Limit**: Unlimited levels of calendar inheritance for complex organizational structures
|
12
|
+
- **Weekend Configuration**: Flexible weekend patterns (Friday-Saturday, Saturday-Sunday, etc.)
|
13
|
+
- **Working Hours Management**: Configurable working hours per calendar with daily granularity
|
14
|
+
|
15
|
+
### **Date Exception Management**
|
16
|
+
|
17
|
+
- **Special Days**: Define holidays, workdays, half-days, events, maintenance days, and deadlines
|
18
|
+
- **Recurrence Rules**: Support for recurring events with complex patterns
|
19
|
+
- **Override System**: Child calendars can override parent calendar exceptions
|
20
|
+
- **Priority-based Resolution**: Conflict resolution using priority system
|
21
|
+
- **Time Granularity**: Full-day or time-specific exceptions
|
22
|
+
|
23
|
+
### **Scoping System**
|
24
|
+
|
25
|
+
- **Multi-level Scoping**: Platform, tenant, division, and user-level calendars
|
26
|
+
- **Scope Permissions**: Granular permission system for calendar access
|
27
|
+
- **Inheritance Control**: Override capabilities at each scope level
|
28
|
+
|
29
|
+
## 📚 **Architecture**
|
30
|
+
|
31
|
+
### **Entity Structure**
|
32
|
+
|
33
|
+
```
|
34
|
+
Calendar (Main Entity - Hierarchical)
|
35
|
+
├── CalendarType (Lookup)
|
36
|
+
├── DateException (Related)
|
37
|
+
│ └── RecurrenceRule (Related)
|
38
|
+
└── CalendarScope (Related)
|
39
|
+
```
|
40
|
+
|
41
|
+
### **Core Entities**
|
42
|
+
|
43
|
+
#### **1. Calendar (Main Entity)**
|
44
|
+
|
45
|
+
The primary entity representing calendar systems with inheritance support.
|
46
|
+
|
47
|
+
**Key Properties:**
|
48
|
+
|
49
|
+
- `name`: Unique calendar identifier
|
50
|
+
- `title`: Display name
|
51
|
+
- `calendarTypeId`: Calendar system type
|
52
|
+
- `parentId`: Parent calendar for inheritance
|
53
|
+
- `scopeType`: Application scope (platform/tenant/division/user)
|
54
|
+
- `weekendPattern`: Array of weekend days
|
55
|
+
- `workingHours`: JSON configuration of daily working hours
|
56
|
+
- `isTemplate`: Can be used as base for other calendars
|
57
|
+
|
58
|
+
#### **2. CalendarType (Lookup Entity)**
|
59
|
+
|
60
|
+
Defines different calendar system types.
|
61
|
+
|
62
|
+
**Key Properties:**
|
63
|
+
|
64
|
+
- `title`: Calendar type name
|
65
|
+
- `code`: System code (gregorian, persian, hijri, etc.)
|
66
|
+
- `isDefault`: Default calendar type flag
|
67
|
+
|
68
|
+
#### **3. DateException (Related Entity)**
|
69
|
+
|
70
|
+
Manages special days and exceptions in calendars.
|
71
|
+
|
72
|
+
**Key Properties:**
|
73
|
+
|
74
|
+
- `calendarId`: Parent calendar reference
|
75
|
+
- `date`: Exception date
|
76
|
+
- `exceptionType`: Type of exception (holiday, workday, etc.)
|
77
|
+
- `isRecurring`: Whether exception repeats
|
78
|
+
- `overridesParent`: Overrides parent calendar exception
|
79
|
+
- `priority`: Conflict resolution priority
|
80
|
+
|
81
|
+
#### **4. RecurrenceRule (Related Entity)**
|
82
|
+
|
83
|
+
Defines recurring patterns for date exceptions.
|
84
|
+
|
85
|
+
**Key Properties:**
|
86
|
+
|
87
|
+
- `frequency`: Recurrence frequency (daily, weekly, monthly, yearly)
|
88
|
+
- `interval`: Interval between occurrences
|
89
|
+
- `endDate`: End date for recurrence
|
90
|
+
- `byDay`: Day-based rules
|
91
|
+
- `byMonth`: Month-based rules
|
92
|
+
|
93
|
+
#### **5. CalendarScope (Related Entity)**
|
94
|
+
|
95
|
+
Manages calendar access and permissions by scope.
|
96
|
+
|
97
|
+
**Key Properties:**
|
98
|
+
|
99
|
+
- `calendarId`: Calendar reference
|
100
|
+
- `scopeType`: Scope level
|
101
|
+
- `scopeEntityId`: Entity ID within scope
|
102
|
+
- `permissions`: Access permissions
|
103
|
+
|
104
|
+
## 🔧 **Configuration Examples**
|
105
|
+
|
106
|
+
### **Basic Calendar Setup**
|
107
|
+
|
108
|
+
```typescript
|
109
|
+
// Create a base Persian calendar
|
110
|
+
const iranNationalCalendar = {
|
111
|
+
name: 'iran-national',
|
112
|
+
title: 'Iran National Calendar',
|
113
|
+
calendarTypeId: 'persian-type-id',
|
114
|
+
scopeType: 'platform',
|
115
|
+
weekendPattern: ['friday'],
|
116
|
+
isTemplate: true,
|
117
|
+
isActive: true,
|
118
|
+
};
|
119
|
+
|
120
|
+
// Create company calendar inheriting from national
|
121
|
+
const companyCalendar = {
|
122
|
+
name: 'company-calendar',
|
123
|
+
title: 'Company Calendar',
|
124
|
+
calendarTypeId: 'persian-type-id',
|
125
|
+
parentId: iranNationalCalendar.id,
|
126
|
+
scopeType: 'tenant',
|
127
|
+
scopeEntityId: 'company-tenant-id',
|
128
|
+
weekendPattern: ['friday', 'saturday'], // Override weekend
|
129
|
+
};
|
130
|
+
```
|
131
|
+
|
132
|
+
### **Date Exception Configuration**
|
133
|
+
|
134
|
+
```typescript
|
135
|
+
// Recurring holiday (Nowruz)
|
136
|
+
const nowruzException = {
|
137
|
+
calendarId: iranNationalCalendar.id,
|
138
|
+
date: new Date('2024-03-20'),
|
139
|
+
exceptionType: 'holiday',
|
140
|
+
title: 'Nowruz',
|
141
|
+
isRecurring: true,
|
142
|
+
recurrenceRuleId: 'yearly-march-20-rule',
|
143
|
+
isAllDay: true,
|
144
|
+
priority: 1,
|
145
|
+
};
|
146
|
+
|
147
|
+
// Company-specific working day override
|
148
|
+
const companyWorkday = {
|
149
|
+
calendarId: companyCalendar.id,
|
150
|
+
date: new Date('2024-03-21'), // Normally holiday
|
151
|
+
exceptionType: 'workday',
|
152
|
+
title: 'Special Working Day',
|
153
|
+
overridesParent: true,
|
154
|
+
isAllDay: false,
|
155
|
+
startTime: '09:00',
|
156
|
+
endTime: '13:00',
|
157
|
+
priority: 2,
|
158
|
+
};
|
159
|
+
```
|
160
|
+
|
161
|
+
## 🚀 **Usage**
|
162
|
+
|
163
|
+
### **Module Installation**
|
164
|
+
|
165
|
+
```typescript
|
166
|
+
import { AXMCalendarManagementModule } from '@acorex/modules/calendar-management';
|
167
|
+
|
168
|
+
@NgModule({
|
169
|
+
imports: [
|
170
|
+
AXMCalendarManagementModule,
|
171
|
+
// other modules
|
172
|
+
],
|
173
|
+
})
|
174
|
+
export class AppModule {}
|
175
|
+
```
|
176
|
+
|
177
|
+
### **Service Usage**
|
178
|
+
|
179
|
+
```typescript
|
180
|
+
import { AXMCalendarService } from '@acorex/modules/calendar-management';
|
181
|
+
|
182
|
+
@Injectable()
|
183
|
+
export class CalendarBusinessService {
|
184
|
+
constructor(private calendarService: AXMCalendarService) {}
|
185
|
+
|
186
|
+
async getEffectiveCalendar(calendarId: string): Promise<Calendar> {
|
187
|
+
// Gets calendar with resolved inheritance
|
188
|
+
return await this.calendarService.getOne(calendarId);
|
189
|
+
}
|
190
|
+
|
191
|
+
async isWorkingDay(calendarId: string, date: Date): Promise<boolean> {
|
192
|
+
// Business logic to determine if date is working day
|
193
|
+
// considering calendar hierarchy and exceptions
|
194
|
+
}
|
195
|
+
}
|
196
|
+
```
|
197
|
+
|
198
|
+
## 🌍 **Internationalization**
|
199
|
+
|
200
|
+
The module includes complete translations for:
|
201
|
+
|
202
|
+
- **English (en-US)**: Full UI translations
|
203
|
+
- **Persian (fa-IR)**: Native Persian translations
|
204
|
+
|
205
|
+
Translation files are located in:
|
206
|
+
|
207
|
+
- `apps/demo/src/assets/i18n/en-US/calendar-management.json`
|
208
|
+
- `apps/demo/src/assets/i18n/fa-IR/calendar-management.json`
|
209
|
+
|
210
|
+
## 🔐 **Permissions**
|
211
|
+
|
212
|
+
Granular permission system includes:
|
213
|
+
|
214
|
+
- `calendar.view`: View calendars
|
215
|
+
- `calendar.create`: Create new calendars
|
216
|
+
- `calendar.update`: Modify existing calendars
|
217
|
+
- `calendar.delete`: Delete calendars
|
218
|
+
- `calendar-type.manage`: Manage calendar types
|
219
|
+
- `date-exception.*`: Date exception permissions
|
220
|
+
- `calendar.admin`: Full administrative access
|
221
|
+
|
222
|
+
## 📋 **Admin UI Features**
|
223
|
+
|
224
|
+
### **Calendar Management**
|
225
|
+
|
226
|
+
- List view with hierarchical display
|
227
|
+
- Create/Edit calendar with inheritance dropdown
|
228
|
+
- Preview effective calendar (merged view from parent)
|
229
|
+
- Scope-based filtering and access control
|
230
|
+
|
231
|
+
### **Date Exception Management**
|
232
|
+
|
233
|
+
- Calendar-specific date exception management
|
234
|
+
- Recurring pattern configuration
|
235
|
+
- Visual calendar view with exceptions highlighted
|
236
|
+
- Override conflict resolution interface
|
237
|
+
|
238
|
+
### **Calendar Resolution**
|
239
|
+
|
240
|
+
When fetching calendar data, the system resolves inheritance recursively:
|
241
|
+
|
242
|
+
```
|
243
|
+
Base Calendar → Parent Calendar → Current Calendar → Final Merged View
|
244
|
+
```
|
245
|
+
|
246
|
+
Child calendars override parent settings for specific dates, providing flexible calendar customization while maintaining consistency through inheritance.
|
247
|
+
|
248
|
+
## 🤝 **Contributing**
|
249
|
+
|
250
|
+
When extending this module:
|
251
|
+
|
252
|
+
1. **Follow ACoreX entity patterns** for consistency
|
253
|
+
2. **Add comprehensive tests** for calendar resolution logic
|
254
|
+
3. **Update translations** for new features
|
255
|
+
4. **Consider backward compatibility** when modifying inheritance logic
|
256
|
+
5. **Document complex business rules** in code comments
|
257
|
+
|
258
|
+
## 📝 **Future Enhancements**
|
259
|
+
|
260
|
+
Planned features include:
|
261
|
+
|
262
|
+
- **Time Zone Support**: Multi-timezone calendar management
|
263
|
+
- **Calendar Templates**: Pre-built calendar templates for different regions
|
264
|
+
- **Import/Export**: ICS/CSV support for external calendar integration
|
265
|
+
- **Calendar Visualization**: Interactive calendar view components
|
266
|
+
- **Notification System**: Alerts for upcoming important dates
|
267
|
+
- **Calendar Analytics**: Usage and exception statistics
|
268
|
+
|
269
|
+
---
|
270
|
+
|
271
|
+
> 💡 **Note**: This module is designed to be a comprehensive calendar management solution for enterprise applications requiring complex calendar hierarchies and multi-cultural calendar support.
|
@@ -0,0 +1,156 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { Injector } from '@angular/core';
|
3
|
+
import * as i1 from '@angular/common';
|
4
|
+
import { AXPEntityModel, AXMEntityCrudServiceImpl, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityPreloadEntity } from '@acorex/platform/layout/entity';
|
5
|
+
import { AXPEntity, AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSearchResult } from '@acorex/platform/common';
|
6
|
+
import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';
|
7
|
+
|
8
|
+
declare class AXMCalendarManagementModule {
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMCalendarManagementModule, never>;
|
10
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXMCalendarManagementModule, never, [typeof i1.CommonModule], never>;
|
11
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AXMCalendarManagementModule>;
|
12
|
+
}
|
13
|
+
|
14
|
+
declare const RootConfig: {
|
15
|
+
config: {
|
16
|
+
i18n: string;
|
17
|
+
module: string;
|
18
|
+
};
|
19
|
+
module: {
|
20
|
+
name: string;
|
21
|
+
title: string;
|
22
|
+
icon: string;
|
23
|
+
};
|
24
|
+
entities: {
|
25
|
+
calendar: {
|
26
|
+
name: string;
|
27
|
+
title: string;
|
28
|
+
titlePlural: string;
|
29
|
+
icon: string;
|
30
|
+
};
|
31
|
+
calendarEvent: {
|
32
|
+
name: string;
|
33
|
+
title: string;
|
34
|
+
titlePlural: string;
|
35
|
+
icon: string;
|
36
|
+
};
|
37
|
+
calendarEventType: {
|
38
|
+
name: string;
|
39
|
+
title: string;
|
40
|
+
titlePlural: string;
|
41
|
+
icon: string;
|
42
|
+
};
|
43
|
+
};
|
44
|
+
};
|
45
|
+
|
46
|
+
interface AXMCalendarManagementCalendarEntityModel extends AXPEntityModel<string> {
|
47
|
+
name: string;
|
48
|
+
title: string;
|
49
|
+
description?: string;
|
50
|
+
calendarTypeId: any;
|
51
|
+
parentId?: string;
|
52
|
+
weekends: string[];
|
53
|
+
firstDayOfWeek: string;
|
54
|
+
isActive: boolean;
|
55
|
+
isTemplate: boolean;
|
56
|
+
order: number;
|
57
|
+
createdAt: Date;
|
58
|
+
updatedAt: Date;
|
59
|
+
calendarType?: any;
|
60
|
+
parent?: any;
|
61
|
+
dateExceptions?: any[];
|
62
|
+
scopes?: any[];
|
63
|
+
}
|
64
|
+
|
65
|
+
declare abstract class AXMCalendarService extends AXMEntityCrudServiceImpl<string, AXMCalendarManagementCalendarEntityModel> {
|
66
|
+
}
|
67
|
+
declare class AXMCalendarServiceImpl extends AXMCalendarService {
|
68
|
+
constructor();
|
69
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMCalendarServiceImpl, never>;
|
70
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXMCalendarServiceImpl>;
|
71
|
+
}
|
72
|
+
|
73
|
+
interface AXMCalendarManagementCalendarEventEntityModel extends AXPEntityModel<string> {
|
74
|
+
calendarId: string;
|
75
|
+
title: string;
|
76
|
+
description?: string;
|
77
|
+
typeId: string;
|
78
|
+
date: Date;
|
79
|
+
isRecurring: boolean;
|
80
|
+
recurrenceRule?: string;
|
81
|
+
isActive: boolean;
|
82
|
+
order: number;
|
83
|
+
calendar?: {
|
84
|
+
id: string;
|
85
|
+
title: string;
|
86
|
+
};
|
87
|
+
type?: {
|
88
|
+
id: string;
|
89
|
+
title: string;
|
90
|
+
color: string;
|
91
|
+
icon?: string;
|
92
|
+
};
|
93
|
+
}
|
94
|
+
|
95
|
+
declare abstract class AXMCalendarEventService extends AXMEntityCrudServiceImpl<string, AXMCalendarManagementCalendarEventEntityModel> {
|
96
|
+
}
|
97
|
+
declare class AXMCalendarEventServiceImpl extends AXMCalendarEventService {
|
98
|
+
constructor();
|
99
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMCalendarEventServiceImpl, never>;
|
100
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXMCalendarEventServiceImpl>;
|
101
|
+
}
|
102
|
+
|
103
|
+
interface AXMCalendarManagementCalendarEventTypeEntityModel extends AXPEntityModel<string> {
|
104
|
+
title: string;
|
105
|
+
description?: string;
|
106
|
+
color: string;
|
107
|
+
icon?: string;
|
108
|
+
isActive: boolean;
|
109
|
+
isDefault: boolean;
|
110
|
+
order: number;
|
111
|
+
createdAt: Date;
|
112
|
+
updatedAt: Date;
|
113
|
+
}
|
114
|
+
|
115
|
+
declare abstract class AXMCalendarEventTypeService extends AXMEntityCrudServiceImpl<string, AXMCalendarManagementCalendarEventTypeEntityModel> {
|
116
|
+
}
|
117
|
+
declare class AXMCalendarEventTypeServiceImpl extends AXMCalendarEventTypeService {
|
118
|
+
constructor();
|
119
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMCalendarEventTypeServiceImpl, never>;
|
120
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXMCalendarEventTypeServiceImpl>;
|
121
|
+
}
|
122
|
+
|
123
|
+
declare function calendarFactory(injector: Injector): Promise<AXPEntity | null>;
|
124
|
+
|
125
|
+
declare function calendarEventFactory(injector: Injector): Promise<AXPEntity | null>;
|
126
|
+
|
127
|
+
declare function calendarEventTypeFactory(injector: Injector): Promise<AXPEntity | null>;
|
128
|
+
|
129
|
+
declare class AXMCalendarManagementEntityProvider implements AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader {
|
130
|
+
private injector;
|
131
|
+
preload(): AXPEntityPreloadEntity[];
|
132
|
+
get(moduleName: string, entityName: string): Promise<AXPEntity | null>;
|
133
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMCalendarManagementEntityProvider, never>;
|
134
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXMCalendarManagementEntityProvider>;
|
135
|
+
}
|
136
|
+
|
137
|
+
declare class AXMCalendarManagementMenuProvider implements AXPMenuProvider {
|
138
|
+
private entityService;
|
139
|
+
provide(context: AXPMenuProviderContext): Promise<void>;
|
140
|
+
}
|
141
|
+
|
142
|
+
declare class AXMCalendarManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {
|
143
|
+
private injector;
|
144
|
+
private readonly translateService;
|
145
|
+
constructor(injector: Injector);
|
146
|
+
define(context: AXPPermissionDefinitionProviderContext): Promise<void>;
|
147
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMCalendarManagementPermissionDefinitionProvider, never>;
|
148
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXMCalendarManagementPermissionDefinitionProvider>;
|
149
|
+
}
|
150
|
+
|
151
|
+
declare class AXMCalendarManagementSearchCommandProvider extends AXPSearchCommandProvider {
|
152
|
+
commands: AXPSearchResult[];
|
153
|
+
}
|
154
|
+
|
155
|
+
export { AXMCalendarEventService, AXMCalendarEventServiceImpl, AXMCalendarEventTypeService, AXMCalendarEventTypeServiceImpl, AXMCalendarManagementEntityProvider, AXMCalendarManagementMenuProvider, AXMCalendarManagementModule, AXMCalendarManagementPermissionDefinitionProvider, AXMCalendarManagementSearchCommandProvider, AXMCalendarService, AXMCalendarServiceImpl, RootConfig, calendarEventFactory, calendarEventTypeFactory, calendarFactory };
|
156
|
+
export type { AXMCalendarManagementCalendarEntityModel, AXMCalendarManagementCalendarEventEntityModel, AXMCalendarManagementCalendarEventTypeEntityModel };
|
@@ -412,6 +412,156 @@ Maps relationships between contacts (family, business, professional).
|
|
412
412
|
]
|
413
413
|
```
|
414
414
|
|
415
|
+
### 9. EmergencyContactCategory (Hierarchical Lookup Entity)
|
416
|
+
|
417
|
+
Represents categories for classifying emergency contacts (e.g., Police, Fire, Medical). Supports hierarchical (parent-child) relationships and visual customization.
|
418
|
+
|
419
|
+
**Key Properties:**
|
420
|
+
|
421
|
+
| Name | Type | Description |
|
422
|
+
| :---------: | :-----: | :--------------------------------- |
|
423
|
+
| title | string | Category title |
|
424
|
+
| description | string | Description of the category |
|
425
|
+
| parentId | string | Parent category ID (for hierarchy) |
|
426
|
+
| childCount | number | Number of child categories |
|
427
|
+
| icon | string | FontAwesome icon |
|
428
|
+
| color | string | Category color (HEX) |
|
429
|
+
| priority | number | Display priority |
|
430
|
+
| isActive | boolean | Active status |
|
431
|
+
| order | number | Display order |
|
432
|
+
|
433
|
+
**Sample Data:**
|
434
|
+
|
435
|
+
```json
|
436
|
+
[
|
437
|
+
{
|
438
|
+
"id": "ecat1",
|
439
|
+
"title": "Police",
|
440
|
+
"description": "Law enforcement emergency services",
|
441
|
+
"icon": "fa-light fa-shield-halved",
|
442
|
+
"color": "#1976d2",
|
443
|
+
"priority": 1,
|
444
|
+
"isActive": true,
|
445
|
+
"order": 1
|
446
|
+
},
|
447
|
+
{
|
448
|
+
"id": "ecat2",
|
449
|
+
"title": "Fire Department",
|
450
|
+
"description": "Fire and rescue services",
|
451
|
+
"icon": "fa-light fa-fire-extinguisher",
|
452
|
+
"color": "#d32f2f",
|
453
|
+
"priority": 2,
|
454
|
+
"isActive": true,
|
455
|
+
"order": 2
|
456
|
+
}
|
457
|
+
]
|
458
|
+
```
|
459
|
+
|
460
|
+
### 10. EmergencyContact (Public Emergency Number Entity)
|
461
|
+
|
462
|
+
Stores public emergency contact numbers (e.g., 911, 112, local hotlines) with rich metadata, categorization, and geographic/availability details.
|
463
|
+
|
464
|
+
**Key Properties:**
|
465
|
+
|
466
|
+
| Name | Type | Description |
|
467
|
+
| :------------------: | :------: | :---------------------------------------- |
|
468
|
+
| name | string | Emergency service name |
|
469
|
+
| shortName | string | Short label (e.g., 911, 112) |
|
470
|
+
| description | string | Description of the service |
|
471
|
+
| categoryIds | string[] | Linked EmergencyContactCategory IDs |
|
472
|
+
| phoneNumber | string | Main emergency phone number |
|
473
|
+
| alternateNumbers | string[] | Alternate numbers |
|
474
|
+
| textNumber | string | SMS/text number |
|
475
|
+
| website | string | Service website |
|
476
|
+
| email | string | Contact email |
|
477
|
+
| country | string | Country of service |
|
478
|
+
| region | string | Region/State |
|
479
|
+
| city | string | City |
|
480
|
+
| isNational | boolean | National coverage flag |
|
481
|
+
| isRegional | boolean | Regional coverage flag |
|
482
|
+
| isLocal | boolean | Local coverage flag |
|
483
|
+
| availability | string | Availability (24/7, business hours, etc.) |
|
484
|
+
| languages | string[] | Supported languages |
|
485
|
+
| isTextCapable | boolean | Supports SMS/text |
|
486
|
+
| isVideoCallCapable | boolean | Supports video calls |
|
487
|
+
| whenToCall | string | When to call |
|
488
|
+
| whenNotToCall | string | When NOT to call |
|
489
|
+
| instructions | string | Special instructions |
|
490
|
+
| priority | number | Display priority |
|
491
|
+
| isActive | boolean | Active status |
|
492
|
+
| isVerified | boolean | Verification status |
|
493
|
+
| lastVerified | date | Last verification date |
|
494
|
+
| showOnDashboard | boolean | Show on dashboard |
|
495
|
+
| requiresConfirmation | boolean | Requires confirmation before calling |
|
496
|
+
| isQuickDial | boolean | Mark as quick dial |
|
497
|
+
| additionalInfo | string | Additional information |
|
498
|
+
|
499
|
+
**Sample Data:**
|
500
|
+
|
501
|
+
```json
|
502
|
+
[
|
503
|
+
{
|
504
|
+
"id": "ec1",
|
505
|
+
"name": "Police Emergency",
|
506
|
+
"shortName": "911",
|
507
|
+
"description": "General police emergency number.",
|
508
|
+
"categoryIds": ["ecat1"],
|
509
|
+
"phoneNumber": "911",
|
510
|
+
"country": "United States",
|
511
|
+
"isNational": true,
|
512
|
+
"availability": "24/7",
|
513
|
+
"languages": ["en"],
|
514
|
+
"isTextCapable": true,
|
515
|
+
"isVideoCallCapable": false,
|
516
|
+
"isActive": true,
|
517
|
+
"isVerified": true,
|
518
|
+
"priority": 1
|
519
|
+
},
|
520
|
+
{
|
521
|
+
"id": "ec2",
|
522
|
+
"name": "Fire Department",
|
523
|
+
"shortName": "101",
|
524
|
+
"description": "Fire and rescue emergency number.",
|
525
|
+
"categoryIds": ["ecat2"],
|
526
|
+
"phoneNumber": "101",
|
527
|
+
"country": "United States",
|
528
|
+
"isNational": true,
|
529
|
+
"availability": "24/7",
|
530
|
+
"languages": ["en"],
|
531
|
+
"isTextCapable": false,
|
532
|
+
"isVideoCallCapable": false,
|
533
|
+
"isActive": true,
|
534
|
+
"isVerified": true,
|
535
|
+
"priority": 2
|
536
|
+
}
|
537
|
+
]
|
538
|
+
```
|
539
|
+
|
540
|
+
### Relationship: Category & Emergency Contact
|
541
|
+
|
542
|
+
- Each **EmergencyContact** can belong to one or more **EmergencyContactCategory** (many-to-many).
|
543
|
+
- Categories are hierarchical, supporting parent-child relationships for flexible grouping (e.g., "Medical" > "Poison Control").
|
544
|
+
|
545
|
+
**Example:**
|
546
|
+
|
547
|
+
```json
|
548
|
+
{
|
549
|
+
"category": {
|
550
|
+
"id": "ecat1",
|
551
|
+
"title": "Police"
|
552
|
+
},
|
553
|
+
"contacts": [
|
554
|
+
{
|
555
|
+
"id": "ec1",
|
556
|
+
"name": "Police Emergency",
|
557
|
+
"categoryIds": ["ecat1"]
|
558
|
+
}
|
559
|
+
]
|
560
|
+
}
|
561
|
+
```
|
562
|
+
|
563
|
+
> 💡 **Tip:** Use these entities to manage public emergency numbers for any country, region, or city, with full support for categorization, localization, and advanced filtering.
|
564
|
+
|
415
565
|
## Integration Examples
|
416
566
|
|
417
567
|
### Complete Contact Profile
|
@@ -16,7 +16,6 @@ declare const RootConfig: {
|
|
16
16
|
i18n: string;
|
17
17
|
};
|
18
18
|
module: {
|
19
|
-
module: string;
|
20
19
|
name: string;
|
21
20
|
title: string;
|
22
21
|
icon: string;
|
@@ -70,6 +69,18 @@ declare const RootConfig: {
|
|
70
69
|
titlePlural: string;
|
71
70
|
icon: string;
|
72
71
|
};
|
72
|
+
emergencyContactCategory: {
|
73
|
+
name: string;
|
74
|
+
title: string;
|
75
|
+
titlePlural: string;
|
76
|
+
icon: string;
|
77
|
+
};
|
78
|
+
emergencyContact: {
|
79
|
+
name: string;
|
80
|
+
title: string;
|
81
|
+
titlePlural: string;
|
82
|
+
icon: string;
|
83
|
+
};
|
73
84
|
};
|
74
85
|
};
|
75
86
|
|
@@ -130,7 +141,7 @@ declare class AXMContactServiceImpl extends AXMContactService {
|
|
130
141
|
declare function contactTypeFactory(injector: Injector): Promise<AXPEntity | null>;
|
131
142
|
|
132
143
|
interface AXMContactManagementContactTypeEntityModel extends AXPEntityModel<string> {
|
133
|
-
|
144
|
+
title: string;
|
134
145
|
description?: string;
|
135
146
|
icon?: string;
|
136
147
|
isDefault: boolean;
|
@@ -147,7 +158,7 @@ declare class AXMContactTypeServiceImpl extends AXMContactTypeService {
|
|
147
158
|
}
|
148
159
|
|
149
160
|
interface AXMContactManagementContactSourceEntityModel extends AXPEntityModel<string> {
|
150
|
-
|
161
|
+
title: string;
|
151
162
|
description?: string;
|
152
163
|
icon?: string;
|
153
164
|
isDefault: boolean;
|
@@ -166,7 +177,7 @@ declare class AXMContactSourceServiceImpl extends AXMContactSourceService {
|
|
166
177
|
declare function contactMethodTypeFactory(injector: Injector): Promise<AXPEntity | null>;
|
167
178
|
|
168
179
|
interface AXMContactManagementContactMethodTypeEntityModel extends AXPEntityModel<string> {
|
169
|
-
|
180
|
+
title: string;
|
170
181
|
description?: string;
|
171
182
|
icon?: string;
|
172
183
|
validationRegex?: string;
|