feat: detect same name of product in the same company
This commit is contained in:
parent
56c2f1d5ed
commit
9889317b08
1 changed files with 20 additions and 7 deletions
|
|
@ -42,7 +42,7 @@ function globalAllow(user: RequestWithUser["user"]) {
|
||||||
return allowList.some((v) => user.roles?.includes(v));
|
return allowList.some((v) => user.roles?.includes(v));
|
||||||
}
|
}
|
||||||
|
|
||||||
const permissionCondShared = createPermCondition((_) => true);
|
const permissionCondCompany = createPermCondition((_) => true);
|
||||||
const permissionCond = createPermCondition(globalAllow);
|
const permissionCond = createPermCondition(globalAllow);
|
||||||
const permissionCheck = createPermCheck(globalAllow);
|
const permissionCheck = createPermCheck(globalAllow);
|
||||||
|
|
||||||
|
|
@ -113,7 +113,7 @@ export class ProductController extends Controller {
|
||||||
{
|
{
|
||||||
shared: true,
|
shared: true,
|
||||||
productGroup: {
|
productGroup: {
|
||||||
registeredBranch: { OR: permissionCondShared(req.user) },
|
registeredBranch: { OR: permissionCondCompany(req.user) },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
@ -147,7 +147,7 @@ export class ProductController extends Controller {
|
||||||
{
|
{
|
||||||
shared: true,
|
shared: true,
|
||||||
productGroup: {
|
productGroup: {
|
||||||
registeredBranch: { OR: permissionCondShared(req.user) },
|
registeredBranch: { OR: permissionCondCompany(req.user) },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
@ -195,7 +195,7 @@ export class ProductController extends Controller {
|
||||||
@Post()
|
@Post()
|
||||||
@Security("keycloak", MANAGE_ROLES)
|
@Security("keycloak", MANAGE_ROLES)
|
||||||
async createProduct(@Request() req: RequestWithUser, @Body() body: ProductCreate) {
|
async createProduct(@Request() req: RequestWithUser, @Body() body: ProductCreate) {
|
||||||
const [productGroup] = await prisma.$transaction([
|
const [productGroup, productSameName] = await prisma.$transaction([
|
||||||
prisma.productGroup.findFirst({
|
prisma.productGroup.findFirst({
|
||||||
include: {
|
include: {
|
||||||
registeredBranch: {
|
registeredBranch: {
|
||||||
|
|
@ -206,13 +206,26 @@ export class ProductController extends Controller {
|
||||||
},
|
},
|
||||||
where: { id: body.productGroupId },
|
where: { id: body.productGroupId },
|
||||||
}),
|
}),
|
||||||
|
prisma.product.findMany({
|
||||||
|
where: {
|
||||||
|
productGroup: {
|
||||||
|
registeredBranch: {
|
||||||
|
OR: permissionCondCompany(req.user),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
name: body.name,
|
||||||
|
},
|
||||||
|
}),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (!productGroup) {
|
if (!productGroup) throw relationError("Product Group");
|
||||||
|
|
||||||
|
console.log(productSameName);
|
||||||
|
if (productSameName.some((v) => v.code.slice(0, -3) === body.code.toUpperCase())) {
|
||||||
throw new HttpError(
|
throw new HttpError(
|
||||||
HttpStatus.BAD_REQUEST,
|
HttpStatus.BAD_REQUEST,
|
||||||
"Product Group cannot be found.",
|
"Product with the same name and code already exists",
|
||||||
"relationProductGroupNotFound",
|
"productNameExists",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue