refactor: relation

This commit is contained in:
Methapon Metanipat 2024-09-10 16:26:23 +07:00
parent 977cb5c6a4
commit 273026d735

View file

@ -36,6 +36,7 @@ import {
createPermCheck,
createPermCondition,
} from "../services/permission";
import { connectOrDisconnect, connectOrNot } from "../utils/relation";
if (!process.env.MINIO_BUCKET) {
throw Error("Require MinIO bucket.");
@ -231,15 +232,18 @@ export class UserController extends Controller {
) {
const where = {
OR: [
{ firstName: { contains: query }, zipCode, userType, ...filterStatus(status) },
{ firstNameEN: { contains: query }, zipCode, userType, ...filterStatus(status) },
{ lastName: { contains: query }, zipCode, userType, ...filterStatus(status) },
{ lastNameEN: { contains: query }, zipCode, userType, ...filterStatus(status) },
{ email: { contains: query }, zipCode, userType, ...filterStatus(status) },
{ telephoneNo: { contains: query }, zipCode, userType, ...filterStatus(status) },
{ firstName: { contains: query } },
{ firstNameEN: { contains: query } },
{ lastName: { contains: query } },
{ lastNameEN: { contains: query } },
{ email: { contains: query } },
{ telephoneNo: { contains: query } },
],
AND: {
userRole: { not: "system" },
zipCode,
userType,
...filterStatus(status),
branch: isSystem(req.user)
? undefined
: {
@ -414,9 +418,9 @@ export class UserController extends Controller {
statusOrder: +(rest.status === "INACTIVE"),
username,
userRole: role.name,
province: { connect: provinceId ? { id: provinceId } : undefined },
district: { connect: districtId ? { id: districtId } : undefined },
subDistrict: { connect: subDistrictId ? { id: subDistrictId } : undefined },
province: connectOrNot(provinceId),
district: connectOrNot(districtId),
subDistrict: connectOrNot(subDistrictId),
branch: {
create: Array.isArray(branchId)
? branchId.map((v) => ({
@ -585,18 +589,9 @@ export class UserController extends Controller {
...rest,
statusOrder: +(rest.status === "INACTIVE"),
userRole,
province: {
connect: provinceId ? { id: provinceId } : undefined,
disconnect: provinceId === null || undefined,
},
district: {
connect: districtId ? { id: districtId } : undefined,
disconnect: districtId === null || undefined,
},
subDistrict: {
connect: subDistrictId ? { id: subDistrictId } : undefined,
disconnect: subDistrictId === null || undefined,
},
province: connectOrDisconnect(provinceId),
district: connectOrDisconnect(districtId),
subDistrict: connectOrDisconnect(subDistrictId),
updatedBy: { connect: { id: req.user.sub } },
},
where: { id: userId },
@ -697,15 +692,7 @@ async function getUserCheckPerm(user: RequestWithUser["user"], userId: string) {
branch: {
include: {
branch: {
include: {
headOffice: {
include: {
branch: { where: { user: { some: { userId: user.sub } } } },
user: { where: { userId: user.sub } },
},
},
user: { where: { userId: user.sub } },
},
include: branchRelationPermInclude(user),
},
},
},