diff --git a/services/brand.service.js b/services/brand.service.js index 9bf28b2..883a62d 100644 --- a/services/brand.service.js +++ b/services/brand.service.js @@ -9,6 +9,13 @@ const { checkBrandNameExistsDb, } = require("../db/brand.db"); +const { + insertMultipleBrandSparepartsDb, + updateBrandSparepartsDb, + deleteAllBrandSparepartsDb, + getSparepartsByBrandIdDb, +} = require("../db/brand_sparepart.db"); + // Error code operations const { getErrorCodesByBrandIdDb, @@ -33,9 +40,21 @@ class BrandService { try { const results = await getAllBrandsDb(param); - results.data.map((element) => {}); + // Add spareparts data for each brand + const brandsWithSpareparts = await Promise.all( + results.data.map(async (brand) => { + const spareparts = await getSparepartsByBrandIdDb(brand.brand_id); + return { + ...brand, + spareparts: spareparts + }; + }) + ); - return results; + return { + ...results, + data: brandsWithSpareparts + }; } catch (error) { throw new ErrorHandler(error.statusCode, error.message); } @@ -47,6 +66,9 @@ class BrandService { const brand = await getBrandByIdDb(id); if (!brand) throw new ErrorHandler(404, "Brand not found"); + // Get spareparts for this brand + const spareparts = await getSparepartsByBrandIdDb(brand.brand_id); + const errorCodes = await getErrorCodesByBrandIdDb(brand.brand_id); const errorCodesWithSolutions = await Promise.all( @@ -95,6 +117,7 @@ class BrandService { return { ...brand, + spareparts: spareparts, error_code: errorCodesWithSolutions, }; } catch (error) { @@ -102,6 +125,7 @@ class BrandService { } } + // Create brand static async createBrandWithFullData(data) { try { @@ -154,6 +178,10 @@ class BrandService { const brandId = createdBrand.brand_id; + if (data.spareparts && Array.isArray(data.spareparts) && data.spareparts.length > 0) { + await insertMultipleBrandSparepartsDb(brandId, data.spareparts, data.created_by); + } + for (const errorCodeData of data.error_code) { const errorId = await createErrorCodeDb(brandId, { error_code: errorCodeData.error_code, @@ -184,7 +212,8 @@ class BrandService { } } - return await this.getBrandById(brandId); + const createdBrandWithSpareparts = await this.getBrandById(brandId); + return createdBrandWithSpareparts; } catch (error) { throw new ErrorHandler(500, `Bulk insert failed: ${error.message}`); } @@ -231,6 +260,10 @@ class BrandService { await updateBrandDb(existingBrand.brand_name, brandData); + if (data.spareparts !== undefined) { + await updateBrandSparepartsDb(existingBrand.brand_id, data.spareparts || [], data.updated_by); + } + if (data.error_code && Array.isArray(data.error_code)) { const existingErrorCodes = await getErrorCodesByBrandIdDb(id); const incomingErrorCodes = data.error_code.map((ec) => ec.error_code); @@ -350,7 +383,8 @@ class BrandService { } } - return await this.getBrandById(id); + const updatedBrandWithSpareparts = await this.getBrandById(id); + return updatedBrandWithSpareparts; } catch (error) { throw new ErrorHandler(500, `Update failed: ${error.message}`); } diff --git a/validate/brand.schema.js b/validate/brand.schema.js index 3f5d99a..5d9d30f 100644 --- a/validate/brand.schema.js +++ b/validate/brand.schema.js @@ -10,6 +10,7 @@ const insertBrandSchema = Joi.object({ brand_model: Joi.string().max(100).optional().allow(""), is_active: Joi.boolean().required(), description: Joi.string().max(255).optional().allow(""), + spareparts: Joi.array().items(Joi.number().integer()).optional(), // Array of sparepart_id error_code: Joi.array() .items( Joi.object({ @@ -56,6 +57,7 @@ const updateBrandSchema = Joi.object({ brand_model: Joi.string().max(100).optional().allow(""), is_active: Joi.boolean().required(), description: Joi.string().max(255).optional().allow(""), + spareparts: Joi.array().items(Joi.number().integer()).optional(), // Array of sparepart_id error_code: Joi.array() .items( Joi.object({