desgination create delete edit get

master
Bhaskar 10 months ago
parent fedcc7cf27
commit 178c59048e

@ -10,7 +10,7 @@ const fastify = require("fastify")({
});
const { Counter} = require('../models/User')
const {Department} = require('../models/Department')
const {Department, Desgination} = require('../models/Department')
const generateDepartmentId = async () => {
const result = await Counter.findOneAndUpdate(
@ -20,6 +20,14 @@ const generateDepartmentId = async () => {
);
return result.seq;
};
const generateDesginationId = async () => {
const result = await Counter.findOneAndUpdate(
{ _id: 'desgination_id' },
{ $inc: { seq: 1 } },
{ upsert: true, new: true }
);
return result.seq;
};
exports.addDepartment = async (request, reply) => {
try {
@ -179,3 +187,164 @@ exports.addDepartment = async (request, reply) => {
reply.status(500).send({ message: err.message });
}
};
exports.addDesgination = async (request, reply) => {
try {
const d_id = await generateDepartmentId();
const desginationId = `AWDES${d_id}`;
const {
phone,
city,
state,
password,
country,
zone,
address1,
address2,
pincode,
desginationName,
createdBy,
updatedBy,
} = request.body;
const existingStore = await Desgination.findOne({ phone });
if (existingStore) {
return reply.status(400).send({ message: 'Phone is already registered' });
}
const hashedPassword = await bcrypt.hash(password, 10);
const department = new Desgination({
desginationId: desginationId,
city,
phone,
address1,
address2,
services: { password: { bcrypt: hashedPassword } },
state,
zone,
country,
pincode,
desginationName,
createdBy,
updatedBy,
});
await department.save();
reply.send({department, message: 'Account Created Successfully' });
} catch (err) {
reply.status(500).send({ message: err.message });
}
};
exports.getSinledesginationData = async (req, reply) => {
try {
const { desginationId } = req.params;
const department = await Desgination.findOne({ desginationId: desginationId });
if (!department) {
return reply.code(404).send({
success: false,
message: 'Department not found.'
});
}
reply.code(200).send({
success: true,
message: 'Designation 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.getalldesgination = async (req, reply) => {
try {
await Desgination.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.deletedesginationInfo = async (req, reply) => {
try {
const desginationId = req.params.desginationId;
const department = await Desgination.findOneAndDelete({ desginationId:desginationId });
reply.send({ status_code: 200, message: 'Delete Sucessfully', department});
} catch (err) {
throw boom.boomify(err);
}
};
exports.editdesgination = async (request, reply) => {
try {
const { desginationId } = request.params;
const {
phone,
city,
state,
country,
zone,
address1,
address2,
pincode,
desginationName
} = request.body;
const existing = await Desgination.findOne({ desginationId });
if (!existing) {
return reply.status(404).send({ message: 'Designation not found' });
}
const phoneExists = await Desgination.findOne({ phone, desginationId: { $ne: desginationId } });
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.desginationName = desginationName || existing.desginationName;
existing.pincode = pincode || existing.pincode;
existing.address1 = address1 || existing.address1;
existing.address2 = address2 || existing.address2;
await existing.save();
reply.send({ message: 'Designation user updated successfully' });
} catch (err) {
reply.status(500).send({ message: err.message });
}
};

@ -36,7 +36,40 @@ const departmentSchema = new mongoose.Schema(
);
const desginationSchema = new mongoose.Schema(
{
desginationId:{type:String},
desginationName: { type: String },
phone: { type: String, unique: true, trim: true },
address1: String,
address2: String,
pincode: { type: String },
zone: { type: String },
city: { type: String },
state: String,
country: String,
services: { password: { bcrypt: String } },
createdAt: {
type: Date,
default: function () {
return Date.now();
},
},
createdBy: ObjectId,
updatedAt: {
type: Date,
default: function () {
return Date.now();
},
},
updatedBy: ObjectId,
},
{ versionKey: false }
);
const Department = mongoose.model('Department', departmentSchema);
const Desgination = mongoose.model('Desgination', desginationSchema);
module.exports = { Department};
module.exports = { Department,Desgination};

@ -132,5 +132,135 @@ module.exports = function (fastify, opts, next) {
handler: departmentController.editdepartment,
});
fastify.route({
method: "POST",
url: "/api/desginationSignup",
schema: {
tags: ["Department"],
description: "This is for creating a new Desgination Account",
summary: "This is for creating a new Desgination Account",
body: {
type: "object",
//required: ["phone", "username", "password", "role"], // Add role to required fields
properties: {
phone: { type: "string" },
password: { type: "string" },
city: { type: "string" },
state: { type: "string" },
country: { type: "string" },
address1: { type: "string" },
address2: { type: "string" },
zone: { type: "string" },
pincode: { type: "string" },
desginationName: { type: "string" },
},
},
security: [
{
basicAuth: [],
},
],
},
handler: departmentController.addDesgination,
});
fastify.get("/api/getSingledesginationData/:desginationId", {
schema: {
tags: ["Department"],
description: "This is for Get Single desginationId Data",
summary: "This is to Get Single desginationId Data",
params: {
type: "object",
properties: {
desginationId: {
type: "string",
description: "desginationId",
},
},
},
security: [
{
basicAuth: [],
},
],
},
handler: departmentController.getSinledesginationData,
});
fastify.get("/api/getalldesginations", {
schema: {
tags: ["Department"],
description: "This is for Get all designation Data",
summary: "This is for to Get all designation Data",
security: [
{
basicAuth: [],
},
],
},
//preHandler: fastify.auth([fastify.authenticate]),
handler: departmentController.getalldesgination,
});
fastify.delete("/api/deletedesignation/:desginationId", {
schema: {
description: "Delete a desgination by desginationId",
tags: ["Department"],
summary: "Delete a user by desginationId",
params: {
type: "object",
properties: {
desginationId: { type: "string" },
},
required: ["desginationId"],
},
response: {
200: {
type: "object",
properties: {
success: { type: "boolean" },
message: { type: "string" },
}
}
}
},
handler: departmentController.deletedesginationInfo,
});
fastify.put('/api/editdesgination/:desginationId', {
schema: {
description: "Edit Desgination details by desginationId",
tags: ["Department"],
summary: "Edit Desgination details.",
params: {
type: "object",
properties: {
desginationId: { type: "string" },
},
required: ["desginationId"],
},
body: {
type: "object",
properties: {
phone: { type: "string" },
city: { type: "string" },
state: { type: "string" },
country: { type: "string" },
address1: { type: "string" },
address2: { type: "string" },
zone: { type: "string" },
pincode: { type: "string" },
desginationName: { type: "string" },
},
}
},
handler: departmentController.editdesgination,
});
next();
};
Loading…
Cancel
Save