From 23b835cbf02c9814a02eb5a8f8f11e2fd2ad9b29 Mon Sep 17 00:00:00 2001 From: Sibunnayak Date: Fri, 9 Aug 2024 12:56:01 +0530 Subject: [PATCH] product and pd multiple data upload with error handling done --- public/temp/tmp-1-1723179420558 | Bin 0 -> 10825 bytes public/temp/tmp-1-1723179631191 | Bin 0 -> 10825 bytes public/temp/tmp-1-1723183341603 | Bin 0 -> 10989 bytes public/temp/tmp-2-1723179559917 | Bin 0 -> 10825 bytes public/temp/tmp-2-1723179706921 | Bin 0 -> 10825 bytes public/temp/tmp-3-1723179795362 | Bin 0 -> 10825 bytes resources/Products/ProductController.js | 114 +++++++++++++++--------- resources/user/userController.js | 114 ++++++++++++++++-------- 8 files changed, 152 insertions(+), 76 deletions(-) create mode 100644 public/temp/tmp-1-1723179420558 create mode 100644 public/temp/tmp-1-1723179631191 create mode 100644 public/temp/tmp-1-1723183341603 create mode 100644 public/temp/tmp-2-1723179559917 create mode 100644 public/temp/tmp-2-1723179706921 create mode 100644 public/temp/tmp-3-1723179795362 diff --git a/public/temp/tmp-1-1723179420558 b/public/temp/tmp-1-1723179420558 new file mode 100644 index 0000000000000000000000000000000000000000..65137c0eba28ec0814bf8ff9e37e803a4a3400a1 GIT binary patch literal 10825 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

