* Make identifier required * Fallback to null if identifier isn't present * Type fix * Type fixes * Type fix * Create `RoutingFormResponseRepository` * Create `RoutingFormResponseService` * Use repsotiories to find form value * Delete console.logs * Undo change in `ZResponseInputSchema` schema * Type fix * Undo changes * fix: correct import path in RoutingFormResponseService to resolve runtime errors - Change relative import path to use @calcom alias - Prevents import resolution failures that cause app startup issues Co-Authored-By: joe@cal.com <j.auyeung419@gmail.com> * Undo changes * Update type * Update typing * Address feedback * Address feedback * chore: Provide a suggestion for pr 22396, new structure (#22491) * chore: Provide a suggestion for pr 22396, new structure * Refactor to create two create methods with bookingUid and id * Use `createWithBookingUid` * Extract routing form response parser to seperate util * Added more and improved test cases * Fix --------- Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com> * Factory included wrong calls * Fix test for findFieldValueByIdentifier * Add tests * Fix test * Fix test --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Alex van Andel <me@alexvanandel.com>
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import type logger from "@calcom/lib/logger";
|
|
|
|
import type { RoutingFormResponseRepositoryInterface } from "../../repository/RoutingFormResponseRepository.interface";
|
|
import { parseRoutingFormResponse } from "./responseData/parseRoutingFormResponse";
|
|
|
|
interface Dependencies {
|
|
logger: typeof logger;
|
|
routingFormResponseRepo: RoutingFormResponseRepositoryInterface;
|
|
}
|
|
|
|
export class RoutingFormResponseDataFactory {
|
|
constructor(private readonly deps: Dependencies) {}
|
|
|
|
async createWithBookingUid(bookingUid: string) {
|
|
const log = this.deps.logger.getSubLogger({
|
|
prefix: ["[routingFormFieldService]", { bookingUid }],
|
|
});
|
|
|
|
const formResponse = await this.deps.routingFormResponseRepo.findByBookingUidIncludeForm(bookingUid);
|
|
|
|
if (!formResponse) {
|
|
log.error("Form response not found");
|
|
throw new Error("Form response not found");
|
|
}
|
|
|
|
return parseRoutingFormResponse(formResponse.response, formResponse.form.fields);
|
|
}
|
|
|
|
async createWithResponseId(responseId: number) {
|
|
const log = this.deps.logger.getSubLogger({
|
|
prefix: ["[routingFormFieldService]", { responseId }],
|
|
});
|
|
|
|
const formResponse = await this.deps.routingFormResponseRepo.findByIdIncludeForm(responseId);
|
|
|
|
if (!formResponse) {
|
|
log.error("Form response not found");
|
|
throw new Error("Form response not found");
|
|
}
|
|
|
|
return parseRoutingFormResponse(formResponse.response, formResponse.form.fields);
|
|
}
|
|
}
|