You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

181 lines
4.6 KiB

const boom = require("boom");
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
const customJwtAuth = require("../customAuthJwt");
const fastify = require("fastify")({
logger: true,
genReqId(req) {
return uuidv4();
},
});
const { Counter} = require('../models/User')
const {Department} = require('../models/Department')
const generateDepartmentId = async () => {
const result = await Counter.findOneAndUpdate(
{ _id: 'department_id' },
{ $inc: { seq: 1 } },
{ upsert: true, new: true }
);
return result.seq;
};
exports.addDepartment = async (request, reply) => {
try {
const d_id = await generateDepartmentId();
const departmentId = `AWDP${d_id}`;
const {
phone,
city,
state,
password,
country,
zone,
address1,
address2,
pincode,
departmentName,
createdBy,
updatedBy,
} = request.body;
const existingStore = await Department.findOne({ phone });
if (existingStore) {
return reply.status(400).send({ message: 'Phone is already registered' });
}
const hashedPassword = await bcrypt.hash(password, 10);
const department = new Department({
departmentId: departmentId,
city,
phone,
address1,
address2,
services: { password: { bcrypt: hashedPassword } },
state,
zone,
country,
pincode,
departmentName,
createdBy,
updatedBy,
});
await department.save();
reply.send({department, message: 'Account Created Successfully' });
} catch (err) {
reply.status(500).send({ message: err.message });
}
};
exports.getSinledepartmentData = async (req, reply) => {
try {
const { departmentId } = req.params;
const department = await Department.findOne({ departmentId: departmentId });
if (!department) {
return reply.code(404).send({
success: false,
message: 'Department not found.'
});
}
reply.code(200).send({
success: true,
message: 'Department data retrieved successfully.',
data: department
});
} catch (error) {
console.error('Error fetching department data:', error);
reply.code(500).send({
success: false,
message: 'Failed to retrieve department data.',
error: error.message,
});
}
};
exports.getalldepartmants = async (req, reply) => {
try {
await Department.find()
.exec()
.then((docs) => {
reply.send({ status_code: 200, data: docs, count: docs.length });
})
.catch((err) => {
console.log(err);
reply.send({ error: err });
});
} catch (err) {
throw boom.boomify(err);
}
};
exports.deletedepartmentInfo = async (req, reply) => {
try {
const departmentId = req.params.departmentId;
const department = await Department.findOneAndDelete({ departmentId:departmentId });
reply.send({ status_code: 200, message: 'Delete Sucessfully', department});
} catch (err) {
throw boom.boomify(err);
}
};
exports.editdepartment = async (request, reply) => {
try {
const { departmentId } = request.params;
const {
phone,
city,
state,
country,
zone,
address1,
address2,
pincode,
departmentName
} = request.body;
const existing = await Department.findOne({ departmentId });
if (!existing) {
return reply.status(404).send({ message: 'Department not found' });
}
const phoneExists = await Department.findOne({ phone, departmentId: { $ne: departmentId } });
if (phoneExists) {
return reply.status(400).send({ message: 'Phone is already registered to another user' });
}
existing.phone = phone || existing.phone;
existing.city = city || existing.city;
existing.state = state || existing.state;
existing.country = country || existing.country;
existing.zone = zone || existing.zone;
existing.departmentName = departmentName || existing.departmentName;
existing.pincode = pincode || existing.pincode;
existing.address1 = address1 || existing.address1;
existing.address2 = address2 || existing.address2;
await existing.save();
reply.send({ message: 'Department user updated successfully' });
} catch (err) {
reply.status(500).send({ message: err.message });
}
};