visit rd and pd stored in database
This commit is contained in:
parent
e03de96466
commit
110e586692
4
app.js
4
app.js
@ -198,6 +198,8 @@ import SalesRoute from "./resources/Sales/SalesRoute.js";
|
|||||||
import PdOrderRoute from './resources/PD_Orders/pdOrderRoute.js'
|
import PdOrderRoute from './resources/PD_Orders/pdOrderRoute.js'
|
||||||
|
|
||||||
import TaskRoute from "./resources/Task/TaskRoute.js";
|
import TaskRoute from "./resources/Task/TaskRoute.js";
|
||||||
|
// visit RD and PD
|
||||||
|
import VisitRDandPDRoute from "./resources/VisitRD&PD/VisitRD&PDRoute.js";
|
||||||
app.use("/api/v1", user);
|
app.use("/api/v1", user);
|
||||||
|
|
||||||
//Product
|
//Product
|
||||||
@ -276,6 +278,8 @@ app.use("/api/sales", SalesRoute);
|
|||||||
app.use("/api/task", TaskRoute);
|
app.use("/api/task", TaskRoute);
|
||||||
// RD Rotuts
|
// RD Rotuts
|
||||||
app.use("/api",RDRoute)
|
app.use("/api",RDRoute)
|
||||||
|
// visit RD and PD
|
||||||
|
app.use("/api", VisitRDandPDRoute);
|
||||||
//config specialty
|
//config specialty
|
||||||
// app.use("/api/config/specialty", SpecialtiesRouter);
|
// app.use("/api/config/specialty", SpecialtiesRouter);
|
||||||
//specialties
|
//specialties
|
||||||
|
59
resources/VisitRD&PD/VisitRD&PDController.js
Normal file
59
resources/VisitRD&PD/VisitRD&PDController.js
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
import VisitRDandPD from './VisitRD&PDModel.js';
|
||||||
|
|
||||||
|
// Controller for creating a visit record
|
||||||
|
export const createVisit = async (req, res) => {
|
||||||
|
try {
|
||||||
|
const visitBy = req.user._id;
|
||||||
|
const visitUserType = req.userType;
|
||||||
|
const { addedFor, addedForId, tradename, visitDate, note } = req.body;
|
||||||
|
if (!addedFor || !addedForId || !tradename || !visitDate) {
|
||||||
|
return res.status(400).json({ message: 'All fields are required' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a new visit record
|
||||||
|
const newVisit = new VisitRDandPD({
|
||||||
|
visitBy,
|
||||||
|
visitUserType,
|
||||||
|
addedFor,
|
||||||
|
addedForId,
|
||||||
|
tradename,
|
||||||
|
visitDate,
|
||||||
|
note,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Save the visit record to the database
|
||||||
|
const savedVisit = await newVisit.save();
|
||||||
|
|
||||||
|
return res.status(201).json({ message: 'Visit done successfully', visit: savedVisit });
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
return res.status(500).json({ message: 'Server error' });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Controller for fetching all visits for a specific distributor (RD or PD)
|
||||||
|
export const getVisitsByDistributor = async (req, res) => {
|
||||||
|
try {
|
||||||
|
const { distributorId, distributorType } = req.params;
|
||||||
|
|
||||||
|
// Validate distributor type
|
||||||
|
if (!['RetailDistributor', 'PrincipalDistributor'].includes(distributorType)) {
|
||||||
|
return res.status(400).json({ message: 'Invalid distributor type' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find all visits for the specified distributor
|
||||||
|
const visits = await VisitRDandPD.find({
|
||||||
|
addedFor: distributorType,
|
||||||
|
addedForId: distributorId,
|
||||||
|
}).populate('visitBy', 'name email'); // Populating visitBy with user details
|
||||||
|
|
||||||
|
if (!visits.length) {
|
||||||
|
return res.status(404).json({ message: 'No visits found for this distributor' });
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.status(200).json({ visits });
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
return res.status(500).json({ message: 'Server error' });
|
||||||
|
}
|
||||||
|
};
|
44
resources/VisitRD&PD/VisitRD&PDModel.js
Normal file
44
resources/VisitRD&PD/VisitRD&PDModel.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import dotenv from "dotenv";
|
||||||
|
dotenv.config();
|
||||||
|
import mongoose from "mongoose";
|
||||||
|
|
||||||
|
const VisitSchema = new mongoose.Schema(
|
||||||
|
{
|
||||||
|
visitBy: {
|
||||||
|
type: mongoose.Schema.Types.ObjectId,
|
||||||
|
refPath: "userType",
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
visitUserType: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
enum: ['SalesCoOrdinator', 'TerritoryManager'],
|
||||||
|
},
|
||||||
|
addedFor: {
|
||||||
|
type: String,
|
||||||
|
enum: ["PrincipalDistributor", "RetailDistributor"],
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
addedForId: {
|
||||||
|
type: mongoose.Schema.Types.ObjectId,
|
||||||
|
refPath: "addedFor",
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
tradename: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
visitDate: {
|
||||||
|
type: Date,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
note: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ timestamps: true }
|
||||||
|
);
|
||||||
|
|
||||||
|
const VisitRDandPD = mongoose.model("Visit", VisitSchema);
|
||||||
|
|
||||||
|
export default VisitRDandPD;
|
25
resources/VisitRD&PD/VisitRD&PDRoute.js
Normal file
25
resources/VisitRD&PD/VisitRD&PDRoute.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import express from "express";
|
||||||
|
import {
|
||||||
|
createVisit,
|
||||||
|
getVisitsByDistributor,
|
||||||
|
}
|
||||||
|
from "./VisitRD&PDController.js";
|
||||||
|
import {
|
||||||
|
isAuthenticated_SC_TM
|
||||||
|
} from "../../middlewares/generalAuth.js";
|
||||||
|
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
router.post(
|
||||||
|
"/visit",
|
||||||
|
isAuthenticated_SC_TM,
|
||||||
|
createVisit
|
||||||
|
);
|
||||||
|
|
||||||
|
router.get(
|
||||||
|
"/visit/:distributorType/:distributorId",
|
||||||
|
isAuthenticated_SC_TM,
|
||||||
|
getVisitsByDistributor
|
||||||
|
);
|
||||||
|
|
||||||
|
export default router;
|
Loading…
Reference in New Issue
Block a user