@m481/mp-sdk-ng 0.1.2-alpha.16 → 0.1.2-alpha.18
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 +94 -42
- 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/mp-sdk.service.d.ts +4 -2
- package/lib/resources/missions.service.d.ts +1 -3
- package/lib/resources/shifts.service.d.ts +4 -4
- package/lib/resources/teams.service.d.ts +1 -4
- package/lib/resources/users.service.d.ts +2 -3
- package/package.json +1 -1
|
@@ -306,16 +306,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
306
306
|
}] });
|
|
307
307
|
|
|
308
308
|
class BasePocket extends BaseSdk {
|
|
309
|
-
|
|
309
|
+
client;
|
|
310
|
+
filterData;
|
|
310
311
|
connect() {
|
|
311
|
-
if (!this.
|
|
312
|
-
this.
|
|
312
|
+
if (!this.client) {
|
|
313
|
+
this.client = new PocketBase(this.config.baseUrl);
|
|
313
314
|
}
|
|
314
315
|
}
|
|
315
316
|
getList(entity, options) {
|
|
316
317
|
this.connect();
|
|
317
318
|
this.log.d("getList --- entity", entity, this.authStore.getToken());
|
|
318
|
-
|
|
319
|
+
const listOpts = options || {};
|
|
320
|
+
if (this.filterData) {
|
|
321
|
+
listOpts.filter = this.client.filter(this.filterData.criteria, this.filterData.params);
|
|
322
|
+
}
|
|
323
|
+
return from(this.client.collection(entity).getList(1, 20, this.buildOptions(listOpts))).pipe(catchError$1(err => this.handleError(err)), map(d => (d ? {
|
|
319
324
|
page: d.page,
|
|
320
325
|
pageSize: d.perPage,
|
|
321
326
|
pagesTotal: d.totalPages,
|
|
@@ -326,12 +331,12 @@ class BasePocket extends BaseSdk {
|
|
|
326
331
|
getOne(entity, id, options) {
|
|
327
332
|
this.connect();
|
|
328
333
|
this.log.d("fetchOne", entity, this.authStore.getToken());
|
|
329
|
-
return from(this.
|
|
334
|
+
return from(this.client.collection(entity).getOne(id, this.buildOptions(options))).pipe(catchError$1(err => this.handleError(err)));
|
|
330
335
|
}
|
|
331
336
|
save(entity, data) {
|
|
332
337
|
this.connect();
|
|
333
338
|
this.log.d("save", entity, data?.id, this.authStore.getToken());
|
|
334
|
-
const target = this.
|
|
339
|
+
const target = this.client.collection(entity);
|
|
335
340
|
let promise;
|
|
336
341
|
if (data.id) {
|
|
337
342
|
promise = target.update(data.id, data, this.getAuthHeader());
|
|
@@ -344,7 +349,7 @@ class BasePocket extends BaseSdk {
|
|
|
344
349
|
remove(entity, id) {
|
|
345
350
|
this.connect();
|
|
346
351
|
this.log.d("remove", entity, this.authStore.getToken());
|
|
347
|
-
return from(this.
|
|
352
|
+
return from(this.client.collection(entity).delete(id, this.getAuthHeader())).pipe(catchError$1(err => this.handleError(err)));
|
|
348
353
|
}
|
|
349
354
|
handleError(error) {
|
|
350
355
|
if (error instanceof ClientResponseError) {
|
|
@@ -397,7 +402,7 @@ class AuthService extends BasePocket {
|
|
|
397
402
|
}
|
|
398
403
|
login(user, pass) {
|
|
399
404
|
this.connect();
|
|
400
|
-
return from(this.
|
|
405
|
+
return from(this.client.collection(SdkConfig.Entities.AUTH).authWithPassword(user, pass)).pipe(catchError$1(err => this.handleError(err)), map(data => {
|
|
401
406
|
this.log.d("login ok", data);
|
|
402
407
|
this.authStore.setToken(data.token);
|
|
403
408
|
return data.record;
|
|
@@ -414,8 +419,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
414
419
|
}], ctorParameters: () => [] });
|
|
415
420
|
|
|
416
421
|
class BaseResource extends BasePocket {
|
|
422
|
+
FilterMeta = "isEnabled = {:isEnabled}";
|
|
423
|
+
FilterMetaParams = {
|
|
424
|
+
isEnabled: true
|
|
425
|
+
};
|
|
426
|
+
listOptions;
|
|
417
427
|
fetchList() {
|
|
418
|
-
return this.getList(this.Entity, this.
|
|
428
|
+
return this.getList(this.Entity, this.listOptions);
|
|
419
429
|
}
|
|
420
430
|
fetchOne(id) {
|
|
421
431
|
return this.getOne(this.Entity, id);
|
|
@@ -429,6 +439,9 @@ class BaseResource extends BasePocket {
|
|
|
429
439
|
delete(id) {
|
|
430
440
|
return this.remove(this.Entity, id);
|
|
431
441
|
}
|
|
442
|
+
setFilterDefaults() {
|
|
443
|
+
this.filterData = { criteria: this.FilterMeta, params: this.FilterMetaParams };
|
|
444
|
+
}
|
|
432
445
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BaseResource, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
433
446
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: BaseResource, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
434
447
|
}
|
|
@@ -437,16 +450,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
437
450
|
}] });
|
|
438
451
|
|
|
439
452
|
class MissionsService extends BaseResource {
|
|
440
|
-
Options = {
|
|
441
|
-
filter: "isEnabled = true"
|
|
442
|
-
};
|
|
443
453
|
Entity = SdkConfig.Entities.MISSIONS;
|
|
444
454
|
constructor() {
|
|
445
455
|
super();
|
|
446
456
|
}
|
|
457
|
+
fetchList() {
|
|
458
|
+
this.setFilterDefaults();
|
|
459
|
+
return super.fetchList();
|
|
460
|
+
}
|
|
447
461
|
getArchived() {
|
|
448
462
|
return this.getList(SdkConfig.Entities.MISSIONS, {
|
|
449
|
-
filter:
|
|
463
|
+
filter: this.client.filter(this.FilterMeta, { isEnabled: false })
|
|
450
464
|
});
|
|
451
465
|
}
|
|
452
466
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MissionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -457,13 +471,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
457
471
|
}], ctorParameters: () => [] });
|
|
458
472
|
|
|
459
473
|
class ShiftsService extends BaseResource {
|
|
460
|
-
Options = {
|
|
461
|
-
filter: "isEnabled = true"
|
|
462
|
-
};
|
|
463
474
|
Entity = SdkConfig.Entities.SHIFTS;
|
|
464
475
|
constructor() {
|
|
465
476
|
super();
|
|
466
477
|
}
|
|
478
|
+
fetch(startDate) {
|
|
479
|
+
this.listOptions = { perPage: 100 };
|
|
480
|
+
this.setFilterDefaults();
|
|
481
|
+
if (startDate) {
|
|
482
|
+
this.filterData.criteria += " && startAt >= {:startAt}";
|
|
483
|
+
this.filterData.params["startAt"] = new Date(startDate);
|
|
484
|
+
}
|
|
485
|
+
return this.fetchList();
|
|
486
|
+
}
|
|
487
|
+
searchByMissionAndHour(missionId, missionHourIndex) {
|
|
488
|
+
this.listOptions = { perPage: 100 };
|
|
489
|
+
this.setFilterDefaults();
|
|
490
|
+
this.filterData.criteria += ` && missionId = "${missionId}" && missionHourIndex = ${missionHourIndex}`;
|
|
491
|
+
return this.fetchList();
|
|
492
|
+
}
|
|
467
493
|
create(data) {
|
|
468
494
|
if (data.timespan) {
|
|
469
495
|
data.timespan.daysOfWeek = (data.timespan.daysOfWeek || []).map(d => d > 6 ? 0 : d);
|
|
@@ -497,22 +523,39 @@ class ShiftsService extends BaseResource {
|
|
|
497
523
|
}
|
|
498
524
|
assignUsersToCalendarShift(calendarShiftId, userIds) {
|
|
499
525
|
this.log.d('Assigning users to calendar shift', calendarShiftId, userIds);
|
|
500
|
-
return from(this.
|
|
526
|
+
return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
501
527
|
.update(calendarShiftId, { assignedUsersIds: userIds }, this.getAuthHeader())).pipe(tap(record => this.log.d('Assigned users to calendar shift', record)), map(record => !!record));
|
|
502
528
|
}
|
|
503
|
-
getCalendarShifts(
|
|
504
|
-
this.log.d('Fetching calendar shifts');
|
|
529
|
+
getCalendarShifts(dates, pageSize = 1000) {
|
|
530
|
+
this.log.d('Fetching calendar shifts', dates);
|
|
531
|
+
this.setFilterDefaults();
|
|
532
|
+
if (dates?.length > 0) {
|
|
533
|
+
this.filterData.criteria += " && startAt >= {:startAt}";
|
|
534
|
+
this.filterData.params["startAt"] = new Date(dates[0]);
|
|
535
|
+
if (dates.length > 1) {
|
|
536
|
+
this.filterData.criteria += " && endAt >= {:endAt}";
|
|
537
|
+
this.filterData.params["endAt"] = new Date(dates[1]);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
const listOpts = {};
|
|
541
|
+
if (this.filterData) {
|
|
542
|
+
listOpts.filter = this.client.filter(this.filterData.criteria, this.filterData.params);
|
|
543
|
+
}
|
|
544
|
+
return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
545
|
+
.getList(1, pageSize, this.buildOptions(listOpts))).pipe(catchError$1(err => this.handleError(err)));
|
|
546
|
+
}
|
|
547
|
+
getCalendarShiftsByYear(year) {
|
|
548
|
+
this.log.d('Fetching calendar shifts per year');
|
|
505
549
|
const y = year || new Date().getFullYear();
|
|
506
|
-
const
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
return
|
|
511
|
-
.getList(1, 1000, { filter, ...this.getAuthHeader() })).pipe(catchError$1(err => this.handleError(err)));
|
|
550
|
+
const dates = [
|
|
551
|
+
(new Date(y, 0, 1)).getTime(),
|
|
552
|
+
(new Date(y, 11, 31)).getTime()
|
|
553
|
+
];
|
|
554
|
+
return this.getCalendarShifts(dates);
|
|
512
555
|
}
|
|
513
556
|
deleteCalendarShiftById(id) {
|
|
514
557
|
this.log.d('Deleting calendar shift', id);
|
|
515
|
-
return from(this.
|
|
558
|
+
return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
516
559
|
.delete(id, this.getAuthHeader()));
|
|
517
560
|
}
|
|
518
561
|
/**
|
|
@@ -521,7 +564,7 @@ class ShiftsService extends BaseResource {
|
|
|
521
564
|
getCalendarShiftsByShiftId(shiftId) {
|
|
522
565
|
this.log.d('Fetching calendar shifts for shift', shiftId);
|
|
523
566
|
const filter = `shiftId = "${shiftId}"`;
|
|
524
|
-
return from(this.
|
|
567
|
+
return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
525
568
|
.getFullList({ filter, ...this.getAuthHeader() })).pipe(catchError$1(err => this.handleError(err)));
|
|
526
569
|
}
|
|
527
570
|
/**
|
|
@@ -534,7 +577,7 @@ class ShiftsService extends BaseResource {
|
|
|
534
577
|
this.log.d('Deleting calendar shifts batch', calendarShiftIds.length);
|
|
535
578
|
// PocketBase batch ops could be disabled,
|
|
536
579
|
// so we create a manual transaction using Promise.all
|
|
537
|
-
const promises = calendarShiftIds.map(id => this.
|
|
580
|
+
const promises = calendarShiftIds.map(id => this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
538
581
|
.delete(id, this.getAuthHeader()));
|
|
539
582
|
return from(Promise.all(promises)).pipe(switchMap(() => from([true])), catchError$1(err => this.handleError(err)));
|
|
540
583
|
}
|
|
@@ -547,7 +590,7 @@ class ShiftsService extends BaseResource {
|
|
|
547
590
|
}
|
|
548
591
|
this.log.d('Restoring calendar shifts', calendarShifts.length);
|
|
549
592
|
// Recreate the CalendarShifts with their original data
|
|
550
|
-
const promises = calendarShifts.map(cs => this.
|
|
593
|
+
const promises = calendarShifts.map(cs => this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
|
|
551
594
|
.create({
|
|
552
595
|
shiftId: cs.shiftId,
|
|
553
596
|
startAt: cs.startAt,
|
|
@@ -566,13 +609,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
566
609
|
}], ctorParameters: () => [] });
|
|
567
610
|
|
|
568
611
|
class UsersService extends BaseResource {
|
|
569
|
-
Options = {
|
|
570
|
-
filter: "isEnabled = true"
|
|
571
|
-
};
|
|
572
612
|
Entity = SdkConfig.Entities.USERS;
|
|
573
613
|
constructor() {
|
|
574
614
|
super();
|
|
575
615
|
}
|
|
616
|
+
fetchList() {
|
|
617
|
+
this.setFilterDefaults();
|
|
618
|
+
return super.fetchList();
|
|
619
|
+
}
|
|
620
|
+
// Unsupported
|
|
576
621
|
create(data) {
|
|
577
622
|
throw new Error("Method not supported.");
|
|
578
623
|
}
|
|
@@ -593,14 +638,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
593
638
|
}], ctorParameters: () => [] });
|
|
594
639
|
|
|
595
640
|
class TeamsService extends BaseResource {
|
|
596
|
-
Options = {
|
|
597
|
-
filter: "isEnabled = true",
|
|
598
|
-
fields: "id,name,isEnabled"
|
|
599
|
-
};
|
|
600
641
|
Entity = SdkConfig.Entities.TEAMS;
|
|
601
642
|
constructor() {
|
|
602
643
|
super();
|
|
603
644
|
}
|
|
645
|
+
fetchList() {
|
|
646
|
+
this.listOptions = { fields: "id,name,isEnabled" };
|
|
647
|
+
this.setFilterDefaults();
|
|
648
|
+
return super.fetchList();
|
|
649
|
+
}
|
|
604
650
|
// Unsupported methods
|
|
605
651
|
/**
|
|
606
652
|
* @
|
|
@@ -620,13 +666,13 @@ class TeamsService extends BaseResource {
|
|
|
620
666
|
// Alternative methods using Angular Http
|
|
621
667
|
getTeams() {
|
|
622
668
|
const params = new HttpParams({
|
|
623
|
-
fromObject: this.
|
|
669
|
+
fromObject: this.listOptions
|
|
624
670
|
});
|
|
625
671
|
return this.doGetList(SdkConfig.Endpoints.TEAMS, params)
|
|
626
672
|
.pipe(tap(d => this.log.d("teams!!", d)));
|
|
627
673
|
}
|
|
628
674
|
fetchTeams() {
|
|
629
|
-
return this.getList(SdkConfig.Entities.TEAMS, this.
|
|
675
|
+
return this.getList(SdkConfig.Entities.TEAMS, this.listOptions);
|
|
630
676
|
}
|
|
631
677
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TeamsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
632
678
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TeamsService });
|
|
@@ -678,14 +724,20 @@ class MpSdkService extends BasePlain {
|
|
|
678
724
|
return this.missionsSrv.delete(id);
|
|
679
725
|
}
|
|
680
726
|
// Shifts
|
|
681
|
-
getShifts() {
|
|
682
|
-
return this.shiftsSrv.
|
|
727
|
+
getShifts(startDate) {
|
|
728
|
+
return this.shiftsSrv.fetch(startDate);
|
|
729
|
+
}
|
|
730
|
+
getShiftsByMissionHour(id, hourIndex) {
|
|
731
|
+
return this.shiftsSrv.searchByMissionAndHour(id, hourIndex).pipe(map(d => d.items));
|
|
683
732
|
}
|
|
684
733
|
getShiftById(id) {
|
|
685
734
|
return this.shiftsSrv.fetchOne(id);
|
|
686
735
|
}
|
|
687
|
-
getCalendarShifts(
|
|
688
|
-
return this.shiftsSrv.getCalendarShifts(
|
|
736
|
+
getCalendarShifts(d) {
|
|
737
|
+
return this.shiftsSrv.getCalendarShifts(d);
|
|
738
|
+
}
|
|
739
|
+
getCalendarShiftsPerYear(year) {
|
|
740
|
+
return this.shiftsSrv.getCalendarShiftsByYear(year);
|
|
689
741
|
}
|
|
690
742
|
saveShift(m) {
|
|
691
743
|
return !m.id
|
|
@@ -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/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 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 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, 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\";\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 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.connection.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(year?: number): Observable<IListDataResponse<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 this.log.d(\n `Fetching calendar shifts for year ${y}`,\n `Start date: ${startDate.toISOString()}`,\n `End date: ${endDate.toISOString()}`\n )\n const filter = `startAt >= \"${startDate.toISOString()}\" && endAt <= \"${endDate.toISOString()}\"`;\n\n return from(\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .getList<CalendarShiftModel>(1, 1000, { filter, ...this.getAuthHeader() })\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n public deleteCalendarShiftById(id: string): Observable<boolean> {\n this.log.d('Deleting calendar shift', id);\n return from(\n this.connection.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.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","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 UsersService 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 public findNotAvailable(): Observable<Array<string>> {\n throw new Error();\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 { 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(): 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<IListDataResponse<CalendarShiftModel>> {\n return this.shiftsSrv.getCalendarShifts(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 getNotAvailableUsers(startAt: number, endAt: number): Observable<Array<string>> {\n return this.usersSrv.findNotAvailable();\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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"}
|
|
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 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 this.setFilterDefaults();\n if (dates?.length > 0) {\n this.filterData.criteria += \" && startAt >= {:startAt}\";\n this.filterData.params[\"startAt\"] = new Date(dates[0]);\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';\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 // 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 public findNotAvailable(): Observable<Array<string>> {\n throw new Error();\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 getNotAvailableUsers(startAt: number, endAt: number): Observable<Array<string>> {\n return this.usersSrv.findNotAvailable();\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
|
@@ -27,9 +27,11 @@ 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
37
|
deleteCalendarShift(id: any): Observable<boolean>;
|
|
@@ -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>;
|
|
@@ -6,15 +6,15 @@ import { Observable } from 'rxjs';
|
|
|
6
6
|
import { IListDataResponse } from "../models/reponses/list-data.response";
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class ShiftsService extends BaseResource<ShiftModel> {
|
|
9
|
-
protected readonly Options: {
|
|
10
|
-
filter: string;
|
|
11
|
-
};
|
|
12
9
|
protected readonly Entity: string;
|
|
13
10
|
constructor();
|
|
11
|
+
fetch(startDate?: number): Observable<IListDataResponse<ShiftModel>>;
|
|
12
|
+
searchByMissionAndHour(missionId: string, missionHourIndex: number): Observable<IListDataResponse<ShiftModel>>;
|
|
14
13
|
create(data: Partial<ShiftModel>): Observable<ShiftModel>;
|
|
15
14
|
delete(id: string): Observable<boolean>;
|
|
16
15
|
assignUsersToCalendarShift(calendarShiftId: string, userIds: Array<string>): Observable<boolean>;
|
|
17
|
-
getCalendarShifts(
|
|
16
|
+
getCalendarShifts(dates: Array<number>, pageSize?: number): Observable<IListDataResponse<CalendarShiftModel>>;
|
|
17
|
+
getCalendarShiftsByYear(year?: number): Observable<IListDataResponse<CalendarShiftModel>>;
|
|
18
18
|
deleteCalendarShiftById(id: string): Observable<boolean>;
|
|
19
19
|
/**
|
|
20
20
|
* Fetches all CalendarShifts associated with a specific Shift ID
|
|
@@ -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,13 +2,12 @@ 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
7
|
export declare class UsersService extends BaseResource<UserModel> {
|
|
7
|
-
protected readonly Options: {
|
|
8
|
-
filter: string;
|
|
9
|
-
};
|
|
10
8
|
protected readonly Entity: string;
|
|
11
9
|
constructor();
|
|
10
|
+
fetchList(): Observable<IListDataResponse<UserModel>>;
|
|
12
11
|
create(data: Partial<UserModel>): Observable<UserModel>;
|
|
13
12
|
update(id: string, data: Partial<UserModel>): Observable<UserModel>;
|
|
14
13
|
delete(id: string): Observable<boolean>;
|