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 contact = await ticket.$get("contact");
await ticket.$get("contact");
const wapp = await ticket.$get("whatsapp");
@@ -122,7 +123,7 @@ export const store = async (req: Request, res: Response): Promise<Response> => {
// 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> => {

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

View File

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

View File

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