2022-01-06 01:26:15 +00:00
|
|
|
import * as Yup from "yup";
|
|
|
|
import { Op } from "sequelize";
|
|
|
|
|
|
|
|
import AppError from "../../errors/AppError";
|
|
|
|
import Whatsapp from "../../models/Whatsapp";
|
|
|
|
import ShowWhatsAppService from "./ShowWhatsAppService";
|
|
|
|
import AssociateWhatsappQueue from "./AssociateWhatsappQueue";
|
2022-11-17 14:40:37 +00:00
|
|
|
import { insertOrUpeateWhatsCache } from "../../helpers/WhatsCache";
|
2022-12-11 07:47:32 +00:00
|
|
|
import { getWbot } from "../../libs/wbot";
|
|
|
|
import { restartWhatsSession } from "../../helpers/RestartWhatsSession";
|
|
|
|
|
|
|
|
|
2022-01-06 01:26:15 +00:00
|
|
|
|
|
|
|
interface WhatsappData {
|
|
|
|
name?: string;
|
|
|
|
status?: string;
|
|
|
|
session?: string;
|
|
|
|
isDefault?: boolean;
|
|
|
|
greetingMessage?: string;
|
|
|
|
farewellMessage?: string;
|
|
|
|
queueIds?: number[];
|
|
|
|
}
|
|
|
|
|
|
|
|
interface Request {
|
|
|
|
whatsappData: WhatsappData;
|
|
|
|
whatsappId: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
interface Response {
|
|
|
|
whatsapp: Whatsapp;
|
|
|
|
oldDefaultWhatsapp: Whatsapp | null;
|
|
|
|
}
|
|
|
|
|
|
|
|
const UpdateWhatsAppService = async ({
|
|
|
|
whatsappData,
|
|
|
|
whatsappId
|
|
|
|
}: Request): Promise<Response> => {
|
|
|
|
const schema = Yup.object().shape({
|
|
|
|
name: Yup.string().min(2),
|
|
|
|
status: Yup.string(),
|
|
|
|
isDefault: Yup.boolean()
|
|
|
|
});
|
|
|
|
|
|
|
|
const {
|
|
|
|
name,
|
|
|
|
status,
|
|
|
|
isDefault,
|
|
|
|
session,
|
|
|
|
greetingMessage,
|
|
|
|
farewellMessage,
|
|
|
|
queueIds = []
|
|
|
|
} = whatsappData;
|
|
|
|
|
2022-12-11 07:47:32 +00:00
|
|
|
|
|
|
|
|
2022-01-06 01:26:15 +00:00
|
|
|
try {
|
|
|
|
await schema.validate({ name, status, isDefault });
|
|
|
|
} catch (err) {
|
|
|
|
throw new AppError(err.message);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (queueIds.length > 1 && !greetingMessage) {
|
|
|
|
throw new AppError("ERR_WAPP_GREETING_REQUIRED");
|
|
|
|
}
|
|
|
|
|
|
|
|
let oldDefaultWhatsapp: Whatsapp | null = null;
|
|
|
|
|
|
|
|
if (isDefault) {
|
|
|
|
oldDefaultWhatsapp = await Whatsapp.findOne({
|
|
|
|
where: { isDefault: true, id: { [Op.not]: whatsappId } }
|
|
|
|
});
|
|
|
|
if (oldDefaultWhatsapp) {
|
|
|
|
await oldDefaultWhatsapp.update({ isDefault: false });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-11 07:47:32 +00:00
|
|
|
const whatsapp = await ShowWhatsAppService(whatsappId);
|
|
|
|
|
|
|
|
// console.log('############## whatsapp: ', JSON.parse(JSON.stringify(whatsapp)))
|
2022-01-06 01:26:15 +00:00
|
|
|
|
2022-12-11 07:47:32 +00:00
|
|
|
if(name && !name.includes(whatsapp.number) && whatsapp.status === 'CONNECTED'){
|
|
|
|
|
|
|
|
throw new AppError("ERR_WAPP_WRONG_SESSION_NAME");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2022-01-06 01:26:15 +00:00
|
|
|
await whatsapp.update({
|
|
|
|
name,
|
|
|
|
status,
|
|
|
|
session,
|
|
|
|
greetingMessage,
|
|
|
|
farewellMessage,
|
|
|
|
isDefault
|
|
|
|
});
|
|
|
|
|
2022-11-17 14:40:37 +00:00
|
|
|
await insertOrUpeateWhatsCache(`whatsapp:${whatsapp.id}`, {
|
|
|
|
name,
|
|
|
|
status,
|
|
|
|
session,
|
|
|
|
greetingMessage,
|
|
|
|
farewellMessage,
|
|
|
|
isDefault
|
|
|
|
})
|
|
|
|
|
2022-01-06 01:26:15 +00:00
|
|
|
await AssociateWhatsappQueue(whatsapp, queueIds);
|
|
|
|
|
|
|
|
return { whatsapp, oldDefaultWhatsapp };
|
|
|
|
};
|
|
|
|
|
|
|
|
export default UpdateWhatsAppService;
|