bx-rest 0.1.9 → 0.1.11

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.
Files changed (37) hide show
  1. package/esm2020/request/task/elapseditem.mjs +62 -0
  2. package/esm2020/request/task.mjs +17 -0
  3. package/esm2020/request/tasks/task.mjs +124 -1
  4. package/esm2020/request-navvy/task/elapseditem.mjs +261 -0
  5. package/esm2020/request-navvy/task.mjs +17 -0
  6. package/esm2020/request-navvy/tasks/task.mjs +124 -1
  7. package/esm2020/rest.mjs +28 -24
  8. package/esm2020/services/permission.mjs +43 -0
  9. package/esm2020/typification/permission.mjs +2 -0
  10. package/esm2020/typification/rest/task/access/getaccess.mjs +2 -0
  11. package/esm2020/typification/rest/task/elapseditem/add.mjs +2 -0
  12. package/esm2020/typification/rest/task/elapseditem/del.mjs +2 -0
  13. package/esm2020/typification/rest/task/elapseditem/get.mjs +2 -0
  14. package/esm2020/typification/rest/task/elapseditem/isActionAllowedParam.mjs +2 -0
  15. package/esm2020/typification/rest/task/elapseditem/item.mjs +2 -0
  16. package/esm2020/typification/rest/task/elapseditem/update.mjs +2 -0
  17. package/fesm2015/bx-rest.mjs +633 -6
  18. package/fesm2015/bx-rest.mjs.map +1 -1
  19. package/fesm2020/bx-rest.mjs +631 -6
  20. package/fesm2020/bx-rest.mjs.map +1 -1
  21. package/package.json +1 -1
  22. package/request/task/elapseditem.d.ts +38 -0
  23. package/request/task.d.ts +8 -0
  24. package/request/tasks/task.d.ts +2 -0
  25. package/request-navvy/task/elapseditem.d.ts +36 -0
  26. package/request-navvy/task.d.ts +8 -0
  27. package/request-navvy/tasks/task.d.ts +4 -0
  28. package/rest.d.ts +6 -2
  29. package/services/permission.d.ts +9 -0
  30. package/typification/permission.d.ts +27 -0
  31. package/typification/rest/task/access/getaccess.d.ts +37 -0
  32. package/typification/rest/task/elapseditem/add.d.ts +10 -0
  33. package/typification/rest/task/elapseditem/del.d.ts +4 -0
  34. package/typification/rest/task/elapseditem/get.d.ts +28 -0
  35. package/typification/rest/task/elapseditem/isActionAllowedParam.d.ts +5 -0
  36. package/typification/rest/task/elapseditem/item.d.ts +26 -0
  37. package/typification/rest/task/elapseditem/update.d.ts +10 -0
@@ -1466,6 +1466,78 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1466
1466
  }]
1467
1467
  }], ctorParameters: function () { return [{ type: BXRestListsElement }, { type: HttpBXServices }]; } });
1468
1468
 
1469
+ class BXRestElapseditem {
1470
+ constructor(http) {
1471
+ this.http = http;
1472
+ this.url = {
1473
+ getmanifest: [$task, $elapseditem, $getmanifest],
1474
+ getlist: [$task, $elapseditem, $getlist],
1475
+ get: [$task, $elapseditem, $get],
1476
+ add: [$task, $elapseditem, $add],
1477
+ delete: [$task, $elapseditem, $delete],
1478
+ isactionallowed: [$task, $elapseditem, $isactionallowed],
1479
+ update: [$task, $elapseditem, $update], // Изменяет параметры записи о затраченном времени
1480
+ };
1481
+ }
1482
+ getList(param = undefined) {
1483
+ return this.http.post(this.url.getlist, param);
1484
+ }
1485
+ add(param) {
1486
+ return this.http.post(this.url.add, param, {
1487
+ timeZone: {
1488
+ calc: false,
1489
+ levelOut: false
1490
+ }
1491
+ });
1492
+ }
1493
+ update(param) {
1494
+ return this.http.post(this.url.update, param, {
1495
+ timeZone: {
1496
+ calc: false,
1497
+ levelOut: false
1498
+ }
1499
+ });
1500
+ }
1501
+ del(param) {
1502
+ return this.http.post(this.url.delete, param);
1503
+ }
1504
+ /**
1505
+ * idAction:
1506
+ * 1 - ACTION_ELAPSED_TIME_ADD
1507
+ * 2 - ACTION_ELAPSED_TIME_MODIFY
1508
+ * 3 - ACTION_ELAPSED_TIME_REMOVE
1509
+ * ITEMID - обязателен в конечной отправке но не обязателен для ACTION_ELAPSED_TIME_ADD,
1510
+ * поэтому этом методе можно ставить "1" например, так же метод может выдавать ошибки о не доступности задачи
1511
+ * поэтому рекомендую воспользоваться аналогичным методом в пространстве имен navvy
1512
+ * @param param
1513
+ */
1514
+ isActionAllowed(param) {
1515
+ return this.http.post(this.url.isactionallowed, param);
1516
+ }
1517
+ }
1518
+ BXRestElapseditem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestElapseditem, deps: [{ token: HttpBXServices }], target: i0.ɵɵFactoryTarget.Injectable });
1519
+ BXRestElapseditem.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestElapseditem, providedIn: 'root' });
1520
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestElapseditem, decorators: [{
1521
+ type: Injectable,
1522
+ args: [{
1523
+ providedIn: 'root'
1524
+ }]
1525
+ }], ctorParameters: function () { return [{ type: HttpBXServices }]; } });
1526
+
1527
+ class BXRestTask {
1528
+ constructor(elapseditem) {
1529
+ this.elapseditem = elapseditem;
1530
+ }
1531
+ }
1532
+ BXRestTask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestTask, deps: [{ token: BXRestElapseditem }], target: i0.ɵɵFactoryTarget.Injectable });
1533
+ BXRestTask.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestTask, providedIn: 'root' });
1534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestTask, decorators: [{
1535
+ type: Injectable,
1536
+ args: [{
1537
+ providedIn: 'root'
1538
+ }]
1539
+ }], ctorParameters: function () { return [{ type: BXRestElapseditem }]; } });
1540
+
1469
1541
  // import { AnswerApiTaskBX } from '../../typification/rest/task/answers/task';
