all routes changed to typescript

This commit is contained in:
canove
2020-09-19 09:40:24 -03:00
parent 99fa2cea61
commit 0ea4dbea51
11 changed files with 469 additions and 270 deletions

View File

@@ -109,7 +109,8 @@ export const store = async (req: Request, res: Response): Promise<Response> => {
} }
const ticket: Ticket = await defaultWhatsapp.$create("ticket", req.body); const ticket: Ticket = await defaultWhatsapp.$create("ticket", req.body);
const contact = await ticket.$get("contact");
await ticket.$get("contact");
const wapp = await ticket.$get("whatsapp"); const wapp = await ticket.$get("whatsapp");
@@ -122,7 +123,7 @@ export const store = async (req: Request, res: Response): Promise<Response> => {
// ticket: serializaedTicket // ticket: serializaedTicket
// }); // });
return res.status(200).json({ ticket, contact, wapp, tickets }); return res.status(200).json({ ticket });
}; };
// export const update = (req: Request, res: Response): Promise<Response> => { // export const update = (req: Request, res: Response): Promise<Response> => {

View File

@@ -0,0 +1,136 @@
import { Request, Response } from "express";
import CreateWhatsAppService from "../services/WhatsappService/CreateWhatsAppService";
// import Yup from "yup";
// import Whatsapp from "../models/Whatsapp";
// import { getIO } from "../libs/socket";
// import { getWbot, initWbot, removeWbot } from "../libs/wbot";
// import wbotMessageListener from "../services/wbotMessageListener";
// import wbotMonitor from "../services/wbotMonitor";
import ListWhatsAppsService from "../services/WhatsappService/ListWhatsAppsService";
export const index = async (req: Request, res: Response): Promise<Response> => {
const whatsapps = await ListWhatsAppsService();
return res.status(200).json(whatsapps);
};
interface WhatsappData {
name: string;
status: string;
}
export const store = async (req: Request, res: Response): Promise<Response> => {
// const io = getIO();
console.log("aqui");
const { name, status }: WhatsappData = req.body;
const whatsapp = await CreateWhatsAppService({ name, status });
// if (!whatsapp) {
// return res.status(400).json({ error: "Cannot create whatsapp session." });
// }
// initWbot(whatsapp)
// .then(() => {
// wbotMessageListener(whatsapp);
// wbotMonitor(whatsapp);
// })
// .catch(err => console.log(err));
// io.emit("whatsapp", {
// action: "update",
// whatsapp: whatsapp
// });
return res.status(200).json(whatsapp);
};
// export const show = async (req: Request, res: Response): Promise<Response> => {
// const { whatsappId } = req.params;
// const whatsapp = await Whatsapp.findByPk(whatsappId);
// if (!whatsapp) {
// return res.status(200).json({ message: "Session not found" });
// }
// return res.status(200).json(whatsapp);
// };
// export const update = async (
// req: Request,
// res: Response
// ): Promise<Response> => {
// const { whatsappId } = req.params;
// 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 => {
// if (value === true) {
// const whatsappFound = await Whatsapp.findOne({
// where: { default: true }
// });
// if (whatsappFound) {
// return !(whatsappFound.id !== +whatsappId);
// } else {
// return true;
// }
// } 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.findByPk(whatsappId);
// if (!whatsapp) {
// return res.status(404).json({ message: "Whatsapp not found" });
// }
// await whatsapp.update(req.body);
// io.emit("whatsapp", {
// action: "update",
// whatsapp: whatsapp
// });
// return res.status(200).json({ message: "Whatsapp updated" });
// };
// export const remove = async (
// req: Request,
// res: Response
// ): Promise<Response> => {
// const io = getIO();
// const { whatsappId } = req.params;
// const whatsapp = await Whatsapp.findByPk(whatsappId);
// if (!whatsapp) {
// return res.status(404).json({ message: "Whatsapp not found" });
// }
// await whatsapp.destroy();
// removeWbot(whatsapp.id);
// io.emit("whatsapp", {
// action: "delete",
// whatsappId: whatsapp.id
// });
// return res.status(200).json({ message: "Whatsapp deleted." });
// };

View File

