Skip to content

Commit

Permalink
--update: optimise and improve models, controllers, validation
Browse files Browse the repository at this point in the history
  • Loading branch information
ritiksr25 committed Dec 31, 2020
1 parent d2d8691 commit 3d119d4
Show file tree
Hide file tree
Showing 14 changed files with 390 additions and 430 deletions.
55 changes: 32 additions & 23 deletions controllers/admin_controller.js
Original file line number Diff line number Diff line change
@@ -1,75 +1,84 @@
const { sendSuccess } = require("../utility/helpers");

module.exports.admin = async (req, res) => {
let totalDonations = 0,
totalAmount = 0;
let totalVolunteers = await Volunteer.countDocuments();
let totalBloodDonors = await BloodDonor.countDocuments();
let totalBloodRequests = await BloodRequest.countDocuments();
let donations = await Donation.find({ status: "success" }).sort({
updatedAt: "desc"
});
let donations = await Donation.find({ status: "success" })
.sort({
updatedAt: "desc"
})
.lean();
donations.map(donation => {
totalDonations++;
totalAmount += donation.finalAmount;
});
res.status(200).json({
message: "success",

let data = {
totalBloodDonors,
totalBloodRequests,
totalVolunteers,
totalAmount,
totalDonations
});
};
return sendSuccess(res, data);
};

module.exports.volunteers = async (req, res) => {
let volunteers = await Volunteer.find().sort({ createdAt: "desc" });
res.status(200).json({ message: "success", volunteers });
let volunteers = await Volunteer.find().sort({ createdAt: "desc" }).lean();
return sendSuccess(res, { volunteers });
};

module.exports.donors = async (req, res) => {
let { bloodGroup } = req.body;
let donors;
if (bloodGroup) {
donors = await BloodDonor.find({ bloodGroup }).sort({
createdAt: "desc"
});
donors = await BloodDonor.find({ bloodGroup })
.sort({
createdAt: "desc"
})
.lean();
} else {
donors = await BloodDonor.find().sort({ createdAt: "desc" });
donors = await BloodDonor.find().sort({ createdAt: "desc" }).lean();
}

res.status(200).json({ message: "success", donors });
return sendSuccess(res, { donors });
};

module.exports.bloodRequests = async (req, res) => {
let requests = await BloodRequest.find().sort({ createdAt: "desc" });
res.status(200).json({ message: "success", requests });
let requests = await BloodRequest.find().sort({ createdAt: "desc" }).lean();
return sendSuccess(res, { requests });
};

module.exports.messages = async (req, res) => {
let messages = await Message.find().sort({ createdAt: "desc" });
res.status(200).json({ messgae: "success", messages });
let messages = await Message.find().sort({ createdAt: "desc" }).lean();
return sendSuccess(res, { messages });
};

module.exports.donations = async (req, res) => {
let totalDonations = 0,
totalAmount = 0,
totalCharges = 0,
totalDonationAmount = 0;
let donations = await Donation.find({ status: "success" }).sort({
updatedAt: "desc"
});
let donations = await Donation.find({ status: "success" })
.sort({
updatedAt: "desc"
})
.lean();
donations.map(donation => {
totalDonations++;
totalAmount += donation.finalAmount;
totalCharges += donation.charges;
totalDonationAmount += donation.amount;
});
res.status(200).json({
message: "success",
let data = {
donations,
totalDonations,
totalCharges,
totalDonationAmount,
totalAmount
});
};
return sendSuccess(res, data);
};
46 changes: 35 additions & 11 deletions controllers/bloodPortal_controller.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
const { sendError, sendSuccess } = require("../utility/helpers");
const { BAD_REQUEST } = require("../utility/statusCodes");

module.exports.registerDonor = async (req, res) => {
let { name, bloodGroup, phone, email, dob, address, hasDonated } = req.body;
let donor = await BloodDonor.findOne({ $and: [{ email }, { phone }] });
if (donor) {
res.status(400).json({
message: "phone or email already in use."
});
} else {
await BloodDonor.create(req.body);
res.status(200).json({ message: "success" });
}
let donor = await BloodDonor.findOne({
$and: [{ email }, { phone }]
}).lean();
if (donor)
return sendError(res, "phone or email already in use.", BAD_REQUEST);
let newBloodDonor = new BloodDonor({
name,
bloodGroup,
phone,
email,
dob,
address,
hasDonated
});
newBloodDonor = await newBloodDonor.save();
return sendSuccess(res, { newBloodDonor });
};

