var Sequelize = require('sequelize'); const nodemailer = require('nodemailer'); const { body, validationResult } = require('express-validator'); const memberServices = require("../services").member; module.exports = { validate(method) { switch (method) { case 'register': { return [ body('username', 'userName doesn\'t exists').exists(), body('email', 'Invalid email').exists().isEmail(), body('phone').optional().isInt() ] } } }, register(req, res) { const errors = validationResult(req); if (!errors.isEmpty()) { console.log(errors) return res.status(400).json({ errors: errors.array() }); } return memberServices.create(req) .then(member => { res.status(200).send("Register succesfully") }) .catch(error => { res.status(400).send(error.errors) }); }, login(req, res) { memberServices.login(req) .then(accessToken => res.status(200).send(accessToken)) .catch(error => res.status(400).send(error.errors)); }, profile(req, res) { memberServices.getProfile(req) .then(member => res.status(200).send(member)) .catch(error => res.status(400).send(error.errors)); }, forgotPassword(req, res) { memberServices.forgotPassword(req) .then(result => { console.log(result) }) .catch(error => res.status(400).send(error.errors)); }, resetPassword(req, res) { const mode = req.body.mode; switch (mode) { case memberServices.RESET_START: memberServices.resetPassword(req) .then(result => { res.status(200).send(result) }) .catch(error => res.status(400).send(error.errors)); break; case memberServices.RESET_CONFIRM: memberServices.confirmResetPassword(req) .then(result => { res.status(200).send(result) }) .catch(error => res.status(400).send(error.errors)); break; case memberServices.RESET_COMPLETE: memberServices.completeResetPassword(req) .then(result => { res.status(200).send(result) }) .catch(error => res.status(400).send(error.errors)); break; default: res.status(400).send("Invalid mode") } }, updateProfile(req, res) { const username = req.user.username; const { firstname, lastname, phone } = req.body; const data = { firstname: firstname, lastname: lastname, phone: phone } return memberServices.updateProfile(username, data) .then(([rowsUpdate, [updatedRow]]) => res.status(200).send("Update profile successfully")) .catch(error => res.status(400).send(error)); }, changePassword(req, res) { memberServices .updatePassword(req) .then(([rowsUpdate, [updatedRow]]) => res.status(200).send("Update password successfully")) .catch(error => res.status(400).send(error)); }, deactivate(req, res) { } };