USER
To include questionnaires that have not yet expired, you can modify the endDate check as follows:
const questionnaire = await prisma.questionnaire.findFirst({
where: {
id: 123,
disabled: false,
approved: true,
isDraft: false,
startDate: {
lte: new Date(),
},
endDate: {
gte: new Date(),
},
},
});
if (questionnaire || (questionnaire && questionnaire.endDate == new Date())) {
// The questionnaire is active
} else {
// The questionnaire is not active
}
This change will include questionnaires that have not yet expired by adding an OR condition that checks if the endDate is equal to the current date. If the endDate is equal to the current date, the questionnaire is still considered active, so the if block will execute. If the endDate is in the future and the if block doesn’t execute, the questionnaire is not considered active.
Based on the above solution convert the below code const [questionnaire, categories] = await prisma.$transaction([
prisma.questionnaire.findFirst({
orderBy: [{ startDate: "desc" }],
where: {
...filter,
approved: true,
disabled: false,
endDate: {
// gte: addDays(new Date(), -5), //previous code
// gte: addDays(new Date(), -5), // return questionnaires with in the last 5 days of the current date
gte: new Date(),
},
startDate: {
// gte: subDays(new Date(), -5), // fetch records that are within 5 days range from current date
lte: new Date(),
},
isDraft: false,
},
include: {
questionnaireItems: {
where: {
disabled: false,
},
include: {
item: {
include: {
translation: true,
itemMeasurements: true,
},
},
},
},
questionnaireRegionStatus: {
where: { regionCode: { in: regionCodes } },
},
},
}),
prisma.division.findMany({
where: { disabled: false },
include: {
group: {
where: { disabled: false },
include: {
class: {
where: { disabled: false },
include: {
subclass: {
where: { disabled: false },
include: {
translation: true,
},
},
translation: true,
},
},
translation: true,
},
},
translation: true,
},
}),
]);ASSISTANT
const [questionnaire, categories] = await prisma.$transaction([
prisma.questionnaire.findFirst({
orderBy: [{ startDate: "desc" }],
where: {
...filter,
approved: true,
disabled: false,
isDraft: false,
startDate: {
lte: new Date(),
},
endDate: {
gte: new Date(),
or: {
equals: new Date(),
},
},
},
include: {
questionnaireItems: {
where: {
disabled: false,
},
include: {
item: {
include: {
translation: true,
itemMeasurements: true,
},
},
},
},
questionnaireRegionStatus: {
where: { regionCode: { in: regionCodes } },
},
},
}),
prisma.division.findMany({
where: { disabled: false },
include: {
group: {
where: { disabled: false },
include: {
class: {
where: { disabled: false },
include: {
subclass: {
where: { disabled: false },
include: {
translation: true,
},
},
translation: true,
},
},
translation: true,
},
},
translation: true,
},
}),
]);