bx-rest 0.2.12 → 0.2.13
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/map/task/planner.mjs +17 -0
- package/esm2022/request/task/planner.mjs +2 -2
- package/esm2022/request-navvy/task/elapseditem.mjs +17 -73
- package/esm2022/request-navvy/task/operation/elapseditem.mjs +101 -4
- package/esm2022/request-navvy/task/planner.mjs +24 -0
- package/esm2022/request-navvy/task.mjs +6 -4
- package/esm2022/services/http/HttpBX.mjs +4 -7
- package/fesm2022/bx-rest.mjs +513 -439
- package/fesm2022/bx-rest.mjs.map +1 -1
- package/map/task/planner.d.ts +7 -0
- package/package.json +1 -1
- package/request/task/planner.d.ts +1 -1
- package/request-navvy/task/elapseditem.d.ts +7 -10
- package/request-navvy/task/operation/elapseditem.d.ts +13 -2
- package/request-navvy/task/planner.d.ts +12 -0
- package/request-navvy/task.d.ts +3 -1
- package/services/http/HttpBX.d.ts +4 -0
package/fesm2022/bx-rest.mjs
CHANGED
|
@@ -12,7 +12,7 @@ import { DateTime } from 'luxon';
|
|
|
12
12
|
import * as i1$2 from '@angular/common/http';
|
|
13
13
|
import { HttpParams, HttpHeaders } from '@angular/common/http';
|
|
14
14
|
import flatten from 'just-flatten-it';
|
|
15
|
-
import { map, catchError, mergeMap as mergeMap$1 } from 'rxjs/operators';
|
|
15
|
+
import { map, catchError, take, mergeMap as mergeMap$1 } from 'rxjs/operators';
|
|
16
16
|
|
|
17
17
|
const BX_REST_SETTINGS = {
|
|
18
18
|
auth: {
|
|
@@ -1152,12 +1152,9 @@ class HttpBXServices extends HttpServices {
|
|
|
1152
1152
|
}
|
|
1153
1153
|
return res;
|
|
1154
1154
|
}
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
// }
|
|
1159
|
-
// }
|
|
1160
|
-
//
|
|
1155
|
+
mapBranchResult(res) {
|
|
1156
|
+
return Object.assign([], ...res.map(i => (i.result && i.result.result) ? i.result.result : undefined));
|
|
1157
|
+
}
|
|
1161
1158
|
mapBranchResultWithoutKey(res) {
|
|
1162
1159
|
return flatten(Object.assign([], ...res.map(i => (i.result && i.result.result) ? i.result.result : undefined)));
|
|
1163
1160
|
}
|
|
@@ -1487,7 +1484,7 @@ class BXRestTaskPlanner {
|
|
|
1487
1484
|
constructor(http) {
|
|
1488
1485
|
this.http = http;
|
|
1489
1486
|
}
|
|
1490
|
-
|
|
1487
|
+
getList() {
|
|
1491
1488
|
return this.http.post([$task, $planner, $getlist]);
|
|
1492
1489
|
}
|
|
1493
1490
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestTaskPlanner, deps: [{ token: HttpBXServices }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -3030,11 +3027,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
|
|
|
3030
3027
|
}]
|
|
3031
3028
|
}] });
|
|
3032
3029
|
|
|
3030
|
+
class BXRestMapTaskElapseditem extends BaseMapServices {
|
|
3031
|
+
update(p) {
|
|
3032
|
+
return (p == null);
|
|
3033
|
+
}
|
|
3034
|
+
getList(v) {
|
|
3035
|
+
return (v) ? v.map(i => this.ElapsedItemHttpToElapsedItem(i)) : undefined;
|
|
3036
|
+
}
|
|
3037
|
+
ElapsedItemHttpToElapsedItem(item) {
|
|
3038
|
+
return Object.assign(item, {
|
|
3039
|
+
ID: this.toNum(item.ID),
|
|
3040
|
+
MINUTES: this.toNum(item.MINUTES),
|
|
3041
|
+
SECONDS: this.toNum(item.SECONDS),
|
|
3042
|
+
TASK_ID: this.toNum(item.TASK_ID),
|
|
3043
|
+
USER_ID: this.toNum(item.USER_ID),
|
|
3044
|
+
SOURCE: this.toNum(item.SOURCE),
|
|
3045
|
+
CREATED_DATE: this.toDate(item.CREATED_DATE),
|
|
3046
|
+
DATE_START: this.toDate(item.DATE_START),
|
|
3047
|
+
DATE_STOP: this.toDate(item.DATE_STOP),
|
|
3048
|
+
});
|
|
3049
|
+
}
|
|
3050
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskElapseditem, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3051
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskElapseditem, providedIn: 'root' }); }
|
|
3052
|
+
}
|
|
3053
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskElapseditem, decorators: [{
|
|
3054
|
+
type: Injectable,
|
|
3055
|
+
args: [{
|
|
3056
|
+
providedIn: 'root'
|
|
3057
|
+
}]
|
|
3058
|
+
}] });
|
|
3059
|
+
|
|
3033
3060
|
class BXRestNavvyOperationElapseditem {
|
|
3034
|
-
constructor(http, BXRestNavvyElapseditem, BXRestMapElapseditem) {
|
|
3061
|
+
constructor(http, BXRestNavvyElapseditem, BXRestMapElapseditem, BXRestNavvyUser, BXRestNavvyTasks) {
|
|
3035
3062
|
this.http = http;
|
|
3036
3063
|
this.BXRestNavvyElapseditem = BXRestNavvyElapseditem;
|
|
3037
3064
|
this.BXRestMapElapseditem = BXRestMapElapseditem;
|
|
3065
|
+
this.BXRestNavvyUser = BXRestNavvyUser;
|
|
3066
|
+
this.BXRestNavvyTasks = BXRestNavvyTasks;
|
|
3038
3067
|
}
|
|
3039
3068
|
getByInterval(idsUsers, dateStart, dateEnd) {
|
|
3040
3069
|
const param = {
|
|
@@ -3064,37 +3093,487 @@ class BXRestNavvyOperationElapseditem {
|
|
|
3064
3093
|
return undefined;
|
|
3065
3094
|
}));
|
|
3066
3095
|
}
|
|
3096
|
+
checkPermissionAddElapsedtimeToTaskArr(tasks) {
|
|
3097
|
+
let request = Object.assign({}, ...tasks.map(i => {
|
|
3098
|
+
return { [i]: this.checkPermissionAddElapsedtimeToTask(i) };
|
|
3099
|
+
}));
|
|
3100
|
+
return forkJoin(request)
|
|
3101
|
+
.pipe(take(1), mergeMap(v => {
|
|
3102
|
+
let forForeach = Object.entries(v).map(([key, value]) => {
|
|
3103
|
+
return { id: Number(key), value: value };
|
|
3104
|
+
});
|
|
3105
|
+
if (forForeach.find(i => i.value === undefined) !== undefined) {
|
|
3106
|
+
let forForeachHave = forForeach.filter(i => i.value !== undefined);
|
|
3107
|
+
let forForeachNotHave = forForeach.filter(i => i.value === undefined); // тут получаем все id не сохраненных у нас прав
|
|
3108
|
+
return this.http.branch(Object.assign({}, ...forForeachNotHave
|
|
3109
|
+
.map(i => i.id)
|
|
3110
|
+
.map(i => {
|
|
3111
|
+
return {
|
|
3112
|
+
[i]: {
|
|
3113
|
+
name: this.http.getNameMethod([$tasks, $task, $getaccess]),
|
|
3114
|
+
param: {
|
|
3115
|
+
TASKID: i,
|
|
3116
|
+
ITEMID: 1,
|
|
3117
|
+
ACTIONID: 1
|
|
3118
|
+
}
|
|
3119
|
+
}
|
|
3120
|
+
};
|
|
3121
|
+
}))).pipe(map(v => {
|
|
3122
|
+
if (v && v.length) {
|
|
3123
|
+
const res = this.http.mapBranchResult(v);
|
|
3124
|
+
forForeachNotHave = Object.entries(res).map(([key, value]) => {
|
|
3125
|
+
return { id: Number(key), value: value };
|
|
3126
|
+
});
|
|
3127
|
+
return Object.assign(forForeachHave, forForeachNotHave);
|
|
3128
|
+
}
|
|
3129
|
+
return undefined;
|
|
3130
|
+
}));
|
|
3131
|
+
}
|
|
3132
|
+
return of(forForeach);
|
|
3133
|
+
}));
|
|
3134
|
+
}
|
|
3135
|
+
checkPermissionAddElapsedtimeToTask(idTask) {
|
|
3136
|
+
let permission = Permission.get();
|
|
3137
|
+
if (permission?.tasks?.length) {
|
|
3138
|
+
let findTask = permission.tasks.find(i => i.id === idTask);
|
|
3139
|
+
if (findTask?.permission) {
|
|
3140
|
+
return of(findTask.permission['ELAPSEDTIME.ADD']);
|
|
3141
|
+
}
|
|
3142
|
+
return this.BXRestNavvyUser.current().result().pipe(mergeMap(self => {
|
|
3143
|
+
if (self) {
|
|
3144
|
+
return this.BXRestNavvyTasks.task.getaccess({
|
|
3145
|
+
id: idTask,
|
|
3146
|
+
users: [self.ID]
|
|
3147
|
+
}).result().pipe(tap(v => {
|
|
3148
|
+
if (v && v[self.ID]) {
|
|
3149
|
+
Permission.set({
|
|
3150
|
+
tasks: [{ id: idTask, permission: v[self.ID], elapsedItem: [] }]
|
|
3151
|
+
});
|
|
3152
|
+
}
|
|
3153
|
+
}), map(v => {
|
|
3154
|
+
return (v && v[self.ID]) ? v[self.ID]['ELAPSEDTIME.ADD'] : false;
|
|
3155
|
+
}));
|
|
3156
|
+
}
|
|
3157
|
+
return of(undefined);
|
|
3158
|
+
}));
|
|
3159
|
+
}
|
|
3160
|
+
return of(undefined);
|
|
3161
|
+
}
|
|
3162
|
+
checkPermissionReadTask(idTask) {
|
|
3163
|
+
let permission = Permission.get();
|
|
3164
|
+
if (permission?.tasks?.length) {
|
|
3165
|
+
let findTask = permission.tasks.find(i => i.id === idTask);
|
|
3166
|
+
if (findTask?.permission) {
|
|
3167
|
+
return of(findTask.permission.ACCEPT);
|
|
3168
|
+
}
|
|
3169
|
+
return this.BXRestNavvyUser.current().result().pipe(mergeMap(self => {
|
|
3170
|
+
if (self) {
|
|
3171
|
+
return this.BXRestNavvyTasks.task.getaccess({
|
|
3172
|
+
id: idTask,
|
|
3173
|
+
users: [self.ID]
|
|
3174
|
+
}).result().pipe(tap(v => {
|
|
3175
|
+
if (v && v[self.ID]) {
|
|
3176
|
+
Permission.set({
|
|
3177
|
+
tasks: [{ id: idTask, permission: v[self.ID], elapsedItem: [] }]
|
|
3178
|
+
});
|
|
3179
|
+
}
|
|
3180
|
+
}), map(v => {
|
|
3181
|
+
return (v && v[self.ID]) ? v[self.ID].ACCEPT : false;
|
|
3182
|
+
}));
|
|
3183
|
+
}
|
|
3184
|
+
return of(undefined);
|
|
3185
|
+
}));
|
|
3186
|
+
}
|
|
3187
|
+
return of(undefined);
|
|
3188
|
+
}
|
|
3067
3189
|
}
|
|
3068
3190
|
|
|
3069
|
-
class
|
|
3070
|
-
|
|
3071
|
-
|
|
3191
|
+
class BXRestNavvyElapseditem {
|
|
3192
|
+
constructor(BXRestElapseditem, BXRestMapElapseditem, operation) {
|
|
3193
|
+
this.BXRestElapseditem = BXRestElapseditem;
|
|
3194
|
+
this.BXRestMapElapseditem = BXRestMapElapseditem;
|
|
3195
|
+
this.operation = operation;
|
|
3196
|
+
this.Navvy = new Navvy(this.BXRestElapseditem, this.BXRestMapElapseditem);
|
|
3072
3197
|
}
|
|
3073
|
-
|
|
3074
|
-
|
|
3198
|
+
/*
|
|
3199
|
+
call(methodName: string, ...args: any[]){
|
|
3200
|
+
if (typeof this[methodName] === 'function') {
|
|
3201
|
+
return this[methodName](...args);
|
|
3202
|
+
}
|
|
3203
|
+
return this[methodName](...args);
|
|
3075
3204
|
}
|
|
3076
|
-
|
|
3077
|
-
|
|
3205
|
+
*/
|
|
3206
|
+
getList(param = {}) {
|
|
3207
|
+
if (param) {
|
|
3208
|
+
if (!param.TASKID && !param.SELECT) {
|
|
3209
|
+
param.SELECT = ['*'];
|
|
3210
|
+
}
|
|
3211
|
+
if (!param.TASKID && !param.PARAMS) {
|
|
3212
|
+
param.PARAMS = {
|
|
3213
|
+
NAV_PARAMS: {
|
|
3214
|
+
nPageSize: 50,
|
|
3215
|
+
iNumPage: 1
|
|
3216
|
+
}
|
|
3217
|
+
};
|
|
3218
|
+
}
|
|
3219
|
+
}
|
|
3220
|
+
return this.Navvy.alterPagNav(this.BXRestElapseditem.getList, param, 'Не удалось получить список затраченного на задачу(-и) времени', this.BXRestMapElapseditem.getList);
|
|
3078
3221
|
}
|
|
3079
|
-
|
|
3080
|
-
return (
|
|
3222
|
+
add(param) {
|
|
3223
|
+
return this.operation.checkPermissionReadTask(param.TASKID).pipe(mergeMap(allowedReadTask => {
|
|
3224
|
+
if (allowedReadTask) {
|
|
3225
|
+
return this.operation.checkPermissionAddElapsedtimeToTask(param.TASKID).pipe(mergeMap(allowed => {
|
|
3226
|
+
if (allowed) {
|
|
3227
|
+
return this.BXRestElapseditem.add(param);
|
|
3228
|
+
}
|
|
3229
|
+
else {
|
|
3230
|
+
return throwError(() => new Error('Отсутствуют права добавление записи затраченного времени'));
|
|
3231
|
+
}
|
|
3232
|
+
}));
|
|
3233
|
+
}
|
|
3234
|
+
else {
|
|
3235
|
+
return throwError(() => new Error('Отсутствуют права на чтение задачи'));
|
|
3236
|
+
}
|
|
3237
|
+
}));
|
|
3081
3238
|
}
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3239
|
+
/**
|
|
3240
|
+
* Обновление записи рабочего времени
|
|
3241
|
+
*
|
|
3242
|
+
* @param param
|
|
3243
|
+
*/
|
|
3244
|
+
update(param) {
|
|
3245
|
+
return this.Navvy.simple(() => this.operation.checkPermissionReadTask(param.TASKID).pipe(mergeMap(allowedReadTask => {
|
|
3246
|
+
if (allowedReadTask) {
|
|
3247
|
+
return this.isAllowedModify(param.TASKID, param.ITEMID).pipe(mergeMap(allowed => {
|
|
3248
|
+
if (allowed) {
|
|
3249
|
+
return this.BXRestElapseditem.update(param);
|
|
3250
|
+
}
|
|
3251
|
+
else {
|
|
3252
|
+
return throwError(() => new Error('Отсутствуют права на изменение записи затраченного времени'));
|
|
3253
|
+
}
|
|
3254
|
+
}));
|
|
3255
|
+
}
|
|
3256
|
+
else {
|
|
3257
|
+
return throwError(() => new Error('Отсутствуют права на чтение задачи'));
|
|
3258
|
+
}
|
|
3259
|
+
})), 'Не удалось обновить элемент списка', this.BXRestMapElapseditem.update);
|
|
3260
|
+
}
|
|
3261
|
+
/*
|
|
3262
|
+
getAll(
|
|
3263
|
+
params: RequestParamsElapsedGetList | undefined = undefined,
|
|
3264
|
+
cache = false
|
|
3265
|
+
): Observable<iHttpAnswerBX<BXRestElapsed[]> | undefined> {
|
|
3266
|
+
return this.get(params, cache)
|
|
3267
|
+
.pipe(
|
|
3268
|
+
mergeMap(items => {
|
|
3269
|
+
if (items && items.result) {
|
|
3270
|
+
if (items.next) {
|
|
3271
|
+
params = (params) ? params : {}
|
|
3272
|
+
params.PARAMS = {
|
|
3273
|
+
NAV_PARAMS: {
|
|
3274
|
+
nPageSize: this.pageSize,
|
|
3275
|
+
iNumPage: items.next / this.pageSize + 1
|
|
3276
|
+
}
|
|
3277
|
+
}
|
|
3278
|
+
return this.getAll(params, cache).pipe(
|
|
3279
|
+
map(vEnd => {
|
|
3280
|
+
if (vEnd && vEnd.result && items.result) {
|
|
3281
|
+
return merge(clone(vEnd), {result: [...items.result, ...vEnd.result]})
|
|
3282
|
+
}
|
|
3283
|
+
return items
|
|
3284
|
+
})
|
|
3285
|
+
)
|
|
3286
|
+
}
|
|
3287
|
+
return of(items)
|
|
3288
|
+
} else {
|
|
3289
|
+
return of(undefined)
|
|
3290
|
+
}
|
|
3291
|
+
})
|
|
3292
|
+
)
|
|
3293
|
+
}
|
|
3294
|
+
*/
|
|
3295
|
+
/*
|
|
3296
|
+
getCacheOff(params: RequestParamsElapsedGetList | undefined = undefined) {
|
|
3297
|
+
return this.http.post<iHttpAnswerBX<BXRestElapsedHttp[]> | undefined>
|
|
3298
|
+
(this.url.getlist, params, 'не удалось получить время по задачам')
|
|
3299
|
+
.pipe(
|
|
3300
|
+
map(v => {
|
|
3301
|
+
if (v && v.result) {
|
|
3302
|
+
const newResult: BXRestElapsed[] = []
|
|
3303
|
+
for (let task of v.result) {
|
|
3304
|
+
newResult.push(this.elapsedBXMap.AnswerElapsedGetHttpToAnswerElapsedGet(task))
|
|
3305
|
+
}
|
|
3306
|
+
return extend(v, {result: newResult}) as iHttpAnswerBX<BXRestElapsed[]>
|
|
3307
|
+
}
|
|
3308
|
+
return undefined
|
|
3309
|
+
}),
|
|
3310
|
+
tap(v => {
|
|
3311
|
+
if (v && params) {
|
|
3312
|
+
this.store.dispatch(saveHttpTaskTime({
|
|
3313
|
+
filter: clone(params),
|
|
3314
|
+
time: v
|
|
3315
|
+
}))
|
|
3316
|
+
}
|
|
3317
|
+
})
|
|
3318
|
+
)
|
|
3319
|
+
}
|
|
3320
|
+
*/
|
|
3321
|
+
isAllowedModify(idTask, idItem) {
|
|
3322
|
+
let permission = Permission.get();
|
|
3323
|
+
if (permission?.tasks?.length) {
|
|
3324
|
+
let findTask = permission.tasks.find(i => i.id === idTask);
|
|
3325
|
+
if (findTask) {
|
|
3326
|
+
let find = findTask.elapsedItem.find(i => i.id === idItem);
|
|
3327
|
+
if (find && find.verified.edit) {
|
|
3328
|
+
return of(find.edit);
|
|
3329
|
+
}
|
|
3330
|
+
}
|
|
3331
|
+
}
|
|
3332
|
+
return this.isActionAllowed({
|
|
3333
|
+
TASKID: idTask,
|
|
3334
|
+
ITEMID: 2,
|
|
3335
|
+
ACTIONID: idItem
|
|
3336
|
+
}).result().pipe(tap(v => {
|
|
3337
|
+
if (v !== undefined) {
|
|
3338
|
+
Permission.setTaskElapsedItem(idTask, {
|
|
3339
|
+
id: idItem,
|
|
3340
|
+
edit: v,
|
|
3341
|
+
del: false,
|
|
3342
|
+
verified: {
|
|
3343
|
+
edit: true,
|
|
3344
|
+
del: false,
|
|
3345
|
+
}
|
|
3346
|
+
});
|
|
3347
|
+
}
|
|
3348
|
+
}));
|
|
3349
|
+
}
|
|
3350
|
+
isAllowedRemove(idTask, idItem) {
|
|
3351
|
+
return this.isActionAllowed({
|
|
3352
|
+
TASKID: idTask,
|
|
3353
|
+
ITEMID: 3,
|
|
3354
|
+
ACTIONID: idItem
|
|
3355
|
+
}).result();
|
|
3356
|
+
}
|
|
3357
|
+
/**
|
|
3358
|
+
* idAction:
|
|
3359
|
+
* 1 - ACTION_ELAPSED_TIME_ADD
|
|
3360
|
+
* 2 - ACTION_ELAPSED_TIME_MODIFY
|
|
3361
|
+
* 3 - ACTION_ELAPSED_TIME_REMOVE
|
|
3362
|
+
* @param param
|
|
3363
|
+
*/
|
|
3364
|
+
isActionAllowed(param) {
|
|
3365
|
+
return this.Navvy.simple(() => this.operation.checkPermissionReadTask(param.TASKID).pipe(mergeMap(canRead => {
|
|
3366
|
+
if (canRead) {
|
|
3367
|
+
return this.BXRestElapseditem.isActionAllowed(param);
|
|
3368
|
+
}
|
|
3369
|
+
return throwError(() => new Error('Отсутствуют права на чтение задачи'));
|
|
3370
|
+
})));
|
|
3371
|
+
}
|
|
3372
|
+
del(param) {
|
|
3373
|
+
return this.Navvy.simple(() => this.operation.checkPermissionReadTask(param.TASKID).pipe(mergeMap(allowedReadTask => {
|
|
3374
|
+
if (allowedReadTask) {
|
|
3375
|
+
return this.isAllowedRemove(param.TASKID, param.ITEMID).pipe(mergeMap(allowed => {
|
|
3376
|
+
if (allowed) {
|
|
3377
|
+
return this.BXRestElapseditem.del(param);
|
|
3378
|
+
}
|
|
3379
|
+
else {
|
|
3380
|
+
return throwError(() => new Error('Отсутствуют права на удаление записи затраченного времени'));
|
|
3381
|
+
}
|
|
3382
|
+
}));
|
|
3383
|
+
}
|
|
3384
|
+
else {
|
|
3385
|
+
return throwError(() => new Error('Отсутствуют права на чтение задачи'));
|
|
3386
|
+
}
|
|
3387
|
+
})), 'Не удалось удалить элемент списка', v => (v === null));
|
|
3388
|
+
}
|
|
3389
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyElapseditem, deps: [{ token: BXRestTaskElapseditem }, { token: BXRestMapTaskElapseditem }, { token: BXRestNavvyOperationElapseditem }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3390
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyElapseditem, providedIn: 'root' }); }
|
|
3391
|
+
}
|
|
3392
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyElapseditem, decorators: [{
|
|
3393
|
+
type: Injectable,
|
|
3394
|
+
args: [{
|
|
3395
|
+
providedIn: 'root'
|
|
3396
|
+
}]
|
|
3397
|
+
}], ctorParameters: function () { return [{ type: BXRestTaskElapseditem }, { type: BXRestMapTaskElapseditem }, { type: BXRestNavvyOperationElapseditem }]; } });
|
|
3398
|
+
|
|
3399
|
+
class BXRestMapTaskCommentItem extends BaseMapServices {
|
|
3400
|
+
getlist(value) {
|
|
3401
|
+
return value ? value.map(i => this.iCommentTaskHtmlToiCommentTask(i)) : undefined;
|
|
3402
|
+
}
|
|
3403
|
+
get(value) {
|
|
3404
|
+
return value ? this.iCommentTaskHtmlToiCommentTask(value) : undefined;
|
|
3405
|
+
}
|
|
3406
|
+
iCommentTaskHtmlToiCommentTask(item) {
|
|
3407
|
+
if (item.ATTACHED_OBJECTS) {
|
|
3408
|
+
return {
|
|
3409
|
+
ATTACHED_OBJECTS: Object.values(item.ATTACHED_OBJECTS).map(i => {
|
|
3410
|
+
return {
|
|
3411
|
+
ATTACHMENT_ID: this.toNum(i.ATTACHMENT_ID),
|
|
3412
|
+
FILE_ID: this.toNum(i.FILE_ID),
|
|
3413
|
+
SIZE: this.toNum(i.SIZE),
|
|
3414
|
+
DOWNLOAD_URL: i.DOWNLOAD_URL,
|
|
3415
|
+
NAME: i.NAME,
|
|
3416
|
+
VIEW_URL: i.VIEW_URL
|
|
3417
|
+
};
|
|
3418
|
+
}),
|
|
3419
|
+
AUTHOR_ID: this.toNum(item.AUTHOR_ID),
|
|
3420
|
+
ID: this.toNum(item.ID),
|
|
3421
|
+
POST_DATE: this.toDate(item.POST_DATE),
|
|
3422
|
+
AUTHOR_EMAIL: item.AUTHOR_EMAIL,
|
|
3423
|
+
AUTHOR_NAME: item.AUTHOR_NAME,
|
|
3424
|
+
POST_MESSAGE: item.POST_MESSAGE,
|
|
3425
|
+
POST_MESSAGE_HTML: item.POST_MESSAGE_HTML
|
|
3426
|
+
};
|
|
3427
|
+
}
|
|
3428
|
+
else {
|
|
3429
|
+
return {
|
|
3430
|
+
AUTHOR_ID: this.toNum(item.AUTHOR_ID),
|
|
3431
|
+
ID: this.toNum(item.ID),
|
|
3432
|
+
POST_DATE: this.toDate(item.POST_DATE),
|
|
3433
|
+
AUTHOR_EMAIL: item.AUTHOR_EMAIL,
|
|
3434
|
+
AUTHOR_NAME: item.AUTHOR_NAME,
|
|
3435
|
+
POST_MESSAGE: item.POST_MESSAGE,
|
|
3436
|
+
POST_MESSAGE_HTML: item.POST_MESSAGE_HTML
|
|
3437
|
+
};
|
|
3438
|
+
}
|
|
3439
|
+
}
|
|
3440
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskCommentItem, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3441
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskCommentItem, providedIn: 'root' }); }
|
|
3442
|
+
}
|
|
3443
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskCommentItem, decorators: [{
|
|
3444
|
+
type: Injectable,
|
|
3445
|
+
args: [{
|
|
3446
|
+
providedIn: 'root'
|
|
3447
|
+
}]
|
|
3448
|
+
}] });
|
|
3449
|
+
|
|
3450
|
+
class BXRestNavvyTaskCommentItem {
|
|
3451
|
+
constructor(BXRestTaskCommentItem, mapTaskCommentItem, snackBar) {
|
|
3452
|
+
this.BXRestTaskCommentItem = BXRestTaskCommentItem;
|
|
3453
|
+
this.mapTaskCommentItem = mapTaskCommentItem;
|
|
3454
|
+
this.snackBar = snackBar;
|
|
3455
|
+
this.Navvy = new Navvy(this.BXRestTaskCommentItem, this.mapTaskCommentItem);
|
|
3456
|
+
}
|
|
3457
|
+
add(param) {
|
|
3458
|
+
return this.Navvy.simpleWithArg(this.BXRestTaskCommentItem.add, param, 'Не удалось добавить комментарий к задаче');
|
|
3459
|
+
}
|
|
3460
|
+
update(param) {
|
|
3461
|
+
return this.Navvy.simpleWithArg(this.BXRestTaskCommentItem.update, param, 'Не удалось обновить комментарий к задаче');
|
|
3462
|
+
}
|
|
3463
|
+
get(param) {
|
|
3464
|
+
return this.Navvy.simpleWithArg(this.BXRestTaskCommentItem.get, param, 'Не удалось получить комментарий к задаче', this.mapTaskCommentItem.get);
|
|
3465
|
+
}
|
|
3466
|
+
getlist(param = {
|
|
3467
|
+
FILTER: {},
|
|
3468
|
+
ORDER: {
|
|
3469
|
+
POST_DATE: 'asc'
|
|
3470
|
+
}
|
|
3471
|
+
}) {
|
|
3472
|
+
return this.Navvy.simpleWithArg(this.BXRestTaskCommentItem.getlist, param, 'Не удалось получить комментарии к задаче', this.mapTaskCommentItem.getlist);
|
|
3473
|
+
}
|
|
3474
|
+
del(param) {
|
|
3475
|
+
if (param.ITEMID > 0) {
|
|
3476
|
+
return this.get(param).result().pipe(mergeMap(v => {
|
|
3477
|
+
if (v) {
|
|
3478
|
+
return this.Navvy.simpleWithArg(this.BXRestTaskCommentItem.del, param, 'Не удалось удалить комментарий').result();
|
|
3479
|
+
}
|
|
3480
|
+
this.snackBar.warning('comment not exist');
|
|
3481
|
+
return of(false);
|
|
3482
|
+
}));
|
|
3483
|
+
}
|
|
3484
|
+
else {
|
|
3485
|
+
this.snackBar.warning('comment not exist');
|
|
3486
|
+
return of(false);
|
|
3487
|
+
}
|
|
3488
|
+
}
|
|
3489
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTaskCommentItem, deps: [{ token: BXRestTaskCommentItem }, { token: BXRestMapTaskCommentItem }, { token: SnackBarService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3490
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTaskCommentItem, providedIn: 'root' }); }
|
|
3491
|
+
}
|
|
3492
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTaskCommentItem, decorators: [{
|
|
3493
|
+
type: Injectable,
|
|
3494
|
+
args: [{
|
|
3495
|
+
providedIn: 'root'
|
|
3496
|
+
}]
|
|
3497
|
+
}], ctorParameters: function () { return [{ type: BXRestTaskCommentItem }, { type: BXRestMapTaskCommentItem }, { type: SnackBarService }]; } });
|
|
3498
|
+
|
|
3499
|
+
class BXRestMapTaskPlaner extends BaseMapServices {
|
|
3500
|
+
getList(v) {
|
|
3501
|
+
return (v) ? v.map(i => this.toNum(i)) : undefined;
|
|
3502
|
+
}
|
|
3503
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskPlaner, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3504
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskPlaner, providedIn: 'root' }); }
|
|
3505
|
+
}
|
|
3506
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskPlaner, decorators: [{
|
|
3507
|
+
type: Injectable,
|
|
3508
|
+
args: [{
|
|
3509
|
+
providedIn: 'root'
|
|
3510
|
+
}]
|
|
3511
|
+
}] });
|
|
3512
|
+
|
|
3513
|
+
class BXRestNavvyTaskPlanner {
|
|
3514
|
+
constructor(BXRestTaskPlanner, BXRestMapTaskPlaner) {
|
|
3515
|
+
this.BXRestTaskPlanner = BXRestTaskPlanner;
|
|
3516
|
+
this.BXRestMapTaskPlaner = BXRestMapTaskPlaner;
|
|
3517
|
+
this.Navvy = new Navvy(this.BXRestTaskPlanner, this.BXRestMapTaskPlaner);
|
|
3518
|
+
}
|
|
3519
|
+
getList() {
|
|
3520
|
+
return this.Navvy.simple(this.BXRestTaskPlanner.getList, 'Не удалось получить текущий клан на день', this.BXRestMapTaskPlaner.getList);
|
|
3521
|
+
}
|
|
3522
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTaskPlanner, deps: [{ token: BXRestTaskPlanner }, { token: BXRestMapTaskPlaner }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3523
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTaskPlanner, providedIn: 'root' }); }
|
|
3524
|
+
}
|
|
3525
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTaskPlanner, decorators: [{
|
|
3526
|
+
type: Injectable,
|
|
3527
|
+
args: [{
|
|
3528
|
+
providedIn: 'root'
|
|
3529
|
+
}]
|
|
3530
|
+
}], ctorParameters: function () { return [{ type: BXRestTaskPlanner }, { type: BXRestMapTaskPlaner }]; } });
|
|
3531
|
+
|
|
3532
|
+
class BXRestNavvyTask {
|
|
3533
|
+
constructor(elapseditem, commentitem, planner) {
|
|
3534
|
+
this.elapseditem = elapseditem;
|
|
3535
|
+
this.commentitem = commentitem;
|
|
3536
|
+
this.planner = planner;
|
|
3537
|
+
}
|
|
3538
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTask, deps: [{ token: BXRestNavvyElapseditem }, { token: BXRestNavvyTaskCommentItem }, { token: BXRestNavvyTaskPlanner }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3539
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTask, providedIn: 'root' }); }
|
|
3540
|
+
}
|
|
3541
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTask, decorators: [{
|
|
3542
|
+
type: Injectable,
|
|
3543
|
+
args: [{
|
|
3544
|
+
providedIn: 'root'
|
|
3545
|
+
}]
|
|
3546
|
+
}], ctorParameters: function () { return [{ type: BXRestNavvyElapseditem }, { type: BXRestNavvyTaskCommentItem }, { type: BXRestNavvyTaskPlanner }]; } });
|
|
3547
|
+
|
|
3548
|
+
class BXRestMapTasksTask extends BaseMapServices {
|
|
3549
|
+
getaccess(v) {
|
|
3550
|
+
return (v && v.allowedActions) ? v.allowedActions : undefined;
|
|
3551
|
+
}
|
|
3552
|
+
add(item) {
|
|
3553
|
+
return (item) ? this.TaskBXHttpToTaskBX(item.task) : undefined;
|
|
3554
|
+
}
|
|
3555
|
+
get(item) {
|
|
3556
|
+
return (item && item.task) ? this.TaskBXHttpToTaskBX(item.task) : undefined;
|
|
3557
|
+
}
|
|
3558
|
+
list(item) {
|
|
3559
|
+
return (item && item.tasks) ? item.tasks.map(i => this.TaskBXHttpToTaskBX(i)) : undefined;
|
|
3560
|
+
}
|
|
3561
|
+
TaskBXHttpToTaskBX(item) {
|
|
3562
|
+
let result = {};
|
|
3563
|
+
if (item.id) {
|
|
3564
|
+
result.id = this.toNum(item.id);
|
|
3565
|
+
}
|
|
3566
|
+
if (item.parentId) {
|
|
3567
|
+
result.parentId = this.toNum(item.parentId);
|
|
3568
|
+
}
|
|
3569
|
+
if (item.priority) {
|
|
3570
|
+
result.priority = this.toNum(item.priority);
|
|
3571
|
+
}
|
|
3572
|
+
if (item.status) {
|
|
3573
|
+
result.status = this.toNum(item.status);
|
|
3574
|
+
}
|
|
3575
|
+
if (item.multitask) {
|
|
3576
|
+
result.multitask = item.multitask === 'Y';
|
|
3098
3577
|
}
|
|
3099
3578
|
if (item.groupId) {
|
|
3100
3579
|
result.groupId = this.toNum(item.groupId);
|
|
@@ -3418,411 +3897,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
|
|
|
3418
3897
|
}]
|
|
3419
3898
|
}], ctorParameters: function () { return [{ type: BXRestNavvyTasksTask }]; } });
|
|
3420
3899
|
|
|
3421
|
-
class BXRestMapTaskElapseditem extends BaseMapServices {
|
|
3422
|
-
update(p) {
|
|
3423
|
-
return (p == null);
|
|
3424
|
-
}
|
|
3425
|
-
getList(v) {
|
|
3426
|
-
return (v) ? v.map(i => this.ElapsedItemHttpToElapsedItem(i)) : undefined;
|
|
3427
|
-
}
|
|
3428
|
-
ElapsedItemHttpToElapsedItem(item) {
|
|
3429
|
-
return Object.assign(item, {
|
|
3430
|
-
ID: this.toNum(item.ID),
|
|
3431
|
-
MINUTES: this.toNum(item.MINUTES),
|
|
3432
|
-
SECONDS: this.toNum(item.SECONDS),
|
|
3433
|
-
TASK_ID: this.toNum(item.TASK_ID),
|
|
3434
|
-
USER_ID: this.toNum(item.USER_ID),
|
|
3435
|
-
SOURCE: this.toNum(item.SOURCE),
|
|
3436
|
-
CREATED_DATE: this.toDate(item.CREATED_DATE),
|
|
3437
|
-
DATE_START: this.toDate(item.DATE_START),
|
|
3438
|
-
DATE_STOP: this.toDate(item.DATE_STOP),
|
|
3439
|
-
});
|
|
3440
|
-
}
|
|
3441
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskElapseditem, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3442
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskElapseditem, providedIn: 'root' }); }
|
|
3443
|
-
}
|
|
3444
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskElapseditem, decorators: [{
|
|
3445
|
-
type: Injectable,
|
|
3446
|
-
args: [{
|
|
3447
|
-
providedIn: 'root'
|
|
3448
|
-
}]
|
|
3449
|
-
}] });
|
|
3450
|
-
|
|
3451
|
-
class BXRestNavvyElapseditem {
|
|
3452
|
-
constructor(BXRestElapseditem, BXRestNavvyUser, BXRestNavvyTasks, BXRestMapElapseditem, http) {
|
|
3453
|
-
this.BXRestElapseditem = BXRestElapseditem;
|
|
3454
|
-
this.BXRestNavvyUser = BXRestNavvyUser;
|
|
3455
|
-
this.BXRestNavvyTasks = BXRestNavvyTasks;
|
|
3456
|
-
this.BXRestMapElapseditem = BXRestMapElapseditem;
|
|
3457
|
-
this.http = http;
|
|
3458
|
-
this.Navvy = new Navvy(this.BXRestElapseditem, this.BXRestMapElapseditem);
|
|
3459
|
-
this.operation = new BXRestNavvyOperationElapseditem(this.http, this, this.BXRestMapElapseditem);
|
|
3460
|
-
}
|
|
3461
|
-
/*
|
|
3462
|
-
call(methodName: string, ...args: any[]){
|
|
3463
|
-
if (typeof this[methodName] === 'function') {
|
|
3464
|
-
return this[methodName](...args);
|
|
3465
|
-
}
|
|
3466
|
-
return this[methodName](...args);
|
|
3467
|
-
}
|
|
3468
|
-
*/
|
|
3469
|
-
getList(param = {}) {
|
|
3470
|
-
if (param) {
|
|
3471
|
-
if (!param.TASKID && !param.SELECT) {
|
|
3472
|
-
param.SELECT = ['*'];
|
|
3473
|
-
}
|
|
3474
|
-
if (!param.TASKID && !param.PARAMS) {
|
|
3475
|
-
param.PARAMS = {
|
|
3476
|
-
NAV_PARAMS: {
|
|
3477
|
-
nPageSize: 50,
|
|
3478
|
-
iNumPage: 1
|
|
3479
|
-
}
|
|
3480
|
-
};
|
|
3481
|
-
}
|
|
3482
|
-
}
|
|
3483
|
-
return this.Navvy.alterPagNav(this.BXRestElapseditem.getList, param, 'Не удалось получить список затраченного на задачу(-и) времени', this.BXRestMapElapseditem.getList);
|
|
3484
|
-
}
|
|
3485
|
-
add(param) {
|
|
3486
|
-
return this.checkPermissionReadTask(param.TASKID).pipe(mergeMap(allowedReadTask => {
|
|
3487
|
-
if (allowedReadTask) {
|
|
3488
|
-
return this.checkPermissionAddTask(param.TASKID).pipe(mergeMap(allowed => {
|
|
3489
|
-
if (allowed) {
|
|
3490
|
-
return this.BXRestElapseditem.add(param);
|
|
3491
|
-
}
|
|
3492
|
-
else {
|
|
3493
|
-
return throwError(() => new Error('Отсутствуют права добавление записи затраченного времени'));
|
|
3494
|
-
}
|
|
3495
|
-
}));
|
|
3496
|
-
}
|
|
3497
|
-
else {
|
|
3498
|
-
return throwError(() => new Error('Отсутствуют права на чтение задачи'));
|
|
3499
|
-
}
|
|
3500
|
-
}));
|
|
3501
|
-
}
|
|
3502
|
-
update(param) {
|
|
3503
|
-
return this.Navvy.simple(() => this.checkPermissionReadTask(param.TASKID).pipe(mergeMap(allowedReadTask => {
|
|
3504
|
-
if (allowedReadTask) {
|
|
3505
|
-
return this.isAllowedModify(param.TASKID, param.ITEMID).pipe(mergeMap(allowed => {
|
|
3506
|
-
if (allowed) {
|
|
3507
|
-
return this.BXRestElapseditem.update(param);
|
|
3508
|
-
}
|
|
3509
|
-
else {
|
|
3510
|
-
return throwError(() => new Error('Отсутствуют права на изменение записи затраченного времени'));
|
|
3511
|
-
}
|
|
3512
|
-
}));
|
|
3513
|
-
}
|
|
3514
|
-
else {
|
|
3515
|
-
return throwError(() => new Error('Отсутствуют права на чтение задачи'));
|
|
3516
|
-
}
|
|
3517
|
-
})), 'Не удалось обновить элемент списка', this.BXRestMapElapseditem.update);
|
|
3518
|
-
}
|
|
3519
|
-
/*
|
|
3520
|
-
getAll(
|
|
3521
|
-
params: RequestParamsElapsedGetList | undefined = undefined,
|
|
3522
|
-
cache = false
|
|
3523
|
-
): Observable<iHttpAnswerBX<BXRestElapsed[]> | undefined> {
|
|
3524
|
-
return this.get(params, cache)
|
|
3525
|
-
.pipe(
|
|
3526
|
-
mergeMap(items => {
|
|
3527
|
-
if (items && items.result) {
|
|
3528
|
-
if (items.next) {
|
|
3529
|
-
params = (params) ? params : {}
|
|
3530
|
-
params.PARAMS = {
|
|
3531
|
-
NAV_PARAMS: {
|
|
3532
|
-
nPageSize: this.pageSize,
|
|
3533
|
-
iNumPage: items.next / this.pageSize + 1
|
|
3534
|
-
}
|
|
3535
|
-
}
|
|
3536
|
-
return this.getAll(params, cache).pipe(
|
|
3537
|
-
map(vEnd => {
|
|
3538
|
-
if (vEnd && vEnd.result && items.result) {
|
|
3539
|
-
return merge(clone(vEnd), {result: [...items.result, ...vEnd.result]})
|
|
3540
|
-
}
|
|
3541
|
-
return items
|
|
3542
|
-
})
|
|
3543
|
-
)
|
|
3544
|
-
}
|
|
3545
|
-
return of(items)
|
|
3546
|
-
} else {
|
|
3547
|
-
return of(undefined)
|
|
3548
|
-
}
|
|
3549
|
-
})
|
|
3550
|
-
)
|
|
3551
|
-
}
|
|
3552
|
-
*/
|
|
3553
|
-
/*
|
|
3554
|
-
getCacheOff(params: RequestParamsElapsedGetList | undefined = undefined) {
|
|
3555
|
-
return this.http.post<iHttpAnswerBX<BXRestElapsedHttp[]> | undefined>
|
|
3556
|
-
(this.url.getlist, params, 'не удалось получить время по задачам')
|
|
3557
|
-
.pipe(
|
|
3558
|
-
map(v => {
|
|
3559
|
-
if (v && v.result) {
|
|
3560
|
-
const newResult: BXRestElapsed[] = []
|
|
3561
|
-
for (let task of v.result) {
|
|
3562
|
-
newResult.push(this.elapsedBXMap.AnswerElapsedGetHttpToAnswerElapsedGet(task))
|
|
3563
|
-
}
|
|
3564
|
-
return extend(v, {result: newResult}) as iHttpAnswerBX<BXRestElapsed[]>
|
|
3565
|
-
}
|
|
3566
|
-
return undefined
|
|
3567
|
-
}),
|
|
3568
|
-
tap(v => {
|
|
3569
|
-
if (v && params) {
|
|
3570
|
-
this.store.dispatch(saveHttpTaskTime({
|
|
3571
|
-
filter: clone(params),
|
|
3572
|
-
time: v
|
|
3573
|
-
}))
|
|
3574
|
-
}
|
|
3575
|
-
})
|
|
3576
|
-
)
|
|
3577
|
-
}
|
|
3578
|
-
*/
|
|
3579
|
-
isAllowedModify(idTask, idItem) {
|
|
3580
|
-
let permission = Permission.get();
|
|
3581
|
-
if (permission?.tasks?.length) {
|
|
3582
|
-
let findTask = permission.tasks.find(i => i.id === idTask);
|
|
3583
|
-
if (findTask) {
|
|
3584
|
-
let find = findTask.elapsedItem.find(i => i.id === idItem);
|
|
3585
|
-
if (find && find.verified.edit) {
|
|
3586
|
-
return of(find.edit);
|
|
3587
|
-
}
|
|
3588
|
-
}
|
|
3589
|
-
}
|
|
3590
|
-
return this.isActionAllowed({
|
|
3591
|
-
TASKID: idTask,
|
|
3592
|
-
ITEMID: 2,
|
|
3593
|
-
ACTIONID: idItem
|
|
3594
|
-
}).result().pipe(tap(v => {
|
|
3595
|
-
if (v !== undefined) {
|
|
3596
|
-
Permission.setTaskElapsedItem(idTask, {
|
|
3597
|
-
id: idItem,
|
|
3598
|
-
edit: v,
|
|
3599
|
-
del: false,
|
|
3600
|
-
verified: {
|
|
3601
|
-
edit: true,
|
|
3602
|
-
del: false,
|
|
3603
|
-
}
|
|
3604
|
-
});
|
|
3605
|
-
}
|
|
3606
|
-
}));
|
|
3607
|
-
}
|
|
3608
|
-
isAllowedRemove(idTask, idItem) {
|
|
3609
|
-
return this.isActionAllowed({
|
|
3610
|
-
TASKID: idTask,
|
|
3611
|
-
ITEMID: 3,
|
|
3612
|
-
ACTIONID: idItem
|
|
3613
|
-
}).result();
|
|
3614
|
-
}
|
|
3615
|
-
/**
|
|
3616
|
-
* idAction:
|
|
3617
|
-
* 1 - ACTION_ELAPSED_TIME_ADD
|
|
3618
|
-
* 2 - ACTION_ELAPSED_TIME_MODIFY
|
|
3619
|
-
* 3 - ACTION_ELAPSED_TIME_REMOVE
|
|
3620
|
-
* @param param
|
|
3621
|
-
*/
|
|
3622
|
-
isActionAllowed(param) {
|
|
3623
|
-
return this.Navvy.simple(() => this.checkPermissionReadTask(param.TASKID).pipe(mergeMap(canRead => {
|
|
3624
|
-
if (canRead) {
|
|
3625
|
-
return this.BXRestElapseditem.isActionAllowed(param);
|
|
3626
|
-
}
|
|
3627
|
-
return throwError(() => new Error('Отсутствуют права на чтение задачи'));
|
|
3628
|
-
})));
|
|
3629
|
-
}
|
|
3630
|
-
checkPermissionAddTask(idTask) {
|
|
3631
|
-
let permission = Permission.get();
|
|
3632
|
-
if (permission?.tasks?.length) {
|
|
3633
|
-
let findTask = permission.tasks.find(i => i.id === idTask);
|
|
3634
|
-
if (findTask?.permission) {
|
|
3635
|
-
return of(findTask.permission['ELAPSEDTIME.ADD']);
|
|
3636
|
-
}
|
|
3637
|
-
return this.BXRestNavvyUser.current().result().pipe(mergeMap(self => {
|
|
3638
|
-
if (self) {
|
|
3639
|
-
return this.BXRestNavvyTasks.task.getaccess({
|
|
3640
|
-
id: idTask,
|
|
3641
|
-
users: [self.ID]
|
|
3642
|
-
}).result().pipe(tap(v => {
|
|
3643
|
-
if (v && v[self.ID]) {
|
|
3644
|
-
Permission.set({
|
|
3645
|
-
tasks: [{ id: idTask, permission: v[self.ID], elapsedItem: [] }]
|
|
3646
|
-
});
|
|
3647
|
-
}
|
|
3648
|
-
}), map(v => {
|
|
3649
|
-
return (v && v[self.ID]) ? v[self.ID]['ELAPSEDTIME.ADD'] : false;
|
|
3650
|
-
}));
|
|
3651
|
-
}
|
|
3652
|
-
return of(undefined);
|
|
3653
|
-
}));
|
|
3654
|
-
}
|
|
3655
|
-
return of(undefined);
|
|
3656
|
-
}
|
|
3657
|
-
checkPermissionReadTask(idTask) {
|
|
3658
|
-
let permission = Permission.get();
|
|
3659
|
-
if (permission?.tasks?.length) {
|
|
3660
|
-
let findTask = permission.tasks.find(i => i.id === idTask);
|
|
3661
|
-
if (findTask?.permission) {
|
|
3662
|
-
return of(findTask.permission.ACCEPT);
|
|
3663
|
-
}
|
|
3664
|
-
return this.BXRestNavvyUser.current().result().pipe(mergeMap(self => {
|
|
3665
|
-
if (self) {
|
|
3666
|
-
return this.BXRestNavvyTasks.task.getaccess({
|
|
3667
|
-
id: idTask,
|
|
3668
|
-
users: [self.ID]
|
|
3669
|
-
}).result().pipe(tap(v => {
|
|
3670
|
-
if (v && v[self.ID]) {
|
|
3671
|
-
Permission.set({
|
|
3672
|
-
tasks: [{ id: idTask, permission: v[self.ID], elapsedItem: [] }]
|
|
3673
|
-
});
|
|
3674
|
-
}
|
|
3675
|
-
}), map(v => {
|
|
3676
|
-
return (v && v[self.ID]) ? v[self.ID].ACCEPT : false;
|
|
3677
|
-
}));
|
|
3678
|
-
}
|
|
3679
|
-
return of(undefined);
|
|
3680
|
-
}));
|
|
3681
|
-
}
|
|
3682
|
-
return of(undefined);
|
|
3683
|
-
}
|
|
3684
|
-
del(param) {
|
|
3685
|
-
return this.Navvy.simple(() => this.checkPermissionReadTask(param.TASKID).pipe(mergeMap(allowedReadTask => {
|
|
3686
|
-
if (allowedReadTask) {
|
|
3687
|
-
return this.isAllowedRemove(param.TASKID, param.ITEMID).pipe(mergeMap(allowed => {
|
|
3688
|
-
if (allowed) {
|
|
3689
|
-
return this.BXRestElapseditem.del(param);
|
|
3690
|
-
}
|
|
3691
|
-
else {
|
|
3692
|
-
return throwError(() => new Error('Отсутствуют права на удаление записи затраченного времени'));
|
|
3693
|
-
}
|
|
3694
|
-
}));
|
|
3695
|
-
}
|
|
3696
|
-
else {
|
|
3697
|
-
return throwError(() => new Error('Отсутствуют права на чтение задачи'));
|
|
3698
|
-
}
|
|
3699
|
-
})), 'Не удалось удалить элемент списка', v => (v === null));
|
|
3700
|
-
}
|
|
3701
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyElapseditem, deps: [{ token: BXRestTaskElapseditem }, { token: BXRestNavvyUser }, { token: BXRestNavvyTasks }, { token: BXRestMapTaskElapseditem }, { token: HttpBXServices }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3702
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyElapseditem, providedIn: 'root' }); }
|
|
3703
|
-
}
|
|
3704
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyElapseditem, decorators: [{
|
|
3705
|
-
type: Injectable,
|
|
3706
|
-
args: [{
|
|
3707
|
-
providedIn: 'root'
|
|
3708
|
-
}]
|
|
3709
|
-
}], ctorParameters: function () { return [{ type: BXRestTaskElapseditem }, { type: BXRestNavvyUser }, { type: BXRestNavvyTasks }, { type: BXRestMapTaskElapseditem }, { type: HttpBXServices }]; } });
|
|
3710
|
-
|
|
3711
|
-
class BXRestMapTaskCommentItem extends BaseMapServices {
|
|
3712
|
-
getlist(value) {
|
|
3713
|
-
return value ? value.map(i => this.iCommentTaskHtmlToiCommentTask(i)) : undefined;
|
|
3714
|
-
}
|
|
3715
|
-
get(value) {
|
|
3716
|
-
return value ? this.iCommentTaskHtmlToiCommentTask(value) : undefined;
|
|
3717
|
-
}
|
|
3718
|
-
iCommentTaskHtmlToiCommentTask(item) {
|
|
3719
|
-
if (item.ATTACHED_OBJECTS) {
|
|
3720
|
-
return {
|
|
3721
|
-
ATTACHED_OBJECTS: Object.values(item.ATTACHED_OBJECTS).map(i => {
|
|
3722
|
-
return {
|
|
3723
|
-
ATTACHMENT_ID: this.toNum(i.ATTACHMENT_ID),
|
|
3724
|
-
FILE_ID: this.toNum(i.FILE_ID),
|
|
3725
|
-
SIZE: this.toNum(i.SIZE),
|
|
3726
|
-
DOWNLOAD_URL: i.DOWNLOAD_URL,
|
|
3727
|
-
NAME: i.NAME,
|
|
3728
|
-
VIEW_URL: i.VIEW_URL
|
|
3729
|
-
};
|
|
3730
|
-
}),
|
|
3731
|
-
AUTHOR_ID: this.toNum(item.AUTHOR_ID),
|
|
3732
|
-
ID: this.toNum(item.ID),
|
|
3733
|
-
POST_DATE: this.toDate(item.POST_DATE),
|
|
3734
|
-
AUTHOR_EMAIL: item.AUTHOR_EMAIL,
|
|
3735
|
-
AUTHOR_NAME: item.AUTHOR_NAME,
|
|
3736
|
-
POST_MESSAGE: item.POST_MESSAGE,
|
|
3737
|
-
POST_MESSAGE_HTML: item.POST_MESSAGE_HTML
|
|
3738
|
-
};
|
|
3739
|
-
}
|
|
3740
|
-
else {
|
|
3741
|
-
return {
|
|
3742
|
-
AUTHOR_ID: this.toNum(item.AUTHOR_ID),
|
|
3743
|
-
ID: this.toNum(item.ID),
|
|
3744
|
-
POST_DATE: this.toDate(item.POST_DATE),
|
|
3745
|
-
AUTHOR_EMAIL: item.AUTHOR_EMAIL,
|
|
3746
|
-
AUTHOR_NAME: item.AUTHOR_NAME,
|
|
3747
|
-
POST_MESSAGE: item.POST_MESSAGE,
|
|
3748
|
-
POST_MESSAGE_HTML: item.POST_MESSAGE_HTML
|
|
3749
|
-
};
|
|
3750
|
-
}
|
|
3751
|
-
}
|
|
3752
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskCommentItem, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3753
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskCommentItem, providedIn: 'root' }); }
|
|
3754
|
-
}
|
|
3755
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestMapTaskCommentItem, decorators: [{
|
|
3756
|
-
type: Injectable,
|
|
3757
|
-
args: [{
|
|
3758
|
-
providedIn: 'root'
|
|
3759
|
-
}]
|
|
3760
|
-
}] });
|
|
3761
|
-
|
|
3762
|
-
class BXRestNavvyTaskCommentItem {
|
|
3763
|
-
constructor(BXRestTaskCommentItem, mapTaskCommentItem, snackBar) {
|
|
3764
|
-
this.BXRestTaskCommentItem = BXRestTaskCommentItem;
|
|
3765
|
-
this.mapTaskCommentItem = mapTaskCommentItem;
|
|
3766
|
-
this.snackBar = snackBar;
|
|
3767
|
-
this.Navvy = new Navvy(this.BXRestTaskCommentItem, this.mapTaskCommentItem);
|
|
3768
|
-
}
|
|
3769
|
-
add(param) {
|
|
3770
|
-
return this.Navvy.simpleWithArg(this.BXRestTaskCommentItem.add, param, 'Не удалось добавить комментарий к задаче');
|
|
3771
|
-
}
|
|
3772
|
-
update(param) {
|
|
3773
|
-
return this.Navvy.simpleWithArg(this.BXRestTaskCommentItem.update, param, 'Не удалось обновить комментарий к задаче');
|
|
3774
|
-
}
|
|
3775
|
-
get(param) {
|
|
3776
|
-
return this.Navvy.simpleWithArg(this.BXRestTaskCommentItem.get, param, 'Не удалось получить комментарий к задаче', this.mapTaskCommentItem.get);
|
|
3777
|
-
}
|
|
3778
|
-
getlist(param = {
|
|
3779
|
-
FILTER: {},
|
|
3780
|
-
ORDER: {
|
|
3781
|
-
POST_DATE: 'asc'
|
|
3782
|
-
}
|
|
3783
|
-
}) {
|
|
3784
|
-
return this.Navvy.simpleWithArg(this.BXRestTaskCommentItem.getlist, param, 'Не удалось получить комментарии к задаче', this.mapTaskCommentItem.getlist);
|
|
3785
|
-
}
|
|
3786
|
-
del(param) {
|
|
3787
|
-
if (param.ITEMID > 0) {
|
|
3788
|
-
return this.get(param).result().pipe(mergeMap(v => {
|
|
3789
|
-
if (v) {
|
|
3790
|
-
return this.Navvy.simpleWithArg(this.BXRestTaskCommentItem.del, param, 'Не удалось удалить комментарий').result();
|
|
3791
|
-
}
|
|
3792
|
-
this.snackBar.warning('comment not exist');
|
|
3793
|
-
return of(false);
|
|
3794
|
-
}));
|
|
3795
|
-
}
|
|
3796
|
-
else {
|
|
3797
|
-
this.snackBar.warning('comment not exist');
|
|
3798
|
-
return of(false);
|
|
3799
|
-
}
|
|
3800
|
-
}
|
|
3801
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTaskCommentItem, deps: [{ token: BXRestTaskCommentItem }, { token: BXRestMapTaskCommentItem }, { token: SnackBarService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3802
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTaskCommentItem, providedIn: 'root' }); }
|
|
3803
|
-
}
|
|
3804
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTaskCommentItem, decorators: [{
|
|
3805
|
-
type: Injectable,
|
|
3806
|
-
args: [{
|
|
3807
|
-
providedIn: 'root'
|
|
3808
|
-
}]
|
|
3809
|
-
}], ctorParameters: function () { return [{ type: BXRestTaskCommentItem }, { type: BXRestMapTaskCommentItem }, { type: SnackBarService }]; } });
|
|
3810
|
-
|
|
3811
|
-
class BXRestNavvyTask {
|
|
3812
|
-
constructor(elapseditem, commentitem) {
|
|
3813
|
-
this.elapseditem = elapseditem;
|
|
3814
|
-
this.commentitem = commentitem;
|
|
3815
|
-
}
|
|
3816
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTask, deps: [{ token: BXRestNavvyElapseditem }, { token: BXRestNavvyTaskCommentItem }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3817
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTask, providedIn: 'root' }); }
|
|
3818
|
-
}
|
|
3819
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: BXRestNavvyTask, decorators: [{
|
|
3820
|
-
type: Injectable,
|
|
3821
|
-
args: [{
|
|
3822
|
-
providedIn: 'root'
|
|
3823
|
-
}]
|
|
3824
|
-
}], ctorParameters: function () { return [{ type: BXRestNavvyElapseditem }, { type: BXRestNavvyTaskCommentItem }]; } });
|
|
3825
|
-
|
|
3826
3900
|
class BXRestMapDiskBase extends BaseMapServices {
|
|
3827
3901
|
separationFoldersAndFiles(arr) {
|
|
3828
3902
|
let result = { file: [], folder: [] };
|