1470
1542
  class BXRestTasksTask {
1471
1543
  constructor(http) {
@@ -1546,6 +1618,129 @@ class BXRestTasksTask {
1546
1618
  list(param = {}) {
1547
1619
  return this.http.post(this.url.list, param);
1548
1620
  }
1621
+ /*
1622
+ listArray(requestArray: RequestApiTaskListBX = {}) {
1623
+ return this.list(requestArray).pipe(
1624
+ map(v => this.http.mapResult(v)),
1625
+ map(v => (v && v.tasks) ? v.tasks : [])
1626
+ )
1627
+ }
1628
+
1629
+ listAll(requestArray: RequestApiTaskListBX = {}, cache = false): Observable<TaskBX[]> {
1630
+ if (!requestArray.select) {
1631
+ requestArray.select = this.def.select
1632
+ if (cache) {
1633
+ return this.storeTask$.pipe(
1634
+ take(1),
1635
+ mergeMap(tasks => {
1636
+ if (tasks && tasks.data.http.list && requestArray.filter && requestArray.filter.ID) {
1637
+ const ids = (typeof requestArray.filter.ID === 'number') ? [requestArray.filter.ID] : requestArray.filter.ID
1638
+ let filter = tasks.data.http.list.filter(i => (i.id) ? ids.includes(i.id) : false)
1639
+ if (filter.length === ids.length) {
1640
+ return of(filter)
1641
+ }
1642
+ }
1643
+ return this.getEndListArray(requestArray)
1644
+ })
1645
+ )
1646
+ }
1647
+ return this.getEndListArray(requestArray)
1648
+ }
1649
+ return this.getEndListArray(requestArray)
1650
+ }
1651
+
1652
+ getEndListArray(requestArray: RequestApiTaskListBX): Observable<TaskBX[]> {
1653
+ return this.list(requestArray).pipe(
1654
+ mergeMap((items: AnswerApiTaskBX | undefined): ObservableInput<any> | Observable<AnswerApiTaskBX[]> => {
1655
+ if (items && items.result && typeof items.result.tasks === 'object') {
1656
+ const items$ = of(items.result.tasks)
1657
+ if (items.next) {
1658
+ this.nowLoad$.next({
1659
+ total: (items.total) ? items.total : 0,
1660
+ next: items.next
1661
+ })
1662
+ requestArray.start = items.next
1663
+ return this.getEndListArray(requestArray).pipe(
1664
+ map(vEnd => {
1665
+ if (vEnd && items.result.tasks) {
1666
+ return [...items.result.tasks, ...vEnd]
1667
+ }
1668
+ return (items.result.tasks) ? items.result.tasks : []
1669
+ }))
1670
+ }
1671
+ this.nowLoad$.next({
1672
+ total: 0,
1673
+ next: 0
1674
+ })
1675
+ return items$
1676
+ } else {
1677
+ return of([])
1678
+ }
1679
+ })
1680
+ )
1681
+ }
1682
+
1683
+ getFields() {
1684
+ return this.storeTask$.pipe(
1685
+ mergeMap(v => {
1686
+ if (v && !v.data.fields) {
1687
+ return this.http.post<iHttpAnswerBX<{ fields: iGetFieldsDescription }>>(this.url.getFields).pipe(
1688
+ tap(v => {
1689
+ if (v && v.result) {
1690
+ this.store.dispatch(saveFields(v.result))
1691
+ }
1692
+ }),
1693
+ map(v => {
1694
+ if (v && v.result && v.result.fields) {
1695
+ return {result: v.result.fields}
1696
+ }
1697
+
1698
+ return undefined
1699
+ })
1700
+ )
1701
+ }
1702
+ if (v.data.fields) {
1703
+ return of({result: clone<iGetFieldsDescription>(v.data.fields)})
1704
+ } else {
1705
+ return of(undefined)
1706
+ }
1707
+ })
1708
+ )
1709
+ }
1710
+
1711
+ deleteResultFromComment(commentID: number) {
1712
+ return this.http.post<iHttpAnswerBX<any>>(this.url.result.deleteFromComment, {commentId: commentID})
1713
+ }
1714
+
1715
+ addResultFromComment(commentID: number) {
1716
+ return this.http.post<iHttpAnswerBX<iTaskResultHttp>>(this.url.result.addFromComment, {commentId: commentID})
1717
+ .pipe(
1718
+ map(v => {
1719
+ if (v && v.result) {
1720
+ this.taskResultMap.iTaskResultHttpToiTaskResult(v.result)
1721
+ }
1722
+ return undefined
1723
+ }))
1724
+ }
1725
+
1726
+ getResulList(taskId: number): Observable<iTaskResult[] | undefined> {
1727
+ return this.http.post<iHttpAnswerBX<iTaskResultHttp[]>>(this.url.result.list, {taskId: taskId})
1728
+ .pipe(
1729
+ map(v => {
1730
+ if (v && v.result) {
1731
+ return v.result.map(i => this.taskResultMap.iTaskResultHttpToiTaskResult(i))
1732
+ }
1733
+ return undefined
1734
+ }))
1735
+ }
1736
+
1737
+ getPlannerList() {s
1738
+ return this.http.post<iHttpAnswerBX<(string | number)[]>>(this.url.planner.getlist)
1739
+ }
1740
+ */
1741
+ getaccess(param) {
1742
+ return this.http.post(this.url.getaccess, param);
1743
+ }
1549
1744
  }
1550
1745
  BXRestTasksTask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestTasksTask, deps: [{ token: HttpBXServices }], target: i0.ɵɵFactoryTarget.Injectable });