*?K4#jB*%uWJMM^ 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 Jp0qzd{U5_$8uS1F literal 0 HcmV?d00001 diff --git a/public/temp/tmp-2-1723179559917 b/public/temp/tmp-2-1723179559917 new file mode 100644 index 0000000000000000000000000000000000000000..65137c0eba28ec0814bf8ff9e37e803a4a3400a1 GIT binary patch literal 10825 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 { } const errors = []; - const productsProcessed = []; + const newlyCreated = []; + const updatedProducts = []; for (let i = 1; i < data.length; i++) { const row = data[i]; @@ -85,12 +86,14 @@ export const uploadProducts = async (req, res) => { if (!GST) missingFields.add("GST"); // Validate category + let categoryName = ""; if (category) { const categoryDoc = await CategoryModel.findOne({ categoryName: { $regex: new RegExp(`^${category.trim()}$`, "i") }, }).exec(); if (categoryDoc) { item.category = categoryDoc._id; + categoryName = categoryDoc.categoryName; } else { notFoundErrors.add("category"); } @@ -99,12 +102,14 @@ export const uploadProducts = async (req, res) => { } // Validate GST + let gstName = ""; if (GST) { const gstDoc = await Tax.findOne({ name: { $regex: new RegExp(`^${GST}$`, "i") }, }).exec(); if (gstDoc) { item.GST = gstDoc._id; + gstName = gstDoc.name; } else { notFoundErrors.add("GST"); } @@ -127,6 +132,7 @@ export const uploadProducts = async (req, res) => { productName: name || "N/A", category: category || "N/A", GST: GST || "N/A", + price: price || "N/A", message: errorMessage.trim(), }); continue; @@ -142,44 +148,65 @@ export const uploadProducts = async (req, res) => { }).exec(); if (existingProduct) { - // Validate that the existing product can be updated - const updateErrors = []; - if (missingFields.size > 0) { - updateErrors.push(`Missing fields: ${Array.from(missingFields).join(", ")}`); + // Track changes + const updatedFields = []; + let updatedProduct = { ...existingProduct._doc }; + + // Fetch existing category name and GST name + const existingCategory = await CategoryModel.findById(existingProduct.category).exec(); + const existingGST = await Tax.findById(existingProduct.GST).exec(); + + if (category && existingProduct.category.toString() !== item.category.toString()) { + updatedFields.push("category"); + updatedProduct.category = categoryName; + } else { + updatedProduct.category = existingCategory ? existingCategory.categoryName : ""; } - if (notFoundErrors.size > 0) { - updateErrors.push(`Not found: ${Array.from(notFoundErrors).join(", ")}`); + if (price !== undefined && price !== "" && existingProduct.price !== price) { + updatedFields.push("price"); + updatedProduct.price = price; + } + if (GST && existingProduct.GST.toString() !== item.GST.toString()) { + updatedFields.push("GST"); + updatedProduct.GST = gstName; + } else { + updatedProduct.GST = existingGST ? existingGST.name : ""; + } + if (description !== existingProduct.description) { + updatedFields.push("description"); + updatedProduct.description = description; + } + if (special_instructions !== existingProduct.special_instructions) { + updatedFields.push("special_instructions"); + updatedProduct.special_instructions = special_instructions; } - if (updateErrors.length > 0) { - errors.push({ - productName: name, - message: updateErrors.join(". "), - }); - continue; - } - - // Update existing product - try { - await Product.updateOne( - { _id: existingProduct._id }, - { - $set: { - category: item.category || existingProduct.category, - price: price !== undefined && price !== "" ? price : existingProduct.price, - GST: item.GST || existingProduct.GST, - description: description, // Ensure description is included - special_instructions: special_instructions, // Ensure special_instructions is included - product_Status: item.product_Status || existingProduct.product_Status || "Active", - }, - } - ); - productsProcessed.push({ ...existingProduct._doc, ...item }); // Track updated product - } catch (error) { - errors.push({ - productName: name, - message: "Failed to update product", - }); + // Only update if there are changes + if (updatedFields.length > 0) { + try { + await Product.updateOne( + { _id: existingProduct._id }, + { + $set: { + category: item.category || existingProduct.category, + price: price !== undefined && price !== "" ? price : existingProduct.price, + GST: item.GST || existingProduct.GST, + description: description, + special_instructions: special_instructions, + product_Status: item.product_Status || existingProduct.product_Status || "Active", + }, + } + ); + updatedProducts.push({ + ...updatedProduct, + updatedFields: updatedFields.join(", "), // Track updated fields + }); + } catch (error) { + errors.push({ + productName: name, + message: "Failed to update product", + }); + } } continue; } @@ -191,14 +218,18 @@ export const uploadProducts = async (req, res) => { category: item.category, price, GST: item.GST, - description: description, // Ensure description is included - special_instructions: special_instructions, // Ensure special_instructions is included + description: description, + special_instructions: special_instructions, product_Status: item.product_Status || "Active", addedBy: req.user._id, }; try { const newProduct = await Product.create(productData); - productsProcessed.push(newProduct); // Track new product + newlyCreated.push({ + ...newProduct._doc, + category: categoryName, + GST: gstName, + }); } catch (error) { errors.push({ productName: name, @@ -215,8 +246,11 @@ export const uploadProducts = async (req, res) => { errors.length > 0 ? "Products processed with errors!" : "Products processed successfully!", - productsProcessed: productsProcessed.length, // Total processed products + newlyCreated: newlyCreated, + updatedProducts: updatedProducts, errors, + newlyCreated, + updatedProducts, }); } catch (error) { console.error("Error:", error); diff --git a/resources/user/userController.js b/resources/user/userController.js index efd94ae..19b8d1a 100644 --- a/resources/user/userController.js +++ b/resources/user/userController.js @@ -110,7 +110,8 @@ export const uploadPrincipaldistributors = async (req, res) => { } const errors = []; - const processedUsers = []; + const newlyCreated = []; + const updatedDistributors = []; for (let i = 1; i < data.length; i++) { const row = data[i]; @@ -195,14 +196,76 @@ export const uploadPrincipaldistributors = async (req, res) => { const currentYear = new Date().getFullYear().toString().slice(-2); const randomChars = crypto.randomBytes(4).toString("hex").toUpperCase(); item.uniqueId = `${currentYear}-${randomChars}`; + // Check for existing user let user = await User.findOne({ email: item.email }); if (user) { - // Update existing user details - user.name = item.name; - user.phone = item.phone; - await user.save(); + // Track updated fields + const updatedFields = []; + const addressFields = ['panNumber', 'gstNumber', 'state','city', 'street', 'tradeName', 'postalCode']; + const existingAddress = await ShippingAddress.findOne({ user: user._id }); + + // Check for changes in user details + let userUpdated = false; + if (user.name !== item.name) { + updatedFields.push("name"); + user.name = item.name; + userUpdated = true; + } + if (user.phone !== item.phone.toString()) { + updatedFields.push("phone"); + user.phone = item.phone; + userUpdated = true; + } + + // Update user + if (userUpdated) { + await user.save(); + } + + // Check for changes in address details + const addressData = { + street: item.street, + city: item.city, + state: item.state, + postalCode: item.postalCode.toString(), + country: "India", // Default country + panNumber: item.panNumber, + tradeName: item.tradeName, + gstNumber: item.gstNumber, + user: user._id, + }; + + let addressUpdated = false; + if (existingAddress) { + const addressUpdates = []; + addressFields.forEach(field => { + if (existingAddress[field] !== addressData[field]) { + addressUpdates.push(field); + addressUpdated = true; + } + }); + + if (addressUpdated) { + await ShippingAddress.updateOne({ user: user._id }, addressData); + if (addressUpdates.length > 0) { + updatedFields.push(`Address fields: ${addressUpdates.join(", ")}`); + } + } + } else { + // Create new address + await ShippingAddress.create(addressData); + updatedFields.push("New address created"); + } + + // Add to updatedDistributors only if there are updated fields + if (updatedFields.length > 0) { + updatedDistributors.push({ + ...user._doc, + updatedFields: updatedFields.join(", ") + }); + } } else { // Create a new user user = new User({ @@ -229,35 +292,9 @@ export const uploadPrincipaldistributors = async (req, res) => { If you have not requested this email, please ignore it. `, }); + + newlyCreated.push(user._doc); } - - // Create or update shipping address - const addressData = { - street: item.street, - city: item.city, - state: item.state, - postalCode: item.postalCode, - country: "India", // Default country - panNumber: item.panNumber, - tradeName: item.tradeName, - gstNumber: item.gstNumber, - user: user._id, - }; - - let existingAddress = await ShippingAddress.findOne({ user: user._id }); - - if (existingAddress) { - // Update existing address - await ShippingAddress.updateOne({ user: user._id }, addressData); - } else { - // Create new address - await ShippingAddress.create(addressData); - } - - processedUsers.push({ - ...user._doc, - ...addressData, - }); } fs.unlinkSync(filePath); // Clean up uploaded file @@ -267,12 +304,17 @@ export const uploadPrincipaldistributors = async (req, res) => { errors.length > 0 ? "File processed with errors!" : "File processed successfully!", - processedUsers: processedUsers.length, // Total processed users + processedUsers: { + newlyCreated: newlyCreated.length, + updatedDistributors: updatedDistributors.length + }, errors, + newlyCreated, + updatedDistributors }); } catch (error) { - console.error("Error:", error); - res.status(500).json({ message: error.message || "Something went wrong!" }); + console.error("Error processing file:", error); + res.status(500).json({ message: "Internal server error" }); } };