From 60e9181ece837bf631802cd4edd4b18d22b75b98 Mon Sep 17 00:00:00 2001 From: canove Date: Sun, 6 Sep 2020 12:43:27 -0300 Subject: [PATCH] feat: set default whatsapp account in frontend --- backend/src/controllers/WhatsAppController.js | 56 ++++++++++++++++++- frontend/src/pages/WhatsApps/index.js | 9 ++- 2 files changed, 62 insertions(+), 3 deletions(-) diff --git a/backend/src/controllers/WhatsAppController.js b/backend/src/controllers/WhatsAppController.js index 75d1d68..22dccdc 100644 --- a/backend/src/controllers/WhatsAppController.js +++ b/backend/src/controllers/WhatsAppController.js @@ -1,3 +1,4 @@ +const Yup = require("yup"); const Whatsapp = require("../models/Whatsapp"); const { getIO } = require("../libs/socket"); const { getWbot, initWbot, removeWbot } = require("../libs/wbot"); @@ -5,13 +6,39 @@ const wbotMessageListener = require("../services/wbotMessageListener"); const wbotMonitor = require("../services/wbotMonitor"); exports.index = async (req, res) => { - const whatsapp = await Whatsapp.findAll(); + const whatsapps = await Whatsapp.findAll(); - return res.status(200).json(whatsapp); + return res.status(200).json(whatsapps); }; exports.store = async (req, res) => { + const schema = Yup.object().shape({ + name: Yup.string().required().min(2), + default: Yup.boolean() + .required() + .test( + "Check-default", + "Only one default whatsapp is permited", + async value => { + // console.log("cai no if", value); + if (value === true) { + const defaultFound = await Whatsapp.findOne({ + where: { default: true }, + }); + return !Boolean(defaultFound); + } else return true; + } + ), + }); + + try { + await schema.validate(req.body); + } catch (err) { + return res.status(400).json({ error: err.message }); + } + const io = getIO(); + const whatsapp = await Whatsapp.create(req.body); if (!whatsapp) { @@ -45,6 +72,31 @@ exports.show = async (req, res) => { }; exports.update = async (req, res) => { + const schema = Yup.object().shape({ + name: Yup.string().required().min(2), + default: Yup.boolean() + .required() + .test( + "Check-default", + "Only one default whatsapp is permited", + async value => { + // console.log("cai no if", value); + if (value === true) { + const defaultFound = await Whatsapp.findOne({ + where: { default: true }, + }); + return !Boolean(defaultFound); + } else return true; + } + ), + }); + + try { + await schema.validate(req.body); + } catch (err) { + return res.status(400).json({ error: err.message }); + } + const io = getIO(); const { whatsappId } = req.params; diff --git a/frontend/src/pages/WhatsApps/index.js b/frontend/src/pages/WhatsApps/index.js index 36fdc67..e4dcbcb 100644 --- a/frontend/src/pages/WhatsApps/index.js +++ b/frontend/src/pages/WhatsApps/index.js @@ -4,6 +4,7 @@ import { toast } from "react-toastify"; import { format, parseISO } from "date-fns"; import { makeStyles } from "@material-ui/core/styles"; +import { green } from "@material-ui/core/colors"; import { Button, TableBody, @@ -14,7 +15,7 @@ import { TableHead, Paper, } from "@material-ui/core"; -import { Edit, DeleteOutline } from "@material-ui/icons"; +import { Edit, DeleteOutline, CheckCircle } from "@material-ui/icons"; import MainContainer from "../../components/MainContainer"; import MainHeader from "../../components/MainHeader"; @@ -228,6 +229,7 @@ const WhatsApps = () => { Name Status Last update + Default Actions @@ -258,6 +260,11 @@ const WhatsApps = () => { {format(parseISO(whatsApp.updatedAt), "dd/MM/yy HH:mm")} + + {whatsApp.default && ( + + )} +