diff --git a/app/controllers/establishment.controller.js b/app/controllers/establishment.controller.js index fe16f07..42ee889 100644 --- a/app/controllers/establishment.controller.js +++ b/app/controllers/establishment.controller.js @@ -1197,22 +1197,27 @@ exports.establishmentBulkUpload = async (req, res) => { "establishment_code", "factory_name", "establishment_contact_email", - "industry_code_production" + "industry_code_production", + "permanent_factory_code", + "industry_code" ] }); const existingEstSet = new Set(existing.map(e => e.establishment_code)); const existingFactorySet = new Set(existing.map(e => e.factory_name.toLowerCase())); const existingEmailSet = new Set(existing.map(e => e.establishment_contact_email.toLowerCase())); - const existingIndustryCodeSet = new Set( - existing.map(e => e.industry_code_production).filter(Boolean) - ); + const existingIndustryCodeSet = new Set( existing.map(e => e.industry_code_production).filter(Boolean)); + const existingPermanentFactoryCodeSet = new Set( existing.map(e => e.permanent_factory_code).filter(Boolean)); + const existingIndustryCodeBusinessSet = new Set( existing.map(e => e.industry_code).filter(Boolean)); // FILE duplicate trackers const fileEstSet = new Set(); const fileFactorySet = new Set(); const fileEmailSet = new Set(); const fileIndustryCodeSet = new Set(); + const filePermanentFactoryCodeSet = new Set(); + const fileIndustryCodeBusinessSet = new Set(); + const errors = []; const prepared = []; @@ -1277,6 +1282,32 @@ exports.establishmentBulkUpload = async (req, res) => { } fileIndustryCodeSet.add(industryCodeProd); } + const permanentFactoryCode = r.permanent_factory_code?.trim(); + if (permanentFactoryCode) { + if (filePermanentFactoryCodeSet.has(permanentFactoryCode)) { + errors.push({ row: rowNum, error: `Duplicate Permanent Factory Code in file: ${permanentFactoryCode}` }); + continue; + } + if (existingPermanentFactoryCodeSet.has(permanentFactoryCode)) { + errors.push({ row: rowNum, error: `Permanent Factory Code already exists in database: ${permanentFactoryCode}` }); + continue; + } + filePermanentFactoryCodeSet.add(permanentFactoryCode); + } + + // Check industry_code_business_register duplicates (if provided) + const industryCodeBusiness = r.industry_code_business_register?.trim(); + if (industryCodeBusiness) { + if (fileIndustryCodeBusinessSet.has(industryCodeBusiness)) { + errors.push({ row: rowNum, error: `Duplicate Industry Code (Business Register) in file: ${industryCodeBusiness}` }); + continue; + } + if (existingIndustryCodeBusinessSet.has(industryCodeBusiness)) { + errors.push({ row: rowNum, error: `Industry Code (Business Register) already exists in database: ${industryCodeBusiness}` }); + continue; + } + fileIndustryCodeBusinessSet.add(industryCodeBusiness); + } fileEstSet.add(estKey); fileFactorySet.add(factoryKey); @@ -1379,21 +1410,20 @@ exports.establishmentBulkUpload = async (req, res) => { factory_name: p.factory, establishment_contact_email: p.email, establishment_emirate_id: p.emirateId, - - permanent_factory_code: r.permanent_factory_code, - industry_code: r.industry_code_business_register, - industry_code_production: r.industry_code_current_production, - industry_code_mismatch_remarks: r.industry_code_mismatch_remarks, - description: r.description, - establishment_address: r.establishment_address, - establishment_city_town_id: r.city_town_id, - establishment_postal_code: r.postal_code, - establishment_po_box: r.po_box, - establishment_makani_number: r.makani_number, - establishment_contact_person_name: r.contact_person_name, - establishment_contact_person_designation: r.contact_person_designation, - establishment_mobile_number: r.mobile_number, - establishment_website: r.website, + permanent_factory_code: r.permanent_factory_code || null, + industry_code: r.industry_code_business_register || null, + industry_code_production: r.industry_code_current_production || null, + industry_code_mismatch_remarks: r.industry_code_mismatch_remarks || null, + description: r.description || null, + establishment_address: r.establishment_address || null, + establishment_city_town_id: r.city_town_id || null, + establishment_postal_code: r.postal_code || null, + establishment_po_box: r.po_box || null, + establishment_makani_number: r.makani_number || null, + establishment_contact_person_name: r.contact_person_name || null, + establishment_contact_person_designation: r.contact_person_designation || null, + establishment_mobile_number: r.mobile_number || null, + establishment_website: r.website || null, emirati_male: Number(r.number_of_emirati_male || 0), emirati_female: Number(r.number_of_emirati_female || 0), @@ -1432,7 +1462,7 @@ exports.establishmentBulkUpload = async (req, res) => { support_email: process.env.SUPPORT_EMAIL, support_phone: process.env.SUPPORT_PHONE }; - await sendEmailService(p.email, "establishment_user_creation_to_user", placeHolderData); + // await sendEmailService(p.email, "establishment_user_creation_to_user", placeHolderData); await EstablishmentProduct.bulkCreate( p.productIds.map(pid => ({