repair: brand device connect to sparepart

This commit is contained in:
2025-12-01 10:35:25 +07:00
parent 462cf6e94b
commit 920b24bfd2
4 changed files with 75 additions and 44 deletions

View File

@@ -2,7 +2,6 @@
const {
getAllBrandsDb,
getBrandByIdDb,
getBrandByNameDb,
createBrandDb,
updateBrandDb,
deleteBrandDb,
@@ -12,7 +11,6 @@ const {
const {
insertMultipleBrandSparepartsDb,
updateBrandSparepartsDb,
deleteAllBrandSparepartsDb,
getSparepartsByBrandIdDb,
} = require("../db/brand_sparepart.db");
@@ -24,6 +22,9 @@ const {
deleteErrorCodeDb,
} = require("../db/brand_code.db");
// Sparepart operations
const { getSparepartsByIdsDb } = require("../db/sparepart.db");
// Solution operations
const {
getSolutionsByErrorCodeIdDb,
@@ -236,12 +237,33 @@ class BrandService {
}
}
// Validate sparepart id
static async validateSparepartIds(sparepartIds) {
if (!sparepartIds || !Array.isArray(sparepartIds) || sparepartIds.length === 0) {
return [];
}
const existingSpareparts = await getSparepartsByIdsDb(sparepartIds);
if (existingSpareparts.length !== sparepartIds.length) {
const existingIds = existingSpareparts.map(sp => sp.sparepart_id);
const invalidIds = sparepartIds.filter(id => !existingIds.includes(id));
throw new ErrorHandler(400, `Invalid sparepart IDs: ${invalidIds.join(', ')}`);
}
return existingSpareparts;
}
// Update brand
static async updateBrandWithFullData(id, data) {
try {
const existingBrand = await getBrandByIdDb(id);
if (!existingBrand) throw new ErrorHandler(404, "Brand not found");
if (data.spareparts) {
await this.validateSparepartIds(data.spareparts);
}
if (data.brand_name && data.brand_name !== existingBrand.brand_name) {
const brandExists = await checkBrandNameExistsDb(data.brand_name, id);
if (brandExists) {