1551
1746
  BXRestTasksTask.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestTasksTask, providedIn: 'root' });
@@ -2228,6 +2423,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
2228
2423
  }]
2229
2424
  }], ctorParameters: function () { return [{ type: BXRestNavvyListsElement }, { type: BXRestLists }, { type: Navvy }, { type: BXRestMapLists }]; } });
2230
2425
 
2426
+ class Permission {
2427
+ static get() {
2428
+ return SessionStorage.getItem('permission');
2429
+ }
2430
+ static set(param) {
2431
+ SessionStorage.setItem('permission', Object.assign(this.get(), param));
2432
+ }
2433
+ static setTaskElapsedItem(idTask, ElapsedItem) {
2434
+ let permission = Permission.get();
2435
+ if (permission.tasks) {
2436
+ let findTask = permission.tasks.find(i => i.id === idTask);
2437
+ if (findTask) {
2438
+ let findTaskElapsedItem = findTask.elapsedItem.find(i => i.id === ElapsedItem.id);
2439
+ if (findTaskElapsedItem) {
2440
+ if (ElapsedItem.verified.edit) {
2441
+ findTaskElapsedItem.verified.edit = ElapsedItem.verified.edit;
2442
+ findTaskElapsedItem.edit = ElapsedItem.edit;
2443
+ }
2444
+ if (ElapsedItem.verified.del) {
2445
+ findTaskElapsedItem.verified.del = ElapsedItem.verified.del;
2446
+ findTaskElapsedItem.del = ElapsedItem.del;
2447
+ }
2448
+ }
2449
+ else {
2450
+ findTask.elapsedItem.push(ElapsedItem);
2451
+ }
2452
+ }
2453
+ SessionStorage.setItem('permission', permission);
2454
+ }
2455
+ }
2456
+ }
2457
+ Permission.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Permission, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2458
+ Permission.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Permission, providedIn: 'root' });
2459
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Permission, decorators: [{
2460
+ type: Injectable,
2461
+ args: [{
2462
+ providedIn: 'root'
2463
+ }]
2464
+ }] });
2465
+
2231
2466
  class BXRestTaskMap extends BaseMapServices {
2232
2467
  add(item) {
2233
2468
  return this.TaskBXHttpToTaskBX(item);
@@ -2442,6 +2677,129 @@ class BXRestNavvyTasksTask {
2442
2677
  }
2443
2678
  }));
