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