fix: routing form endpoints date filters validation (#20715)

This commit is contained in:
Morgan
2025-04-16 06:30:29 +00:00
committed by GitHub
parent 58315e96c9
commit 43a6663230
10 changed files with 39 additions and 54 deletions
@@ -178,9 +178,12 @@ describe("OrganizationsRoutingFormsResponsesController", () => {
});
it("should get routing form responses", async () => {
const createdAt = new Date(routingFormResponse.createdAt);
createdAt.setHours(createdAt.getHours() - 1);
const isoStringCreatedAt = createdAt.toISOString();
return request(app.getHttpServer())
.get(
`/v2/organizations/${org.id}/routing-forms/${routingForm.id}/responses?skip=0&take=2&sortUpdatedAt=asc&sortCreatedAt=desc`
`/v2/organizations/${org.id}/routing-forms/${routingForm.id}/responses?skip=0&take=2&sortUpdatedAt=asc&sortCreatedAt=desc&afterCreatedAt=${isoStringCreatedAt}`
)
.set({ Authorization: `Bearer cal_test_${apiKeyString}` })
.expect(200)
@@ -1,15 +1,6 @@
import { ApiPropertyOptional } from "@nestjs/swagger";
import { Transform } from "class-transformer";
import {
IsOptional,
IsString,
IsEnum,
IsISO8601,
IsDate,
IsNumber,
IsArray,
ArrayMinSize,
} from "class-validator";
import { IsOptional, IsString, IsEnum, IsISO8601, IsNumber, IsArray, ArrayMinSize } from "class-validator";
enum SortOrder {
ASC = "asc",
@@ -44,9 +35,7 @@ export class GetRoutingFormResponsesParams {
})
@IsOptional()
@IsISO8601()
@Transform(({ value }) => value && new Date(value))
@IsDate()
afterCreatedAt?: Date;
afterCreatedAt?: string;
@ApiPropertyOptional({
type: String,
@@ -55,9 +44,7 @@ export class GetRoutingFormResponsesParams {
})
@IsOptional()
@IsISO8601()
@Transform(({ value }) => value && new Date(value))
@IsDate()
beforeCreatedAt?: Date;
beforeCreatedAt?: string;
@ApiPropertyOptional({
type: String,
@@ -66,9 +53,7 @@ export class GetRoutingFormResponsesParams {
})
@IsOptional()
@IsISO8601()
@Transform(({ value }) => value && new Date(value))
@IsDate()
afterUpdatedAt?: Date;
afterUpdatedAt?: string;
@ApiPropertyOptional({
type: String,
@@ -77,9 +62,7 @@ export class GetRoutingFormResponsesParams {
})
@IsOptional()
@IsISO8601()
@Transform(({ value }) => value && new Date(value))
@IsDate()
beforeUpdatedAt?: Date;
beforeUpdatedAt?: string;
@ApiPropertyOptional({ type: String, description: "Filter by responses routed to a specific booking" })
@IsOptional()
@@ -15,10 +15,10 @@ export class OrganizationsRoutingFormsRepository {
name?: string;
sortCreatedAt?: "asc" | "desc";
sortUpdatedAt?: "asc" | "desc";
afterCreatedAt?: Date;
beforeCreatedAt?: Date;
afterUpdatedAt?: Date;
beforeUpdatedAt?: Date;
afterCreatedAt?: string;
beforeCreatedAt?: string;
afterUpdatedAt?: string;
beforeUpdatedAt?: string;
teamIds?: number[];
}
) {
@@ -61,10 +61,10 @@ export class OrganizationsRoutingFormsRepository {
options?: {
sortCreatedAt?: "asc" | "desc";
sortUpdatedAt?: "asc" | "desc";
afterCreatedAt?: Date;
beforeCreatedAt?: Date;
afterUpdatedAt?: Date;
beforeUpdatedAt?: Date;
afterCreatedAt?: string;
beforeCreatedAt?: string;
afterUpdatedAt?: string;
beforeUpdatedAt?: string;
routedToBookingUid?: string;
}
) {
@@ -17,10 +17,10 @@ export class OrganizationsRoutingFormsResponsesService {
options?: {
sortCreatedAt?: "asc" | "desc";
sortUpdatedAt?: "asc" | "desc";
afterCreatedAt?: Date;
beforeCreatedAt?: Date;
afterUpdatedAt?: Date;
beforeUpdatedAt?: Date;
afterCreatedAt?: string;
beforeCreatedAt?: string;
afterUpdatedAt?: string;
beforeUpdatedAt?: string;
routedToBookingUid?: string;
}
) {
@@ -14,10 +14,10 @@ export class OrganizationsRoutingFormsService {
name?: string;
sortCreatedAt?: "asc" | "desc";
sortUpdatedAt?: "asc" | "desc";
afterCreatedAt?: Date;
beforeCreatedAt?: Date;
afterUpdatedAt?: Date;
beforeUpdatedAt?: Date;
afterCreatedAt?: string;
beforeCreatedAt?: string;
afterUpdatedAt?: string;
beforeUpdatedAt?: string;
teamIds?: number[];
}
) {
@@ -5,7 +5,6 @@ import { OrganizationsRoutingFormsResponsesService } from "@/modules/organizatio
import { OrganizationsTeamsRepository } from "@/modules/organizations/teams/index/organizations-teams.repository";
import { PrismaModule } from "@/modules/prisma/prisma.module";
import { RedisModule } from "@/modules/redis/redis.module";
import { RedisService } from "@/modules/redis/redis.service";
import { RoutingFormsModule } from "@/modules/routing-forms/routing-forms.module";
import { StripeModule } from "@/modules/stripe/stripe.module";
import { Module } from "@nestjs/common";
@@ -13,8 +13,8 @@ export class OrganizationsTeamsRoutingFormsResponsesRepository {
take: number,
options?: {
sortCreatedAt?: "asc" | "desc";
afterCreatedAt?: Date;
beforeCreatedAt?: Date;
afterCreatedAt?: string;
beforeCreatedAt?: string;
routedToBookingUid?: string;
}
) {
@@ -15,10 +15,10 @@ export class OrganizationsTeamsRoutingFormsRepository {
name?: string;
sortCreatedAt?: "asc" | "desc";
sortUpdatedAt?: "asc" | "desc";
afterCreatedAt?: Date;
beforeCreatedAt?: Date;
afterUpdatedAt?: Date;
beforeUpdatedAt?: Date;
afterCreatedAt?: string;
beforeCreatedAt?: string;
afterUpdatedAt?: string;
beforeUpdatedAt?: string;
}
) {
const {
@@ -18,10 +18,10 @@ export class OrganizationsTeamsRoutingFormsResponsesService {
options?: {
sortCreatedAt?: "asc" | "desc";
sortUpdatedAt?: "asc" | "desc";
afterCreatedAt?: Date;
beforeCreatedAt?: Date;
afterUpdatedAt?: Date;
beforeUpdatedAt?: Date;
afterCreatedAt?: string;
beforeCreatedAt?: string;
afterUpdatedAt?: string;
beforeUpdatedAt?: string;
routedToBookingUid?: string;
}
) {
@@ -15,10 +15,10 @@ export class OrganizationsTeamsRoutingFormsService {
name?: string;
sortCreatedAt?: "asc" | "desc";
sortUpdatedAt?: "asc" | "desc";
afterCreatedAt?: Date;
beforeCreatedAt?: Date;
afterUpdatedAt?: Date;
beforeUpdatedAt?: Date;
afterCreatedAt?: string;
beforeCreatedAt?: string;
afterUpdatedAt?: string;
beforeUpdatedAt?: string;
}
) {
return this.routingFormsRepository.getTeamRoutingForms(teamId, skip, take, options);