mirror of
https://github.com/hanzoai/calendar.git
synced 2026-10-30 14:46:43 +00:00
* refactor: apply biome formatting to packages/features (batch 1 - small subdirs) Format small subdirectories in packages/features: di, flags, holidays, oauth, settings, users, assignment-reason, selectedCalendar, hashedLink, host, form, form-builder, availability, data-table, pbac, schedules, troubleshooter, eventtypes, calendar-subscription, and root-level files. Also includes straggler apps/web BookEventForm.tsx. Co-Authored-By: Claude Opus 4.6 <[email protected]> * refactor: apply biome formatting to packages/features (batch 2 - medium subdirs) Format medium subdirectories in packages/features: auth, credentials, calendars, routing-forms, routing-trace, attributes, watchlist, calAIPhone, tasker, and webhooks. Co-Authored-By: Claude Opus 4.6 <[email protected]> * refactor: apply biome formatting to packages/features (batch 3 - bookings + insights) Format bookings and insights subdirectories in packages/features. Co-Authored-By: Claude Opus 4.6 <[email protected]> * refactor: apply biome formatting to packages/features (batch 4 - ee) Format packages/features/ee subdirectory covering billing, workflows, organizations, teams, managed-event-types, round-robin, dsync, integration-attribute-sync, and payments. Co-Authored-By: Claude Opus 4.6 <[email protected]> * refactor: apply biome formatting to packages/features (batch 5 - booking-audit part 1) Format booking-audit di, actions, common, dto, repository, and types subdirectories in packages/features/booking-audit. Co-Authored-By: Claude Opus 4.6 <[email protected]> * refactor: apply biome formatting to packages/features (batch 6 - booking-audit part 2) Format booking-audit service subdirectory in packages/features/booking-audit. Co-Authored-By: Claude Opus 4.6 <[email protected]> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
108 lines
4.0 KiB
TypeScript
108 lines
4.0 KiB
TypeScript
import type { IAuditActionService } from "../actions/IAuditActionService";
|
|
import type { BookingAuditAction } from "../repository/IBookingAuditRepository";
|
|
|
|
import { CreatedAuditActionService, type CreatedAuditData } from "../actions/CreatedAuditActionService";
|
|
import { CancelledAuditActionService, type CancelledAuditData } from "../actions/CancelledAuditActionService";
|
|
import {
|
|
RescheduledAuditActionService,
|
|
type RescheduledAuditData,
|
|
} from "../actions/RescheduledAuditActionService";
|
|
import { AcceptedAuditActionService, type AcceptedAuditData } from "../actions/AcceptedAuditActionService";
|
|
import {
|
|
RescheduleRequestedAuditActionService,
|
|
type RescheduleRequestedAuditData,
|
|
} from "../actions/RescheduleRequestedAuditActionService";
|
|
import {
|
|
AttendeeAddedAuditActionService,
|
|
type AttendeeAddedAuditData,
|
|
} from "../actions/AttendeeAddedAuditActionService";
|
|
import {
|
|
NoShowUpdatedAuditActionService,
|
|
type NoShowUpdatedAuditData,
|
|
} from "../actions/NoShowUpdatedAuditActionService";
|
|
import { RejectedAuditActionService, type RejectedAuditData } from "../actions/RejectedAuditActionService";
|
|
import {
|
|
AttendeeRemovedAuditActionService,
|
|
type AttendeeRemovedAuditData,
|
|
} from "../actions/AttendeeRemovedAuditActionService";
|
|
import {
|
|
ReassignmentAuditActionService,
|
|
type ReassignmentAuditData,
|
|
} from "../actions/ReassignmentAuditActionService";
|
|
import {
|
|
LocationChangedAuditActionService,
|
|
type LocationChangedAuditData,
|
|
} from "../actions/LocationChangedAuditActionService";
|
|
import {
|
|
SeatBookedAuditActionService,
|
|
type SeatBookedAuditData,
|
|
} from "../actions/SeatBookedAuditActionService";
|
|
import {
|
|
SeatRescheduledAuditActionService,
|
|
type SeatRescheduledAuditData,
|
|
} from "../actions/SeatRescheduledAuditActionService";
|
|
|
|
/**
|
|
* Union type for all audit action data types
|
|
* Used for type-safe handling of action-specific data
|
|
*/
|
|
export type AuditActionData =
|
|
| CreatedAuditData
|
|
| CancelledAuditData
|
|
| RescheduledAuditData
|
|
| AcceptedAuditData
|
|
| RescheduleRequestedAuditData
|
|
| AttendeeAddedAuditData
|
|
| NoShowUpdatedAuditData
|
|
| RejectedAuditData
|
|
| AttendeeRemovedAuditData
|
|
| ReassignmentAuditData
|
|
| LocationChangedAuditData
|
|
| SeatBookedAuditData
|
|
| SeatRescheduledAuditData;
|
|
|
|
/**
|
|
* BookingAuditActionServiceRegistry
|
|
*
|
|
* Centralized registry for all booking audit action services.
|
|
* Provides a single source of truth for action service mapping and eliminates
|
|
* code duplication between consumer and viewer services.
|
|
*/
|
|
export class BookingAuditActionServiceRegistry {
|
|
private readonly actionServices: Map<BookingAuditAction, IAuditActionService>;
|
|
|
|
constructor() {
|
|
const services: Array<[BookingAuditAction, IAuditActionService]> = [
|
|
["CREATED", new CreatedAuditActionService()],
|
|
["CANCELLED", new CancelledAuditActionService()],
|
|
["RESCHEDULED", new RescheduledAuditActionService()],
|
|
["ACCEPTED", new AcceptedAuditActionService()],
|
|
["RESCHEDULE_REQUESTED", new RescheduleRequestedAuditActionService()],
|
|
["ATTENDEE_ADDED", new AttendeeAddedAuditActionService()],
|
|
["NO_SHOW_UPDATED", new NoShowUpdatedAuditActionService()],
|
|
["REJECTED", new RejectedAuditActionService()],
|
|
["ATTENDEE_REMOVED", new AttendeeRemovedAuditActionService()],
|
|
["REASSIGNMENT", new ReassignmentAuditActionService()],
|
|
["LOCATION_CHANGED", new LocationChangedAuditActionService()],
|
|
["SEAT_BOOKED", new SeatBookedAuditActionService()],
|
|
["SEAT_RESCHEDULED", new SeatRescheduledAuditActionService()],
|
|
];
|
|
this.actionServices = new Map(services);
|
|
}
|
|
|
|
/**
|
|
* Get Action Service - Returns the appropriate action service for the given action type
|
|
*
|
|
* @param action - The booking audit action type
|
|
* @returns The corresponding action service instance with proper typing
|
|
* @throws Error if no service is found for the action
|
|
*/
|
|
getActionService(action: BookingAuditAction): IAuditActionService {
|
|
const service = this.actionServices.get(action);
|
|
if (!service) {
|
|
throw new Error(`No action service found for: ${action}`);
|
|
}
|
|
return service;
|
|
}
|
|
}
|