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 TaskRoute from "./resources/Task/TaskRoute.js";
|
||||
// visit RD and PD
|
||||
import VisitRDandPDRoute from "./resources/VisitRD&PD/VisitRD&PDRoute.js";
|
||||
app.use("/api/v1", user);
|
||||
|
||||
//Product
|
||||
@ -276,6 +278,8 @@ app.use("/api/sales", SalesRoute);
|
||||
app.use("/api/task", TaskRoute);
|
||||
// RD Rotuts
|
||||
app.use("/api",RDRoute)
|
||||
// visit RD and PD
|
||||
app.use("/api", VisitRDandPDRoute);
|
||||
//config specialty
|
||||
// app.use("/api/config/specialty", SpecialtiesRouter);
|
||||
//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