taxtank-core 0.32.4 → 0.32.5
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/esm2022/lib/collections/vehicle/best-vehicle-logbook.collection.mjs +8 -8
- package/esm2022/lib/collections/vehicle/vehicle-logbook.collection.mjs +2 -2
- package/esm2022/lib/services/http/vehicle/vehicle-claim.service.mjs +10 -10
- package/fesm2022/taxtank-core.mjs +15 -17
- package/fesm2022/taxtank-core.mjs.map +1 -1
- package/lib/services/http/vehicle/vehicle-claim.service.d.ts +5 -6
- package/package.json +1 -1
|
@@ -27,7 +27,7 @@ export class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
|
27
27
|
if (!(logbooks instanceof VehicleLogbookCollection)) {
|
|
28
28
|
logbooks = new VehicleLogbookCollection(logbooks);
|
|
29
29
|
}
|
|
30
|
-
return
|
|
30
|
+
return this.periodDuration < (logbooks.last.date.getTime() - logbooks.first.date.getTime());
|
|
31
31
|
}
|
|
32
32
|
// get list of date ranges for each of passed logbook
|
|
33
33
|
static getPeriods(logbooks) {
|
|
@@ -35,13 +35,13 @@ export class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
|
35
35
|
// get a list of date ranges that could potentially be the best
|
|
36
36
|
const periods = claimable
|
|
37
37
|
// skip logbooks whose range ends after the last logbook
|
|
38
|
-
.filter((logbook) =>
|
|
39
|
-
.map((logbook) =>
|
|
38
|
+
.filter((logbook) => this.getPeriodByLogbook(logbook).end.toDate() < logbooks.last.date)
|
|
39
|
+
.map((logbook) => this.getPeriodByLogbook(logbook));
|
|
40
40
|
// skip if the last logbook already included to the last existing date range
|
|
41
41
|
// if (last(periods).end.toDate() < logbooks.last.date) {
|
|
42
42
|
// add extra date range for the last claimable logbook
|
|
43
43
|
// @TODO vik
|
|
44
|
-
periods.push(
|
|
44
|
+
periods.push(this.getPeriodByLogbook(claimable.last, true));
|
|
45
45
|
// }
|
|
46
46
|
return periods;
|
|
47
47
|
}
|
|
@@ -52,9 +52,9 @@ export class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
|
52
52
|
*/
|
|
53
53
|
static getPeriodByLogbook(logbook, isBackward = false) {
|
|
54
54
|
if (isBackward) {
|
|
55
|
-
return new DateRange([new Date(logbook.date.getTime() -
|
|
55
|
+
return new DateRange([new Date(logbook.date.getTime() - this.periodDuration), logbook.date]);
|
|
56
56
|
}
|
|
57
|
-
return new DateRange([logbook.date, new Date(logbook.date.getTime() +
|
|
57
|
+
return new DateRange([logbook.date, new Date(logbook.date.getTime() + this.periodDuration)]);
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Set Date Range with the biggest work usage percent
|
|
@@ -80,7 +80,7 @@ export class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
static fromLogbooks(logbooks) {
|
|
83
|
-
if (!
|
|
83
|
+
if (!this.isBestPeriodExist(logbooks)) {
|
|
84
84
|
return null;
|
|
85
85
|
}
|
|
86
86
|
const collection = new BestVehicleLogbookCollection(logbooks.toArray());
|
|
@@ -88,4 +88,4 @@ export class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
|
88
88
|
return collection;
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVzdC12ZWhpY2xlLWxvZ2Jvb2suY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9jb2xsZWN0aW9ucy92ZWhpY2xlL2Jlc3QtdmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsd0JBQXdCO0lBQ3hFOzs7T0FHRzthQUNJLG1CQUFjLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztJQU9sRDs7O09BR0c7SUFDSCxZQUFvQixRQUEwQjtRQUM1QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQWtDO1FBQ3pELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxDQUFDLFFBQVEsWUFBWSx3QkFBd0IsQ0FBQyxFQUFFO1lBQ25ELFFBQVEsR0FBRyxJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQscURBQXFEO0lBQ3JELE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBa0M7UUFDbEQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFDLCtEQUErRDtRQUMvRCxNQUFNLE9BQU8sR0FBZ0IsU0FBUztZQUNwQyx3REFBd0Q7YUFDdkQsTUFBTSxDQUFDLENBQUMsT0FBdUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUN2RyxHQUFHLENBQUMsQ0FBQyxPQUF1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUd0RSw0RUFBNEU7UUFDNUUseURBQXlEO1FBQ3pELHNEQUFzRDtRQUN0RCxZQUFZO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUk7UUFFSixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxPQUF1QixFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQ25FLElBQUksVUFBVSxFQUFFO1lBQ2QsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzlGO1FBRUQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNLLG1CQUFtQixDQUFDLFFBQWtDO1FBQzVELCtEQUErRDtRQUMvRCxNQUFNLE9BQU8sR0FBZ0IsNEJBQTRCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9FLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFpQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxnQkFBZ0IsR0FBNkIsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFOUgsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRTtnQkFDM0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDekM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWtDO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksNEJBQTRCLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEUsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpDLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZWhpY2xlTG9nYm9vayB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24gfSBmcm9tICcuL3ZlaGljbGUtbG9nYm9vay5jb2xsZWN0aW9uJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJ21vbWVudC1yYW5nZSc7XG5cbi8qKlxuICogU3BlY2lhbCBsb2dib29rIGNvbGxlY3Rpb24gdGhhdCBjb250YWlucyBsb2dib29rcyBmcm9tIGRhdGUgcGVyaW9kIHdpdGggdGhlIGhpZ2hlc3Qgd29yayB1c2FnZSBwZXJjZW50XG4gKiBEb2NzOiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxMTUxNzQ0MS9Mb2dib29rK1ZlaGljbGVcbiAqL1xuZXhwb3J0IGNsYXNzIEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24gZXh0ZW5kcyBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24ge1xuICAvKipcbiAgICogTG9nYm9vayBjbGFpbWFibGUgcGVyaW9kIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy5cbiAgICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTE1MTc0NDEvTG9nYm9vaytWZWhpY2xlXG4gICAqL1xuICBzdGF0aWMgcGVyaW9kRHVyYXRpb24gPSAxMiAqIDcgKiAyNCAqIDM2MDAgKiAxMDAwO1xuXG4gIC8qKlxuICAgKiBEYXRlIHJhbmdlIHdpdGggdGhlIGJpZ2dlc3Qgd29yayB1c2FnZSBwZXJjZW50XG4gICAqL1xuICBwZXJpb2Q6IERhdGVSYW5nZTtcblxuICAvKipcbiAgICogY29uc3RydWN0b3IgaXMgcHJpdmF0ZSBiZWNhdXNlIHdlIHdhbnQgdG8gcHJldmVudCBjb2xsZWN0aW9uIGluaXRpYWxpemF0aW9uIHZpYSAnbmV3JyBvcGVyYXRvci5cbiAgICogV2Ugc2hvdWxkIGNyZWF0ZSBpbnN0YW5jZXMgb25seSB3aXRoIGZyb21Mb2dib29rcyBtZXRob2RcbiAgICovXG4gIHByaXZhdGUgY29uc3RydWN0b3IobG9nYm9va3M6IFZlaGljbGVMb2dib29rW10pIHtcbiAgICBzdXBlcihsb2dib29rcyk7XG4gIH1cblxuICAvKipcbiAgICogQmVzdCBwZXJpb2QgbWF5IGJlIGNhbGN1bGF0ZWQgb25seSB3aGVuIHVzZXIgaGFzIGxvZ2Jvb2tzIG1pbmltdW0gZm9yIFZlaGljbGVMb2dib29rLmJlc3RQZXJpb2RXZWVrc1xuICAgKi9cbiAgc3RhdGljIGlzQmVzdFBlcmlvZEV4aXN0KGxvZ2Jvb2tzOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24pOiBib29sZWFuIHtcbiAgICBpZiAobG9nYm9va3MubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghKGxvZ2Jvb2tzIGluc3RhbmNlb2YgVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKSkge1xuICAgICAgbG9nYm9va3MgPSBuZXcgVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKGxvZ2Jvb2tzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wZXJpb2REdXJhdGlvbiA8IChsb2dib29rcy5sYXN0LmRhdGUuZ2V0VGltZSgpIC0gbG9nYm9va3MuZmlyc3QuZGF0ZS5nZXRUaW1lKCkpO1xuICB9XG5cbiAgLy8gZ2V0IGxpc3Qgb2YgZGF0ZSByYW5nZXMgZm9yIGVhY2ggb2YgcGFzc2VkIGxvZ2Jvb2tcbiAgc3RhdGljIGdldFBlcmlvZHMobG9nYm9va3M6IFZlaGljbGVMb2dib29rQ29sbGVjdGlvbik6IERhdGVSYW5nZVtdIHtcbiAgICBjb25zdCBjbGFpbWFibGUgPSBsb2dib29rcy5nZXRDbGFpbWFibGUoKTtcbiAgICAvLyBnZXQgYSBsaXN0IG9mIGRhdGUgcmFuZ2VzIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgdGhlIGJlc3RcbiAgICBjb25zdCBwZXJpb2RzOiBEYXRlUmFuZ2VbXSA9IGNsYWltYWJsZVxuICAgICAgLy8gc2tpcCBsb2dib29rcyB3aG9zZSByYW5nZSBlbmRzIGFmdGVyIHRoZSBsYXN0IGxvZ2Jvb2tcbiAgICAgIC5maWx0ZXIoKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rKSA9PiB0aGlzLmdldFBlcmlvZEJ5TG9nYm9vayhsb2dib29rKS5lbmQudG9EYXRlKCkgPCBsb2dib29rcy5sYXN0LmRhdGUpXG4gICAgICAubWFwKChsb2dib29rOiBWZWhpY2xlTG9nYm9vaykgPT4gdGhpcy5nZXRQZXJpb2RCeUxvZ2Jvb2sobG9nYm9vaykpO1xuXG5cbiAgICAvLyBza2lwIGlmIHRoZSBsYXN0IGxvZ2Jvb2sgYWxyZWFkeSBpbmNsdWRlZCB0byB0aGUgbGFzdCBleGlzdGluZyBkYXRlIHJhbmdlXG4gICAgLy8gaWYgKGxhc3QocGVyaW9kcykuZW5kLnRvRGF0ZSgpIDwgbG9nYm9va3MubGFzdC5kYXRlKSB7XG4gICAgLy8gYWRkIGV4dHJhIGRhdGUgcmFuZ2UgZm9yIHRoZSBsYXN0IGNsYWltYWJsZSBsb2dib29rXG4gICAgLy8gQFRPRE8gdmlrXG4gICAgcGVyaW9kcy5wdXNoKHRoaXMuZ2V0UGVyaW9kQnlMb2dib29rKGNsYWltYWJsZS5sYXN0LCB0cnVlKSk7XG4gICAgLy8gfVxuXG4gICAgcmV0dXJuIHBlcmlvZHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNsYWltYWJsZSBkYXRlIHJhbmdlIGZvciBwYXNzZWQgbG9nYm9va1xuICAgKiBAcGFyYW0gbG9nYm9vayBsb2dib29rIGluc3RhbmNlIGZvciByYW5nZSBjYWxjdWxhdGlvblxuICAgKiBAcGFyYW0gaXNCYWNrd2FyZCBGbGFnIGZhbHNlIC0gcmFuZ2UgZm9yIGxvZ2Jvb2sgKyBkdXJhdGlvbjsgZmxhZyB0cnVlIC0gcmFuZ2UgZm9yIGxvZ2Jvb2sgLSBkdXJhdGlvbi4gVXNlZCBmb3IgZXh0cmEgY2FzZSwgd2hlbiB3ZSBzaG91bGQgYWRkIGFuIGV4dHJhIGRhdGUgcmFuZ2UgZm9yIHRoZSBsYXN0IGxvZ2Jvb2tcbiAgICovXG4gIHN0YXRpYyBnZXRQZXJpb2RCeUxvZ2Jvb2sobG9nYm9vazogVmVoaWNsZUxvZ2Jvb2ssIGlzQmFja3dhcmQgPSBmYWxzZSk6IERhdGVSYW5nZSB7XG4gICAgaWYgKGlzQmFja3dhcmQpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVJhbmdlKFtuZXcgRGF0ZShsb2dib29rLmRhdGUuZ2V0VGltZSgpIC0gdGhpcy5wZXJpb2REdXJhdGlvbiksIGxvZ2Jvb2suZGF0ZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGF0ZVJhbmdlKFtsb2dib29rLmRhdGUsIG5ldyBEYXRlKGxvZ2Jvb2suZGF0ZS5nZXRUaW1lKCkgKyB0aGlzLnBlcmlvZER1cmF0aW9uKV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBEYXRlIFJhbmdlIHdpdGggdGhlIGJpZ2dlc3Qgd29yayB1c2FnZSBwZXJjZW50XG4gICAqIFJhbmdlIGR1cmF0aW9uIGlzIGRlZmluZWQgYXMgQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbi5wZXJpb2REdXJhdGlvbiBieSB0aGUgQVRPXG4gICAqXG4gICAqIEFsZ29yaXRobTpcbiAgICogQ2xhaW1hYmxlIGxvZ2Jvb2tzIG9yIGNsYWltYWJsZSB0cmlwcyAtIHdvcmsvYnVzaW5lc3MgbG9nYm9vayBpdGVtcy5cbiAgICogV2Ugc2hvdWxkIHdvcmsgd2l0aCBkYXRlcyBmcm9tIHRoZSBmaXJzdCB0byB0aGUgbGFzdCB0cmlwIChpbmNsdWRlIHBlcnNvbmFsIHRyaXBzKS5cbiAgICogR2V0IGRhdGUgcmFuZ2VzIHN0YXJ0cyBvbiBlYWNoIGNsYWltYWJsZSB0cmlwLCBhbGwgb3RoZXIgcmFuZ2VzIGFyZSBkZWZpbmV0aWx5IHdvcnN0LlxuICAgKiBBbHNvIGdldCBleHRyYSBkYXRlIHJhbmdlIHdoaWNoIGVuZHMgd2l0aCB0aGUgbGFzdCBjbGFpbWFibGUgdHJpcC5cbiAgICogR2V0IGFsbCB0cmlwcyBpbmNsdWRlZCB0byBlYWNoIGRhdGUgcmFuZ2UuXG4gICAqIEZpbmQgYW5kIHJldHVybiByYW5nZSB3aXRoIHRoZSBiaWdnZXN0IHdvcmtVc2FnZSBwZXJjZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxhdGVCZXN0UGVyaW9kKGxvZ2Jvb2tzOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24pOiB2b2lkIHtcbiAgICAvLyBnZXQgYSBsaXN0IG9mIGRhdGUgcmFuZ2VzIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgdGhlIGJlc3RcbiAgICBjb25zdCBwZXJpb2RzOiBEYXRlUmFuZ2VbXSA9IEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24uZ2V0UGVyaW9kcyhsb2dib29rcyk7XG5cbiAgICBwZXJpb2RzLmZvckVhY2goKHBlcmlvZDogRGF0ZVJhbmdlKSA9PiB7XG4gICAgICBjb25zdCBsb2dib29rc0luUGVyaW9kOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24gPSBsb2dib29rcy5maWx0ZXJCeVJhbmdlKCdkYXRlJywgcGVyaW9kLnN0YXJ0LnRvRGF0ZSgpLCBwZXJpb2QuZW5kLnRvRGF0ZSgpKTtcblxuICAgICAgaWYgKCF0aGlzLnBlcmlvZCB8fCAodGhpcy5nZXRXb3JrVXNhZ2UoKSA8IGxvZ2Jvb2tzSW5QZXJpb2QuZ2V0V29ya1VzYWdlKCkpKSB7XG4gICAgICAgIHRoaXMucGVyaW9kID0gcGVyaW9kO1xuICAgICAgICB0aGlzLml0ZW1zID0gbG9nYm9va3NJblBlcmlvZC50b0FycmF5KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUxvZ2Jvb2tzKGxvZ2Jvb2tzOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24pOiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmlzQmVzdFBlcmlvZEV4aXN0KGxvZ2Jvb2tzKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29sbGVjdGlvbiA9IG5ldyBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKGxvZ2Jvb2tzLnRvQXJyYXkoKSk7XG4gICAgY29sbGVjdGlvbi5jYWxjdWxhdGVCZXN0UGVyaW9kKGxvZ2Jvb2tzKTtcblxuICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICB9XG59XG4iXX0=
|
|
@@ -9,7 +9,7 @@ export class VehicleLogbookCollection extends Collection {
|
|
|
9
9
|
return this.sumBy('kilometers');
|
|
10
10
|
}
|
|
11
11
|
getWorkUsage(vehicleClaim) {
|
|
12
|
-
return this.getClaimable(vehicleClaim).kilometers / this.kilometers * 100;
|
|
12
|
+
return +(this.getClaimable(vehicleClaim).kilometers / this.kilometers * 100).toFixed(10);
|
|
13
13
|
}
|
|
14
14
|
getClaimable(vehicleClaim) {
|
|
15
15
|
if (!vehicleClaim) {
|
|
@@ -28,4 +28,4 @@ export class VehicleLogbookCollection extends Collection {
|
|
|
28
28
|
return BestVehicleLogbookCollection.fromLogbooks(this);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvdmVoaWNsZS92ZWhpY2xlLWxvZ2Jvb2suY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsVUFBMEI7SUFDdEU7O09BRUc7SUFDSCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQVksQ0FBQyxZQUEyQjtRQUN0QyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsWUFBWSxDQUFDLFlBQTJCO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdEU7UUFFRCxPQUFPLFlBQVksQ0FBQyxVQUFVLEVBQUU7WUFDOUIsa0ZBQWtGO1lBQ2xGLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN4RCwrRUFBK0U7WUFDL0UsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsT0FBTyw0QkFBNEIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgVmVoaWNsZUNsYWltLCBWZWhpY2xlTG9nYm9vayB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYW5rVHlwZUVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90YW5rLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uIH0gZnJvbSAnLi9iZXN0LXZlaGljbGUtbG9nYm9vay5jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248VmVoaWNsZUxvZ2Jvb2s+IHtcbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0b3RhbCBraWxvbWV0ZXJzIHRyYXZlbGVkXG4gICAqL1xuICBnZXQga2lsb21ldGVycygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN1bUJ5KCdraWxvbWV0ZXJzJyk7XG4gIH1cblxuICBnZXRXb3JrVXNhZ2UodmVoaWNsZUNsYWltPzogVmVoaWNsZUNsYWltKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKyh0aGlzLmdldENsYWltYWJsZSh2ZWhpY2xlQ2xhaW0pLmtpbG9tZXRlcnMgLyB0aGlzLmtpbG9tZXRlcnMgKiAxMDApLnRvRml4ZWQoMTApO1xuICB9XG5cbiAgZ2V0Q2xhaW1hYmxlKHZlaGljbGVDbGFpbT86IFZlaGljbGVDbGFpbSk6IHRoaXMge1xuICAgIGlmICghdmVoaWNsZUNsYWltKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIoKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rKSA9PiAhbG9nYm9vay5pc1BlcnNvbmFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVoaWNsZUNsYWltLmlzU29sZVRhbmsoKVxuICAgICAgLy8gc29sZSB0YW5rIG1heSBoYXZlIG11bHRpcGxlIHZlaGljbGUgY2xhaW1zLCBzbyB3ZSBuZWVkIHRvIGZpbHRlciBieSBidXNpbmVzcy5pZFxuICAgICAgPyB0aGlzLmZpbHRlckJ5KCdidXNpbmVzcy5pZCcsIHZlaGljbGVDbGFpbS5idXNpbmVzcy5pZClcbiAgICAgIC8vIHdvcmsgdGFuayBtYXkgaGF2ZSBvbmx5IG9uZSB2ZWhpY2xlIGNsYWltLCBzbyB3ZSBuZWVkIHRvIGZpbHRlciBieSB0YW5rIHR5cGVcbiAgICAgIDogdGhpcy5maWx0ZXJCeSgndGFua1R5cGUnLCBUYW5rVHlwZUVudW0uV09SSyk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGNvbGxlY3Rpb24gb2YgbG9nYm9va3Mgd2l0aCB0aGUgYmlnZ2VzdCB3b3JrIHVzYWdlIGZvciB7QGxpbmsgQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbi5wZXJpb2REdXJhdGlvbn1cbiAgICovXG4gIGdldEJlc3QoKTogQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLmZyb21Mb2dib29rcyh0aGlzKTtcbiAgfVxufVxuIl19
|
|
@@ -2,8 +2,10 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import { VehicleClaim } from '../../../models';
|
|
3
3
|
import { RestService } from '../rest/rest-old.service';
|
|
4
4
|
import { AppEventTypeEnum } from '../../../models';
|
|
5
|
+
import { combineLatest } from 'rxjs';
|
|
5
6
|
import { map } from 'rxjs/operators';
|
|
6
7
|
import { AppEvent } from '../../../models';
|
|
8
|
+
import { plainToClass } from 'class-transformer';
|
|
7
9
|
import { UserRolesEnum } from '../../../db/Enums/user-roles.enum';
|
|
8
10
|
import * as i0 from "@angular/core";
|
|
9
11
|
export class VehicleClaimService extends RestService {
|
|
@@ -13,9 +15,6 @@ export class VehicleClaimService extends RestService {
|
|
|
13
15
|
this.url = 'vehicle-claims';
|
|
14
16
|
this.roles = [UserRolesEnum.WORK_TANK, UserRolesEnum.SOLE_TANK];
|
|
15
17
|
}
|
|
16
|
-
listenEvents() {
|
|
17
|
-
this.listenVehicleClaimDetailsChanges();
|
|
18
|
-
}
|
|
19
18
|
add(model) {
|
|
20
19
|
return super.add(model).pipe(map((vehicleClaim) => {
|
|
21
20
|
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_CLAIM_CREATED, vehicleClaim));
|
|
@@ -29,14 +28,15 @@ export class VehicleClaimService extends RestService {
|
|
|
29
28
|
}));
|
|
30
29
|
}
|
|
31
30
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
31
|
+
* Update workUsage for all vehicle claims if logbook best period changed
|
|
32
|
+
* @TODO Vik: Best period move this and related logic to backend
|
|
34
33
|
*/
|
|
35
|
-
|
|
36
|
-
this.
|
|
37
|
-
.
|
|
38
|
-
this.
|
|
34
|
+
updateWorkUsage(bestLogbooks) {
|
|
35
|
+
const batch$ = (this.cache ?? []).map((claim) => {
|
|
36
|
+
const claimToUpdate = plainToClass(VehicleClaim, Object.assign({}, claim, { workUsage: bestLogbooks.getWorkUsage(claim) }));
|
|
37
|
+
return this.update(claimToUpdate);
|
|
39
38
|
});
|
|
39
|
+
return combineLatest(batch$);
|
|
40
40
|
}
|
|
41
41
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VehicleClaimService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42
42
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VehicleClaimService, providedIn: 'root' }); }
|
|
@@ -47,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
47
47
|
providedIn: 'root'
|
|
48
48
|
}]
|
|
49
49
|
}] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1jbGFpbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvdmVoaWNsZS92ZWhpY2xlLWNsYWltLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5ELE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLEdBQUcsRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQU1sRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsV0FBMkM7SUFIcEY7O1FBSUUsZUFBVSxHQUF3QixZQUFZLENBQUM7UUFDL0MsUUFBRyxHQUFHLGdCQUFnQixDQUFDO1FBQ3ZCLFVBQUssR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBc0M1RDtJQXBDQyxHQUFHLENBQUMsS0FBbUI7UUFDckIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDMUIsR0FBRyxDQUFDLENBQUMsWUFBMEIsRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUV6RyxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFtQixFQUFFLGNBQXNCLEVBQUU7UUFDbEQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxDQUFDLFlBQTBCLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFFekcsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsWUFBMEM7UUFDeEQsTUFBTSxNQUFNLEdBQStCLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDeEYsTUFBTSxhQUFhLEdBQWlCLFlBQVksQ0FDOUMsWUFBWSxFQUNaLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FDMUUsQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7K0dBeENVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWZWhpY2xlQ2xhaW0gYXMgVmVoaWNsZUNsYWltQmFzZSB9IGZyb20gJy4uLy4uLy4uL2RiL01vZGVscy92ZWhpY2xlL3ZlaGljbGUtY2xhaW0nO1xuaW1wb3J0IHsgVmVoaWNsZUNsYWltIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzdC9yZXN0LW9sZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFVzZXJSb2xlc0VudW0gfSBmcm9tICcuLi8uLi8uLi9kYi9FbnVtcy91c2VyLXJvbGVzLmVudW0nO1xuaW1wb3J0IHsgQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVmVoaWNsZUNsYWltU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPFZlaGljbGVDbGFpbUJhc2UsIFZlaGljbGVDbGFpbT4ge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgVmVoaWNsZUNsYWltID0gVmVoaWNsZUNsYWltO1xuICB1cmwgPSAndmVoaWNsZS1jbGFpbXMnO1xuICByb2xlcyA9IFtVc2VyUm9sZXNFbnVtLldPUktfVEFOSywgVXNlclJvbGVzRW51bS5TT0xFX1RBTktdO1xuXG4gIGFkZChtb2RlbDogVmVoaWNsZUNsYWltKTogT2JzZXJ2YWJsZTxWZWhpY2xlQ2xhaW0+IHtcbiAgICByZXR1cm4gc3VwZXIuYWRkKG1vZGVsKS5waXBlKFxuICAgICAgbWFwKCh2ZWhpY2xlQ2xhaW06IFZlaGljbGVDbGFpbSkgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9DUkVBVEVELCB2ZWhpY2xlQ2xhaW0pKTtcblxuICAgICAgICByZXR1cm4gdmVoaWNsZUNsYWltO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlKG1vZGVsOiBWZWhpY2xlQ2xhaW0sIHF1ZXJ5UGFyYW1zOiBvYmplY3QgPSB7fSk6IE9ic2VydmFibGU8VmVoaWNsZUNsYWltPiB7XG4gICAgcmV0dXJuIHN1cGVyLnVwZGF0ZShtb2RlbCwgcXVlcnlQYXJhbXMpLnBpcGUoXG4gICAgICBtYXAoKHZlaGljbGVDbGFpbTogVmVoaWNsZUNsYWltKSA9PiB7XG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5WRUhJQ0xFX0NMQUlNX1VQREFURUQsIHZlaGljbGVDbGFpbSkpO1xuXG4gICAgICAgIHJldHVybiB2ZWhpY2xlQ2xhaW07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHdvcmtVc2FnZSBmb3IgYWxsIHZlaGljbGUgY2xhaW1zIGlmIGxvZ2Jvb2sgYmVzdCBwZXJpb2QgY2hhbmdlZFxuICAgKiBAVE9ETyBWaWs6IEJlc3QgcGVyaW9kIG1vdmUgdGhpcyBhbmQgcmVsYXRlZCBsb2dpYyB0byBiYWNrZW5kXG4gICAqL1xuICB1cGRhdGVXb3JrVXNhZ2UoYmVzdExvZ2Jvb2tzOiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKTogT2JzZXJ2YWJsZTxWZWhpY2xlQ2xhaW1bXT4ge1xuICAgIGNvbnN0IGJhdGNoJDogT2JzZXJ2YWJsZTxWZWhpY2xlQ2xhaW0+W10gPSAodGhpcy5jYWNoZSA/PyBbXSkubWFwKChjbGFpbTogVmVoaWNsZUNsYWltKSA9PiB7XG4gICAgICBjb25zdCBjbGFpbVRvVXBkYXRlOiBWZWhpY2xlQ2xhaW0gPSBwbGFpblRvQ2xhc3MoXG4gICAgICAgIFZlaGljbGVDbGFpbSxcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgY2xhaW0sIHsgd29ya1VzYWdlOiBiZXN0TG9nYm9va3MuZ2V0V29ya1VzYWdlKGNsYWltKSB9KVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKGNsYWltVG9VcGRhdGUpO1xuICAgIH0pXG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChiYXRjaCQpO1xuICB9XG59XG4iXX0=
|
|
@@ -8502,7 +8502,7 @@ class VehicleLogbookCollection extends Collection {
|
|
|
8502
8502
|
return this.sumBy('kilometers');
|
|
8503
8503
|
}
|
|
8504
8504
|
getWorkUsage(vehicleClaim) {
|
|
8505
|
-
return this.getClaimable(vehicleClaim).kilometers / this.kilometers * 100;
|
|
8505
|
+
return +(this.getClaimable(vehicleClaim).kilometers / this.kilometers * 100).toFixed(10);
|
|
8506
8506
|
}
|
|
8507
8507
|
getClaimable(vehicleClaim) {
|
|
8508
8508
|
if (!vehicleClaim) {
|
|
@@ -8549,7 +8549,7 @@ class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
|
8549
8549
|
if (!(logbooks instanceof VehicleLogbookCollection)) {
|
|
8550
8550
|
logbooks = new VehicleLogbookCollection(logbooks);
|
|
8551
8551
|
}
|
|
8552
|
-
return
|
|
8552
|
+
return this.periodDuration < (logbooks.last.date.getTime() - logbooks.first.date.getTime());
|
|
8553
8553
|
}
|
|
8554
8554
|
// get list of date ranges for each of passed logbook
|
|
8555
8555
|
static getPeriods(logbooks) {
|
|
@@ -8557,13 +8557,13 @@ class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
|
8557
8557
|
// get a list of date ranges that could potentially be the best
|
|
8558
8558
|
const periods = claimable
|
|
8559
8559
|
// skip logbooks whose range ends after the last logbook
|
|
8560
|
-
.filter((logbook) =>
|
|
8561
|
-
.map((logbook) =>
|
|
8560
|
+
.filter((logbook) => this.getPeriodByLogbook(logbook).end.toDate() < logbooks.last.date)
|
|
8561
|
+
.map((logbook) => this.getPeriodByLogbook(logbook));
|
|
8562
8562
|
// skip if the last logbook already included to the last existing date range
|
|
8563
8563
|
// if (last(periods).end.toDate() < logbooks.last.date) {
|
|
8564
8564
|
// add extra date range for the last claimable logbook
|
|
8565
8565
|
// @TODO vik
|
|
8566
|
-
periods.push(
|
|
8566
|
+
periods.push(this.getPeriodByLogbook(claimable.last, true));
|
|
8567
8567
|
// }
|
|
8568
8568
|
return periods;
|
|
8569
8569
|
}
|
|
@@ -8574,9 +8574,9 @@ class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
|
8574
8574
|
*/
|
|
8575
8575
|
static getPeriodByLogbook(logbook, isBackward = false) {
|
|
8576
8576
|
if (isBackward) {
|
|
8577
|
-
return new DateRange([new Date(logbook.date.getTime() -
|
|
8577
|
+
return new DateRange([new Date(logbook.date.getTime() - this.periodDuration), logbook.date]);
|
|
8578
8578
|
}
|
|
8579
|
-
return new DateRange([logbook.date, new Date(logbook.date.getTime() +
|
|
8579
|
+
return new DateRange([logbook.date, new Date(logbook.date.getTime() + this.periodDuration)]);
|
|
8580
8580
|
}
|
|
8581
8581
|
/**
|
|
8582
8582
|
* Set Date Range with the biggest work usage percent
|
|
@@ -8602,7 +8602,7 @@ class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
|
8602
8602
|
});
|
|
8603
8603
|
}
|
|
8604
8604
|
static fromLogbooks(logbooks) {
|
|
8605
|
-
if (!
|
|
8605
|
+
if (!this.isBestPeriodExist(logbooks)) {
|
|
8606
8606
|
return null;
|
|
8607
8607
|
}
|
|
8608
8608
|
const collection = new BestVehicleLogbookCollection(logbooks.toArray());
|
|
@@ -15236,9 +15236,6 @@ class VehicleClaimService extends RestService {
|
|
|
15236
15236
|
this.url = 'vehicle-claims';
|
|
15237
15237
|
this.roles = [UserRolesEnum.WORK_TANK, UserRolesEnum.SOLE_TANK];
|
|
15238
15238
|
}
|
|
15239
|
-
listenEvents() {
|
|
15240
|
-
this.listenVehicleClaimDetailsChanges();
|
|
15241
|
-
}
|
|
15242
15239
|
add(model) {
|
|
15243
15240
|
return super.add(model).pipe(map((vehicleClaim) => {
|
|
15244
15241
|
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_CLAIM_CREATED, vehicleClaim));
|
|
@@ -15252,14 +15249,15 @@ class VehicleClaimService extends RestService {
|
|
|
15252
15249
|
}));
|
|
15253
15250
|
}
|
|
15254
15251
|
/**
|
|
15255
|
-
*
|
|
15256
|
-
*
|
|
15252
|
+
* Update workUsage for all vehicle claims if logbook best period changed
|
|
15253
|
+
* @TODO Vik: Best period move this and related logic to backend
|
|
15257
15254
|
*/
|
|
15258
|
-
|
|
15259
|
-
this.
|
|
15260
|
-
.
|
|
15261
|
-
this.
|
|
15255
|
+
updateWorkUsage(bestLogbooks) {
|
|
15256
|
+
const batch$ = (this.cache ?? []).map((claim) => {
|
|
15257
|
+
const claimToUpdate = plainToClass(VehicleClaim, Object.assign({}, claim, { workUsage: bestLogbooks.getWorkUsage(claim) }));
|
|
15258
|
+
return this.update(claimToUpdate);
|
|
15262
15259
|
});
|
|
15260
|
+
return combineLatest(batch$);
|
|
15263
15261
|
}
|
|
15264
15262
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VehicleClaimService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
15265
15263
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VehicleClaimService, providedIn: 'root' }); }
|