Transporter api ready

This commit is contained in:
ROSHAN GARG 2024-11-02 11:56:39 +05:30
parent c279b8d7de
commit f1ea228329
6 changed files with 151 additions and 14 deletions

4
app.js
View File

@ -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);

View File

@ -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,7 +73,7 @@ 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();
}

View File

@ -55,7 +55,6 @@ const orderItemSchema = new Schema({
},
});
const pdOrderSchema = new Schema(
{
paymentMode: {
@ -86,12 +85,17 @@ const pdOrderSchema = new Schema(
},
status: {
type: String,
enum: ['new','pending','processing','dispatched', 'cancelled', 'delivered'],
default: 'new'
},
invoices: [
{ type: mongoose.Schema.Types.ObjectId, ref: 'Invoice' }
enum: [
"new",
"pending",
"processing",
"dispatched",
"cancelled",
"delivered",
],
default: "new",
},
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);

View File

@ -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 });
}
};

View File

@ -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);

View File

@ -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;