2444
2679
  }
2680
+ /*
2681
+ listArray(requestArray: RequestApiTaskListBX = {}) {
2682
+ return this.list(requestArray).pipe(
2683
+ map(v => this.http.mapResult(v)),
2684
+ map(v => (v && v.tasks) ? v.tasks : [])
2685
+ )
2686
+ }
2687
+
2688
+ listAll(requestArray: RequestApiTaskListBX = {}, cache = false): Observable<TaskBX[]> {
2689
+ if (!requestArray.select) {
2690
+ requestArray.select = this.def.select
2691
+ if (cache) {
2692
+ return this.storeTask$.pipe(
2693
+ take(1),
2694
+ mergeMap(tasks => {
2695
+ if (tasks && tasks.data.http.list && requestArray.filter && requestArray.filter.ID) {
2696
+ const ids = (typeof requestArray.filter.ID === 'number') ? [requestArray.filter.ID] : requestArray.filter.ID
2697
+ let filter = tasks.data.http.list.filter(i => (i.id) ? ids.includes(i.id) : false)
2698
+ if (filter.length === ids.length) {
2699
+ return of(filter)
2700
+ }
2701
+ }
2702
+ return this.getEndListArray(requestArray)
2703
+ })
2704
+ )
2705
+ }
2706
+ return this.getEndListArray(requestArray)
2707
+ }
2708
+ return this.getEndListArray(requestArray)
2709
+ }
2710
+
2711
+ getEndListArray(requestArray: RequestApiTaskListBX): Observable<TaskBX[]> {
2712
+ return this.list(requestArray).pipe(
2713
+ mergeMap((items: AnswerApiTaskBX | undefined): ObservableInput<any> | Observable<AnswerApiTaskBX[]> => {
2714
+ if (items && items.result && typeof items.result.tasks === 'object') {
2715
+ const items$ = of(items.result.tasks)
2716
+ if (items.next) {
2717
+ this.nowLoad$.next({
2718
+ total: (items.total) ? items.total : 0,
2719
+ next: items.next
2720
+ })
2721
+ requestArray.start = items.next
2722
+ return this.getEndListArray(requestArray).pipe(
2723
+ map(vEnd => {
2724
+ if (vEnd && items.result.tasks) {
2725
+ return [...items.result.tasks, ...vEnd]
2726
+ }
2727
+ return (items.result.tasks) ? items.result.tasks : []
2728
+ }))
2729
+ }
2730
+ this.nowLoad$.next({
2731
+ total: 0,
2732
+ next: 0
2733
+ })
2734
+ return items$
2735
+ } else {
2736
+ return of([])
2737
+ }
2738
+ })
2739
+ )
2740
+ }
2741
+
2742
+ getFields() {
2743
+ return this.storeTask$.pipe(
2744
+ mergeMap(v => {
2745
+ if (v && !v.data.fields) {
2746
+ return this.http.post<iHttpAnswerBX<{ fields: iGetFieldsDescription }>>(this.url.getFields).pipe(
2747
+ tap(v => {
2748
+ if (v && v.result) {
2749
+ this.store.dispatch(saveFields(v.result))
2750
+ }
2751
+ }),
2752
+ map(v => {
2753
+ if (v && v.result && v.result.fields) {
2754
+ return {result: v.result.fields}
2755
+ }
2756
+
2757
+ return undefined
2758
+ })
2759
+ )
2760
+ }
2761
+ if (v.data.fields) {
2762
+ return of({result: clone<iGetFieldsDescription>(v.data.fields)})
2763
+ } else {
2764
+ return of(undefined)
2765
+ }
2766
+ })
2767
+ )
2768
+ }
2769
+
2770
+ deleteResultFromComment(commentID: number) {
2771
+ return this.http.post<iHttpAnswerBX<any>>(this.url.result.deleteFromComment, {commentId: commentID})
2772
+ }
2773
+
2774
+ addResultFromComment(commentID: number) {
2775
+ return this.http.post<iHttpAnswerBX<iTaskResultHttp>>(this.url.result.addFromComment, {commentId: commentID})
2776
+ .pipe(
2777
+ map(v => {
2778
+ if (v && v.result) {
2779
+ this.taskResultMap.iTaskResultHttpToiTaskResult(v.result)
2780
+ }
2781
+ return undefined
2782
+ }))
2783
+ }
2784
+
2785
+ getResulList(taskId: number): Observable<iTaskResult[] | undefined> {
2786
+ return this.http.post<iHttpAnswerBX<iTaskResultHttp[]>>(this.url.result.list, {taskId: taskId})
2787
+ .pipe(
2788
+ map(v => {
2789
+ if (v && v.result) {
2790
+ return v.result.map(i => this.taskResultMap.iTaskResultHttpToiTaskResult(i))
2791
+ }
2792
+ return undefined
2793
+ }))
2794
+ }
2795
+
2796
+ getPlannerList() {
2797
+ return this.http.post<iHttpAnswerBX<(string | number)[]>>(this.url.planner.getlist)
2798
+ }
2799
+ */
2800
+ getaccess(param) {
2801
+ return this.Navvy.mapAndSnackBarError(this.BXRestTasksTask.getaccess(param), 'Не удалось получить права на указанных пользователей').pipe(map(v => (v && v.allowedActions) ? v.allowedActions : undefined));
2802
+ }
2445
2803
  }
