fix: including parentId when filter by eventTypeId happens (#10262)

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
This commit is contained in:
alannnc 2023-07-20 12:19:13 -07:00 committed by GitHub
parent 939a32813f
commit cd88b688f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 90 additions and 20 deletions

View File

@ -86,6 +86,17 @@ class EventsInsights {
return baseBookings;
};
static getTotalCompletedEvents = async (bookingIds: number[]) => {
return await prisma.bookingTimeStatus.count({
where: {
id: {
in: bookingIds,
},
timeStatus: "completed",
},
});
};
static getTotalRescheduledEvents = async (bookingIds: number[]) => {
return await prisma.bookingTimeStatus.count({
where: {

View File

@ -133,7 +133,14 @@ export const insightsRouter = router({
let teamConditional: Prisma.TeamWhereInput = {};
if (eventTypeId) {
whereConditional["eventTypeId"] = eventTypeId;
whereConditional["OR"] = [
{
eventTypeId,
},
{
eventParentId: eventTypeId,
},
];
}
if (memberUserId) {
whereConditional["userId"] = memberUserId;
@ -226,6 +233,7 @@ export const insightsRouter = router({
const startTimeEndTimeDiff = dayjs(endDate).diff(dayjs(startDate), "day");
const baseBookingIds = baseBookings.map((b) => b.id);
const totalCompleted = await EventsInsights.getTotalCompletedEvents(baseBookingIds);
const totalRescheduled = await EventsInsights.getTotalRescheduledEvents(baseBookingIds);
@ -257,7 +265,7 @@ export const insightsRouter = router({
deltaPrevious: EventsInsights.getPercentage(baseBookings.length, lastPeriodBaseBookings.length),
},
completed: {
count: baseBookings.length - totalCancelled - totalRescheduled,
count: totalCompleted,
deltaPrevious: EventsInsights.getPercentage(
baseBookings.length - totalCancelled - totalRescheduled,
lastPeriodBaseBookings.length - lastPeriodTotalCancelled - lastPeriodTotalRescheduled
@ -284,6 +292,7 @@ export const insightsRouter = router({
) {
return emptyResponseEventsByStatus;
}
return result;
}),
eventsTimeline: userBelongsToTeamProcedure
@ -410,7 +419,14 @@ export const insightsRouter = router({
if (eventTypeId && !!whereConditional) {
whereConditional = {
eventTypeId: eventTypeId,
OR: [
{
eventTypeId,
},
{
eventParentId: eventTypeId,
},
],
};
}
@ -864,7 +880,14 @@ export const insightsRouter = router({
};
if (eventTypeId) {
bookingWhere.eventTypeId = eventTypeId;
bookingWhere["OR"] = [
{
eventTypeId,
},
{
eventParentId: eventTypeId,
},
];
}
if (isAll && user.isOwnerAdminOfParentTeam && user.organizationId) {

View File

@ -0,0 +1,35 @@
-- View: public.BookingsTimeStatus
-- DROP VIEW public."BookingsTimeStatus";
CREATE OR REPLACE VIEW public."BookingTimeStatus"
AS
SELECT "Booking".id,
"Booking".uid,
"Booking"."eventTypeId",
"Booking".title,
"Booking".description,
"Booking"."startTime",
"Booking"."endTime",
"Booking"."createdAt",
"Booking".location,
"Booking".paid,
"Booking".status,
"Booking".rescheduled,
"Booking"."userId",
"et"."teamId",
"et"."length" as "eventLength",
CASE
WHEN "Booking".rescheduled IS TRUE THEN 'rescheduled'::text
WHEN "Booking".status = 'cancelled'::"BookingStatus" AND "Booking".rescheduled IS FALSE THEN 'cancelled'::text
WHEN "Booking"."endTime" < now() THEN 'completed'::text
WHEN "Booking"."endTime" > now() THEN 'uncompleted'::text
ELSE NULL::text
END AS "timeStatus",
"et"."parentId" as "eventParentId"
FROM "Booking"
LEFT JOIN "EventType" et ON "Booking"."eventTypeId" = et.id
LEFT JOIN "Membership" mb ON "mb"."userId" = "Booking"."userId";

View File

@ -877,20 +877,21 @@ model SelectedSlots {
}
view BookingTimeStatus {
id Int @unique
uid String?
eventTypeId Int?
title String?
description String?
startTime DateTime?
endTime DateTime?
createdAt DateTime?
location String?
paid Boolean?
status BookingStatus?
rescheduled Boolean?
userId Int?
teamId Int?
eventLength Int?
timeStatus String?
id Int @unique
uid String?
eventTypeId Int?
title String?
description String?
startTime DateTime?
endTime DateTime?
createdAt DateTime?
location String?
paid Boolean?
status BookingStatus?
rescheduled Boolean?
userId Int?
teamId Int?
eventLength Int?
timeStatus String?
eventParentId Int?
}