module.exports.requestBlood = async (req, res) => {
Expand All @@ -26,6 +36,20 @@ module.exports.requestBlood = async (req, res) => {
neededBy,
timings
} = req.body;
await BloodRequest.create(req.body);
res.status(200).json({ message: "success" });
let newBloodRequest = new BloodRequest({
name,
bloodGroup,
phone,
dob,
address,
pincode,
requestFor,
require,
units,
reason,
neededBy,
timings
});
newBloodRequest = await newBloodRequest.save();
return sendSuccess(res, { newBloodRequest });
};
49 changes: 23 additions & 26 deletions controllers/donation_controller.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,28 @@
//rzp order creater
const { RZP_KEY_ID } = require("../config");
const { createRzpOrder } = require("../config/payment");
const { sendSuccess, sendError } = require("../utility/helpers");
const { BAD_REQUEST } = require("../utility/statusCodes");
require("dotenv").config();

module.exports.createOrder = async (req, res) => {
let { name, email, phone, address, amount, message } = req.body;
amount = Math.round(Number(amount) * 100) / 100;
let order = await createRzpOrder(amount, email);
let donation = await Donation.findOne({ order: order.id });
let donation = await Donation.findOne({ order: order.id }).lean();
if (!donation) {
let newDonation = {
let newDonation = new Donation({
name,
email,
phone,
address,
amount,
message,
order: order.id
};
await Donation.create(newDonation);
});
await newDonation.save();
}
res.status(200).json({
message: "success",
order,
key: process.env.RZP_KEY_ID
});
return sendSuccess(res, { order, key: RZP_KEY_ID });
};

module.exports.payment = async (req, res) => {
Expand All @@ -32,21 +31,19 @@ module.exports.payment = async (req, res) => {
razorpay_order_id,
razorpay_signature
} = req.body;
if (razorpay_payment_id) {
let donation = await Donation.findOne({
order: razorpay_order_id
});
let charges = Math.round(0.0233 * donation.amount * 100) / 100;
let finalAmount = Math.round((donation.amount - charges) * 100) / 100;
// payment details updation
donation.status = "success";
donation.charges = charges;
donation.finalAmount = finalAmount;
donation.transactionId = razorpay_payment_id;
donation.signature = razorpay_signature;
donation = await donation.save();
res.status(200).json({ message: "success", donation });
} else {
res.status(500).json({ message: "Payment failed!!" });
}
if (!razorpay_payment_id)
return sendError(res, "Payment Failed.", BAD_REQUEST);
let donation = await Donation.findOne({
order: razorpay_order_id
}).lean();
let charges = Math.round(0.0233 * donation.amount * 100) / 100;
let finalAmount = Math.round((donation.amount - charges) * 100) / 100;
// payment details updation
donation.status = "success";
donation.charges = charges;
donation.finalAmount = finalAmount;
donation.transactionId = razorpay_payment_id;
donation.signature = razorpay_signature;
donation = await donation.save();
return sendSuccess(res, { donation });
};
45 changes: 21 additions & 24 deletions controllers/index_controller.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,32 @@
module.exports.notFound = (req, res) => {
res.status(404).json({ message: "API not found!!" });
};

module.exports.welcome = (req, res) => {
res.status(200).json({ message: "Welcome to UDDESHYA BACKEND API!!" });
};
const { sendError, sendSuccess } = require("../utility/helpers");
const { BAD_REQUEST } = require("../utility/statusCodes");

module.exports.index = async (req, res) => {
let totalProjects = await Project.countDocuments();
let projects = await Project.find().sort({ updatedAt: "desc" }).limit(3);
res.status(200).json({
message: "success",
totalProjects,
projects
});
let projects = await Project.find()
.sort({ updatedAt: "desc" })
.limit(3)
.lean();
return sendSuccess(res, { totalProjects, projects });
};

module.exports.volunteer = async (req, res) => {
let volunteer = await Volunteer.findOne({ email: req.body.email });
if (volunteer) {
res.status(400).json({
message: "You have already filled the form"
});
} else {
await Volunteer.create(req.body);
res.status(200).json({ message: "success" });
}
let volunteer = await Volunteer.findOne({ email: req.body.email }).lean();
if (volunteer)
return sendError(res, "You have already filled the form.", BAD_REQUEST);
volunteer = await Volunteer.create(req.body);
return sendSuccess(res, { volunteer });
};

module.exports.contact = async (req, res) => {
let { name, email, phone, message } = req.body;
await Message.create(req.body);
res.status(200).json({ message: "success" });
let message = new Message({
name,
email,
phone,
message
});

message = await message.save();
return sendSuccess(res, { message });
};
Loading

0 comments on commit 3d119d4

Please sign in to comment.