From f1ea2283298bd2e9e2d0a9cd5296b642b344858d Mon Sep 17 00:00:00 2001 From: ROSHAN GARG Date: Sat, 2 Nov 2024 11:56:39 +0530 Subject: [PATCH] Transporter api ready --- app.js | 4 +- resources/PD_Orders/invoiceModel.js | 8 +- resources/PD_Orders/pdOrderModal.js | 23 ++--- .../Transporter/transporterController.js | 86 +++++++++++++++++++ .../setting/Transporter/transporterModal.js | 13 +++ .../setting/Transporter/transporterRoutes.js | 31 +++++++ 6 files changed, 151 insertions(+), 14 deletions(-) create mode 100644 resources/setting/Transporter/transporterController.js create mode 100644 resources/setting/Transporter/transporterModal.js create mode 100644 resources/setting/Transporter/transporterRoutes.js diff --git a/app.js b/app.js index c5a134b..1f85c34 100644 --- a/app.js +++ b/app.js @@ -140,7 +140,7 @@ import orderRoute from "./resources/Orders/orderRoute.js"; import DepartureRouter from "./resources/Departure/DepartureRoute.js"; import InformationRoute from "./resources/Informations/InformationRoute.js"; import Testimonial from "./resources/Testimonials/TestimonialRoute.js"; - +import Transporter from "./resources/setting/Transporter/transporterRoutes.js"; import StateRouter from "./resources/setting/state/state_routes.js"; // import LanguageRoute from "./resources/setting/Language/language_routes.js"; @@ -297,6 +297,8 @@ app.use("/api", VisitRDandPDRoute); app.use('/api',AnnouncementRoute) +app.use('/api/transporter',Transporter) + //config specialty // app.use("/api/config/specialty", SpecialtiesRouter); diff --git a/resources/PD_Orders/invoiceModel.js b/resources/PD_Orders/invoiceModel.js index 0c9b26e..3e54afc 100644 --- a/resources/PD_Orders/invoiceModel.js +++ b/resources/PD_Orders/invoiceModel.js @@ -34,7 +34,8 @@ const orderItemSchema = new Schema({ type: Number, required: true, }, - processquantity: { //updated quantity + processquantity: { + //updated quantity type: Number, required: true, default: 1, @@ -58,6 +59,7 @@ const invoiceSchema = new mongoose.Schema({ }, invoiceAmount: { type: Number, required: true }, courier_name: { type: String }, + transpoter_Name: { type: String }, courier_tracking_id: { type: String }, courierStatus: { type: String, @@ -71,10 +73,10 @@ const invoiceSchema = new mongoose.Schema({ }, }); // Middleware to set the processing date only when the invoice is created -invoiceSchema.pre('save', function (next) { +invoiceSchema.pre("save", function (next) { if (this.isNew && !this.courierstatus_timeline.processing) { this.courierstatus_timeline.processing = new Date(); } next(); }); -export const Invoice = mongoose.model("Invoice", invoiceSchema); \ No newline at end of file +export const Invoice = mongoose.model("Invoice", invoiceSchema); diff --git a/resources/PD_Orders/pdOrderModal.js b/resources/PD_Orders/pdOrderModal.js index d1ae373..ca964bf 100644 --- a/resources/PD_Orders/pdOrderModal.js +++ b/resources/PD_Orders/pdOrderModal.js @@ -55,7 +55,6 @@ const orderItemSchema = new Schema({ }, }); - const pdOrderSchema = new Schema( { paymentMode: { @@ -84,14 +83,19 @@ const pdOrderSchema = new Schema( type: Number, required: true, }, - status: { - type: String, - enum: ['new','pending','processing','dispatched', 'cancelled', 'delivered'], - default: 'new' + status: { + type: String, + enum: [ + "new", + "pending", + "processing", + "dispatched", + "cancelled", + "delivered", + ], + default: "new", }, - invoices: [ - { type: mongoose.Schema.Types.ObjectId, ref: 'Invoice' } - ], + invoices: [{ type: mongoose.Schema.Types.ObjectId, ref: "Invoice" }], uniqueId: { type: String, unique: true, @@ -116,7 +120,7 @@ const pdOrderSchema = new Schema( ); // Middleware to generate uniqueId before saving the document -pdOrderSchema.pre('save', async function(next) { +pdOrderSchema.pre("save", async function (next) { if (this.isNew) { const year = new Date().getFullYear().toString().slice(-2); // Get the last 2 digits of the year const orderItemCount = this.orderItem.length; // Count the number of order items @@ -128,4 +132,3 @@ pdOrderSchema.pre('save', async function(next) { }); export const PdOrder = mongoose.model("PdOrder", pdOrderSchema); - diff --git a/resources/setting/Transporter/transporterController.js b/resources/setting/Transporter/transporterController.js new file mode 100644 index 0000000..12cb36e --- /dev/null +++ b/resources/setting/Transporter/transporterController.js @@ -0,0 +1,86 @@ +import { Transporter } from "./transporterModal.js"; + +// Create a new transporter +export const createTransporter = async (req, res) => { + try { + const { transporterName } = req.body; + + const newTransporter = await Transporter.create({ transporterName }); + res.status(201).json({ + message: "Transporter added successfully", + transporter: newTransporter, + }); + } catch (error) { + res.status(500).json({ message: "Error adding transporter", error }); + } +}; + +// Read all transporters +export const getTransporters = async (req, res) => { + try { + const transporters = await Transporter.find(); + res.status(200).json({ transporters }); + } catch (error) { + res.status(500).json({ message: "Error fetching transporters", error }); + } +}; + +// Update transporter by ID +export const updateTransporter = async (req, res) => { + try { + const { transporterName } = req.body; + const transporterId = req.params.id; + + const updatedTransporter = await Transporter.findByIdAndUpdate( + transporterId, + { transporterName }, + { new: true, runValidators: true } + ); + + if (!updatedTransporter) { + return res.status(404).json({ message: "Transporter not found" }); + } + + res.status(200).json({ + message: "Transporter updated successfully", + transporter: updatedTransporter, + }); + } catch (error) { + res.status(500).json({ message: "Error updating transporter", error }); + } +}; + +// Delete transporter by ID +export const deleteTransporter = async (req, res) => { + try { + const transporterId = req.params.id; + + const deletedTransporter = await Transporter.findByIdAndDelete( + transporterId + ); + + if (!deletedTransporter) { + return res.status(404).json({ message: "Transporter not found" }); + } + + res.status(200).json({ message: "Transporter deleted successfully" }); + } catch (error) { + res.status(500).json({ message: "Error deleting transporter", error }); + } +}; + +export const getTransporterById = async (req, res) => { + try { + const transporterId = req.params.id; + + const transporter = await Transporter.findById(transporterId); + + if (!transporter) { + return res.status(404).json({ message: "Transporter not found" }); + } + + res.status(200).json({ transporter }); + } catch (error) { + res.status(500).json({ message: "Error fetching transporter", error }); + } +}; diff --git a/resources/setting/Transporter/transporterModal.js b/resources/setting/Transporter/transporterModal.js new file mode 100644 index 0000000..8a9b391 --- /dev/null +++ b/resources/setting/Transporter/transporterModal.js @@ -0,0 +1,13 @@ +import mongoose from "mongoose"; + +const transporterSchema = new mongoose.Schema( + { + transporterName: { + type: String, + required: true, + trim: true, + }, + }, + { timestamps: true } +); // This automatically adds createdAt and updatedAt fields +export const Transporter = mongoose.model("Transporter", transporterSchema); diff --git a/resources/setting/Transporter/transporterRoutes.js b/resources/setting/Transporter/transporterRoutes.js new file mode 100644 index 0000000..df8f9d0 --- /dev/null +++ b/resources/setting/Transporter/transporterRoutes.js @@ -0,0 +1,31 @@ +import express from "express"; +import { + authorizeRoles, + isAuthenticatedUser, +} from "../../../middlewares/auth.js"; +import { + createTransporter, + deleteTransporter, + getTransporters, + updateTransporter, +} from "./transporterController.js"; + +const router = express.Router(); + +router + .route("/add") + .post(isAuthenticatedUser, authorizeRoles("admin"), createTransporter); + +router + .route("/edit/:id") + .patch(isAuthenticatedUser, authorizeRoles("admin"), updateTransporter); + +router + .route("/delete/:id") + .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteTransporter); + +router + .route("/get") + .get(isAuthenticatedUser, authorizeRoles("admin"), getTransporters); + +export default router;