|
@@ -30,6 +30,9 @@ import { EntityesService } from "#modules/entities-management/entityes-service.j
|
|
|
import { RouterUtils } from "#utils/router-utils.js";
|
|
|
import { TasksManagementApi } from "#api/tasks-management-api.js";
|
|
|
import { CheckPermissionsService } from "#modules/permissions-management/check-permissions-service.js";
|
|
|
+import { ApiError } from "#exceptions/api-error.js";
|
|
|
+import { logger } from "#plugins/logger.js";
|
|
|
+import { AllPermissionsValues } from "#modules/permissions-management/permissions-types.js";
|
|
|
|
|
|
dayjs.extend(utc);
|
|
|
|
|
@@ -82,6 +85,10 @@ router.post("/create-task", async (req, res, next) => {
|
|
|
(${taskId}, ${executorId})`,
|
|
|
);
|
|
|
}
|
|
|
+
|
|
|
+ RouterUtils.validAndSendResponse(TasksManagementApi.ZUpdateTask.res, res, {
|
|
|
+ code: "success",
|
|
|
+ });
|
|
|
} catch (e) {
|
|
|
next(e);
|
|
|
}
|
|
@@ -92,7 +99,6 @@ router.post("/update-task", async (req, res, next) => {
|
|
|
// валидация запроса
|
|
|
const {
|
|
|
taskId,
|
|
|
-
|
|
|
endDate,
|
|
|
startDate,
|
|
|
isTodo,
|
|
@@ -116,37 +122,43 @@ router.post("/update-task", async (req, res, next) => {
|
|
|
// edit task
|
|
|
await db.query(
|
|
|
sql.unsafe`
|
|
|
- update tasks_management.tasks
|
|
|
- set
|
|
|
+ UPDATE tasks_management.tasks
|
|
|
+ SET
|
|
|
${sql.join(
|
|
|
[
|
|
|
- name !== undefined ? `name = ${name}` : "name = name",
|
|
|
+ name !== undefined
|
|
|
+ ? sql.fragment`name = ${name}`
|
|
|
+ : sql.fragment`name = name`,
|
|
|
startDate !== undefined
|
|
|
- ? `start_date = ${startDate}`
|
|
|
- : "start_date = start_date",
|
|
|
+ ? sql.fragment`start_date = ${startDate}`
|
|
|
+ : sql.fragment`start_date = start_date`,
|
|
|
endDate !== undefined
|
|
|
- ? `end_date = ${endDate}`
|
|
|
- : "end_date = end_date",
|
|
|
- isTodo !== undefined ? `is_todo = ${isTodo}` : "is_todo = is_todo",
|
|
|
+ ? sql.fragment`end_date = ${endDate}`
|
|
|
+ : sql.fragment`end_date = end_date`,
|
|
|
+ isTodo !== undefined
|
|
|
+ ? sql.fragment`is_todo = ${isTodo}`
|
|
|
+ : sql.fragment`is_todo = is_todo`,
|
|
|
programPointId !== undefined
|
|
|
- ? `program_point_id = ${programPointId}`
|
|
|
- : "program_point_id = program_point_id",
|
|
|
- roomId !== undefined ? `room_id = ${roomId}` : "room_id = room_id",
|
|
|
+ ? sql.fragment`program_point_id = ${programPointId}`
|
|
|
+ : sql.fragment`program_point_id = program_point_id`,
|
|
|
+ roomId !== undefined
|
|
|
+ ? sql.fragment`room_id = ${roomId}`
|
|
|
+ : sql.fragment`room_id = room_id`,
|
|
|
accountableId !== undefined
|
|
|
- ? `accountable_id = ${accountableId}`
|
|
|
- : "accountable_id = accountable_id",
|
|
|
+ ? sql.fragment`accountable_id = ${accountableId}`
|
|
|
+ : sql.fragment`accountable_id = accountable_id`,
|
|
|
],
|
|
|
sql.fragment`, `,
|
|
|
)}
|
|
|
- where
|
|
|
- task_id = ${taskId}`,
|
|
|
+ WHERE task_id = ${taskId}
|
|
|
+ `,
|
|
|
);
|
|
|
|
|
|
- if (executors) {
|
|
|
+ if (executors && executors.length) {
|
|
|
// del executors
|
|
|
await db.query(
|
|
|
sql.unsafe`
|
|
|
- delete from task_management.task_executors
|
|
|
+ delete from tasks_management.task_executors
|
|
|
where
|
|
|
task_id = ${taskId}`,
|
|
|
);
|
|
@@ -171,7 +183,7 @@ router.post("/update-task", async (req, res, next) => {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
-router.post("/get-block-tasks", async (req, res, next) => {
|
|
|
+router.post("/get-task-block", async (req, res, next) => {
|
|
|
try {
|
|
|
// валидация запроса
|
|
|
const { taskBlockId } = TasksManagementApi.ZGetBlockTasks.req.parse(
|
|
@@ -180,7 +192,33 @@ router.post("/get-block-tasks", async (req, res, next) => {
|
|
|
|
|
|
const userId = UserUtils.getUserFromReq(req).userId;
|
|
|
|
|
|
- const REQUIRED_PERMISSION = "task_view_true";
|
|
|
+ CheckPermissionsService.checkEntityPermission(
|
|
|
+ taskBlockId,
|
|
|
+ userId,
|
|
|
+ "view_task_block",
|
|
|
+ "view_task_block_true",
|
|
|
+ );
|
|
|
+
|
|
|
+ const taskBlock = await db.maybeOne(
|
|
|
+ sql.type(
|
|
|
+ z.object({
|
|
|
+ task_block_id: ZDbShema.tasks_management.task_blocks.task_block_id,
|
|
|
+ name: ZDbShema.tasks_management.task_blocks.name,
|
|
|
+ }),
|
|
|
+ )`
|
|
|
+ select
|
|
|
+ task_block_id,
|
|
|
+ name
|
|
|
+ from tasks_management.task_blocks
|
|
|
+ where task_block_id = ${taskBlockId}
|
|
|
+ `,
|
|
|
+ );
|
|
|
+
|
|
|
+ if (!taskBlock) {
|
|
|
+ throw ApiError.BadRequest("Task block not found", "Task block not found");
|
|
|
+ }
|
|
|
+
|
|
|
+ const REQUIRED_PERMISSION: AllPermissionsValues = "view_task_true";
|
|
|
const ZDbTasks = ZDbShema.tasks_management.tasks;
|
|
|
const tasks = await db.any(
|
|
|
sql.type(
|
|
@@ -207,7 +245,9 @@ router.post("/get-block-tasks", async (req, res, next) => {
|
|
|
t.task_block_id,
|
|
|
t.program_point_id,
|
|
|
t.room_id,
|
|
|
- ARRAY_AGG(te.user_id) as executors
|
|
|
+ coalesce(ARRAY_REMOVE(ARRAY_AGG(te.user_id),
|
|
|
+ null),
|
|
|
+ '{}') as executors
|
|
|
from
|
|
|
tasks_management.tasks t
|
|
|
-- executors
|
|
@@ -220,11 +260,11 @@ router.post("/get-block-tasks", async (req, res, next) => {
|
|
|
-- perm
|
|
|
cup.user_id = ${userId}
|
|
|
and
|
|
|
- cup.permission_value_id = ${REQUIRED_PERMISSION}
|
|
|
+ cup.permission_value_id = ${REQUIRED_PERMISSION}
|
|
|
and
|
|
|
--
|
|
|
- t.task_block_id = ${taskBlockId}
|
|
|
- -- для executors
|
|
|
+ t.task_block_id = ${taskBlockId}
|
|
|
+ -- для executors
|
|
|
group by
|
|
|
t.task_id,
|
|
|
t.name,
|
|
@@ -238,11 +278,19 @@ router.post("/get-block-tasks", async (req, res, next) => {
|
|
|
`,
|
|
|
);
|
|
|
|
|
|
+ logger.info(tasks);
|
|
|
+ logger.info({ userId, taskBlockId, REQUIRED_PERMISSION });
|
|
|
+
|
|
|
// res
|
|
|
RouterUtils.validAndSendResponse(
|
|
|
TasksManagementApi.ZGetBlockTasks.res,
|
|
|
res,
|
|
|
- { code: "success", tasks: [...tasks] },
|
|
|
+ {
|
|
|
+ code: "success",
|
|
|
+ task_block_id: taskBlock.task_block_id,
|
|
|
+ name: taskBlock.name,
|
|
|
+ tasks: [...tasks],
|
|
|
+ },
|
|
|
);
|
|
|
} catch (e) {
|
|
|
next(e);
|