visit rd and pd stored in database

This commit is contained in:
Sibunnayak 2024-09-18 20:13:04 +05:30
parent e03de96466
commit 110e586692
4 changed files with 132 additions and 0 deletions

4
app.js
View File

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

View 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' });
}
};

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

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