Compare commits
5 Commits
76929c41ec
...
90e9e311c3
Author | SHA1 | Date |
---|---|---|
adriano | 90e9e311c3 | |
adriano | ce7385602f | |
adriano | e6ea004edf | |
adriano | 8a35b985b9 | |
adriano | a96d6f26c7 |
|
@ -20,7 +20,7 @@ export const index = async (req: Request, res: Response): Promise<Response> => {
|
|||
|
||||
// const config = await SettingTicket.findAll();
|
||||
|
||||
return res.status(200).json({ settings, });
|
||||
return res.status(200).json({ settings });
|
||||
};
|
||||
|
||||
export const ticketSettings = async (
|
||||
|
@ -40,6 +40,7 @@ export const updateTicketSettings = async (
|
|||
): Promise<Response> => {
|
||||
const {
|
||||
number,
|
||||
saturdayBusinessTime,
|
||||
outBusinessHours,
|
||||
ticketExpiration,
|
||||
weekend,
|
||||
|
@ -58,6 +59,14 @@ export const updateTicketSettings = async (
|
|||
});
|
||||
}
|
||||
|
||||
if (saturdayBusinessTime && Object.keys(saturdayBusinessTime).length > 0) {
|
||||
await updateSettingTicket({
|
||||
...saturdayBusinessTime,
|
||||
key: "saturdayBusinessTime",
|
||||
number
|
||||
});
|
||||
}
|
||||
|
||||
if (ticketExpiration && Object.keys(ticketExpiration).length > 0) {
|
||||
await updateSettingTicket({
|
||||
...ticketExpiration,
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
import { QueryInterface } from "sequelize";
|
||||
|
||||
module.exports = {
|
||||
up: (queryInterface: QueryInterface) => {
|
||||
return queryInterface.bulkInsert(
|
||||
"SettingTickets",
|
||||
[
|
||||
{
|
||||
message: "",
|
||||
startTime: new Date(),
|
||||
endTime: new Date(),
|
||||
value: "disabled",
|
||||
key: "saturdayBusinessTime",
|
||||
createdAt: new Date(),
|
||||
updatedAt: new Date()
|
||||
}
|
||||
],
|
||||
{}
|
||||
);
|
||||
},
|
||||
|
||||
down: (queryInterface: QueryInterface) => {
|
||||
return queryInterface.bulkDelete("SettingTickets", {});
|
||||
}
|
||||
};
|
|
@ -173,8 +173,80 @@ async function isOutBusinessTime(number: string | number) {
|
|||
return obj;
|
||||
}
|
||||
|
||||
export {
|
||||
isWeekend,
|
||||
isHoliday,
|
||||
isOutBusinessTime
|
||||
};
|
||||
async function isOutBusinessTimeSaturday(number: string | number) {
|
||||
let obj = { set: false, msg: "" };
|
||||
|
||||
const outBusinessHoursSaturday = await SettingTicket.findOne({
|
||||
where: { key: "saturdayBusinessTime", number }
|
||||
});
|
||||
|
||||
let isWithinRange = false;
|
||||
|
||||
if (
|
||||
true &&
|
||||
outBusinessHoursSaturday
|
||||
// outBusinessHoursSaturday &&
|
||||
// outBusinessHoursSaturday.value == "enabled" &&
|
||||
// outBusinessHoursSaturday?.message?.trim()?.length > 0
|
||||
) {
|
||||
const ticketDateTimeUpdate = splitDateTime(
|
||||
new Date(
|
||||
_format(new Date(), "yyyy-MM-dd HH:mm:ss", {
|
||||
locale: ptBR
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
const startTime = splitDateTime(
|
||||
new Date(
|
||||
_format(
|
||||
new Date(outBusinessHoursSaturday.startTime),
|
||||
"yyyy-MM-dd HH:mm:ss",
|
||||
{
|
||||
locale: ptBR
|
||||
}
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
const endTime = splitDateTime(
|
||||
new Date(
|
||||
_format(
|
||||
new Date(outBusinessHoursSaturday.endTime),
|
||||
"yyyy-MM-dd HH:mm:ss",
|
||||
{
|
||||
locale: ptBR
|
||||
}
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
const format = "HH:mm:ss";
|
||||
const parsedStartTime = parse(
|
||||
ticketDateTimeUpdate.fullTime,
|
||||
format,
|
||||
new Date()
|
||||
);
|
||||
const parsedEndTime = parse(startTime.fullTime, format, new Date());
|
||||
const parsedTimeToCheck = parse(endTime.fullTime, format, new Date());
|
||||
const timeInterval = { start: parsedStartTime, end: parsedEndTime };
|
||||
|
||||
// If the time range spans across different days, handle the date part
|
||||
if (parsedEndTime < parsedStartTime) {
|
||||
const nextDay = new Date(parsedStartTime);
|
||||
nextDay.setDate(nextDay.getDate() + 1);
|
||||
timeInterval.end = nextDay;
|
||||
}
|
||||
|
||||
isWithinRange = isWithinInterval(parsedTimeToCheck, timeInterval);
|
||||
|
||||
if (!isWithinRange) {
|
||||
obj.set = true;
|
||||
obj.msg = outBusinessHoursSaturday.message;
|
||||
}
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
export { isWeekend, isHoliday, isOutBusinessTime, isOutBusinessTimeSaturday };
|
||||
|
|
|
@ -10,6 +10,7 @@ import path from "path";
|
|||
import {
|
||||
isHoliday,
|
||||
isOutBusinessTime,
|
||||
isOutBusinessTimeSaturday,
|
||||
isWeekend
|
||||
} from "../../helpers/TicketConfig";
|
||||
|
||||
|
@ -1221,6 +1222,13 @@ const outOfService = async (number: string) => {
|
|||
objs.push({ type: "holiday", msg: holiday.msg });
|
||||
}
|
||||
|
||||
// MESSAGE TO SATURDAY BUSINESS TIME
|
||||
const businessTimeSaturday = await isOutBusinessTimeSaturday(number);
|
||||
|
||||
if (businessTimeSaturday && businessTimeSaturday.set) {
|
||||
objs.push({ type: "saturdayBusinessTime", msg: businessTimeSaturday.msg });
|
||||
}
|
||||
|
||||
// MESSAGES TO SATURDAY OR SUNDAY
|
||||
const weekend: any = await isWeekend(number);
|
||||
|
||||
|
|
|
@ -77,8 +77,16 @@ const ConfigModal = ({ open, onClose, change }) => {
|
|||
const initialState = {
|
||||
startTimeBus: new Date(),
|
||||
endTimeBus: new Date(),
|
||||
|
||||
startTimeBusSaturday: new Date(),
|
||||
endTimeBusSaturday: new Date(),
|
||||
|
||||
messageBus: '',
|
||||
messageBusSaturday: '',
|
||||
|
||||
businessTimeEnable: false,
|
||||
businessTimeEnableSaturday: false,
|
||||
|
||||
ticketTimeExpiration: new Date(),
|
||||
ticketExpirationMsg: '',
|
||||
ticketExpirationEnable: false,
|
||||
|
@ -122,6 +130,9 @@ const ConfigModal = ({ open, onClose, change }) => {
|
|||
}
|
||||
|
||||
const outBusinessHours = data.config.find((c) => c.key === "outBusinessHours")
|
||||
|
||||
const saturdayBusinessTime = data.config.find((c) => c.key === "saturdayBusinessTime")
|
||||
|
||||
const ticketExpiration = data.config.find((c) => c.key === "ticketExpiration")
|
||||
const saturday = data.config.find((c) => c.key === "saturday")
|
||||
const sunday = data.config.find((c) => c.key === "sunday")
|
||||
|
@ -134,6 +145,11 @@ const ConfigModal = ({ open, onClose, change }) => {
|
|||
messageBus: outBusinessHours.message,
|
||||
businessTimeEnable: outBusinessHours.value === 'enabled' ? true : false,
|
||||
|
||||
startTimeBusSaturday: saturdayBusinessTime.startTime,
|
||||
endTimeBusSaturday: saturdayBusinessTime.endTime,
|
||||
messageBusSaturday: saturdayBusinessTime.message,
|
||||
businessTimeEnableSaturday: saturdayBusinessTime.value === 'enabled' ? true : false,
|
||||
|
||||
ticketTimeExpiration: ticketExpiration.startTime,
|
||||
ticketExpirationMsg: ticketExpiration.message,
|
||||
ticketExpirationEnable: ticketExpiration.value === 'enabled' ? true : false,
|
||||
|
@ -165,6 +181,14 @@ const ConfigModal = ({ open, onClose, change }) => {
|
|||
message: values.messageBus,
|
||||
value: values.businessTimeEnable ? 'enabled' : 'disabled'
|
||||
},
|
||||
|
||||
saturdayBusinessTime: {
|
||||
startTime: values.startTimeBusSaturday,
|
||||
endTime: values.endTimeBusSaturday,
|
||||
message: values.messageBusSaturday,
|
||||
value: values.businessTimeEnableSaturday ? 'enabled' : 'disabled'
|
||||
},
|
||||
|
||||
ticketExpiration: {
|
||||
startTime: values.ticketTimeExpiration,
|
||||
message: values.ticketExpirationMsg,
|
||||
|
@ -325,6 +349,61 @@ const ConfigModal = ({ open, onClose, change }) => {
|
|||
</div>
|
||||
|
||||
|
||||
<br />
|
||||
{/* SABADO INICIO */}
|
||||
<div className={classes.multFieldLine}>
|
||||
<Field
|
||||
component={TimePicker}
|
||||
name="startTimeBusSaturday"
|
||||
label="Inicio atendimentos"
|
||||
ampm={false}
|
||||
openTo="hours"
|
||||
views={['hours', 'minutes',]}
|
||||
format="HH:mm"
|
||||
/>
|
||||
{' '}
|
||||
<Field
|
||||
component={TimePicker}
|
||||
name="endTimeBusSaturday"
|
||||
label="Fim atendimento"
|
||||
ampm={false}
|
||||
openTo="hours"
|
||||
views={['hours', 'minutes',]}
|
||||
format="HH:mm"
|
||||
/>
|
||||
|
||||
<FormControlLabel
|
||||
control={
|
||||
<Field
|
||||
as={Switch}
|
||||
color="primary"
|
||||
name="businessTimeEnableSaturday"
|
||||
checked={values.businessTimeEnableSaturday}
|
||||
/>
|
||||
}
|
||||
label={'Ativar/Desativar'} />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Field
|
||||
as={TextField}
|
||||
label={'Mensagem fora do horário de atendimento sábado'}
|
||||
type="messageBusSaturday"
|
||||
multiline
|
||||
rows={5}
|
||||
fullWidth
|
||||
name="messageBusSaturday"
|
||||
error={
|
||||
touched.messageBusSaturday && Boolean(errors.messageBusSaturday)
|
||||
}
|
||||
helperText={
|
||||
touched.messageBusSaturday && errors.messageBusSaturday
|
||||
}
|
||||
variant="outlined"
|
||||
margin="dense"
|
||||
/>
|
||||
</div>
|
||||
{/* SABADO FIM */}
|
||||
<br />
|
||||
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ const PieChart = ({ data = dataExample }) => {
|
|||
return (
|
||||
<Box width="100%" height="100%" position="relative" display="flex">
|
||||
<Box sx={{ position: "absolute" }}>
|
||||
<Title>Tickets status de encerramento</Title>
|
||||
<Title>Tickets encerramento</Title>
|
||||
</Box>
|
||||
<Box
|
||||
component="ul"
|
||||
|
|
|
@ -293,7 +293,7 @@ const Dashboard = () => {
|
|||
dispatch({ type: "LOAD_QUERY", payload: data.usersProfile })
|
||||
|
||||
const { data: ticketStatusChatEndData } = await api.get("/reports/count/statusChatEnd", {
|
||||
params: { startDate: '2024-03-21', endDate: '2024-03-28' },
|
||||
params: { startDate: dateToday, endDate: dateToday },
|
||||
})
|
||||
|
||||
setTicketStatusChatEnd(ticketStatusChatEndData.reportStatusChatEnd)
|
||||
|
|
Loading…
Reference in New Issue