refactor: separate endpoint for accepted user task
This commit is contained in:
parent
7a81c614c1
commit
e2e97b30f0
1 changed files with 91 additions and 23 deletions
|
|
@ -15,7 +15,13 @@ import {
|
|||
} from "tsoa";
|
||||
import prisma from "../db";
|
||||
import { notFoundError } from "../utils/error";
|
||||
import { RequestDataStatus, TaskOrderStatus, TaskStatus } from "@prisma/client";
|
||||
import {
|
||||
Prisma,
|
||||
RequestDataStatus,
|
||||
TaskOrderStatus,
|
||||
TaskStatus,
|
||||
UserTaskStatus,
|
||||
} from "@prisma/client";
|
||||
import { RequestWithUser } from "../interfaces/user";
|
||||
import {
|
||||
branchRelationPermInclude,
|
||||
|
|
@ -25,6 +31,7 @@ import {
|
|||
import HttpError from "../interfaces/http-error";
|
||||
import HttpStatus from "../interfaces/http-status";
|
||||
import { deleteFile, fileLocation, getFile, getPresigned, listFile, setFile } from "../utils/minio";
|
||||
import { queryOrNot } from "../utils/relation";
|
||||
|
||||
const MANAGE_ROLES = ["system", "head_of_admin", "admin", "document_checker"];
|
||||
|
||||
|
|
@ -86,36 +93,38 @@ export class TaskController extends Controller {
|
|||
@Query() query: string = "",
|
||||
@Query() page = 1,
|
||||
@Query() pageSize = 30,
|
||||
@Query() assignedByUserId?: string,
|
||||
@Query() assignedUserId?: string,
|
||||
@Query() taskOrderStatus?: TaskOrderStatus,
|
||||
@Body() body?: { code?: string[] },
|
||||
) {
|
||||
const where = {
|
||||
taskOrderStatus,
|
||||
registeredBranch: { OR: permissionCondCompany(req.user) },
|
||||
taskList: assignedUserId
|
||||
? {
|
||||
some: {
|
||||
requestWorkStep: { responsibleUserId: assignedUserId },
|
||||
},
|
||||
}
|
||||
: undefined,
|
||||
code: body?.code ? { in: body.code } : undefined,
|
||||
OR: queryOrNot(query, [
|
||||
{ code: { contains: query, mode: "insensitive" } },
|
||||
{ taskName: { contains: query } },
|
||||
{ contactName: { contains: query } },
|
||||
{ contactTel: { contains: query } },
|
||||
]),
|
||||
} satisfies Prisma.TaskOrderWhereInput;
|
||||
|
||||
const [result, total] = await prisma.$transaction([
|
||||
prisma.taskOrder.findMany({
|
||||
where: {
|
||||
taskOrderStatus,
|
||||
registeredBranch: { OR: permissionCondCompany(req.user) },
|
||||
taskList: assignedByUserId
|
||||
? {
|
||||
some: {
|
||||
requestWorkStep: { responsibleUserId: assignedByUserId },
|
||||
},
|
||||
}
|
||||
: undefined,
|
||||
code: body?.code ? { in: body.code } : undefined,
|
||||
OR: [
|
||||
{ code: { contains: query, mode: "insensitive" } },
|
||||
{ taskName: { contains: query } },
|
||||
{ contactName: { contains: query } },
|
||||
{ contactTel: { contains: query } },
|
||||
],
|
||||
},
|
||||
where,
|
||||
include: {
|
||||
institution: true,
|
||||
createdBy: true,
|
||||
},
|
||||
}),
|
||||
prisma.taskOrder.count(),
|
||||
prisma.taskOrder.count({ where }),
|
||||
]);
|
||||
|
||||
return { result, total, page, pageSize };
|
||||
|
|
@ -126,14 +135,14 @@ export class TaskController extends Controller {
|
|||
async getTaskOrder(
|
||||
@Request() req: RequestWithUser,
|
||||
@Path() taskId: string,
|
||||
@Query() taskAssignedByUserId?: string,
|
||||
@Query() taskAssignedUserId?: string,
|
||||
) {
|
||||
const record = await prisma.taskOrder.findFirst({
|
||||
where: { id: taskId, registeredBranch: { OR: permissionCondCompany(req.user) } },
|
||||
include: {
|
||||
taskList: {
|
||||
where: {
|
||||
requestWorkStep: { responsibleUserId: taskAssignedByUserId },
|
||||
requestWorkStep: { responsibleUserId: taskAssignedUserId },
|
||||
},
|
||||
include: {
|
||||
requestWorkStep: {
|
||||
|
|
@ -379,6 +388,12 @@ export class TaskActionController extends Controller {
|
|||
where: { id: taskId },
|
||||
data: {
|
||||
taskOrderStatus: TaskOrderStatus.InProgress,
|
||||
userTask: {
|
||||
create: {
|
||||
userId: req.user.sub,
|
||||
userTaskStatus: UserTaskStatus.Accept,
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
prisma.task.updateMany({
|
||||
|
|
@ -487,3 +502,56 @@ export class TaskOrderAttachmentController extends Controller {
|
|||
return await deleteFile(fileLocation.task.attachment(taskId, name));
|
||||
}
|
||||
}
|
||||
|
||||
@Route("api/v1/user-task")
|
||||
@Tags("Task Order")
|
||||
export class UserTaskController extends Controller {
|
||||
@Get()
|
||||
@Security("keycloak")
|
||||
async getUserTask(
|
||||
@Request() req: RequestWithUser,
|
||||
@Query() query: string = "",
|
||||
@Query() page = 1,
|
||||
@Query() pageSize = 30,
|
||||
@Query() userTaskStatus?: UserTaskStatus,
|
||||
) {
|
||||
const where = {
|
||||
taskList: {
|
||||
some: {
|
||||
requestWorkStep: { responsibleUserId: req.user.sub },
|
||||
},
|
||||
},
|
||||
userTask: userTaskStatus
|
||||
? {
|
||||
some:
|
||||
userTaskStatus !== UserTaskStatus.Pending
|
||||
? {
|
||||
userTaskStatus,
|
||||
userId: req.user.sub,
|
||||
}
|
||||
: undefined,
|
||||
none: userTaskStatus === UserTaskStatus.Pending ? { userId: req.user.sub } : undefined,
|
||||
}
|
||||
: undefined,
|
||||
OR: queryOrNot(query, [
|
||||
{ code: { contains: query, mode: "insensitive" } },
|
||||
{ taskName: { contains: query } },
|
||||
{ contactName: { contains: query } },
|
||||
{ contactTel: { contains: query } },
|
||||
]),
|
||||
} satisfies Prisma.TaskOrderWhereInput;
|
||||
|
||||
const [result, total] = await prisma.$transaction([
|
||||
prisma.taskOrder.findMany({
|
||||
where,
|
||||
include: {
|
||||
institution: true,
|
||||
createdBy: true,
|
||||
},
|
||||
}),
|
||||
prisma.taskOrder.count({ where }),
|
||||
]);
|
||||
|
||||
return { result, page, pageSize, total };
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue