Skip to content

Commit

Permalink
Gift Lunch Controller
Browse files Browse the repository at this point in the history
  • Loading branch information
Ay4codes committed Sep 21, 2023
1 parent ee00221 commit 8386891
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 79 deletions.
94 changes: 45 additions & 49 deletions controllers/emailConfirmationController.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
// import bcrypt from "bcryptjs"
const { transport } = require("../config/nodemailerConfig.js");
const dotenv = require("dotenv");
const dotenv = require('dotenv');
const { transport } = require('../config/nodemailerConfig.js');

dotenv.config();
const teamMail = process.env.TEAM_MAIL;

const issueOtp = async (userId, email) => {
const otp = `${Math.floor(1000 + Math.random() * 9000)}`;
const saltRounds = 12 //This should be in environment variable
const saltRounds = 12; //This should be in environment variable

// const hashedOTP = await bcrypt.hash(otp, saltRounds);
// const hashedOTP = await bcrypt.hash(otp, saltRounds);

//Save hased otp with userId and email for confirmation purposes
//Hased OTP should be saved to db for confirmation later,then deleted upon successful authentication
Expand All @@ -20,8 +20,8 @@ const issueOtp = async (userId, email) => {
};
};

const otpMessage = (otp, timeLeft)=> {
let template = `
const otpMessage = (otp, timeLeft) => {
const template = `
<div style="max-width: 700px;text-align: center;background: #f4f8fd;
margin:auto; border: 10px solid #ddd; padding: 50px 20px; font-size: 110%;">
<h2 style="color: #FF7F50;">Welcome to XXXX 2.0</h2>
Expand All @@ -31,17 +31,16 @@ const otpMessage = (otp, timeLeft)=> {
</div>
</div>
`;
return template;
}

return template;
};

// Function to send email with otp code
// Function to send email with otp code
const sendEmail = async (email, message) => {
const mailOptions = {
from:'[email protected]', //This should be in environement variable
from: '[email protected]', //This should be in environement variable
subject: 'Verify your email',
to:email,
html: message
to: email,
html: message,
};

return new Promise((resolve, reject) => {
Expand All @@ -52,45 +51,42 @@ const sendEmail = async (email, message) => {
});
};



const sendUserOtp = async (userId,email) => {
try {
if (!userId || !email) {
return ({
status: false,
message: `User details cannot be empty`,
});
};

//generate a new otp
const otp = await issueOtp(userId, email);
const message = otpMessage(otp.userOtp, otp.timeLeft);

//send mail with otp details
await sendEmail(email,message);

return ({
status: true,
message: "otp sent successfully",
data: null
});
} catch (error) {
console.log(error);
return ({
const sendUserOtp = async (userId, email) => {
try {
if (!userId || !email) {
return {
status: false,
message: `internal server error`,
});
message: `User details cannot be empty`,
};
}
};

module.exports ={
issueOtp,
otpMessage,
sendEmail,
sendUserOtp
//generate a new otp
const otp = await issueOtp(userId, email);
const message = otpMessage(otp.userOtp, otp.timeLeft);

//send mail with otp details
await sendEmail(email, message);

return {
status: true,
message: 'otp sent successfully',
data: null,
};
} catch (error) {
console.log(error);
return {
status: false,
message: `internal server error`,
};
}
};

module.exports = {
issueOtp,
otpMessage,
sendEmail,
sendUserOtp,
};

//call this function to test controller
// sendUserOtp('1','[email protected]')
//call this function to test controller
// sendUserOtp('1','[email protected]')
42 changes: 21 additions & 21 deletions controllers/giftLunchController.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,37 @@ const User = require('../models/user.model');
const response = require('../utils/response');

const giftLunch = async (req, res) => {
try {
const userId = req.user.id;
try {
const userId = req.user.id;

const {receiver_id, quantity, note } = req.body
const { receiverId, quantity, note } = req.body;

if (!receiver_id || !quantity || !note) return res.status(400).json(response(false, 'Missing required fields', null));
if (!receiverId || !quantity || !note) return res.status(400).json(response(false, 'Missing required fields', null));

const user = await User.findOne({ where: { id: userId } });
const user = await User.findOne({ where: { id: userId } });

if (!user) return res.status(404).json(response(false, 'User does not exist', null));
if (!user) return res.status(404).json(response(false, 'User does not exist', null));

const lunch = {receiver_id, quantity, note, redeemed: false}
const lunch = { receiverId, quantity, note, redeemed: false };

// Create Launch
const newLunch = await Lunch.create(lunch)
// Create Launch
const newLunch = await Lunch.create(lunch);

const sender = await User.findOne({ where: { id: userId } });
const sender = await User.findOne({ where: { id: userId } });

const receiver = await User.findOne({ where: { id: receiver_id } });
const receiver = await User.findOne({ where: { id: receiverId } });

//Update the sender's balance
await sender.update({balance: sender.balance - quantity});
//Update the sender's balance
await sender.update({ balance: sender.balance - quantity });

//Update the receiver's balance
await receiver.update({balance: receiver.balance + quantity});
//Update the receiver's balance
await receiver.update({ balance: receiver.balance + quantity });

return res.status(201).json(response(true, 'Lunch gifted successfully', {lunch: newLunch}));
return res.status(201).json(response(true, 'Lunch gifted successfully', { lunch: newLunch }));

} catch (error) {
res.status(500).json(response(false, 'Internal Server Error', null));
}
}
} catch (error) {
return res.status(500).json(response(false, 'Internal Server Error', null));
}
};

module.exports = {giftLunch}
module.exports = { giftLunch };
2 changes: 1 addition & 1 deletion routes/lunchRoutes.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ const { giftLunch } = require('../controllers/giftLunchController');
router.get('/user/:userId/lunch/all', lunchControllers.getAllLunch);

// Gift Launch
router.post('/gift_lunch', giftLunch)
router.post('/gift_lunch', giftLunch);

module.exports = router;
14 changes: 6 additions & 8 deletions utils/response.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
const response = (success, message, data) => {
return {
success: success,
message: message,
data: data
}
}
const response = (success, message, data) => ({
success: success,
message: message,
data: data,
});

module.exports = (response)
module.exports = response;

0 comments on commit 8386891

Please sign in to comment.