2446
2804
  BXRestNavvyTasksTask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvyTasksTask, deps: [{ token: BXRestTasksTask }, { token: SnackBarService }, { token: BXRestTaskMap }, { token: Navvy }], target: i0.ɵɵFactoryTarget.Injectable });
2447
2805
  BXRestNavvyTasksTask.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvyTasksTask, providedIn: 'root' });
@@ -2466,6 +2824,271 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
2466
2824
  }]
2467
2825
  }], ctorParameters: function () { return [{ type: BXRestNavvyTasksTask }]; } });
2468
2826
 
2827
+ class BXRestNavvyElapseditem {
2828
+ constructor(BXRestElapseditem, BXRestNavvyUser, BXRestNavvyTasks, Navvy, snackBar) {
2829
+ this.BXRestElapseditem = BXRestElapseditem;
2830
+ this.BXRestNavvyUser = BXRestNavvyUser;
2831
+ this.BXRestNavvyTasks = BXRestNavvyTasks;
2832
+ this.Navvy = Navvy;
2833
+ this.snackBar = snackBar;
2834
+ }
2835
+ getList(param = undefined) {
2836
+ if (param) {
2837
+ if (!param.TASKID && !param.SELECT) {
2838
+ param.SELECT = ['*'];
2839
+ }
2840
+ if (!param.TASKID && !param.PARAMS) {
2841
+ param.PARAMS = {
2842
+ NAV_PARAMS: {
2843
+ nPageSize: 50,
2844
+ iNumPage: 1
2845
+ }
2846
+ };
2847
+ }
2848
+ }
2849
+ return this.Navvy.mapAndSnackBarError(this.BXRestElapseditem.getList(param), 'не удалось получить время по задачам');
2850
+ }
2851
+ add(param) {
2852
+ return this.checkPermissionReadTask(param.TASKID).pipe(mergeMap(allowedReadTask => {
2853
+ if (allowedReadTask) {
2854
+ return this.checkPermissionReadTask(param.TASKID).pipe(mergeMap(allowed => {
2855
+ if (allowed) {
2856
+ return this.Navvy.mapAndSnackBarError(this.BXRestElapseditem.add(param), 'Не удалось добавить запись о времени');
2857
+ }
2858
+ else {
2859
+ this.snackBar.error('Отсутствуют права добавление записи затраченного времени');
2860
+ return of(false);
2861
+ }
2862
+ }));
2863
+ }
2864
+ else {
2865
+ this.snackBar.error('Отсутствуют права на чтение задачи');
2866
+ return of(false);
2867
+ }
2868
+ }));
2869
+ }
2870
+ update(param) {
2871
+ return this.checkPermissionReadTask(param.TASKID).pipe(mergeMap(allowedReadTask => {
2872
+ if (allowedReadTask) {
2873
+ return this.isAllowedModify(param.TASKID, param.ITEMID).pipe(mergeMap(allowed => {
2874
+ if (allowed) {
2875
+ return this.Navvy.mapAndSnackBarError(this.BXRestElapseditem.update(param), 'Не удалось обновить запись о времени');
2876
+ }
2877
+ else {
2878
+ this.snackBar.error('Отсутствуют права на изменение записи затраченного времени');
2879
+ return of(false);
2880
+ }
2881
+ }));
2882
+ }
2883
+ else {
2884
+ this.snackBar.error('Отсутствуют права на чтение задачи');
2885
+ return of(false);
2886
+ }
2887
+ }));
2888
+ }
2889
+ /*
2890
+ getAll(
2891
+ params: RequestParamsElapsedGetList | undefined = undefined,
2892
+ cache = false
2893
+ ): Observable<iHttpAnswerBX<BXRestElapsed[]> | undefined> {
2894
+ return this.get(params, cache)
2895
+ .pipe(
2896
+ mergeMap(items => {
2897
+ if (items && items.result) {
2898
+ if (items.next) {
2899
+ params = (params) ? params : {}
2900
+ params.PARAMS = {
2901
+ NAV_PARAMS: {
2902
+ nPageSize: this.pageSize,
2903
+ iNumPage: items.next / this.pageSize + 1
2904
+ }
2905
+ }
2906
+ return this.getAll(params, cache).pipe(
2907
+ map(vEnd => {
2908
+ if (vEnd && vEnd.result && items.result) {
2909
+ return merge(clone(vEnd), {result: [...items.result, ...vEnd.result]})
2910
+ }
2911
+ return items
2912
+ })
2913
+ )
2914
+ }
2915
+ return of(items)
2916
+ } else {
2917
+ return of(undefined)
2918
+ }
2919
+ })
2920
+ )
2921
+ }
2922
+ */
2923
+ /*
2924
+ getByInterval(idsUsers: number[], dateStart: Date, dateEnd: Date, cache = false) {
2925
+ return this.getAll({
2926
+ ORDER: {
2927
+ ID: 'DESC'
2928
+ },
2929
+ FILTER: {
2930
+ USER_ID: idsUsers,
2931
+ '>=CREATED_DATE': dateStart.toLocaleString('ru-Ru'),
2932
+ '<=CREATED_DATE': dateEnd.toLocaleString('ru-Ru'),
2933
+ }
2934
+ },
2935
+ cache
2936
+ ).pipe(
2937
+ map(v => this.http.mapResult(v))
2938
+ )
2939
+ }
2940
+ */
2941
+ /*
2942
+ getCacheOff(params: RequestParamsElapsedGetList | undefined = undefined) {
2943
+ return this.http.post<iHttpAnswerBX<BXRestElapsedHttp[]> | undefined>
2944
+ (this.url.getlist, params, 'не удалось получить время по задачам')
2945
+ .pipe(
2946
+ map(v => {
2947
+ if (v && v.result) {
2948
+ const newResult: BXRestElapsed[] = []
2949
+ for (let task of v.result) {
2950
+ newResult.push(this.elapsedBXMap.AnswerElapsedGetHttpToAnswerElapsedGet(task))
2951
+ }
2952
+ return extend(v, {result: newResult}) as iHttpAnswerBX<BXRestElapsed[]>
2953
+ }
2954
+ return undefined
2955
+ }),
2956
+ tap(v => {
2957
+ if (v && params) {
2958
+ this.store.dispatch(saveHttpTaskTime({
2959
+ filter: clone(params),
2960
+ time: v
2961
+ }))
2962
+ }
2963
+ })
2964
+ )
2965
+ }
2966
+ */
2967
+ isAllowedModify(idTask, idItem) {
2968
+ let permission = Permission.get();
2969
+ if (permission?.tasks?.length) {
2970
+ let findTask = permission.tasks.find(i => i.id === idTask);
2971
+ if (findTask) {
2972
+ let find = findTask.elapsedItem.find(i => i.id === idItem);
2973
+ if (find && find.verified.edit) {
2974
+ return of(find.edit);
2975
+ }
2976
+ }
2977
+ }
2978
+ return this.isActionAllowed({
2979
+ TASKID: idTask,
2980
+ ITEMID: 2,
2981
+ ACTIONID: idItem
2982
+ }).pipe(tap(v => {
2983
+ if (v !== undefined) {
2984
+ Permission.setTaskElapsedItem(idTask, {
2985
+ id: idItem,
2986
+ edit: v,
2987
+ del: false,
2988
+ verified: {
2989
+ edit: true,
2990
+ del: false,
2991
+ }
2992
+ });
2993
+ }
2994
+ }));
2995
+ }
2996
+ isAllowedRemove(idTask, idItem) {
2997
+ return this.isActionAllowed({
2998
+ TASKID: idTask,
2999
+ ITEMID: 3,
3000
+ ACTIONID: idItem
3001
+ });
3002
+ }
3003
+ /**
3004
+ * idAction:
3005
+ * 1 - ACTION_ELAPSED_TIME_ADD
3006
+ * 2 - ACTION_ELAPSED_TIME_MODIFY
3007
+ * 3 - ACTION_ELAPSED_TIME_REMOVE
3008
+ * @param param
3009
+ */
3010
+ isActionAllowed(param) {
3011
+ return this.checkPermissionReadTask(param.TASKID).pipe(mergeMap(canRead => {
3012
+ if (canRead) {
3013
+ this.Navvy.mapAndSnackBarError(this.BXRestElapseditem.isActionAllowed(param), '').pipe(catchError(v => {
3014
+ console.error(v);
3015
+ return of(false);
3016
+ }));
3017
+ }
3018
+ return of(false);
3019
+ }));
3020
+ }
3021
+ checkPermissionReadTask(idTask) {
3022
+ let permission = Permission.get();
3023
+ if (permission?.tasks?.length) {
3024
+ let findTask = permission.tasks.find(i => i.id === idTask);
3025
+ if (findTask?.permission) {
3026
+ return of(findTask.permission.ACCEPT);
3027
+ }
3028
+ return this.BXRestNavvyUser.current().pipe(mergeMap(self => {
3029
+ if (self) {
3030
+ return this.BXRestNavvyTasks.task.getaccess({
3031
+ id: idTask,
3032
+ users: [self.ID]
3033
+ }).pipe(tap(v => {
3034
+ if (v && v[self.ID]) {
3035
+ Permission.set({
3036
+ tasks: [{ id: idTask, permission: v[self.ID], elapsedItem: [] }]
3037
+ });
3038
+ }
3039
+ }), map(v => {
3040
+ return (v && v[self.ID]) ? v[self.ID].ACCEPT : false;
3041
+ }));
3042
+ }
3043
+ return of(undefined);
3044
+ }));
3045
+ }
3046
+ return of(undefined);
3047
+ }
3048
+ del(param) {
3049
+ return this.checkPermissionReadTask(param.TASKID).pipe(mergeMap(allowedReadTask => {
3050
+ if (allowedReadTask) {
3051
+ return this.isAllowedRemove(param.TASKID, param.ITEMID).pipe(mergeMap(allowed => {
3052
+ if (allowed) {
3053
+ return this.Navvy.mapAndSnackBarError(this.BXRestElapseditem.del(param), 'Не удалось удалить запись')
3054
+ .pipe(map(v => (v === null)));
3055
+ }
3056
+ else {
3057
+ this.snackBar.error('Отсутствуют права на удаление записи затраченного времени');
3058
+ return of(false);
3059
+ }
3060
+ }));
3061
+ }
3062
+ else {
3063
+ this.snackBar.error('Отсутствуют права на чтение задачи');
3064
+ return of(false);
3065
+ }
3066
+ }));
3067
+ }
3068
+ }
3069
+ BXRestNavvyElapseditem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvyElapseditem, deps: [{ token: BXRestElapseditem }, { token: BXRestNavvyUser }, { token: BXRestNavvyTasks }, { token: Navvy }, { token: SnackBarService }], target: i0.ɵɵFactoryTarget.Injectable });
3070
+ BXRestNavvyElapseditem.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvyElapseditem, providedIn: 'root' });
3071
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvyElapseditem, decorators: [{
3072
+ type: Injectable,
3073
+ args: [{
3074
+ providedIn: 'root'
3075
+ }]
3076
+ }], ctorParameters: function () { return [{ type: BXRestElapseditem }, { type: BXRestNavvyUser }, { type: BXRestNavvyTasks }, { type: Navvy }, { type: SnackBarService }]; } });
3077
+
3078
+ class BXRestNavvyTask {
3079
+ constructor(elapseditem) {
3080
+ this.elapseditem = elapseditem;
3081
+ }
3082
+ }
3083
+ BXRestNavvyTask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvyTask, deps: [{ token: BXRestNavvyElapseditem }], target: i0.ɵɵFactoryTarget.Injectable });
3084
+ BXRestNavvyTask.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvyTask, providedIn: 'root' });
3085
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvyTask, decorators: [{
3086
+ type: Injectable,
3087
+ args: [{
3088
+ providedIn: 'root'
3089
+ }]
3090
+ }], ctorParameters: function () { return [{ type: BXRestNavvyElapseditem }]; } });
3091
+
2469
3092
  class BXRestMapDiskBase extends BaseMapServices {
2470
3093
  separationFoldersAndFiles(arr) {
2471
3094
  let result = { file: [], folder: [] };
@@ -3163,9 +3786,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
3163
3786
  }], ctorParameters: function () { return [{ type: BXRestSonetGroup }, { type: BXRestMapSonetGroup }, { type: Navvy }]; } });
