@m481/mp-sdk-ng 0.1.2-alpha.2 → 0.1.2-alpha.21
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/fesm2022/m481-mp-sdk-ng.mjs +149 -195
- package/fesm2022/m481-mp-sdk-ng.mjs.map +1 -1
- package/lib/base/base-pocket.directive.d.ts +8 -2
- package/lib/base/base-resource.directive.d.ts +7 -2
- package/lib/models/calendar-shift.model.d.ts +3 -2
- package/lib/models/shift.model.d.ts +1 -0
- package/lib/models/team.model.d.ts +2 -0
- package/lib/models/user.model.d.ts +1 -0
- package/lib/mp-sdk.service.d.ts +14 -8
- package/lib/resources/missions.service.d.ts +1 -3
- package/lib/resources/shifts.service.d.ts +7 -25
- package/lib/resources/teams.service.d.ts +1 -4
- package/lib/resources/{crew.service.d.ts → users.service.d.ts} +7 -6
- package/package.json +1 -1
|
@@ -18,6 +18,7 @@ class CalendarShiftModel extends BaseModel {
|
|
|
18
18
|
shiftId;
|
|
19
19
|
startAt;
|
|
20
20
|
endAt;
|
|
21
|
+
assignedUsersIds;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
class EventModel extends BaseModel {
|
|
@@ -50,11 +51,13 @@ class ShiftModel extends BaseModel {
|
|
|
50
51
|
assignedUsersIds;
|
|
51
52
|
mission;
|
|
52
53
|
timespan;
|
|
54
|
+
startAt;
|
|
53
55
|
isEnabled;
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
class UserModel extends BaseModel {
|
|
57
59
|
email;
|
|
60
|
+
username;
|
|
58
61
|
verified;
|
|
59
62
|
name;
|
|
60
63
|
teamsAdmin;
|
|
@@ -67,6 +70,8 @@ class UserModel extends BaseModel {
|
|
|
67
70
|
|
|
68
71
|
class TeamModel extends BaseModel {
|
|
69
72
|
name;
|
|
73
|
+
timeZone;
|
|
74
|
+
slug;
|
|
70
75
|
isEnabled;
|
|
71
76
|
}
|
|
72
77
|
|
|
@@ -302,16 +307,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
302
307
|
}] });
|
|
303
308
|
|
|
304
309
|
class BasePocket extends BaseSdk {
|
|
305
|
-
|
|
310
|
+
client;
|
|
311
|
+
filterData;
|
|
306
312
|
connect() {
|
|
307
|
-
if (!this.
|
|
308
|
-
this.
|
|
313
|
+
if (!this.client) {
|
|
314
|
+
this.client = new PocketBase(this.config.baseUrl);
|
|
309
315
|
}
|
|
310
316
|
}
|
|
311
317
|
getList(entity, options) {
|
|
312
318
|
this.connect();
|
|
313
319
|
this.log.d("getList --- entity", entity, this.authStore.getToken());
|
|
314
|
-
|
|
320
|
+
const listOpts = options || {};
|
|
321
|
+
if (this.filterData) {
|
|
322
|
+
listOpts.filter = this.client.filter(this.filterData.criteria, this.filterData.params);
|
|
323
|
+
}
|
|
324
|
+
return from(this.client.collection(entity).getList(1, 20, this.buildOptions(listOpts))).pipe(catchError$1(err => this.handleError(err)), map(d => (d ? {
|
|
315
325
|
page: d.page,
|
|
316
326
|
pageSize: d.perPage,
|
|
317
327
|
pagesTotal: d.totalPages,
|
|
@@ -322,12 +332,12 @@ class BasePocket extends BaseSdk {
|
|
|
322
332
|
getOne(entity, id, options) {
|
|
323
333
|
this.connect();
|
|
324
334
|
this.log.d("fetchOne", entity, this.authStore.getToken());
|
|
325
|
-
return from(this.
|
|
335
|
+
return from(this.client.collection(entity).getOne(id, this.buildOptions(options))).pipe(catchError$1(err => this.handleError(err)));
|
|
326
336
|
}
|
|
327
337
|
save(entity, data) {
|
|
328
338
|
this.connect();
|
|
329
339
|
this.log.d("save", entity, data?.id, this.authStore.getToken());
|
|
330
|
-
const target = this.
|
|
340
|
+
const target = this.client.collection(entity);
|
|
331
341
|
let promise;
|
|
332
342
|
if (data.id) {
|
|
333
343
|
promise = target.update(data.id, data, this.getAuthHeader());
|
|
@@ -340,7 +350,7 @@ class BasePocket extends BaseSdk {
|
|
|
340
350
|
remove(entity, id) {
|
|
341
351
|
this.connect();
|
|
342
352
|
this.log.d("remove", entity, this.authStore.getToken());
|
|
343
|
-
return from(this.
|
|
353
|
+
return from(this.client.collection(entity).delete(id, this.getAuthHeader())).pipe(catchError$1(err => this.handleError(err)));
|
|
344
354
|
}
|
|
345
355
|
handleError(error) {
|
|
346
356
|
if (error instanceof ClientResponseError) {
|
|
@@ -393,7 +403,7 @@ class AuthService extends BasePocket {
|
|
|
393
403
|
}
|
|
394
404
|
login(user, pass) {
|
|
395
405
|
this.connect();
|
|
396
|
-
return from(this.
|
|
406
|
+
return from(this.client.collection(SdkConfig.Entities.AUTH).authWithPassword(user, pass)).pipe(catchError$1(err => this.handleError(err)), map(data => {
|
|
397
407
|
this.log.d("login ok", data);
|
|
398
408
|
this.authStore.setToken(data.token);
|
|
399
409
|
return data.record;
|
|
@@ -410,8 +420,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
410
420
|
}], ctorParameters: () => [] });
|
|
411
421
|
|
|
412
422
|
class BaseResource extends BasePocket {
|
|
423
|
+
FilterMeta = "isEnabled = {:isEnabled}";
|
|
424
|
+
FilterMetaParams = {
|
|
425
|
+
isEnabled: true
|
|
426
|
+
};
|
|
427
|
+
listOptions;
|
|
413
428
|
fetchList() {
|
|
414
|
-
return this.getList(this.Entity, this.
|
|
429
|
+
return this.getList(this.Entity, this.listOptions);
|
|
415
430
|
}
|
|
416
431
|
fetchOne(id) {
|
|
417
432
|
return this.getOne(this.Entity, id);
|
|
@@ -425,6 +440,9 @@ class BaseResource extends BasePocket {
|
|
|
425
440
|
delete(id) {
|
|
426
441
|
return this.remove(this.Entity, id);
|
|
427
442
|
}
|
|
443
|
+
setFilterDefaults() {
|
|
444
|
+
this.filterData = { criteria: this.FilterMeta, params: this.FilterMetaParams };
|
|
445
|
+
}
|
|
428
446
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BaseResource, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
429
447
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: BaseResource, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
430
448
|
}
|
|
@@ -433,16 +451,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
433
451
|
}] });
|
|
434
452
|
|
|
435
453
|
class MissionsService extends BaseResource {
|
|
436
|
-
Options = {
|
|
437
|
-
filter: "isEnabled = true"
|
|
438
|
-
};
|
|
439
454
|
Entity = SdkConfig.Entities.MISSIONS;
|
|
440
455
|
constructor() {
|
|
441
456
|
super();
|
|
442
457
|
}
|
|
458
|
+
fetchList() {
|
|
459
|
+
this.setFilterDefaults();
|
|
460
|
+
return super.fetchList();
|
|
461
|
+
}
|
|
443
462
|
getArchived() {
|
|
444
463
|
return this.getList(SdkConfig.Entities.MISSIONS, {
|
|
445
|
-
filter:
|
|
464
|
+
filter: this.client.filter(this.FilterMeta, { isEnabled: false })
|
|
446
465
|
});
|
|
447
466
|
}
|
|
448
467
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MissionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -453,41 +472,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
453
472
|
}], ctorParameters: () => [] });
|
|
454
473
|
|
|
455
474
|
class ShiftsService extends BaseResource {
|
|
456
|
-
Options = {
|
|
457
|
-
filter: "isEnabled = true"
|
|
458
|
-
};
|
|
459
475
|
Entity = SdkConfig.Entities.SHIFTS;
|
|
460
476
|
constructor() {
|
|
461
477
|
super();
|
|
462
478
|
}
|
|
479
|
+
fetch(startDate) {
|
|
480
|
+
this.listOptions = { perPage: 100 };
|
|
481
|
+
this.setFilterDefaults();
|
|
482
|
+
if (startDate) {
|
|
483
|
+
this.filterData.criteria += " && startAt >= {:startAt}";
|
|
484
|
+
this.filterData.params["startAt"] = new Date(startDate);
|
|
485
|
+
}
|
|
486
|
+
return this.fetchList();
|
|
487
|
+
}
|
|
488
|
+
searchByMissionAndHour(missionId, missionHourIndex) {
|
|
489
|
+
this.listOptions = { perPage: 100 };
|
|
490
|
+
this.setFilterDefaults();
|
|
491
|
+
this.filterData.criteria += ` && missionId = "${missionId}" && missionHourIndex = ${missionHourIndex}`;
|
|
492
|
+
return this.fetchList();
|
|
493
|
+
}
|
|
463
494
|
create(data) {
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
495
|
+
if (data.timespan) {
|
|
496
|
+
data.timespan.daysOfWeek = (data.timespan.daysOfWeek || []).map(d => d > 6 ? 0 : d);
|
|
497
|
+
data.startAt = !!data.timespan.initialAt ? new Date(data.timespan?.initialAt) : null;
|
|
467
498
|
}
|
|
468
|
-
|
|
469
|
-
const calendarShifts = this.generateCalendarShifts(repeat);
|
|
470
|
-
// Create the main Shift first
|
|
471
|
-
return super.create(data).pipe(switchMap(createdShift => {
|
|
472
|
-
// Assign the shiftId to all generated CalendarShifts
|
|
473
|
-
const shiftsToCreate = calendarShifts.map(cs => ({
|
|
474
|
-
shiftId: createdShift.id,
|
|
475
|
-
startAt: cs.startAt,
|
|
476
|
-
endAt: cs.endAt
|
|
477
|
-
}));
|
|
478
|
-
// Create all CalendarShifts in batch
|
|
479
|
-
return this.createCalendarShiftsBatch(shiftsToCreate).pipe(
|
|
480
|
-
// If successful, return the created shift
|
|
481
|
-
switchMap(() => from([createdShift])),
|
|
482
|
-
// If CalendarShift creation fails, rollback
|
|
483
|
-
catchError$1(error => {
|
|
484
|
-
this.log.e('Error creating calendar shifts, rolling back...', error);
|
|
485
|
-
return this.delete(createdShift.id).pipe(switchMap(() => throwError(() => new Error('Failed to create calendar shifts. Shift has been rolled back.'))));
|
|
486
|
-
}));
|
|
487
|
-
}), catchError$1(error => {
|
|
488
|
-
this.log.e('Error creating shift', error);
|
|
489
|
-
return throwError(() => error);
|
|
490
|
-
}));
|
|
499
|
+
return super.create(data);
|
|
491
500
|
}
|
|
492
501
|
delete(id) {
|
|
493
502
|
this.connect();
|
|
@@ -513,114 +522,43 @@ class ShiftsService extends BaseResource {
|
|
|
513
522
|
return throwError(() => error);
|
|
514
523
|
}));
|
|
515
524
|
}
|
|
516
|
-
|
|
517
|
-
this.log.d('
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
generateCalendarShifts(repeat) {
|
|
532
|
-
const shifts = [];
|
|
533
|
-
const startDate = new Date(repeat.initDate);
|
|
534
|
-
let currentDate = new Date(startDate);
|
|
535
|
-
let occurrenceCount = 0;
|
|
536
|
-
// Determine the end date
|
|
537
|
-
const endDate = repeat.finalizeDate
|
|
538
|
-
? new Date(repeat.finalizeDate)
|
|
539
|
-
: this.calculateEndDateByOccurrences(startDate, repeat);
|
|
540
|
-
while (currentDate <= endDate) {
|
|
541
|
-
// Check if we've reached the maximum number of occurrences
|
|
542
|
-
if (repeat.occurrences && occurrenceCount >= repeat.occurrences) {
|
|
543
|
-
break;
|
|
544
|
-
}
|
|
545
|
-
// Add shift based on recurrence type
|
|
546
|
-
if (this.shouldAddShift(currentDate, repeat)) {
|
|
547
|
-
const shift = new CalendarShiftModel();
|
|
548
|
-
shift.startAt = currentDate.getTime();
|
|
549
|
-
// Assume each shift lasts until end of day (you can adjust this)
|
|
550
|
-
const endDateTime = new Date(currentDate);
|
|
551
|
-
endDateTime.setHours(23, 59, 59, 999);
|
|
552
|
-
shift.endAt = endDateTime.getTime();
|
|
553
|
-
shifts.push(shift);
|
|
554
|
-
occurrenceCount++;
|
|
525
|
+
assignUsersToCalendarShift(calendarShiftId, userIds) {
|
|
526
|
+
this.log.d('Assigning users to calendar shift', calendarShiftId, userIds);
|
|
527
|
+
return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
528
|
+
.update(calendarShiftId, { assignedUsersIds: userIds }, this.getAuthHeader())).pipe(tap(record => this.log.d('Assigned users to calendar shift', record)), map(record => !!record));
|
|
529
|
+
}
|
|
530
|
+
getCalendarShifts(dates, pageSize = 1000) {
|
|
531
|
+
this.log.d('Fetching calendar shifts', dates);
|
|
532
|
+
if (dates?.length > 0) {
|
|
533
|
+
this.filterData = {
|
|
534
|
+
criteria: "startAt >= {:startAt}",
|
|
535
|
+
params: { startAt: new Date(dates[0]) }
|
|
536
|
+
};
|
|
537
|
+
if (dates.length > 1) {
|
|
538
|
+
this.filterData.criteria += " && endAt <= {:endAt}";
|
|
539
|
+
this.filterData.params["endAt"] = new Date(dates[1]);
|
|
555
540
|
}
|
|
556
|
-
// Move to next period
|
|
557
|
-
currentDate = this.getNextDate(currentDate, repeat);
|
|
558
541
|
}
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
* Determines if a shift should be added on the current date
|
|
563
|
-
*/
|
|
564
|
-
shouldAddShift(date, repeat) {
|
|
565
|
-
switch (repeat.type) {
|
|
566
|
-
case RecurrenceType.DAILY:
|
|
567
|
-
return true;
|
|
568
|
-
case RecurrenceType.WEEKLY:
|
|
569
|
-
if (repeat.daysOfWeek && repeat.daysOfWeek.length > 0) {
|
|
570
|
-
const dayOfWeek = date.getDay();
|
|
571
|
-
return repeat.daysOfWeek.includes(dayOfWeek);
|
|
572
|
-
}
|
|
573
|
-
return true;
|
|
574
|
-
case RecurrenceType.MONTHLY:
|
|
575
|
-
if (repeat.dayOfMonth) {
|
|
576
|
-
return date.getDate() === repeat.dayOfMonth;
|
|
577
|
-
}
|
|
578
|
-
return true;
|
|
579
|
-
default:
|
|
580
|
-
return false;
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
/**
|
|
584
|
-
* Calculates the next date based on recurrence type
|
|
585
|
-
*/
|
|
586
|
-
getNextDate(currentDate, repeat) {
|
|
587
|
-
const nextDate = new Date(currentDate);
|
|
588
|
-
switch (repeat.type) {
|
|
589
|
-
case RecurrenceType.DAILY:
|
|
590
|
-
nextDate.setDate(nextDate.getDate() + repeat.interval);
|
|
591
|
-
break;
|
|
592
|
-
case RecurrenceType.WEEKLY:
|
|
593
|
-
nextDate.setDate(nextDate.getDate() + (7 * repeat.interval));
|
|
594
|
-
break;
|
|
595
|
-
case RecurrenceType.MONTHLY:
|
|
596
|
-
nextDate.setMonth(nextDate.getMonth() + repeat.interval);
|
|
597
|
-
break;
|
|
542
|
+
const listOpts = {};
|
|
543
|
+
if (this.filterData) {
|
|
544
|
+
listOpts.filter = this.client.filter(this.filterData.criteria, this.filterData.params);
|
|
598
545
|
}
|
|
599
|
-
return
|
|
546
|
+
return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
547
|
+
.getList(1, pageSize, this.buildOptions(listOpts))).pipe(catchError$1(err => this.handleError(err)));
|
|
600
548
|
}
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
estimatedEnd.setDate(estimatedEnd.getDate() + (repeat.occurrences * repeat.interval));
|
|
615
|
-
break;
|
|
616
|
-
case RecurrenceType.WEEKLY:
|
|
617
|
-
estimatedEnd.setDate(estimatedEnd.getDate() + (repeat.occurrences * 7 * repeat.interval));
|
|
618
|
-
break;
|
|
619
|
-
case RecurrenceType.MONTHLY:
|
|
620
|
-
estimatedEnd.setMonth(estimatedEnd.getMonth() + (repeat.occurrences * repeat.interval));
|
|
621
|
-
break;
|
|
622
|
-
}
|
|
623
|
-
return estimatedEnd;
|
|
549
|
+
getCalendarShiftsByYear(year) {
|
|
550
|
+
this.log.d('Fetching calendar shifts per year');
|
|
551
|
+
const y = year || new Date().getFullYear();
|
|
552
|
+
const dates = [
|
|
553
|
+
(new Date(y, 0, 1)).getTime(),
|
|
554
|
+
(new Date(y, 11, 31)).getTime()
|
|
555
|
+
];
|
|
556
|
+
return this.getCalendarShifts(dates);
|
|
557
|
+
}
|
|
558
|
+
deleteCalendarShiftById(id) {
|
|
559
|
+
this.log.d('Deleting calendar shift', id);
|
|
560
|
+
return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
561
|
+
.delete(id, this.getAuthHeader()));
|
|
624
562
|
}
|
|
625
563
|
/**
|
|
626
564
|
* Fetches all CalendarShifts associated with a specific Shift ID
|
|
@@ -628,7 +566,7 @@ class ShiftsService extends BaseResource {
|
|
|
628
566
|
getCalendarShiftsByShiftId(shiftId) {
|
|
629
567
|
this.log.d('Fetching calendar shifts for shift', shiftId);
|
|
630
568
|
const filter = `shiftId = "${shiftId}"`;
|
|
631
|
-
return from(this.
|
|
569
|
+
return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
632
570
|
.getFullList({ filter, ...this.getAuthHeader() })).pipe(catchError$1(err => this.handleError(err)));
|
|
633
571
|
}
|
|
634
572
|
/**
|
|
@@ -641,7 +579,7 @@ class ShiftsService extends BaseResource {
|
|
|
641
579
|
this.log.d('Deleting calendar shifts batch', calendarShiftIds.length);
|
|
642
580
|
// PocketBase batch ops could be disabled,
|
|
643
581
|
// so we create a manual transaction using Promise.all
|
|
644
|
-
const promises = calendarShiftIds.map(id => this.
|
|
582
|
+
const promises = calendarShiftIds.map(id => this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
645
583
|
.delete(id, this.getAuthHeader()));
|
|
646
584
|
return from(Promise.all(promises)).pipe(switchMap(() => from([true])), catchError$1(err => this.handleError(err)));
|
|
647
585
|
}
|
|
@@ -654,7 +592,7 @@ class ShiftsService extends BaseResource {
|
|
|
654
592
|
}
|
|
655
593
|
this.log.d('Restoring calendar shifts', calendarShifts.length);
|
|
656
594
|
// Recreate the CalendarShifts with their original data
|
|
657
|
-
const promises = calendarShifts.map(cs => this.
|
|
595
|
+
const promises = calendarShifts.map(cs => this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
658
596
|
.create({
|
|
659
597
|
shiftId: cs.shiftId,
|
|
660
598
|
startAt: cs.startAt,
|
|
@@ -665,22 +603,6 @@ class ShiftsService extends BaseResource {
|
|
|
665
603
|
return this.handleError(err);
|
|
666
604
|
}));
|
|
667
605
|
}
|
|
668
|
-
/**
|
|
669
|
-
* Creates multiple CalendarShifts
|
|
670
|
-
* TODO move to backend?
|
|
671
|
-
*/
|
|
672
|
-
createCalendarShiftsBatch(shifts) {
|
|
673
|
-
this.connect();
|
|
674
|
-
if (shifts.length === 0) {
|
|
675
|
-
return from([]);
|
|
676
|
-
}
|
|
677
|
-
this.log.d('Creating calendar shifts batch', shifts.length);
|
|
678
|
-
// PocketBase batch ops could be disabled,
|
|
679
|
-
// so we create a manual transaction using Promise.all
|
|
680
|
-
const promises = shifts.map(shift => this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
681
|
-
.create(shift, this.getAuthHeader()));
|
|
682
|
-
return from(Promise.all(promises)).pipe(catchError$1(err => this.handleError(err)));
|
|
683
|
-
}
|
|
684
606
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ShiftsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
685
607
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ShiftsService });
|
|
686
608
|
}
|
|
@@ -688,14 +610,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
688
610
|
type: Injectable
|
|
689
611
|
}], ctorParameters: () => [] });
|
|
690
612
|
|
|
691
|
-
class
|
|
692
|
-
Options = {
|
|
693
|
-
filter: "isEnabled = true"
|
|
694
|
-
};
|
|
613
|
+
class UsersService extends BaseResource {
|
|
695
614
|
Entity = SdkConfig.Entities.USERS;
|
|
696
615
|
constructor() {
|
|
697
616
|
super();
|
|
698
617
|
}
|
|
618
|
+
fetchList() {
|
|
619
|
+
this.setFilterDefaults();
|
|
620
|
+
return super.fetchList();
|
|
621
|
+
}
|
|
622
|
+
getAssignmentsPerShift(shiftId) {
|
|
623
|
+
const ep = `/api/mp/users/assignments/shift/${shiftId}`;
|
|
624
|
+
const params = new HttpParams();
|
|
625
|
+
return this.doGet(ep, params);
|
|
626
|
+
}
|
|
627
|
+
getAssignmentsAt(ts) {
|
|
628
|
+
const ep = `/api/mp/users/assignments/at/${ts}`;
|
|
629
|
+
const params = new HttpParams();
|
|
630
|
+
return this.doGet(ep, params);
|
|
631
|
+
}
|
|
632
|
+
// Unsupported
|
|
699
633
|
create(data) {
|
|
700
634
|
throw new Error("Method not supported.");
|
|
701
635
|
}
|
|
@@ -705,22 +639,23 @@ class CrewService extends BaseResource {
|
|
|
705
639
|
delete(id) {
|
|
706
640
|
throw new Error("Method not supported.");
|
|
707
641
|
}
|
|
708
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type:
|
|
709
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type:
|
|
642
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UsersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
643
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UsersService });
|
|
710
644
|
}
|
|
711
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type:
|
|
645
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UsersService, decorators: [{
|
|
712
646
|
type: Injectable
|
|
713
647
|
}], ctorParameters: () => [] });
|
|
714
648
|
|
|
715
649
|
class TeamsService extends BaseResource {
|
|
716
|
-
Options = {
|
|
717
|
-
filter: "isEnabled = true",
|
|
718
|
-
fields: "id,name,isEnabled"
|
|
719
|
-
};
|
|
720
650
|
Entity = SdkConfig.Entities.TEAMS;
|
|
721
651
|
constructor() {
|
|
722
652
|
super();
|
|
723
653
|
}
|
|
654
|
+
fetchList() {
|
|
655
|
+
this.listOptions = { fields: "id,name,isEnabled" };
|
|
656
|
+
this.setFilterDefaults();
|
|
657
|
+
return super.fetchList();
|
|
658
|
+
}
|
|
724
659
|
// Unsupported methods
|
|
725
660
|
/**
|
|
726
661
|
* @
|
|
@@ -740,13 +675,13 @@ class TeamsService extends BaseResource {
|
|
|
740
675
|
// Alternative methods using Angular Http
|
|
741
676
|
getTeams() {
|
|
742
677
|
const params = new HttpParams({
|
|
743
|
-
fromObject: this.
|
|
678
|
+
fromObject: this.listOptions
|
|
744
679
|
});
|
|
745
680
|
return this.doGetList(SdkConfig.Endpoints.TEAMS, params)
|
|
746
681
|
.pipe(tap(d => this.log.d("teams!!", d)));
|
|
747
682
|
}
|
|
748
683
|
fetchTeams() {
|
|
749
|
-
return this.getList(SdkConfig.Entities.TEAMS, this.
|
|
684
|
+
return this.getList(SdkConfig.Entities.TEAMS, this.listOptions);
|
|
750
685
|
}
|
|
751
686
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TeamsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
752
687
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TeamsService });
|
|
@@ -758,15 +693,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
758
693
|
class MpSdkService extends BasePlain {
|
|
759
694
|
missionsSrv;
|
|
760
695
|
shiftsSrv;
|
|
761
|
-
|
|
696
|
+
usersSrv;
|
|
762
697
|
teamsSrv;
|
|
763
698
|
authSrv = inject(AuthService);
|
|
764
699
|
authStoreSrv = inject(AuthStoreService);
|
|
765
|
-
constructor(missionsSrv, shiftsSrv,
|
|
700
|
+
constructor(missionsSrv, shiftsSrv, usersSrv, teamsSrv) {
|
|
766
701
|
super();
|
|
767
702
|
this.missionsSrv = missionsSrv;
|
|
768
703
|
this.shiftsSrv = shiftsSrv;
|
|
769
|
-
this.
|
|
704
|
+
this.usersSrv = usersSrv;
|
|
770
705
|
this.teamsSrv = teamsSrv;
|
|
771
706
|
}
|
|
772
707
|
// Auth
|
|
@@ -798,14 +733,20 @@ class MpSdkService extends BasePlain {
|
|
|
798
733
|
return this.missionsSrv.delete(id);
|
|
799
734
|
}
|
|
800
735
|
// Shifts
|
|
801
|
-
getShifts() {
|
|
802
|
-
return this.shiftsSrv.
|
|
736
|
+
getShifts(startDate) {
|
|
737
|
+
return this.shiftsSrv.fetch(startDate);
|
|
738
|
+
}
|
|
739
|
+
getShiftsByMissionHour(id, hourIndex) {
|
|
740
|
+
return this.shiftsSrv.searchByMissionAndHour(id, hourIndex).pipe(map(d => d.items));
|
|
803
741
|
}
|
|
804
742
|
getShiftById(id) {
|
|
805
743
|
return this.shiftsSrv.fetchOne(id);
|
|
806
744
|
}
|
|
807
|
-
getCalendarShifts(
|
|
808
|
-
return this.shiftsSrv.getCalendarShifts();
|
|
745
|
+
getCalendarShifts(d) {
|
|
746
|
+
return this.shiftsSrv.getCalendarShifts(d);
|
|
747
|
+
}
|
|
748
|
+
getCalendarShiftsPerYear(year) {
|
|
749
|
+
return this.shiftsSrv.getCalendarShiftsByYear(year);
|
|
809
750
|
}
|
|
810
751
|
saveShift(m) {
|
|
811
752
|
return !m.id
|
|
@@ -815,22 +756,35 @@ class MpSdkService extends BasePlain {
|
|
|
815
756
|
deleteShift(id) {
|
|
816
757
|
return this.shiftsSrv.delete(id);
|
|
817
758
|
}
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
759
|
+
deleteCalendarShift(id) {
|
|
760
|
+
return this.shiftsSrv.deleteCalendarShiftById(id);
|
|
761
|
+
}
|
|
762
|
+
assignUsersToCalendarShift(id, users) {
|
|
763
|
+
return this.shiftsSrv.assignUsersToCalendarShift(id, users);
|
|
764
|
+
}
|
|
765
|
+
// Users
|
|
766
|
+
getUsers() {
|
|
767
|
+
return this.usersSrv.fetchList();
|
|
821
768
|
}
|
|
822
|
-
|
|
823
|
-
return this.
|
|
769
|
+
getUserById(id) {
|
|
770
|
+
return this.usersSrv.fetchOne(id);
|
|
824
771
|
}
|
|
825
|
-
|
|
772
|
+
getAssignmentsPerShift(shiftId) {
|
|
773
|
+
return this.usersSrv.getAssignmentsPerShift(shiftId);
|
|
774
|
+
}
|
|
775
|
+
getAssignmentsAt(ts) {
|
|
776
|
+
return this.usersSrv.getAssignmentsAt(ts);
|
|
777
|
+
}
|
|
778
|
+
// Teams
|
|
779
|
+
getTeams() {
|
|
826
780
|
return this.teamsSrv.fetchList();
|
|
827
781
|
}
|
|
828
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MpSdkService, deps: [{ token: MissionsService }, { token: ShiftsService }, { token:
|
|
782
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MpSdkService, deps: [{ token: MissionsService }, { token: ShiftsService }, { token: UsersService }, { token: TeamsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
829
783
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MpSdkService });
|
|
830
784
|
}
|
|
831
785
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MpSdkService, decorators: [{
|
|
832
786
|
type: Injectable
|
|
833
|
-
}], ctorParameters: () => [{ type: MissionsService }, { type: ShiftsService }, { type:
|
|
787
|
+
}], ctorParameters: () => [{ type: MissionsService }, { type: ShiftsService }, { type: UsersService }, { type: TeamsService }] });
|
|
834
788
|
|
|
835
789
|
const defaultConfig = () => {
|
|
836
790
|
return new Configuration({
|
|
@@ -865,7 +819,7 @@ class MpSdkModule {
|
|
|
865
819
|
MissionsService,
|
|
866
820
|
ShiftsService,
|
|
867
821
|
TeamsService,
|
|
868
|
-
|
|
822
|
+
UsersService,
|
|
869
823
|
MpSdkService
|
|
870
824
|
] });
|
|
871
825
|
}
|
|
@@ -886,7 +840,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
886
840
|
MissionsService,
|
|
887
841
|
ShiftsService,
|
|
888
842
|
TeamsService,
|
|
889
|
-
|
|
843
|
+
UsersService,
|
|
890
844
|
MpSdkService
|
|
891
845
|
]
|
|
892
846
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"m481-mp-sdk-ng.mjs","sources":["../../../../projects/mp/sdk-ngx/src/lib/models/base.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/calendar-shift.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/event.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/mission.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/shift.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/user.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/team.model.ts","../../../../projects/mp/sdk-ngx/src/lib/services/logger.service.ts","../../../../projects/mp/sdk-ngx/src/lib/base/configuration.type.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-plain.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/services/utils.service.ts","../../../../projects/mp/sdk-ngx/src/lib/services/auth-store.service.ts","../../../../projects/mp/sdk-ngx/src/lib/services/auth.interceptor.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-main.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-pocket.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.constants.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/auth.service.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-resource.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/missions.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/shifts.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/crew.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/teams.service.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.service.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.module.ts","../../../../projects/mp/sdk-ngx/src/public-api.ts","../../../../projects/mp/sdk-ngx/src/m481-mp-sdk-ng.ts"],"sourcesContent":["\nexport abstract class BaseModel\n{\n public id: string;\n public created?: Date;\n public updated?: Date;\n}\n","import { BaseModel } from './base.model';\n\nexport class CalendarShiftModel extends BaseModel\n{\n\tpublic shiftId: string;\n public startAt: number;\n public endAt: number;\n}\n","import { BaseModel } from './base.model';\n\nexport type EventScope = \"mission\" | \"shift\" | \"user\";\n\nexport class EventModel extends BaseModel\n{\n\tpublic message: string;\n\tpublic scope: EventScope;\n\tpublic objectId: string;\n\tpublic userId: string;\n}\n","import { BaseModel } from './base.model';\nimport { TeamModel } from './team.model';\n\nexport class MissionModel extends BaseModel\n{\n\tpublic name: string;\n\tpublic isRegular: boolean;\n\tpublic color: string;\n\tpublic hours: Array<Array<number>>; // [ [11, 13], [17, 19] ] -\n \tpublic teamId: string;\n\tpublic team?: TeamModel;\n\tpublic isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\nimport { MissionModel } from './mission.model';\n\nexport enum RecurrenceType {\n DAILY,\n WEEKLY,\n MONTHLY\n}\n\nexport interface ShiftSpan {\n initialAt: number;\n maxSlots: number;\n type?: RecurrenceType;\n interval?: number;\n daysOfWeek?: Array<number>;\n dayOfMonth?: number;\n finalizeAt?: number;\n}\n\nexport class ShiftModel extends BaseModel\n{\n\tpublic missionId: string;\n public missionHourIndex: number;\n\tpublic teamId: string;\n\tpublic assignedUsersIds: Array<string>;\n\tpublic mission?: MissionModel;\n public timespan: ShiftSpan;\n public isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\nimport { RecordModel } from 'pocketbase';\n\nexport class UserModel extends BaseModel\n{\n\tpublic email: string;\n\tpublic verified: boolean;\n\tpublic name: string;\n public teamsAdmin: Array<string>;\n public teamsMember: Array<string>;\n public password?: string;\n\tpublic avatar?: any;\n public avatarUrl?: string;\n public isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\n\nexport class TeamModel extends BaseModel\n{\n\tpublic name: string;\n public isEnabled?: boolean;\n}\n","import { Injectable } from \"@angular/core\";\n\nexport interface ILogService {\n get(name: string, level: LogLevel): ILogger;\n}\n\nexport interface ILogger {\n d(...args: Array<unknown>): void;\n w(...args: Array<unknown>): void;\n e(...args: Array<unknown>): void;\n}\n\nexport enum LogLevel {\n ERROR = 0,\n WARN = 1,\n INFO = 2,\n DEBUG = 3,\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class LoggerService implements ILogService {\n public log = window.console;\n public LOG_FNS = [this.log.log, this.log.warn, this.log.error];\n public MSG_PREFIXES = [ [\"[\", \"]\"], [\"[\", \"] WARN: \"], [\"[\", \"] ERROR: \"] ];\n\n public get(prefix: string, level: LogLevel): ILogger {\n const logLevel = level || LogLevel.INFO;\n if (logLevel >= LogLevel.INFO) {\n this.LOG_FNS[0].call(this.log, \"[\" + prefix + \"] Logger created\");\n }\n const loggerFns = this.LOG_FNS.map((logTemplFn, i) => {\n return logTemplFn.bind(this.log, this.MSG_PREFIXES[i][0] + prefix + this.MSG_PREFIXES[i][1]);\n });\n return {\n d: (...args: Array<unknown>): void => {\n if (logLevel === LogLevel.DEBUG) {\n loggerFns[0].apply(this.log, [...args]);\n }\n },\n w: (...args: Array<unknown>): void => {\n if (logLevel >= LogLevel.WARN) {\n loggerFns[1].apply(this.log, [...args]);\n }\n },\n e: (...args: Array<unknown>): void => {\n if (logLevel >= LogLevel.ERROR) {\n loggerFns[2].apply(this.log, [...args]);\n }\n }\n };\n }\n\n}\n","export interface IConfigParams {\n baseUrl?: string;\n secret?: string;\n isProduction?: boolean;\n}\n\nexport class Configuration implements IConfigParams {\n public baseUrl: string;\n public secret?: string;\n public isProduction: boolean;\n\n public constructor(params: IConfigParams) {\n this.baseUrl = params.baseUrl || \"\";\n this.secret = params.secret;\n this.isProduction = params.isProduction || false;\n }\n}\n","import { Directive, inject } from \"@angular/core\";\n\nimport { LoggerService, ILogger, LogLevel } from \"../services/logger.service\";\nimport { Configuration } from './configuration.type';\n\n@Directive()\nexport abstract class BasePlain {\n\n protected log: ILogger;\n protected config = inject(Configuration);\n\n protected constructor(logLevel?: LogLevel) {\n const logger = inject(LoggerService);\n this.log = logger.get(\n this.constructor.name,\n logLevel || this.config.isProduction ? LogLevel.ERROR : LogLevel.DEBUG\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AES, enc } from \"crypto-js\";\nimport { Configuration } from \"../base/configuration.type\";\nimport { BasePlain } from '../base/base-plain.directive';\n\n@Injectable()\nexport class UtilsService extends BasePlain {\n constructor(private cfg: Configuration) {\n super();\n }\n\n public encryptText(text: string): string {\n let data = text;\n if (this.cfg.secret) {\n data = AES.encrypt(text, this.cfg.secret).toString();\n }\n\n return data;\n }\n\n public decryptText(data: string): string {\n let text = data;\n if (text) {\n if (this.cfg.secret) {\n const bytes = AES.decrypt(data.toString(), this.cfg.secret);\n const decrypted = bytes.toString(enc.Utf8);\n if (decrypted) {\n text = decrypted;\n } else {\n this.log.d(\"error decrypting\", data);\n }\n }\n }\n\n return text;\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { UtilsService } from \"./utils.service\";\n\n@Injectable()\nexport class AuthStoreService {\n private readonly KEY_TOKEN = \"mp_sdk:token\";\n private token = \"\";\n\n public constructor(private utilsSrv: UtilsService) {\n }\n\n public setToken(token: string): void {\n this.token = this.utilsSrv.encryptText(token);\n sessionStorage.setItem(this.KEY_TOKEN, this.token);\n }\n\n public getToken(): string {\n const data = sessionStorage.getItem(this.KEY_TOKEN);\n return !!data ? this.utilsSrv.decryptText(data) : null;\n }\n\n public clearToken(): void {\n this.token = null;\n sessionStorage.removeItem(this.KEY_TOKEN);\n }\n\n public isStoredToken(): boolean {\n return this.getToken() !== null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\n\nimport { AuthStoreService } from './auth-store.service';\nimport { BasePlain } from '../base/base-plain.directive';\nimport { LogLevel } from './logger.service';\n\n@Injectable()\nexport class AuthInterceptor extends BasePlain implements HttpInterceptor {\n\n // URLs that don't require authentication\n private readonly excludedUrls = [\n '/auth/login',\n '/auth/register',\n '/public',\n '/health'\n ];\n\n constructor(private authStore: AuthStoreService,\n private router: Router) {\n super(LogLevel.DEBUG);\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n // Check if the URL should be excluded\n if (this.shouldExcludeUrl(req.url)) {\n return next.handle(req);\n }\n\n // Get token from AuthStore service\n const authToken = this.authStore.getToken();\n\n this.log.d(\"intercepting\", req.url, authToken);\n let ret: Observable<HttpEvent<any>>;\n if (authToken) {\n // Clone the request and add authorization header\n const authReq = req.clone({\n setHeaders: {\n Authorization: authToken\n }\n });\n // Continue with modified request and handle errors\n\n ret = next.handle(authReq).pipe(\n catchError((error: HttpErrorResponse) => this.handleAuthError(error))\n );\n } else {\n // If no token, continue with original request\n ret = next.handle(req);\n }\n\n return ret\n }\n\n private shouldExcludeUrl(url: string): boolean {\n return this.excludedUrls.some(excludedUrl => url.includes(excludedUrl));\n }\n\n private handleAuthError(error: HttpErrorResponse): Observable<never> {\n if (error.status === 401) {\n // Invalid or expired token\n this.log.w('Invalid or expired authentication token');\n this.authStore.clearToken();\n\n // Redirect to login\n this.router.navigate(['/login']);\n } else if (error.status === 403) {\n // Insufficient permissions\n this.log.w('Insufficient permissions to access the resource');\n }\n\n // Propagate error for component handling\n return throwError(() => error);\n }\n}\n","import { Directive, inject } from \"@angular/core\";;\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { catchError, from, map, Observable } from 'rxjs';\n\nimport { BasePlain } from \"./base-plain.directive\";\nimport { AuthStoreService } from \"../services/auth-store.service\";\nimport { Configuration } from './configuration.type';\nimport { LogLevel } from '../services/logger.service';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\n\n@Directive()\nexport abstract class BaseSdk extends BasePlain {\n\n protected authStore = inject(AuthStoreService);\n protected http = inject(HttpClient);\n\n protected doGet<T extends BaseModel>(endpoint: string, params?: HttpParams): Observable<T> {\n return this.http.get<T>(this.config.baseUrl + endpoint, {\n params,\n });\n }\n\n protected doGetList<T extends BaseModel>(endpoint: string, params?: HttpParams): Observable<IListDataResponse<T>> {\n return this.http.get<IListDataResponse<T>>(this.config.baseUrl + endpoint, {\n params,\n });\n }\n\n protected getAuthHeader(): { headers: { [key: string]: string; } } {\n return {\n headers: {\n \"Authorization\": this.authStore.getToken(),\n }\n }\n }\n\n protected handleError(error: any): void {\n this.log.e(\"Error\", error);\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { HttpErrorResponse } from '@angular/common/http';\nimport PocketBase, { ClientResponseError, RecordListOptions, RecordOptions } from \"pocketbase\";\nimport Client from \"pocketbase\";\nimport 'cross-fetch/polyfill';\nimport { catchError, from, map, Observable, ObservableInput } from 'rxjs';\n\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\nimport { BaseSdk } from './base-main.directive';\n\n@Directive()\nexport class BasePocket extends BaseSdk {\n\n protected connection: Client;\n\n protected connect(): void {\n if (!this.connection) {\n this.connection = new PocketBase(this.config.baseUrl);\n\n }\n }\n\n protected getList<T extends BaseModel>(entity: string, options?: RecordListOptions): Observable<IListDataResponse<T>> {\n this.connect();\n this.log.d(\"getList --- entity\", entity, this.authStore.getToken());\n\n return from(\n this.connection.collection(entity).getList<T>(1, 20, this.buildOptions(options))\n ).pipe(\n catchError(err => this.handleError(err)),\n map(d => (d ? {\n page: d.page,\n pageSize: d.perPage,\n pagesTotal: d.totalPages,\n items: d.items,\n total: d.totalItems\n } : null))\n );\n }\n\n protected getOne<T extends BaseModel>(entity: string, id: string, options?: RecordOptions): Observable<T> {\n this.connect();\n this.log.d(\"fetchOne\", entity, this.authStore.getToken());\n return from(\n this.connection.collection(entity).getOne<T>(id, this.buildOptions(options))\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n protected save<T extends BaseModel>(entity: string, data: Partial<T>): Observable<T> {\n this.connect();\n this.log.d(\"save\", entity, data?.id, this.authStore.getToken());\n const target = this.connection.collection(entity);\n let promise: Promise<T>;\n if (data.id) {\n promise = target.update<T>(data.id, data, this.getAuthHeader());\n } else {\n promise = target.create<T>(data, this.getAuthHeader());\n }\n\n return from(promise).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n protected remove(entity: string, id: string): Observable<boolean> {\n this.connect();\n this.log.d(\"remove\", entity, this.authStore.getToken());\n return from(\n this.connection.collection(entity).delete(id, this.getAuthHeader())\n ).pipe(\n catchError(err => this.handleError(err)),\n );\n }\n\n protected override handleError(error: any): ObservableInput<any> {\n if (error instanceof ClientResponseError) {\n this.log.w(\"Http error\", error.status);\n throw new HttpErrorResponse({\n error: error.originalError,\n status: error.status,\n url: error.url\n });\n } else {\n this.log.w(\"Error response unknown\", error);\n throw error;\n }\n }\n\n private buildOptions(options?: RecordListOptions | RecordOptions): RecordListOptions | RecordOptions {\n return options\n ? {...options, ...this.getAuthHeader()}\n : this.getAuthHeader();\n }\n}\n","\nexport class SdkConfig {\n public static readonly Entities = {\n AUTH: \"users\",\n USERS: \"users\",\n EVENTS: \"events\",\n MISSIONS: \"missions\",\n SHIFTS: \"shifts\",\n CALENDAR_SHIFTS: \"calendar_shifts\",\n TEAMS: \"teams\"\n }\n\n public static readonly Endpoints = {\n TEAMS: \"/api/collections/teams/records\"\n }\n\n public static readonly ModelKeys = {\n CREATE_AT: \"created\",\n UPDATE_AT: \"updated\"\n }\n}\n","import { Injectable } from '@angular/core';\nimport { catchError, from, map, Observable } from 'rxjs';\nimport 'cross-fetch/polyfill';\n\nimport { UserModel } from '../models/user.model';\nimport { BasePocket } from '../base/base-pocket.directive';\nimport { SdkConfig } from '../mp-sdk.constants';\n\n@Injectable()\nexport class AuthService extends BasePocket {\n\n constructor() {\n super();\n }\n\n public login(user: string, pass: string): Observable<UserModel> {\n this.connect();\n return from(\n this.connection.collection(SdkConfig.Entities.AUTH).authWithPassword<UserModel>(user, pass)\n ).pipe(\n catchError(err => this.handleError(err)),\n map(data => {\n this.log.d(\"login ok\", data);\n this.authStore.setToken(data.token);\n return data.record;\n })\n )\n }\n\n public logout(): void {\n this.authStore.clearToken();\n }\n}\n","import { Directive } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { BasePocket } from './base-pocket.directive';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\nimport { SendOptions } from 'pocketbase';\n\n@Directive()\nexport abstract class BaseResource<T extends BaseModel> extends BasePocket {\n\n protected abstract readonly Options: SendOptions;\n protected abstract readonly Entity: string;\n\n public fetchList(): Observable<IListDataResponse<T>> {\n return this.getList<T>(this.Entity, this.Options);\n }\n\n public fetchOne(id: string): Observable<T> {\n return this.getOne<T>(this.Entity, id)\n }\n\n public create(data: Partial<T>): Observable<T> {\n return this.save<T>(this.Entity, data);\n }\n\n public update(id: string, data: Partial<T>): Observable<T> {\n return this.save<T>(this.Entity, {id, ...data});\n }\n\n public delete(id: string): Observable<boolean> {\n return this.remove(this.Entity, id);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport 'cross-fetch/polyfill';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { MissionModel } from '../models/mission.model';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\n\n@Injectable()\nexport class MissionsService extends BaseResource<MissionModel> {\n\n protected readonly Options = {\n filter: \"isEnabled = true\"\n };\n protected readonly Entity = SdkConfig.Entities.MISSIONS;\n\n constructor() {\n super();\n }\n\n public getArchived(): Observable<IListDataResponse<MissionModel>> {\n return this.getList<MissionModel>(SdkConfig.Entities.MISSIONS, {\n filter: \"isEnabled = false\"\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport 'cross-fetch/polyfill';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { ShiftModel, RecurrenceType } from '../models/shift.model';\nimport { CalendarShiftModel } from '../models/calendar-shift.model';\nimport { Observable, from, throwError, catchError, switchMap } from 'rxjs';\n\n@Injectable()\nexport class ShiftsService extends BaseResource<ShiftModel> {\n\n protected readonly Options = {\n filter: \"isEnabled = true\"\n };\n\n protected readonly Entity = SdkConfig.Entities.SHIFTS;\n\n constructor() {\n super();\n }\n\n public override create(data: Partial<ShiftModel>): Observable<ShiftModel> {\n const repeat = data.timespan;\n\n if (!repeat) {\n return throwError(() => new Error('No repeat data provided'));\n }\n\n // Generate CalendarShifts based on repeat configuration\n const calendarShifts = this.generateCalendarShifts(repeat);\n\n // Create the main Shift first\n return super.create(data).pipe(\n switchMap(createdShift => {\n // Assign the shiftId to all generated CalendarShifts\n const shiftsToCreate = calendarShifts.map(cs => ({\n shiftId: createdShift.id,\n startAt: cs.startAt,\n endAt: cs.endAt\n }));\n\n // Create all CalendarShifts in batch\n return this.createCalendarShiftsBatch(shiftsToCreate).pipe(\n // If successful, return the created shift\n switchMap(() => from([createdShift])),\n // If CalendarShift creation fails, rollback\n catchError(error => {\n this.log.e('Error creating calendar shifts, rolling back...', error);\n return this.delete(createdShift.id!).pipe(\n switchMap(() => throwError(() => new Error('Failed to create calendar shifts. Shift has been rolled back.')))\n );\n })\n );\n }),\n catchError(error => {\n this.log.e('Error creating shift', error);\n return throwError(() => error);\n })\n );\n }\n\n public override delete(id: string): Observable<boolean> {\n this.connect();\n\n // First, fetch all CalendarShifts associated with this Shift\n return this.getCalendarShiftsByShiftId(id).pipe(\n switchMap(calendarShifts => {\n // Store the IDs for potential rollback\n const calendarShiftIds = calendarShifts.map(cs => cs.id);\n\n // Delete all CalendarShifts first\n return this.deleteCalendarShiftsBatch(calendarShiftIds).pipe(\n switchMap(() => {\n // After successful CalendarShift deletion, delete the main Shift\n return super.delete(id).pipe(\n catchError(error => {\n // If Shift deletion fails, try to restore CalendarShifts\n this.log.e('Error deleting shift, attempting rollback...', error);\n return this.restoreCalendarShifts(calendarShifts).pipe(\n switchMap(() => throwError(() => new Error('Failed to delete shift. CalendarShifts have been restored.')))\n );\n })\n );\n }),\n catchError(error => {\n // If CalendarShift deletion fails, propagate the error\n this.log.e('Error deleting calendar shifts', error);\n return throwError(() => new Error('Failed to delete calendar shifts.'));\n })\n );\n }),\n catchError(error => {\n this.log.e('Error fetching calendar shifts for deletion', error);\n return throwError(() => error);\n })\n );\n }\n\n public getCalendarShifts(year?: number): Observable<CalendarShiftModel[]> {\n this.log.d('Fetching calendar shifts');\n const y = year || new Date().getFullYear();\n const startDate = new Date(y, 0, 1);\n const endDate = new Date(y, 11, 31);\n const startAt = startDate.getTime();\n const endAt = endDate.getTime();\n this.log.d(\n `Fetching calendar shifts for year ${y}`,\n `Start date: ${startDate.toISOString()}`,\n `End date: ${endDate.toISOString()}`,\n `Start at: ${startAt}`,\n `End at: ${endAt}`\n )\n const filter = `startAt = \"${startAt}\" AND endAt = \"${endAt}\"`;\n\n return from(\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .getFullList<CalendarShiftModel>({ filter, ...this.getAuthHeader() })\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n /**\n * Generates CalendarShifts based on repeat configuration\n */\n private generateCalendarShifts(repeat: any): CalendarShiftModel[] {\n const shifts: CalendarShiftModel[] = [];\n const startDate = new Date(repeat.initDate);\n let currentDate = new Date(startDate);\n let occurrenceCount = 0;\n\n // Determine the end date\n const endDate = repeat.finalizeDate\n ? new Date(repeat.finalizeDate)\n : this.calculateEndDateByOccurrences(startDate, repeat);\n\n while (currentDate <= endDate) {\n // Check if we've reached the maximum number of occurrences\n if (repeat.occurrences && occurrenceCount >= repeat.occurrences) {\n break;\n }\n\n // Add shift based on recurrence type\n if (this.shouldAddShift(currentDate, repeat)) {\n const shift = new CalendarShiftModel();\n shift.startAt = currentDate.getTime();\n // Assume each shift lasts until end of day (you can adjust this)\n const endDateTime = new Date(currentDate);\n endDateTime.setHours(23, 59, 59, 999);\n shift.endAt = endDateTime.getTime();\n\n shifts.push(shift);\n occurrenceCount++;\n }\n\n // Move to next period\n currentDate = this.getNextDate(currentDate, repeat);\n }\n\n return shifts;\n }\n\n /**\n * Determines if a shift should be added on the current date\n */\n private shouldAddShift(date: Date, repeat: any): boolean {\n switch (repeat.type) {\n case RecurrenceType.DAILY:\n return true;\n\n case RecurrenceType.WEEKLY:\n if (repeat.daysOfWeek && repeat.daysOfWeek.length > 0) {\n const dayOfWeek = date.getDay();\n return repeat.daysOfWeek.includes(dayOfWeek);\n }\n return true;\n\n case RecurrenceType.MONTHLY:\n if (repeat.dayOfMonth) {\n return date.getDate() === repeat.dayOfMonth;\n }\n return true;\n\n default:\n return false;\n }\n }\n\n /**\n * Calculates the next date based on recurrence type\n */\n private getNextDate(currentDate: Date, repeat: any): Date {\n const nextDate = new Date(currentDate);\n\n switch (repeat.type) {\n case RecurrenceType.DAILY:\n nextDate.setDate(nextDate.getDate() + repeat.interval);\n break;\n\n case RecurrenceType.WEEKLY:\n nextDate.setDate(nextDate.getDate() + (7 * repeat.interval));\n break;\n\n case RecurrenceType.MONTHLY:\n nextDate.setMonth(nextDate.getMonth() + repeat.interval);\n break;\n }\n\n return nextDate;\n }\n\n /**\n * Calculates the end date based on number of occurrences\n */\n private calculateEndDateByOccurrences(startDate: Date, repeat: any): Date {\n if (!repeat.occurrences) {\n // If no occurrences defined, set a reasonable limit (e.g., 1 year)\n const defaultEnd = new Date(startDate);\n defaultEnd.setFullYear(defaultEnd.getFullYear() + 1);\n return defaultEnd;\n }\n\n let estimatedEnd = new Date(startDate);\n\n switch (repeat.type) {\n case RecurrenceType.DAILY:\n estimatedEnd.setDate(estimatedEnd.getDate() + (repeat.occurrences * repeat.interval));\n break;\n\n case RecurrenceType.WEEKLY:\n estimatedEnd.setDate(estimatedEnd.getDate() + (repeat.occurrences * 7 * repeat.interval));\n break;\n\n case RecurrenceType.MONTHLY:\n estimatedEnd.setMonth(estimatedEnd.getMonth() + (repeat.occurrences * repeat.interval));\n break;\n }\n\n return estimatedEnd;\n }\n\n /**\n * Fetches all CalendarShifts associated with a specific Shift ID\n */\n private getCalendarShiftsByShiftId(shiftId: string): Observable<CalendarShiftModel[]> {\n this.log.d('Fetching calendar shifts for shift', shiftId);\n\n const filter = `shiftId = \"${shiftId}\"`;\n\n return from(\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .getFullList<CalendarShiftModel>({ filter, ...this.getAuthHeader() })\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n /**\n * Deletes multiple CalendarShifts in batch\n */\n private deleteCalendarShiftsBatch(calendarShiftIds: string[]): Observable<boolean> {\n if (calendarShiftIds.length === 0) {\n return from([true]);\n }\n\n this.log.d('Deleting calendar shifts batch', calendarShiftIds.length);\n\n // PocketBase batch ops could be disabled,\n // so we create a manual transaction using Promise.all\n const promises = calendarShiftIds.map(id =>\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .delete(id, this.getAuthHeader())\n );\n\n return from(Promise.all(promises)).pipe(\n switchMap(() => from([true])),\n catchError(err => this.handleError(err))\n );\n }\n\n /**\n * Restores CalendarShifts in case of rollback\n */\n private restoreCalendarShifts(calendarShifts: CalendarShiftModel[]): Observable<boolean> {\n if (calendarShifts.length === 0) {\n return from([true]);\n }\n\n this.log.d('Restoring calendar shifts', calendarShifts.length);\n\n // Recreate the CalendarShifts with their original data\n const promises = calendarShifts.map(cs =>\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .create({\n shiftId: cs.shiftId,\n startAt: cs.startAt,\n endAt: cs.endAt\n }, this.getAuthHeader())\n );\n\n return from(Promise.all(promises)).pipe(\n switchMap(() => from([true])),\n catchError(err => {\n this.log.e('Failed to restore calendar shifts during rollback', err);\n return this.handleError(err);\n })\n );\n }\n\n /**\n * Creates multiple CalendarShifts\n * TODO move to backend?\n */\n private createCalendarShiftsBatch(shifts: Partial<CalendarShiftModel>[]): Observable<any> {\n this.connect();\n\n if (shifts.length === 0) {\n return from([]);\n }\n\n this.log.d('Creating calendar shifts batch', shifts.length);\n\n // PocketBase batch ops could be disabled,\n // so we create a manual transaction using Promise.all\n const promises = shifts.map(shift =>\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .create(shift, this.getAuthHeader())\n );\n\n return from(Promise.all(promises)).pipe(\n catchError(err => this.handleError(err))\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport 'cross-fetch/polyfill';\nimport { Observable } from 'rxjs';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { UserModel } from '../models/user.model';\n\n@Injectable()\nexport class CrewService extends BaseResource<UserModel> {\n\n protected readonly Options = {\n filter: \"isEnabled = true\"\n };\n protected readonly Entity = SdkConfig.Entities.USERS;\n\n constructor() {\n super();\n }\n\n public override create(data: Partial<UserModel>): Observable<UserModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override update(id: string, data: Partial<UserModel>): Observable<UserModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override delete(id: string): Observable<boolean> {\n throw new Error(\"Method not supported.\");\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, tap } from 'rxjs';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { TeamModel } from '../models/team.model';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { HttpParams } from '@angular/common/http';\nimport { BaseResource } from '../base/base-resource.directive';\n\n@Injectable()\nexport class TeamsService extends BaseResource<TeamModel> {\n\n protected readonly Options = {\n filter: \"isEnabled = true\",\n fields: \"id,name,isEnabled\"\n };\n protected readonly Entity = SdkConfig.Entities.TEAMS;\n\n constructor() {\n super()\n }\n\n // Unsupported methods\n /**\n * @\n */\n public override fetchOne(id: string): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override create(data: Partial<TeamModel>): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override update(id: string, data: Partial<TeamModel>): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override delete(id: string): Observable<boolean> {\n throw new Error(\"Method not supported.\");\n }\n\n // Alternative methods using Angular Http\n\n public getTeams(): Observable<IListDataResponse<TeamModel>> {\n const params = new HttpParams({\n fromObject: this.Options\n });\n return this.doGetList<TeamModel>(SdkConfig.Endpoints.TEAMS, params)\n .pipe(\n tap(d => this.log.d(\"teams!!\", d))\n );\n }\n\n public fetchTeams(): Observable<IListDataResponse<TeamModel>> {\n return this.getList<TeamModel>(SdkConfig.Entities.TEAMS, this.Options);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { BasePlain } from './base/base-plain.directive';\nimport { AuthService } from './resources/auth.service';\nimport { UserModel } from './models/user.model';\nimport { IListDataResponse } from './models/reponses/list-data.response';\nimport { AuthStoreService } from './services/auth-store.service';\nimport { MissionsService } from './resources/missions.service';\nimport { MissionModel } from './models/mission.model';\nimport { ShiftsService } from './resources/shifts.service';\nimport { ShiftModel } from './models/shift.model';\nimport { CrewService } from './resources/crew.service';\nimport { TeamsService } from './resources/teams.service';\nimport { TeamModel } from './models/team.model';\nimport { CalendarShiftModel } from \"./models/calendar-shift.model\";\n\n@Injectable()\nexport class MpSdkService extends BasePlain {\n\n private readonly authSrv = inject(AuthService);\n private readonly authStoreSrv = inject(AuthStoreService);\n\n constructor(private readonly missionsSrv: MissionsService,\n private readonly shiftsSrv: ShiftsService,\n private readonly staffSrv: CrewService,\n private readonly teamsSrv: TeamsService) {\n super();\n }\n\n // Auth\n public login(user: string, pass: string): Observable<UserModel> {\n return this.authSrv.login(user, pass);\n }\n\n public logout(): void {\n this.authSrv.logout();\n }\n\n public isLoggedIn(): boolean {\n return this.authStoreSrv.isStoredToken();\n }\n\n // Missions\n public getMissions(): Observable<IListDataResponse<MissionModel>> {\n return this.missionsSrv.fetchList();\n }\n\n public getArchivedMissions(): Observable<IListDataResponse<MissionModel>> {\n return this.missionsSrv.getArchived();\n }\n\n public getMissionById(id: string): Observable<MissionModel> {\n return this.missionsSrv.fetchOne(id);\n }\n\n public saveMission(m: Partial<MissionModel>): Observable<MissionModel> {\n return !m.id\n ? this.missionsSrv.create(m)\n : this.missionsSrv.update(m.id, m);\n }\n\n public deleteMission(id): Observable<boolean> {\n return this.missionsSrv.delete(id);\n }\n\n // Shifts\n public getShifts(): Observable<IListDataResponse<ShiftModel>> {\n return this.shiftsSrv.fetchList();\n }\n\n public getShiftById(id: string): Observable<ShiftModel> {\n return this.shiftsSrv.fetchOne(id);\n }\n\n public getCalendarShifts(year?: number): Observable<Array<CalendarShiftModel>> {\n return this.shiftsSrv.getCalendarShifts()\n }\n\n public saveShift(m: Partial<ShiftModel>): Observable<ShiftModel> {\n return !m.id\n ? this.shiftsSrv.create(m)\n : this.shiftsSrv.update(m.id, m);\n }\n\n public deleteShift(id): Observable<boolean> {\n return this.shiftsSrv.delete(id);\n }\n\n // Staff\n public getStaffUsers(): Observable<IListDataResponse<UserModel>> {\n return this.staffSrv.fetchList();\n }\n\n public getStaffUser(id: string): Observable<UserModel> {\n return this.staffSrv.fetchOne(id);\n }\n\n public getStaffTeams(): Observable<IListDataResponse<TeamModel>> {\n return this.teamsSrv.fetchList();\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n HTTP_INTERCEPTORS,\n provideHttpClient,\n withInterceptorsFromDi\n} from '@angular/common/http';\n\n\nimport { AuthInterceptor } from './services/auth.interceptor';\nimport { Configuration } from './base/configuration.type';\nimport { AuthService } from './resources/auth.service';\nimport { AuthStoreService } from './services/auth-store.service';\nimport { MpSdkService } from './mp-sdk.service';\nimport { LoggerService } from './services/logger.service';\nimport { UtilsService } from './services/utils.service';\nimport { TeamsService } from './resources/teams.service';\nimport { MissionsService } from './resources/missions.service';\nimport { ShiftsService } from './resources/shifts.service';\nimport { CrewService } from './resources/crew.service';\n\nconst defaultConfig = (): Configuration => {\n return new Configuration({\n baseUrl: \"http://localhost:3000/api/\",\n secret: \"lwjhvkjdfhglk\",\n isProduction: false\n });\n};\n\n@NgModule({\n providers: [\n provideHttpClient(withInterceptorsFromDi()),\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true\n },\n LoggerService,\n UtilsService,\n AuthStoreService,\n AuthService,\n MissionsService,\n ShiftsService,\n TeamsService,\n CrewService,\n MpSdkService\n ]\n})\nexport class MpSdkModule\n{\n public static forRoot(\n configurationFactory: () => Configuration,\n ): ModuleWithProviders<MpSdkModule> {\n return {\n ngModule: MpSdkModule,\n providers: [{\n provide: Configuration,\n useFactory: configurationFactory || defaultConfig\n }],\n };\n }\n}\n","/*\n * Public API Surface of lib\n */\n\nexport * from \"./lib/models/calendar-shift.model\";\nexport * from \"./lib/models/event.model\";\nexport * from \"./lib/models/mission.model\";\nexport * from \"./lib/models/shift.model\";\nexport * from \"./lib/models/user.model\";\nexport * from \"./lib/models/team.model\";\n\nexport * from \"./lib/mp-sdk.module\";\nexport * from \"./lib/mp-sdk.service\";\nexport * from \"./lib/base/configuration.type\";\nexport * from \"./lib/services/auth-store.service\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LogLevel","i1.Configuration","i1.UtilsService","i1.AuthStoreService","catchError","i1.MissionsService","i2.ShiftsService","i3.CrewService","i4.TeamsService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"m481-mp-sdk-ng.mjs","sources":["../../../../projects/mp/sdk-ngx/src/lib/models/base.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/calendar-shift.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/event.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/mission.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/shift.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/user.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/team.model.ts","../../../../projects/mp/sdk-ngx/src/lib/services/logger.service.ts","../../../../projects/mp/sdk-ngx/src/lib/base/configuration.type.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-plain.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/services/utils.service.ts","../../../../projects/mp/sdk-ngx/src/lib/services/auth-store.service.ts","../../../../projects/mp/sdk-ngx/src/lib/services/auth.interceptor.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-main.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-pocket.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.constants.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/auth.service.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-resource.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/missions.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/shifts.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/users.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/teams.service.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.service.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.module.ts","../../../../projects/mp/sdk-ngx/src/public-api.ts","../../../../projects/mp/sdk-ngx/src/m481-mp-sdk-ng.ts"],"sourcesContent":["\nexport abstract class BaseModel\n{\n public id: string;\n public created?: Date;\n public updated?: Date;\n}\n","import { BaseModel } from './base.model';\n\nexport class CalendarShiftModel extends BaseModel\n{\n\tpublic shiftId: string;\n public startAt: Date;\n public endAt: Date;\n public assignedUsersIds: Array<string>;\n}\n","import { BaseModel } from './base.model';\n\nexport type EventScope = \"mission\" | \"shift\" | \"user\";\n\nexport class EventModel extends BaseModel\n{\n\tpublic message: string;\n\tpublic scope: EventScope;\n\tpublic objectId: string;\n\tpublic userId: string;\n}\n","import { BaseModel } from './base.model';\nimport { TeamModel } from './team.model';\n\nexport class MissionModel extends BaseModel\n{\n\tpublic name: string;\n\tpublic isRegular: boolean;\n\tpublic color: string;\n\tpublic hours: Array<Array<number>>; // [ [11, 13], [17, 19] ] -\n \tpublic teamId: string;\n\tpublic team?: TeamModel;\n\tpublic isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\nimport { MissionModel } from './mission.model';\n\nexport enum RecurrenceType {\n DAILY,\n WEEKLY,\n MONTHLY\n}\n\nexport interface ShiftSpan {\n initialAt: number;\n maxSlots: number;\n type?: RecurrenceType;\n interval?: number;\n daysOfWeek?: Array<number>;\n dayOfMonth?: number;\n finalizeAt?: number;\n}\n\nexport class ShiftModel extends BaseModel\n{\n\tpublic missionId: string;\n public missionHourIndex: number;\n\tpublic teamId: string;\n\tpublic assignedUsersIds: Array<string>;\n\tpublic mission?: MissionModel;\n public timespan: ShiftSpan;\n public startAt?: Date;\n public isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\nimport { RecordModel } from 'pocketbase';\n\nexport class UserModel extends BaseModel\n{\n\tpublic email: string;\n public username: string;\n\tpublic verified: boolean;\n\tpublic name: string;\n public teamsAdmin: Array<string>;\n public teamsMember: Array<string>;\n public password?: string;\n\tpublic avatar?: any;\n public avatarUrl?: string;\n public isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\n\nexport class TeamModel extends BaseModel\n{\n\tpublic name: string;\n public timeZone: string;\n public slug: string;\n public isEnabled?: boolean;\n}\n","import { Injectable } from \"@angular/core\";\n\nexport interface ILogService {\n get(name: string, level: LogLevel): ILogger;\n}\n\nexport interface ILogger {\n d(...args: Array<unknown>): void;\n w(...args: Array<unknown>): void;\n e(...args: Array<unknown>): void;\n}\n\nexport enum LogLevel {\n ERROR = 0,\n WARN = 1,\n INFO = 2,\n DEBUG = 3,\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class LoggerService implements ILogService {\n public log = window.console;\n public LOG_FNS = [this.log.log, this.log.warn, this.log.error];\n public MSG_PREFIXES = [ [\"[\", \"]\"], [\"[\", \"] WARN: \"], [\"[\", \"] ERROR: \"] ];\n\n public get(prefix: string, level: LogLevel): ILogger {\n const logLevel = level || LogLevel.INFO;\n if (logLevel >= LogLevel.INFO) {\n this.LOG_FNS[0].call(this.log, \"[\" + prefix + \"] Logger created\");\n }\n const loggerFns = this.LOG_FNS.map((logTemplFn, i) => {\n return logTemplFn.bind(this.log, this.MSG_PREFIXES[i][0] + prefix + this.MSG_PREFIXES[i][1]);\n });\n return {\n d: (...args: Array<unknown>): void => {\n if (logLevel === LogLevel.DEBUG) {\n loggerFns[0].apply(this.log, [...args]);\n }\n },\n w: (...args: Array<unknown>): void => {\n if (logLevel >= LogLevel.WARN) {\n loggerFns[1].apply(this.log, [...args]);\n }\n },\n e: (...args: Array<unknown>): void => {\n if (logLevel >= LogLevel.ERROR) {\n loggerFns[2].apply(this.log, [...args]);\n }\n }\n };\n }\n\n}\n","export interface IConfigParams {\n baseUrl?: string;\n secret?: string;\n isProduction?: boolean;\n}\n\nexport class Configuration implements IConfigParams {\n public baseUrl: string;\n public secret?: string;\n public isProduction: boolean;\n\n public constructor(params: IConfigParams) {\n this.baseUrl = params.baseUrl || \"\";\n this.secret = params.secret;\n this.isProduction = params.isProduction || false;\n }\n}\n","import { Directive, inject } from \"@angular/core\";\n\nimport { LoggerService, ILogger, LogLevel } from \"../services/logger.service\";\nimport { Configuration } from './configuration.type';\n\n@Directive()\nexport abstract class BasePlain {\n\n protected log: ILogger;\n protected config = inject(Configuration);\n\n protected constructor(logLevel?: LogLevel) {\n const logger = inject(LoggerService);\n this.log = logger.get(\n this.constructor.name,\n logLevel || this.config.isProduction ? LogLevel.ERROR : LogLevel.DEBUG\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AES, enc } from \"crypto-js\";\nimport { Configuration } from \"../base/configuration.type\";\nimport { BasePlain } from '../base/base-plain.directive';\n\n@Injectable()\nexport class UtilsService extends BasePlain {\n constructor(private cfg: Configuration) {\n super();\n }\n\n public encryptText(text: string): string {\n let data = text;\n if (this.cfg.secret) {\n data = AES.encrypt(text, this.cfg.secret).toString();\n }\n\n return data;\n }\n\n public decryptText(data: string): string {\n let text = data;\n if (text) {\n if (this.cfg.secret) {\n const bytes = AES.decrypt(data.toString(), this.cfg.secret);\n const decrypted = bytes.toString(enc.Utf8);\n if (decrypted) {\n text = decrypted;\n } else {\n this.log.d(\"error decrypting\", data);\n }\n }\n }\n\n return text;\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { UtilsService } from \"./utils.service\";\n\n@Injectable()\nexport class AuthStoreService {\n private readonly KEY_TOKEN = \"mp_sdk:token\";\n private token = \"\";\n\n public constructor(private utilsSrv: UtilsService) {\n }\n\n public setToken(token: string): void {\n this.token = this.utilsSrv.encryptText(token);\n sessionStorage.setItem(this.KEY_TOKEN, this.token);\n }\n\n public getToken(): string {\n const data = sessionStorage.getItem(this.KEY_TOKEN);\n return !!data ? this.utilsSrv.decryptText(data) : null;\n }\n\n public clearToken(): void {\n this.token = null;\n sessionStorage.removeItem(this.KEY_TOKEN);\n }\n\n public isStoredToken(): boolean {\n return this.getToken() !== null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\n\nimport { AuthStoreService } from './auth-store.service';\nimport { BasePlain } from '../base/base-plain.directive';\nimport { LogLevel } from './logger.service';\n\n@Injectable()\nexport class AuthInterceptor extends BasePlain implements HttpInterceptor {\n\n // URLs that don't require authentication\n private readonly excludedUrls = [\n '/auth/login',\n '/auth/register',\n '/public',\n '/health'\n ];\n\n constructor(private authStore: AuthStoreService,\n private router: Router) {\n super(LogLevel.DEBUG);\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n // Check if the URL should be excluded\n if (this.shouldExcludeUrl(req.url)) {\n return next.handle(req);\n }\n\n // Get token from AuthStore service\n const authToken = this.authStore.getToken();\n\n this.log.d(\"intercepting\", req.url, authToken);\n let ret: Observable<HttpEvent<any>>;\n if (authToken) {\n // Clone the request and add authorization header\n const authReq = req.clone({\n setHeaders: {\n Authorization: authToken\n }\n });\n // Continue with modified request and handle errors\n\n ret = next.handle(authReq).pipe(\n catchError((error: HttpErrorResponse) => this.handleAuthError(error))\n );\n } else {\n // If no token, continue with original request\n ret = next.handle(req);\n }\n\n return ret\n }\n\n private shouldExcludeUrl(url: string): boolean {\n return this.excludedUrls.some(excludedUrl => url.includes(excludedUrl));\n }\n\n private handleAuthError(error: HttpErrorResponse): Observable<never> {\n if (error.status === 401) {\n // Invalid or expired token\n this.log.w('Invalid or expired authentication token');\n this.authStore.clearToken();\n\n // Redirect to login\n this.router.navigate(['/login']);\n } else if (error.status === 403) {\n // Insufficient permissions\n this.log.w('Insufficient permissions to access the resource');\n }\n\n // Propagate error for component handling\n return throwError(() => error);\n }\n}\n","import { Directive, inject } from \"@angular/core\";;\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { catchError, from, map, Observable } from 'rxjs';\n\nimport { BasePlain } from \"./base-plain.directive\";\nimport { AuthStoreService } from \"../services/auth-store.service\";\nimport { Configuration } from './configuration.type';\nimport { LogLevel } from '../services/logger.service';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\n\n@Directive()\nexport abstract class BaseSdk extends BasePlain {\n\n protected authStore = inject(AuthStoreService);\n protected http = inject(HttpClient);\n\n protected doGet<T extends BaseModel>(endpoint: string, params?: HttpParams): Observable<T> {\n return this.http.get<T>(this.config.baseUrl + endpoint, {\n params,\n });\n }\n\n protected doGetList<T extends BaseModel>(endpoint: string, params?: HttpParams): Observable<IListDataResponse<T>> {\n return this.http.get<IListDataResponse<T>>(this.config.baseUrl + endpoint, {\n params,\n });\n }\n\n protected getAuthHeader(): { headers: { [key: string]: string; } } {\n return {\n headers: {\n \"Authorization\": this.authStore.getToken(),\n }\n }\n }\n\n protected handleError(error: any): void {\n this.log.e(\"Error\", error);\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { HttpErrorResponse } from '@angular/common/http';\nimport PocketBase, { ClientResponseError, RecordListOptions, RecordOptions } from \"pocketbase\";\nimport Client from \"pocketbase\";\nimport 'cross-fetch/polyfill';\nimport { catchError, from, map, Observable, ObservableInput } from 'rxjs';\n\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\nimport { BaseSdk } from './base-main.directive';\n\n@Directive()\nexport class BasePocket extends BaseSdk {\n\n protected client: Client;\n protected filterData: { criteria: string; params: { [key: string]: any; }; };\n\n protected connect(): void {\n if (!this.client) {\n this.client = new PocketBase(this.config.baseUrl);\n }\n }\n\n protected getList<T extends BaseModel>(entity: string, options?: RecordListOptions): Observable<IListDataResponse<T>> {\n this.connect();\n this.log.d(\"getList --- entity\", entity, this.authStore.getToken());\n\n const listOpts = options || {} as RecordListOptions;\n if (this.filterData) {\n listOpts.filter = this.client.filter(this.filterData.criteria, this.filterData.params);\n }\n\n return from(\n this.client.collection(entity).getList<T>(1, 20, this.buildOptions(listOpts))\n ).pipe(\n catchError(err => this.handleError(err)),\n map(d => (d ? {\n page: d.page,\n pageSize: d.perPage,\n pagesTotal: d.totalPages,\n items: d.items,\n total: d.totalItems\n } : null))\n );\n }\n\n protected getOne<T extends BaseModel>(entity: string, id: string, options?: RecordOptions): Observable<T> {\n this.connect();\n this.log.d(\"fetchOne\", entity, this.authStore.getToken());\n return from(\n this.client.collection(entity).getOne<T>(id, this.buildOptions(options))\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n protected save<T extends BaseModel>(entity: string, data: Partial<T>): Observable<T> {\n this.connect();\n this.log.d(\"save\", entity, data?.id, this.authStore.getToken());\n const target = this.client.collection(entity);\n let promise: Promise<T>;\n if (data.id) {\n promise = target.update<T>(data.id, data, this.getAuthHeader());\n } else {\n promise = target.create<T>(data, this.getAuthHeader());\n }\n\n return from(promise).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n protected remove(entity: string, id: string): Observable<boolean> {\n this.connect();\n this.log.d(\"remove\", entity, this.authStore.getToken());\n return from(\n this.client.collection(entity).delete(id, this.getAuthHeader())\n ).pipe(\n catchError(err => this.handleError(err)),\n );\n }\n\n protected override handleError(error: any): ObservableInput<any> {\n if (error instanceof ClientResponseError) {\n this.log.w(\"Http error\", error.status);\n throw new HttpErrorResponse({\n error: error.originalError,\n status: error.status,\n url: error.url\n });\n } else {\n this.log.w(\"Error response unknown\", error);\n throw error;\n }\n }\n\n protected buildOptions(options?: RecordListOptions | RecordOptions): RecordListOptions | RecordOptions {\n return options\n ? {...options, ...this.getAuthHeader()}\n : this.getAuthHeader();\n }\n}\n","\nexport class SdkConfig {\n public static readonly Entities = {\n AUTH: \"users\",\n USERS: \"users\",\n EVENTS: \"events\",\n MISSIONS: \"missions\",\n SHIFTS: \"shifts\",\n CALENDAR_SHIFTS: \"calendar_shifts\",\n TEAMS: \"teams\"\n }\n\n public static readonly Endpoints = {\n TEAMS: \"/api/collections/teams/records\"\n }\n\n public static readonly ModelKeys = {\n CREATE_AT: \"created\",\n UPDATE_AT: \"updated\"\n }\n}\n","import { Injectable } from '@angular/core';\nimport { catchError, from, map, Observable } from 'rxjs';\nimport 'cross-fetch/polyfill';\n\nimport { UserModel } from '../models/user.model';\nimport { BasePocket } from '../base/base-pocket.directive';\nimport { SdkConfig } from '../mp-sdk.constants';\n\n@Injectable()\nexport class AuthService extends BasePocket {\n\n constructor() {\n super();\n }\n\n public login(user: string, pass: string): Observable<UserModel> {\n this.connect();\n return from(\n this.client.collection(SdkConfig.Entities.AUTH).authWithPassword<UserModel>(user, pass)\n ).pipe(\n catchError(err => this.handleError(err)),\n map(data => {\n this.log.d(\"login ok\", data);\n this.authStore.setToken(data.token);\n return data.record;\n })\n )\n }\n\n public logout(): void {\n this.authStore.clearToken();\n }\n}\n","import { Directive } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RecordListOptions } from 'pocketbase';\n\nimport { BasePocket } from './base-pocket.directive';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\n\n@Directive()\nexport abstract class BaseResource<T extends BaseModel> extends BasePocket {\n\n protected abstract readonly Entity: string;\n protected readonly FilterMeta = \"isEnabled = {:isEnabled}\"\n protected readonly FilterMetaParams = {\n isEnabled: true\n };\n protected listOptions: RecordListOptions;\n\n public fetchList(): Observable<IListDataResponse<T>> {\n return this.getList<T>(this.Entity, this.listOptions);\n }\n\n public fetchOne(id: string): Observable<T> {\n return this.getOne<T>(this.Entity, id)\n }\n\n public create(data: Partial<T>): Observable<T> {\n return this.save<T>(this.Entity, data);\n }\n\n public update(id: string, data: Partial<T>): Observable<T> {\n return this.save<T>(this.Entity, {id, ...data});\n }\n\n public delete(id: string): Observable<boolean> {\n return this.remove(this.Entity, id);\n }\n\n protected setFilterDefaults(): void {\n this.filterData = { criteria: this.FilterMeta, params: this.FilterMetaParams };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport 'cross-fetch/polyfill';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { MissionModel } from '../models/mission.model';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\n\n@Injectable()\nexport class MissionsService extends BaseResource<MissionModel> {\n\n protected readonly Entity = SdkConfig.Entities.MISSIONS;\n\n constructor() {\n super();\n }\n\n public override fetchList(): Observable<IListDataResponse<MissionModel>> {\n this.setFilterDefaults();\n return super.fetchList();\n }\n\n public getArchived(): Observable<IListDataResponse<MissionModel>> {\n return this.getList<MissionModel>(SdkConfig.Entities.MISSIONS, {\n filter: this.client.filter(this.FilterMeta, { isEnabled: false })\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport 'cross-fetch/polyfill';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { ShiftModel, RecurrenceType, ShiftSpan } from '../models/shift.model';\nimport { CalendarShiftModel } from '../models/calendar-shift.model';\nimport { Observable, from, throwError, catchError, switchMap, map, tap } from 'rxjs';\nimport { IListDataResponse } from \"../models/reponses/list-data.response\";\nimport { RecordListOptions } from 'pocketbase';\n\n@Injectable()\nexport class ShiftsService extends BaseResource<ShiftModel> {\n\n protected readonly Entity = SdkConfig.Entities.SHIFTS;\n\n constructor() {\n super();\n }\n\n public fetch(startDate?: number): Observable<IListDataResponse<ShiftModel>> {\n this.listOptions = { perPage: 100 } as RecordListOptions;\n this.setFilterDefaults();\n if (startDate) {\n this.filterData.criteria += \" && startAt >= {:startAt}\";\n this.filterData.params[\"startAt\"] = new Date(startDate);\n }\n return this.fetchList();\n }\n\n public searchByMissionAndHour(missionId: string, missionHourIndex: number): Observable<IListDataResponse<ShiftModel>> {\n this.listOptions = { perPage: 100 } as RecordListOptions;\n this.setFilterDefaults();\n this.filterData.criteria += ` && missionId = \"${missionId}\" && missionHourIndex = ${missionHourIndex}`;\n return this.fetchList();\n }\n\n public override create(data: Partial<ShiftModel>): Observable<ShiftModel> {\n if (data.timespan) {\n data.timespan.daysOfWeek = (data.timespan.daysOfWeek || []).map(d => d > 6 ? 0 : d);\n data.startAt = !!data.timespan.initialAt ? new Date(data.timespan?.initialAt) : null;\n }\n return super.create(data);\n }\n\n public override delete(id: string): Observable<boolean> {\n this.connect();\n\n // First, fetch all CalendarShifts associated with this Shift\n return this.getCalendarShiftsByShiftId(id).pipe(\n switchMap(calendarShifts => {\n // Store the IDs for potential rollback\n const calendarShiftIds = calendarShifts.map(cs => cs.id);\n\n // Delete all CalendarShifts first\n return this.deleteCalendarShiftsBatch(calendarShiftIds).pipe(\n switchMap(() => {\n // After successful CalendarShift deletion, delete the main Shift\n return super.delete(id).pipe(\n catchError(error => {\n // If Shift deletion fails, try to restore CalendarShifts\n this.log.e('Error deleting shift, attempting rollback...', error);\n return this.restoreCalendarShifts(calendarShifts).pipe(\n switchMap(() => throwError(() => new Error('Failed to delete shift. CalendarShifts have been restored.')))\n );\n })\n );\n }),\n catchError(error => {\n // If CalendarShift deletion fails, propagate the error\n this.log.e('Error deleting calendar shifts', error);\n return throwError(() => new Error('Failed to delete calendar shifts.'));\n })\n );\n }),\n catchError(error => {\n this.log.e('Error fetching calendar shifts for deletion', error);\n return throwError(() => error);\n })\n );\n }\n\n public assignUsersToCalendarShift(calendarShiftId: string, userIds: Array<string>): Observable<boolean> {\n this.log.d('Assigning users to calendar shift', calendarShiftId, userIds);\n return from(\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .update(calendarShiftId, { assignedUsersIds: userIds }, this.getAuthHeader())\n ).pipe(\n tap(record => this.log.d('Assigned users to calendar shift', record)),\n map(record => !!record)\n );\n }\n\n public getCalendarShifts(dates: Array<number>, pageSize = 1000): Observable<IListDataResponse<CalendarShiftModel>> {\n this.log.d('Fetching calendar shifts', dates);\n if (dates?.length > 0) {\n this.filterData = {\n criteria: \"startAt >= {:startAt}\",\n params: { startAt: new Date(dates[0]) }\n };\n\n if (dates.length > 1) {\n this.filterData.criteria += \" && endAt <= {:endAt}\";\n this.filterData.params[\"endAt\"] = new Date(dates[1]);\n }\n }\n\n const listOpts = {} as RecordListOptions;\n if (this.filterData) {\n listOpts.filter = this.client.filter(this.filterData.criteria, this.filterData.params);\n }\n\n return from(\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .getList<CalendarShiftModel>(1, pageSize, this.buildOptions(listOpts))\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n public getCalendarShiftsByYear(year?: number): Observable<IListDataResponse<CalendarShiftModel>> {\n this.log.d('Fetching calendar shifts per year');\n const y = year || new Date().getFullYear();\n const dates = [\n (new Date(y, 0, 1)).getTime(),\n (new Date(y, 11, 31)).getTime()\n ];\n\n return this.getCalendarShifts(dates);\n }\n\n public deleteCalendarShiftById(id: string): Observable<boolean> {\n this.log.d('Deleting calendar shift', id);\n return from(\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .delete(id, this.getAuthHeader())\n );\n }\n\n /**\n * Fetches all CalendarShifts associated with a specific Shift ID\n */\n private getCalendarShiftsByShiftId(shiftId: string): Observable<CalendarShiftModel[]> {\n this.log.d('Fetching calendar shifts for shift', shiftId);\n\n const filter = `shiftId = \"${shiftId}\"`;\n\n return from(\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .getFullList<CalendarShiftModel>({ filter, ...this.getAuthHeader() })\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n /**\n * Deletes multiple CalendarShifts in batch\n */\n private deleteCalendarShiftsBatch(calendarShiftIds: string[]): Observable<boolean> {\n if (calendarShiftIds.length === 0) {\n return from([true]);\n }\n\n this.log.d('Deleting calendar shifts batch', calendarShiftIds.length);\n\n // PocketBase batch ops could be disabled,\n // so we create a manual transaction using Promise.all\n const promises = calendarShiftIds.map(id =>\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .delete(id, this.getAuthHeader())\n );\n\n return from(Promise.all(promises)).pipe(\n switchMap(() => from([true])),\n catchError(err => this.handleError(err))\n );\n }\n\n /**\n * Restores CalendarShifts in case of rollback\n */\n private restoreCalendarShifts(calendarShifts: CalendarShiftModel[]): Observable<boolean> {\n if (calendarShifts.length === 0) {\n return from([true]);\n }\n\n this.log.d('Restoring calendar shifts', calendarShifts.length);\n\n // Recreate the CalendarShifts with their original data\n const promises = calendarShifts.map(cs =>\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .create({\n shiftId: cs.shiftId,\n startAt: cs.startAt,\n endAt: cs.endAt\n }, this.getAuthHeader())\n );\n\n return from(Promise.all(promises)).pipe(\n switchMap(() => from([true])),\n catchError(err => {\n this.log.e('Failed to restore calendar shifts during rollback', err);\n return this.handleError(err);\n })\n );\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport 'cross-fetch/polyfill';\nimport { Observable } from 'rxjs';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { UserModel } from '../models/user.model';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { HttpParams } from '@angular/common/http';\n\n@Injectable()\nexport class UsersService extends BaseResource<UserModel> {\n\n protected readonly Entity = SdkConfig.Entities.USERS;\n\n constructor() {\n super();\n }\n\n public override fetchList(): Observable<IListDataResponse<UserModel>> {\n this.setFilterDefaults();\n return super.fetchList();\n }\n\n public getAssignmentsPerShift(shiftId: string): Observable<any> {\n const ep = `/api/mp/users/assignments/shift/${shiftId}`;\n const params = new HttpParams();\n return this.doGet(ep, params);\n }\n\n public getAssignmentsAt(ts: number): Observable<any> {\n const ep = `/api/mp/users/assignments/at/${ts}`;\n const params = new HttpParams();\n return this.doGet(ep, params);\n }\n\n // Unsupported\n\n public override create(data: Partial<UserModel>): Observable<UserModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override update(id: string, data: Partial<UserModel>): Observable<UserModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override delete(id: string): Observable<boolean> {\n throw new Error(\"Method not supported.\");\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpParams } from '@angular/common/http';\nimport { Observable, tap } from 'rxjs';\nimport { RecordListOptions } from 'pocketbase';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { TeamModel } from '../models/team.model';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseResource } from '../base/base-resource.directive';\n\n@Injectable()\nexport class TeamsService extends BaseResource<TeamModel> {\n\n protected readonly Entity = SdkConfig.Entities.TEAMS;\n\n constructor() {\n super()\n }\n\n public override fetchList(): Observable<IListDataResponse<TeamModel>> {\n this.listOptions = { fields: \"id,name,isEnabled\" };\n this.setFilterDefaults();\n return super.fetchList();\n }\n\n // Unsupported methods\n /**\n * @\n */\n public override fetchOne(id: string): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override create(data: Partial<TeamModel>): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override update(id: string, data: Partial<TeamModel>): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override delete(id: string): Observable<boolean> {\n throw new Error(\"Method not supported.\");\n }\n\n // Alternative methods using Angular Http\n\n public getTeams(): Observable<IListDataResponse<TeamModel>> {\n const params = new HttpParams({\n fromObject: this.listOptions\n });\n return this.doGetList<TeamModel>(SdkConfig.Endpoints.TEAMS, params)\n .pipe(\n tap(d => this.log.d(\"teams!!\", d))\n );\n }\n\n public fetchTeams(): Observable<IListDataResponse<TeamModel>> {\n return this.getList<TeamModel>(SdkConfig.Entities.TEAMS, this.listOptions);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\n\nimport { BasePlain } from './base/base-plain.directive';\nimport { AuthService } from './resources/auth.service';\nimport { UserModel } from './models/user.model';\nimport { IListDataResponse } from './models/reponses/list-data.response';\nimport { AuthStoreService } from './services/auth-store.service';\nimport { MissionsService } from './resources/missions.service';\nimport { MissionModel } from './models/mission.model';\nimport { ShiftsService } from './resources/shifts.service';\nimport { ShiftModel } from './models/shift.model';\nimport { UsersService } from './resources/users.service';\nimport { TeamsService } from './resources/teams.service';\nimport { TeamModel } from './models/team.model';\nimport { CalendarShiftModel } from \"./models/calendar-shift.model\";\n\n@Injectable()\nexport class MpSdkService extends BasePlain {\n\n private readonly authSrv = inject(AuthService);\n private readonly authStoreSrv = inject(AuthStoreService);\n\n constructor(private readonly missionsSrv: MissionsService,\n private readonly shiftsSrv: ShiftsService,\n private readonly usersSrv: UsersService,\n private readonly teamsSrv: TeamsService) {\n super();\n }\n\n // Auth\n public login(user: string, pass: string): Observable<UserModel> {\n return this.authSrv.login(user, pass);\n }\n\n public logout(): void {\n this.authSrv.logout();\n }\n\n public isLoggedIn(): boolean {\n return this.authStoreSrv.isStoredToken();\n }\n\n // Missions\n public getMissions(): Observable<IListDataResponse<MissionModel>> {\n return this.missionsSrv.fetchList();\n }\n\n public getArchivedMissions(): Observable<IListDataResponse<MissionModel>> {\n return this.missionsSrv.getArchived();\n }\n\n public getMissionById(id: string): Observable<MissionModel> {\n return this.missionsSrv.fetchOne(id);\n }\n\n public saveMission(m: Partial<MissionModel>): Observable<MissionModel> {\n return !m.id\n ? this.missionsSrv.create(m)\n : this.missionsSrv.update(m.id, m);\n }\n\n public deleteMission(id): Observable<boolean> {\n return this.missionsSrv.delete(id);\n }\n\n // Shifts\n public getShifts(startDate?: number): Observable<IListDataResponse<ShiftModel>> {\n return this.shiftsSrv.fetch(startDate);\n }\n\n public getShiftsByMissionHour(id: string, hourIndex: number): Observable<Array<ShiftModel>> {\n return this.shiftsSrv.searchByMissionAndHour(id, hourIndex).pipe(\n map(d => d.items)\n );\n }\n\n public getShiftById(id: string): Observable<ShiftModel> {\n return this.shiftsSrv.fetchOne(id);\n }\n\n public getCalendarShifts(d: Array<number>): Observable<IListDataResponse<CalendarShiftModel>> {\n return this.shiftsSrv.getCalendarShifts(d)\n }\n\n public getCalendarShiftsPerYear(year?: number): Observable<IListDataResponse<CalendarShiftModel>> {\n return this.shiftsSrv.getCalendarShiftsByYear(year)\n }\n\n public saveShift(m: Partial<ShiftModel>): Observable<ShiftModel> {\n return !m.id\n ? this.shiftsSrv.create(m)\n : this.shiftsSrv.update(m.id, m);\n }\n\n public deleteShift(id): Observable<boolean> {\n return this.shiftsSrv.delete(id);\n }\n\n public deleteCalendarShift(id): Observable<boolean> {\n return this.shiftsSrv.deleteCalendarShiftById(id);\n }\n\n public assignUsersToCalendarShift(id: string, users: Array<string>): Observable<boolean> {\n return this.shiftsSrv.assignUsersToCalendarShift(id, users);\n }\n\n // Users\n public getUsers(): Observable<IListDataResponse<UserModel>> {\n return this.usersSrv.fetchList();\n }\n\n public getUserById(id: string): Observable<UserModel> {\n return this.usersSrv.fetchOne(id);\n }\n\n public getAssignmentsPerShift(shiftId: string): Observable<any> {\n return this.usersSrv.getAssignmentsPerShift(shiftId);\n }\n\n public getAssignmentsAt(ts: number): Observable<any> {\n return this.usersSrv.getAssignmentsAt(ts);\n }\n\n // Teams\n\n public getTeams(): Observable<IListDataResponse<TeamModel>> {\n return this.teamsSrv.fetchList();\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n HTTP_INTERCEPTORS,\n provideHttpClient,\n withInterceptorsFromDi\n} from '@angular/common/http';\n\n\nimport { AuthInterceptor } from './services/auth.interceptor';\nimport { Configuration } from './base/configuration.type';\nimport { AuthService } from './resources/auth.service';\nimport { AuthStoreService } from './services/auth-store.service';\nimport { MpSdkService } from './mp-sdk.service';\nimport { LoggerService } from './services/logger.service';\nimport { UtilsService } from './services/utils.service';\nimport { TeamsService } from './resources/teams.service';\nimport { MissionsService } from './resources/missions.service';\nimport { ShiftsService } from './resources/shifts.service';\nimport { UsersService } from './resources/users.service';\n\nconst defaultConfig = (): Configuration => {\n return new Configuration({\n baseUrl: \"http://localhost:3000/api/\",\n secret: \"lwjhvkjdfhglk\",\n isProduction: false\n });\n};\n\n@NgModule({\n providers: [\n provideHttpClient(withInterceptorsFromDi()),\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true\n },\n LoggerService,\n UtilsService,\n AuthStoreService,\n AuthService,\n MissionsService,\n ShiftsService,\n TeamsService,\n UsersService,\n MpSdkService\n ]\n})\nexport class MpSdkModule\n{\n public static forRoot(\n configurationFactory: () => Configuration,\n ): ModuleWithProviders<MpSdkModule> {\n return {\n ngModule: MpSdkModule,\n providers: [{\n provide: Configuration,\n useFactory: configurationFactory || defaultConfig\n }],\n };\n }\n}\n","/*\n * Public API Surface of lib\n */\n\nexport * from \"./lib/models/calendar-shift.model\";\nexport * from \"./lib/models/event.model\";\nexport * from \"./lib/models/mission.model\";\nexport * from \"./lib/models/shift.model\";\nexport * from \"./lib/models/user.model\";\nexport * from \"./lib/models/team.model\";\n\nexport * from \"./lib/mp-sdk.module\";\nexport * from \"./lib/mp-sdk.service\";\nexport * from \"./lib/base/configuration.type\";\nexport * from \"./lib/services/auth-store.service\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LogLevel","i1.Configuration","i1.UtilsService","i1.AuthStoreService","catchError","i1.MissionsService","i2.ShiftsService","i3.UsersService","i4.TeamsService"],"mappings":"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"}
|
|
@@ -7,14 +7,20 @@ import { BaseModel } from '../models/base.model';
|
|
|
7
7
|
import { BaseSdk } from './base-main.directive';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export declare class BasePocket extends BaseSdk {
|
|
10
|
-
protected
|
|
10
|
+
protected client: Client;
|
|
11
|
+
protected filterData: {
|
|
12
|
+
criteria: string;
|
|
13
|
+
params: {
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
11
17
|
protected connect(): void;
|
|
12
18
|
protected getList<T extends BaseModel>(entity: string, options?: RecordListOptions): Observable<IListDataResponse<T>>;
|
|
13
19
|
protected getOne<T extends BaseModel>(entity: string, id: string, options?: RecordOptions): Observable<T>;
|
|
14
20
|
protected save<T extends BaseModel>(entity: string, data: Partial<T>): Observable<T>;
|
|
15
21
|
protected remove(entity: string, id: string): Observable<boolean>;
|
|
16
22
|
protected handleError(error: any): ObservableInput<any>;
|
|
17
|
-
|
|
23
|
+
protected buildOptions(options?: RecordListOptions | RecordOptions): RecordListOptions | RecordOptions;
|
|
18
24
|
static ɵfac: i0.ɵɵFactoryDeclaration<BasePocket, never>;
|
|
19
25
|
static ɵdir: i0.ɵɵDirectiveDeclaration<BasePocket, never, never, {}, {}, never, never, true, never>;
|
|
20
26
|
}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
+
import { RecordListOptions } from 'pocketbase';
|
|
2
3
|
import { BasePocket } from './base-pocket.directive';
|
|
3
4
|
import { IListDataResponse } from '../models/reponses/list-data.response';
|
|
4
5
|
import { BaseModel } from '../models/base.model';
|
|
5
|
-
import { SendOptions } from 'pocketbase';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare abstract class BaseResource<T extends BaseModel> extends BasePocket {
|
|
8
|
-
protected abstract readonly Options: SendOptions;
|
|
9
8
|
protected abstract readonly Entity: string;
|
|
9
|
+
protected readonly FilterMeta = "isEnabled = {:isEnabled}";
|
|
10
|
+
protected readonly FilterMetaParams: {
|
|
11
|
+
isEnabled: boolean;
|
|
12
|
+
};
|
|
13
|
+
protected listOptions: RecordListOptions;
|
|
10
14
|
fetchList(): Observable<IListDataResponse<T>>;
|
|
11
15
|
fetchOne(id: string): Observable<T>;
|
|
12
16
|
create(data: Partial<T>): Observable<T>;
|
|
13
17
|
update(id: string, data: Partial<T>): Observable<T>;
|
|
14
18
|
delete(id: string): Observable<boolean>;
|
|
19
|
+
protected setFilterDefaults(): void;
|
|
15
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<BaseResource<any>, never>;
|
|
16
21
|
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseResource<any>, never, never, {}, {}, never, never, true, never>;
|
|
17
22
|
}
|
package/lib/mp-sdk.service.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { MissionsService } from './resources/missions.service';
|
|
|
6
6
|
import { MissionModel } from './models/mission.model';
|
|
7
7
|
import { ShiftsService } from './resources/shifts.service';
|
|
8
8
|
import { ShiftModel } from './models/shift.model';
|
|
9
|
-
import {
|
|
9
|
+
import { UsersService } from './resources/users.service';
|
|
10
10
|
import { TeamsService } from './resources/teams.service';
|
|
11
11
|
import { TeamModel } from './models/team.model';
|
|
12
12
|
import { CalendarShiftModel } from "./models/calendar-shift.model";
|
|
@@ -14,11 +14,11 @@ import * as i0 from "@angular/core";
|
|
|
14
14
|
export declare class MpSdkService extends BasePlain {
|
|
15
15
|
private readonly missionsSrv;
|
|
16
16
|
private readonly shiftsSrv;
|
|
17
|
-
private readonly
|
|
17
|
+
private readonly usersSrv;
|
|
18
18
|
private readonly teamsSrv;
|
|
19
19
|
private readonly authSrv;
|
|
20
20
|
private readonly authStoreSrv;
|
|
21
|
-
constructor(missionsSrv: MissionsService, shiftsSrv: ShiftsService,
|
|
21
|
+
constructor(missionsSrv: MissionsService, shiftsSrv: ShiftsService, usersSrv: UsersService, teamsSrv: TeamsService);
|
|
22
22
|
login(user: string, pass: string): Observable<UserModel>;
|
|
23
23
|
logout(): void;
|
|
24
24
|
isLoggedIn(): boolean;
|
|
@@ -27,14 +27,20 @@ export declare class MpSdkService extends BasePlain {
|
|
|
27
27
|
getMissionById(id: string): Observable<MissionModel>;
|
|
28
28
|
saveMission(m: Partial<MissionModel>): Observable<MissionModel>;
|
|
29
29
|
deleteMission(id: any): Observable<boolean>;
|
|
30
|
-
getShifts(): Observable<IListDataResponse<ShiftModel>>;
|
|
30
|
+
getShifts(startDate?: number): Observable<IListDataResponse<ShiftModel>>;
|
|
31
|
+
getShiftsByMissionHour(id: string, hourIndex: number): Observable<Array<ShiftModel>>;
|
|
31
32
|
getShiftById(id: string): Observable<ShiftModel>;
|
|
32
|
-
getCalendarShifts(
|
|
33
|
+
getCalendarShifts(d: Array<number>): Observable<IListDataResponse<CalendarShiftModel>>;
|
|
34
|
+
getCalendarShiftsPerYear(year?: number): Observable<IListDataResponse<CalendarShiftModel>>;
|
|
33
35
|
saveShift(m: Partial<ShiftModel>): Observable<ShiftModel>;
|
|
34
36
|
deleteShift(id: any): Observable<boolean>;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
deleteCalendarShift(id: any): Observable<boolean>;
|
|
38
|
+
assignUsersToCalendarShift(id: string, users: Array<string>): Observable<boolean>;
|
|
39
|
+
getUsers(): Observable<IListDataResponse<UserModel>>;
|
|
40
|
+
getUserById(id: string): Observable<UserModel>;
|
|
41
|
+
getAssignmentsPerShift(shiftId: string): Observable<any>;
|
|
42
|
+
getAssignmentsAt(ts: number): Observable<any>;
|
|
43
|
+
getTeams(): Observable<IListDataResponse<TeamModel>>;
|
|
38
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<MpSdkService, never>;
|
|
39
45
|
static ɵprov: i0.ɵɵInjectableDeclaration<MpSdkService>;
|
|
40
46
|
}
|
|
@@ -5,11 +5,9 @@ import { MissionModel } from '../models/mission.model';
|
|
|
5
5
|
import { IListDataResponse } from '../models/reponses/list-data.response';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class MissionsService extends BaseResource<MissionModel> {
|
|
8
|
-
protected readonly Options: {
|
|
9
|
-
filter: string;
|
|
10
|
-
};
|
|
11
8
|
protected readonly Entity: string;
|
|
12
9
|
constructor();
|
|
10
|
+
fetchList(): Observable<IListDataResponse<MissionModel>>;
|
|
13
11
|
getArchived(): Observable<IListDataResponse<MissionModel>>;
|
|
14
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<MissionsService, never>;
|
|
15
13
|
static ɵprov: i0.ɵɵInjectableDeclaration<MissionsService>;
|
|
@@ -3,32 +3,19 @@ import { BaseResource } from '../base/base-resource.directive';
|
|
|
3
3
|
import { ShiftModel } from '../models/shift.model';
|
|
4
4
|
import { CalendarShiftModel } from '../models/calendar-shift.model';
|
|
5
5
|
import { Observable } from 'rxjs';
|
|
6
|
+
import { IListDataResponse } from "../models/reponses/list-data.response";
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export declare class ShiftsService extends BaseResource<ShiftModel> {
|
|
8
|
-
protected readonly Options: {
|
|
9
|
-
filter: string;
|
|
10
|
-
};
|
|
11
9
|
protected readonly Entity: string;
|
|
12
10
|
constructor();
|
|
11
|
+
fetch(startDate?: number): Observable<IListDataResponse<ShiftModel>>;
|
|
12
|
+
searchByMissionAndHour(missionId: string, missionHourIndex: number): Observable<IListDataResponse<ShiftModel>>;
|
|
13
13
|
create(data: Partial<ShiftModel>): Observable<ShiftModel>;
|
|
14
14
|
delete(id: string): Observable<boolean>;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
private generateCalendarShifts;
|
|
20
|
-
/**
|
|
21
|
-
* Determines if a shift should be added on the current date
|
|
22
|
-
*/
|
|
23
|
-
private shouldAddShift;
|
|
24
|
-
/**
|
|
25
|
-
* Calculates the next date based on recurrence type
|
|
26
|
-
*/
|
|
27
|
-
private getNextDate;
|
|
28
|
-
/**
|
|
29
|
-
* Calculates the end date based on number of occurrences
|
|
30
|
-
*/
|
|
31
|
-
private calculateEndDateByOccurrences;
|
|
15
|
+
assignUsersToCalendarShift(calendarShiftId: string, userIds: Array<string>): Observable<boolean>;
|
|
16
|
+
getCalendarShifts(dates: Array<number>, pageSize?: number): Observable<IListDataResponse<CalendarShiftModel>>;
|
|
17
|
+
getCalendarShiftsByYear(year?: number): Observable<IListDataResponse<CalendarShiftModel>>;
|
|
18
|
+
deleteCalendarShiftById(id: string): Observable<boolean>;
|
|
32
19
|
/**
|
|
33
20
|
* Fetches all CalendarShifts associated with a specific Shift ID
|
|
34
21
|
*/
|
|
@@ -41,11 +28,6 @@ export declare class ShiftsService extends BaseResource<ShiftModel> {
|
|
|
41
28
|
* Restores CalendarShifts in case of rollback
|
|
42
29
|
*/
|
|
43
30
|
private restoreCalendarShifts;
|
|
44
|
-
/**
|
|
45
|
-
* Creates multiple CalendarShifts
|
|
46
|
-
* TODO move to backend?
|
|
47
|
-
*/
|
|
48
|
-
private createCalendarShiftsBatch;
|
|
49
31
|
static ɵfac: i0.ɵɵFactoryDeclaration<ShiftsService, never>;
|
|
50
32
|
static ɵprov: i0.ɵɵInjectableDeclaration<ShiftsService>;
|
|
51
33
|
}
|
|
@@ -4,12 +4,9 @@ import { IListDataResponse } from '../models/reponses/list-data.response';
|
|
|
4
4
|
import { BaseResource } from '../base/base-resource.directive';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class TeamsService extends BaseResource<TeamModel> {
|
|
7
|
-
protected readonly Options: {
|
|
8
|
-
filter: string;
|
|
9
|
-
fields: string;
|
|
10
|
-
};
|
|
11
7
|
protected readonly Entity: string;
|
|
12
8
|
constructor();
|
|
9
|
+
fetchList(): Observable<IListDataResponse<TeamModel>>;
|
|
13
10
|
/**
|
|
14
11
|
* @
|
|
15
12
|
*/
|
|
@@ -2,16 +2,17 @@ import 'cross-fetch/polyfill';
|
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { BaseResource } from '../base/base-resource.directive';
|
|
4
4
|
import { UserModel } from '../models/user.model';
|
|
5
|
+
import { IListDataResponse } from '../models/reponses/list-data.response';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class
|
|
7
|
-
protected readonly Options: {
|
|
8
|
-
filter: string;
|
|
9
|
-
};
|
|
7
|
+
export declare class UsersService extends BaseResource<UserModel> {
|
|
10
8
|
protected readonly Entity: string;
|
|
11
9
|
constructor();
|
|
10
|
+
fetchList(): Observable<IListDataResponse<UserModel>>;
|
|
11
|
+
getAssignmentsPerShift(shiftId: string): Observable<any>;
|
|
12
|
+
getAssignmentsAt(ts: number): Observable<any>;
|
|
12
13
|
create(data: Partial<UserModel>): Observable<UserModel>;
|
|
13
14
|
update(id: string, data: Partial<UserModel>): Observable<UserModel>;
|
|
14
15
|
delete(id: string): Observable<boolean>;
|
|
15
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
16
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UsersService, never>;
|
|
17
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<UsersService>;
|
|
17
18
|
}
|