85 lines
2.1 KiB
TypeScript
85 lines
2.1 KiB
TypeScript
|
import SettingTicket from "../models/SettingTicket";
|
||
|
import ListTicketTimeLife from "../services/TicketServices/ListTicketTimeLife";
|
||
|
import UpdateTicketService from "../services/TicketServices/UpdateTicketService";
|
||
|
import BotIsOnQueue from "./BotIsOnQueue";
|
||
|
|
||
|
import {
|
||
|
format as _format,
|
||
|
isWithinInterval,
|
||
|
parse,
|
||
|
subMinutes
|
||
|
} from "date-fns";
|
||
|
|
||
|
import ptBR from "date-fns/locale/pt-BR";
|
||
|
import { splitDateTime } from "./SplitDateTime";
|
||
|
|
||
|
const fsPromises = require("fs/promises");
|
||
|
const fs = require("fs");
|
||
|
|
||
|
let timer: any;
|
||
|
|
||
|
const AutoCloseTickets = async () => {
|
||
|
try {
|
||
|
// const botInfo = await BotIsOnQueue('botqueue')
|
||
|
|
||
|
// if (!botInfo.userIdBot) return
|
||
|
|
||
|
const ticketExpiration = await SettingTicket.findOne({
|
||
|
where: { key: "ticketExpiration" }
|
||
|
});
|
||
|
|
||
|
if (ticketExpiration && ticketExpiration.value == "enabled") {
|
||
|
const startTime = splitDateTime(
|
||
|
new Date(
|
||
|
_format(new Date(ticketExpiration.startTime), "yyyy-MM-dd HH:mm:ss", {
|
||
|
locale: ptBR
|
||
|
})
|
||
|
)
|
||
|
);
|
||
|
|
||
|
const seconds = timeStringToSeconds(startTime.fullTime);
|
||
|
|
||
|
console.log("Ticket seconds: ", seconds);
|
||
|
|
||
|
let tickets: any = await ListTicketTimeLife({
|
||
|
timeseconds: seconds,
|
||
|
status: "open"
|
||
|
});
|
||
|
|
||
|
console.log("tickets: ", tickets);
|
||
|
|
||
|
for (let i = 0; i < tickets.length; i++) {
|
||
|
|
||
|
await UpdateTicketService({
|
||
|
ticketData: { status: "closed", statusChatEnd: "FINALIZADO" },
|
||
|
ticketId: tickets[i].ticket_id,
|
||
|
msg: ticketExpiration.message
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
} catch (error) {
|
||
|
console.log("There was an error on try close the bot tickets: ", error);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
function timeStringToSeconds(timeString: any) {
|
||
|
const [hours, minutes, seconds] = timeString.split(":").map(Number);
|
||
|
return hours * 3600 + minutes * 60 + seconds;
|
||
|
}
|
||
|
|
||
|
const schedule = async () => {
|
||
|
try {
|
||
|
clearInterval(timer);
|
||
|
|
||
|
await AutoCloseTickets();
|
||
|
} catch (error) {
|
||
|
console.log("error on schedule: ", error);
|
||
|
} finally {
|
||
|
timer = setInterval(schedule, 60000);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
timer = setInterval(schedule, 60000);
|
||
|
|
||
|
export default schedule;
|