/
home
/
infinitibizsol
/
.trash
/
controllers.5
/
common
/
File Upload :
llllll
Current File: /home/infinitibizsol/.trash/controllers.5/common/basicContactInfo.js
import BasicContactInfo from "../../model/basicontactInfo"; import { successResponse, failedResponse } from "../../utils/responseFormat"; const findOne = async (userId) => { try { let data = await BasicContactInfo.findOne( { user_id: userId }, { __v: false, modifiedOn: false, createdOn: false, } ); return data; } catch (error) { return failedResponse({ res, error: error.message }); } }; const filteredPrimaryData = async () => { const filteredData = await BasicContactInfo.aggregate([ { $project: { phone_numbers: { $cond: { if: { $isArray: "$phone_numbers" }, then: { $filter: { input: "$phone_numbers", as: "phone", cond: { $eq: ["$$phone.is_primary", true] }, }, }, else: [], }, }, emails: { $cond: { if: { $isArray: "$emails" }, then: { $filter: { input: "$emails", as: "email", cond: { $eq: ["$$email.is_primary", true] }, }, }, else: [], }, }, }, }, { $match: { $or: [ { "phone_numbers.0": { $exists: true } }, { "emails.0": { $exists: true } }, ], }, }, ]); return filteredData; }; const index = async (req, res) => { //query={contact_id:?} or {user_id:?} try { const query = req.query; query.user_id = query.contact_id ? undefined : req.user._id; let allData = await BasicContactInfo.find(query, { __v: false, modifiedOn: false, createdOn: false, }) .populate("user_id", ["_id", "first_name", "last_name"]) .populate("contact_id", ["_id", "first_name", "last_name"]) .exec(); return successResponse(res, allData); } catch (error) { return failedResponse({ res, error: error.message }); } }; const add = async (req, res) => { try { const { phone_numbers, emails } = req.body; const userId = req.user._id; let basicContactInfo = await findOne(userId); // Fetch user's contact info if (!basicContactInfo) { // Create new contact info if none exists req.body.user_id = userId; basicContactInfo = new BasicContactInfo(req.body); } else { // Update existing contact info if (phone_numbers && Array.isArray(phone_numbers)) { basicContactInfo.phone_numbers.push(...phone_numbers); } if (emails && Array.isArray(emails)) { basicContactInfo.emails.push(...emails); } } await basicContactInfo.save(); return successResponse( res, basicContactInfo, "Basic Contact Info saved successfully" ); } catch (error) { return failedResponse({ res, error: error.message, }); } }; const edit = async (req, res) => { try { const { phone_numbers, emails } = req.body; const userId = req.user._id; let phoneNumbersUpdate, emailsUpdate; if (phone_numbers) { phoneNumbersUpdate = await BasicContactInfo.findOneAndUpdate( { user_id: userId, "phone_numbers._id": phone_numbers._id, }, { $set: { "phone_numbers.$.phone_no": phone_numbers.phone_no, "phone_numbers.$.is_primary": phone_numbers.is_primary, "phone_numbers.$.type": phone_numbers.type, }, }, { new: true } ); } if (emails) { emailsUpdate = await BasicContactInfo.findOneAndUpdate( { user_id: userId, "emails._id": emails._id, }, { $set: { "emails.$.email_address": emails.email_address, "emails.$.is_primary": emails.is_primary, "emails.$.type": emails.type, }, }, { new: true } ); } if (!phone_numbers && !emails) { return failedResponse({ res, error: "No data provided to update." }); } if ((phone_numbers && !phoneNumbersUpdate) || (emails && !emailsUpdate)) { return failedResponse({ res, error: "No data found." }); } return successResponse( res, { phoneNumbersUpdate, emailsUpdate, }, "Data updated successfully" ); } catch (error) { return failedResponse({ res, error: error.message }); } }; const view = async (req, res) => { try { const query = req.query; let contact = await BasicContactInfo.find({ _id: req.params.id }); if (!contact) return failedResponse({ res, error: "No data found." }); return successResponse(res, contact); } catch (error) { return failedResponse({ res, error: error.message }); } }; const deleteData = async (req, res) => { try { const { phone_numbers, emails } = req.body; if (!phone_numbers && !emails) { return failedResponse({ res, error: "No data provided to update." }); } let phoneNumbrsResult, emailsResult; if (phone_numbers) { phoneNumbrsResult = await BasicContactInfo.findOneAndUpdate( { "phone_numbers._id": phone_numbers.phone_id, }, { $pull: { phone_numbers: { _id: phone_numbers.phone_id, phone_no: phone_numbers.phone_no, }, }, }, { new: true } ); } if (emails) { emailsResult = await BasicContactInfo.findOneAndUpdate( { "emails._id": emails.email_id }, { $pull: { emails: { _id: emails.email_id, email_address: emails.email_address, }, }, }, { new: true } ); } if ((phone_numbers && !phoneNumbrsResult) || (emails && !emailsResult)) { return failedResponse({ res, error: "No data found." }); } return successResponse( res, { phoneNumbrsResult, emailsResult }, "BasicContactInfo and related data deleted successfully." ); } catch (error) { return failedResponse({ res, error: error.message }); } }; const saveBasicContact = async (req, res) => { const { contact_id, phone_numbers, emails } = req.body; let user_id; user_id = contact_id ? undefined : req.user._id; let contact; try { contact = await BasicContactInfo.findOne({ user_id, contact_id, }); if (contact) { // Update the existing record contact.phone_numbers = phone_numbers; contact.emails = emails; } else { user_id = contact_id ? undefined : user_id; // Create a new record contact = new BasicContactInfo({ user_id, contact_id, phone_numbers, emails, }); } await contact.save(); return successResponse( res, contact, "Contact information saved successfully." ); } catch (error) { return failedResponse({ res, error: error.message }); } }; export default { index, add, edit, view, deleteData, saveBasicContact };
Copyright ©2k19 -
Hexid
|
Tex7ure