const sendInBlue = require("../utils/sendinblue"); const Customer = require("../Model/customerModel"); const AppError = require("../utils/appError"); const catchAsync = require("../utils/catchAsync"); exports.getAllCustomerItem = catchAsync(async (req, res, next) => { let query = req.query; let data = await Customer.find(query); res.status(201).json({ status: "success", data, }); }); exports.getOneCustomerItem = catchAsync(async (req, res, next) => { const data = await Customer.findById(req.params.id); res.status(201).json({ status: "success", data, }); }); exports.deleteOneCustomerItem = catchAsync(async (req, res, next) => { await Customer.findByIdAndDelete(req.params.id); res.status(201).json({ status: "success", data: null, }); }); exports.changeShipmentStatus = catchAsync(async (req, res, next) => { const customer = await Customer.findById(req.params.id); if (!customer) { return next(new AppError("Please provide correct customer id", 401)); } if (!customer.status === "pending_payment") { return next(new AppError("The customer has not made any payment yet", 401)); } const { trackingNo, shippingProvider, sendEmail } = req.body; if (!trackingNo || !shippingProvider) { return next( new AppError("Please include shipping id or shipping Provider", 401) ); } const data = await Customer.findByIdAndUpdate( req.params.id, { trackingNo, shippingProvider }, { new: true, runValidators: true, } ); if (sendEmail) { const emailParams = { shippingProvider, trackingNo }; sendInBlue.sendTrackingNoEmail( customer.billingName, customer.email, emailParams ); } res.status(201).json({ status: "success", data, }); }); exports.printInvoice = catchAsync(async (req, res, next) => { const customer = await Customer.findById(req.params.id); if (!customer) { return next(new AppError("Please provide correct customer id", 401)); } res.status(201).json({ status: "success", data: customer.invoiceUrl, }); });