@@ -14,7 +14,7 @@ exports.index = async (req, res) => {
status = "", status = "",
date = "", date = "",
searchParam = "", searchParam = "",
showAll, showAll
} = req.query; } = req.query;
const userId = req.user.id; const userId = req.user.id;
@@ -26,8 +26,8 @@ exports.index = async (req, res) => {
{ {
model: Contact, model: Contact,
as: "contact", as: "contact",
attributes: ["name", "number", "profilePicUrl"], attributes: ["name", "number", "profilePicUrl"]
}, }
]; ];
let whereCondition = { userId: userId }; let whereCondition = { userId: userId };
@@ -39,7 +39,7 @@ exports.index = async (req, res) => {
if (status) { if (status) {
whereCondition = { whereCondition = {
...whereCondition, ...whereCondition,
status: status, status: status
}; };
} }
@@ -55,11 +55,11 @@ exports.index = async (req, res) => {
Sequelize.fn("LOWER", Sequelize.col("body")), Sequelize.fn("LOWER", Sequelize.col("body")),
"LIKE", "LIKE",
"%" + searchParam.toLowerCase() + "%" "%" + searchParam.toLowerCase() + "%"
), )
}, },
required: false, required: false,
duplicating: false, duplicating: false
}, }
]; ];
whereCondition = { whereCondition = {
@@ -69,7 +69,7 @@ exports.index = async (req, res) => {
Sequelize.fn("LOWER", Sequelize.col("name")), Sequelize.fn("LOWER", Sequelize.col("name")),
"LIKE", "LIKE",
"%" + searchParam.toLowerCase() + "%" "%" + searchParam.toLowerCase() + "%"
), )
}, },
{ "$contact.number$": { [Sequelize.Op.like]: `%${searchParam}%` } }, { "$contact.number$": { [Sequelize.Op.like]: `%${searchParam}%` } },
{ {
@@ -77,9 +77,9 @@ exports.index = async (req, res) => {
Sequelize.fn("LOWER", Sequelize.col("body")), Sequelize.fn("LOWER", Sequelize.col("body")),
"LIKE", "LIKE",
"%" + searchParam.toLowerCase() + "%" "%" + searchParam.toLowerCase() + "%"
), )
}, }
], ]
}; };
} }
@@ -89,9 +89,9 @@ exports.index = async (req, res) => {
createdAt: { createdAt: {
[Sequelize.Op.between]: [ [Sequelize.Op.between]: [
startOfDay(parseISO(date)), startOfDay(parseISO(date)),
endOfDay(parseISO(date)), endOfDay(parseISO(date))
], ]
}, }
}; };
} }
@@ -101,7 +101,7 @@ exports.index = async (req, res) => {
include: includeCondition, include: includeCondition,
limit, limit,
offset, offset,
order: [["updatedAt", "DESC"]], order: [["updatedAt", "DESC"]]
}); });
const hasMore = count > offset + tickets.length; const hasMore = count > offset + tickets.length;
@@ -113,7 +113,7 @@ exports.store = async (req, res) => {
const io = getIO(); const io = getIO();
const defaultWhatsapp = await Whatsapp.findOne({ const defaultWhatsapp = await Whatsapp.findOne({
where: { default: true }, where: { default: true }
}); });
if (!defaultWhatsapp) { if (!defaultWhatsapp) {
@@ -130,7 +130,7 @@ exports.store = async (req, res) => {
io.to("notification").emit("ticket", { io.to("notification").emit("ticket", {
action: "create", action: "create",
ticket: serializaedTicket, ticket: serializaedTicket
}); });
return res.status(200).json(ticket); return res.status(200).json(ticket);
@@ -145,9 +145,9 @@ exports.update = async (req, res) => {
{ {
model: Contact, model: Contact,
as: "contact", as: "contact",
attributes: ["name", "number", "profilePicUrl"], attributes: ["name", "number", "profilePicUrl"]
}, }
], ]
}); });
if (!ticket) { if (!ticket) {
@@ -158,7 +158,7 @@ exports.update = async (req, res) => {
io.to("notification").emit("ticket", { io.to("notification").emit("ticket", {
action: "updateStatus", action: "updateStatus",
ticket: ticket, ticket: ticket
}); });
return res.status(200).json(ticket); return res.status(200).json(ticket);
@@ -178,7 +178,7 @@ exports.delete = async (req, res) => {
io.to("notification").emit("ticket", { io.to("notification").emit("ticket", {
action: "delete", action: "delete",
ticketId: ticket.id, ticketId: ticket.id
}); });
return res.status(200).json({ message: "ticket deleted" }); return res.status(200).json({ message: "ticket deleted" });

View File

@@ -22,12 +22,12 @@ exports.store = async (req, res) => {
async value => { async value => {
if (value === true) { if (value === true) {
const whatsappFound = await Whatsapp.findOne({ const whatsappFound = await Whatsapp.findOne({
where: { default: true }, where: { default: true }
}); });
return !Boolean(whatsappFound); return !Boolean(whatsappFound);
} else return true; } else return true;
} }
), )
}); });
try { try {
@@ -53,7 +53,7 @@ exports.store = async (req, res) => {
io.emit("whatsapp", { io.emit("whatsapp", {
action: "update", action: "update",
whatsapp: whatsapp, whatsapp: whatsapp
}); });
return res.status(200).json(whatsapp); return res.status(200).json(whatsapp);
@@ -83,7 +83,7 @@ exports.update = async (req, res) => {
async value => { async value => {
if (value === true) { if (value === true) {
const whatsappFound = await Whatsapp.findOne({ const whatsappFound = await Whatsapp.findOne({
where: { default: true }, where: { default: true }
}); });
if (whatsappFound) { if (whatsappFound) {
return !(whatsappFound.id !== +whatsappId); return !(whatsappFound.id !== +whatsappId);
@@ -92,7 +92,7 @@ exports.update = async (req, res) => {
} }
} else return true; } else return true;
} }
), )
}); });
try { try {
@@ -113,7 +113,7 @@ exports.update = async (req, res) => {
io.emit("whatsapp", { io.emit("whatsapp", {
action: "update", action: "update",
whatsapp: whatsapp, whatsapp: whatsapp
}); });
return res.status(200).json({ message: "Whatsapp updated" }); return res.status(200).json({ message: "Whatsapp updated" });
@@ -134,7 +134,7 @@ exports.delete = async (req, res) => {
io.emit("whatsapp", { io.emit("whatsapp", {
action: "delete", action: "delete",
whatsappId: whatsapp.id, whatsappId: whatsapp.id
}); });
return res.status(200).json({ message: "Whatsapp deleted." }); return res.status(200).json({ message: "Whatsapp deleted." });

View File

@@ -5,10 +5,8 @@ import authRoutes from "./authRoutes";
import settingRoutes from "./settingRoutes"; import settingRoutes from "./settingRoutes";
import contactRoutes from "./contactRoutes"; import contactRoutes from "./contactRoutes";
import ticketRoutes from "./ticketRoutes"; import ticketRoutes from "./ticketRoutes";
import whatsappRoutes from "./whatsappRoutes";
// const MessagesRoutes = require("./routes/messages"); import messageRoutes from "./messageRoutes";
// const WhatsRoutes = require("./routes/whatsapp");
// const UsersRoutes = require("./routes/users");
const routes = Router(); const routes = Router();
@@ -17,7 +15,7 @@ routes.use("/auth", authRoutes);
routes.use(settingRoutes); routes.use(settingRoutes);
routes.use(contactRoutes); routes.use(contactRoutes);
routes.use(ticketRoutes); routes.use(ticketRoutes);
// routes.use(MessagesRoutes); routes.use(whatsappRoutes);
// routes.use(WhatsRoutes); routes.use(messageRoutes);
export default routes; export default routes;

View File

@@ -0,0 +1,12 @@
import { Router } from "express";
// import isAuth from "../middleware/isAuth";
// import { index, store } from "../controllers/MessageController";
const messageRoutes = Router();
// messageRoutes.get("/messages/:ticketId", isAuth, index);
// messageRoutes.post("/messages/:ticketId", isAuth, store);
export default messageRoutes;

View File

@@ -1,12 +0,0 @@
const express = require("express");
const isAuth = require("../../middleware/is-auth");
const MessageController = require("../../controllers/MessageController");
const routes = express.Router();
routes.get("/messages/:ticketId", isAuth, MessageController.index);
routes.post("/messages/:ticketId", isAuth, MessageController.store);
module.exports = routes;

View File

@@ -1,18 +0,0 @@
const express = require("express");
const isAuth = require("../../middleware/is-auth");
const WhatsAppController = require("../../controllers/WhatsAppController");
const routes = express.Router();
routes.get("/whatsapp/", isAuth, WhatsAppController.index);
routes.post("/whatsapp/", isAuth, WhatsAppController.store);
routes.get("/whatsapp/:whatsappId", isAuth, WhatsAppController.show);
routes.put("/whatsapp/:whatsappId", isAuth, WhatsAppController.update);
routes.delete("/whatsapp/:whatsappId", isAuth, WhatsAppController.delete);
module.exports = routes;

View File

@@ -0,0 +1,22 @@
import express from "express";
import isAuth from "../middleware/isAuth";
import * as WhatsAppController from "../controllers/WhatsAppController";
const whatsappRoutes = express.Router();
whatsappRoutes.get("/whatsapp/", isAuth, WhatsAppController.index);
whatsappRoutes.post("/whatsapp/", isAuth, WhatsAppController.store);
// whatsappRoutes.get("/whatsapp/:whatsappId", isAuth, WhatsAppController.show);
// whatsappRoutes.put("/whatsapp/:whatsappId", isAuth, WhatsAppController.update);
// whatsappRoutes.remove(
// "/whatsapp/:whatsappId",
// isAuth,
// WhatsAppController.delete
// );
export default whatsappRoutes;

View File

@@ -0,0 +1,47 @@
import * as Yup from "yup";
import AppError from "../../errors/AppError";
import Whatsapp from "../../models/Whatsapp";
interface Request {
name: string;
status?: string;
}
const CreateWhatsAppService = async ({
name,
status = "INITIALIZING"
}: Request): Promise<Whatsapp> => {
// 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 => {
// if (value === true) {
// const whatsappFound = await Whatsapp.findOne({
// where: { default: true }
// });
// return !Boolean(whatsappFound);
// } else return true;
// }
// )
// });
// try {
// await schema.validate({ name, status });
// } catch (err) {
// throw new AppError(err.message);
// }
const whatsapp = await Whatsapp.create({
name,
status
});
return whatsapp;
};
export default CreateWhatsAppService;

View File

@@ -0,0 +1,13 @@
import Whatsapp from "../../models/Whatsapp";
interface Response {
whatsapps: Whatsapp[];
}
const ListWhatsAppsService = async (): Promise<Response> => {
const whatsapps = await Whatsapp.findAll();
return { whatsapps };
};
export default ListWhatsAppsService;