3164
3787
 
3165
3788
  class BXRest {
3166
- constructor(user, lists, tasks, disk, bizproc, log, calendar, sonet_group) {
3789
+ constructor(user, lists, task, tasks, disk, bizproc, log, calendar, sonet_group) {
3167
3790
  this.user = user;
3168
3791
  this.lists = lists;
3792
+ this.task = task;
3169
3793
  this.tasks = tasks;
3170
3794
  this.disk = disk;
3171
3795
  this.bizproc = bizproc;
@@ -3174,18 +3798,19 @@ class BXRest {
3174
3798
  this.sonet_group = sonet_group;
3175
3799
  }
3176
3800
  }
3177
- BXRest.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRest, deps: [{ token: BXRestUser }, { token: BXRestLists }, { token: BXRestTasks }, { token: BXRestDisk }, { token: BXRestBizproc }, { token: BXRestLog }, { token: BXRestCalendar }, { token: BXRestSonetGroup }], target: i0.ɵɵFactoryTarget.Injectable });
3801
+ BXRest.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRest, deps: [{ token: BXRestUser }, { token: BXRestLists }, { token: BXRestTask }, { token: BXRestTasks }, { token: BXRestDisk }, { token: BXRestBizproc }, { token: BXRestLog }, { token: BXRestCalendar }, { token: BXRestSonetGroup }], target: i0.ɵɵFactoryTarget.Injectable });
3178
3802
  BXRest.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRest, providedIn: 'root' });
3179
3803
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRest, decorators: [{
3180
3804
  type: Injectable,
3181
3805
  args: [{
3182
3806
  providedIn: 'root'
3183
3807
  }]
3184
- }], ctorParameters: function () { return [{ type: BXRestUser }, { type: BXRestLists }, { type: BXRestTasks }, { type: BXRestDisk }, { type: BXRestBizproc }, { type: BXRestLog }, { type: BXRestCalendar }, { type: BXRestSonetGroup }]; } });
3808
+ }], ctorParameters: function () { return [{ type: BXRestUser }, { type: BXRestLists }, { type: BXRestTask }, { type: BXRestTasks }, { type: BXRestDisk }, { type: BXRestBizproc }, { type: BXRestLog }, { type: BXRestCalendar }, { type: BXRestSonetGroup }]; } });
3185
3809
  class BXRestNavvy {
3186
- constructor(user, lists, tasks, disk, bizproc, log, calendar, sonet_group) {
3810
+ constructor(user, lists, task, tasks, disk, bizproc, log, calendar, sonet_group) {
3187
3811
  this.user = user;
3188
3812
  this.lists = lists;
3813
+ this.task = task;
3189
3814
  this.tasks = tasks;
3190
3815
  this.disk = disk;
3191
3816
  this.bizproc = bizproc;
@@ -3194,14 +3819,14 @@ class BXRestNavvy {
3194
3819
  this.sonet_group = sonet_group;
3195
3820
  }
3196
3821
  }
3197
- BXRestNavvy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvy, deps: [{ token: BXRestNavvyUser }, { token: BXRestNavvyLists }, { token: BXRestNavvyTasks }, { token: BXRestNavvyDisk }, { token: BXRestNavvyBizproc }, { token: BXRestNavvyLog }, { token: BXRestNavvyCalendar }, { token: BXRestNavvySonetGroup }], target: i0.ɵɵFactoryTarget.Injectable });
3822
+ BXRestNavvy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvy, deps: [{ token: BXRestNavvyUser }, { token: BXRestNavvyLists }, { token: BXRestNavvyTask }, { token: BXRestNavvyTasks }, { token: BXRestNavvyDisk }, { token: BXRestNavvyBizproc }, { token: BXRestNavvyLog }, { token: BXRestNavvyCalendar }, { token: BXRestNavvySonetGroup }], target: i0.ɵɵFactoryTarget.Injectable });
3198
3823
  BXRestNavvy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvy, providedIn: 'root' });
3199
3824
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestNavvy, decorators: [{
3200
3825
  type: Injectable,
3201
3826
  args: [{
3202
3827
  providedIn: 'root'
3203
3828
  }]
3204
- }], ctorParameters: function () { return [{ type: BXRestNavvyUser }, { type: BXRestNavvyLists }, { type: BXRestNavvyTasks }, { type: BXRestNavvyDisk }, { type: BXRestNavvyBizproc }, { type: BXRestNavvyLog }, { type: BXRestNavvyCalendar }, { type: BXRestNavvySonetGroup }]; } });
3829
+ }], ctorParameters: function () { return [{ type: BXRestNavvyUser }, { type: BXRestNavvyLists }, { type: BXRestNavvyTask }, { type: BXRestNavvyTasks }, { type: BXRestNavvyDisk }, { type: BXRestNavvyBizproc }, { type: BXRestNavvyLog }, { type: BXRestNavvyCalendar }, { type: BXRestNavvySonetGroup }]; } });
3205
3830
  class BXRestMap {
3206
3831
  constructor(lists) {
3207
3832
  this.lists = lists;