@uplink-protocol/calendar-controller
Version:
Flexible calendar and time picker API supporting both calendar, date-picker, and time-picker integrations for any JavaScript framework or library
41 lines (40 loc) • 2.06 kB
TypeScript
import { IEventValidationService, ValidationRule, ValidationRuleResult, BusinessRuleConfig, ConflictDetectionConfig, ValidationContext } from '../interfaces/event-validation.interfaces';
import { CalendarEvent, CreateEventInput, UpdateEventInput, EventValidationResult, EventConflict } from '../interfaces/event.interfaces';
/**
* Implementation of event validation service
* Provides comprehensive validation for events including business rules
*/
export declare class EventValidationService implements IEventValidationService {
private rules;
private businessRules;
private conflictConfig;
private stats;
initialize(businessRules?: BusinessRuleConfig, conflictConfig?: ConflictDetectionConfig): void;
validateForCreate(input: CreateEventInput, context?: ValidationContext): Promise<EventValidationResult>;
validateForUpdate(input: UpdateEventInput, context?: ValidationContext): Promise<EventValidationResult>;
validateForDelete(eventId: string, _context?: ValidationContext): Promise<EventValidationResult>;
checkConflicts(event: CalendarEvent | CreateEventInput, existingEvents: CalendarEvent[]): EventConflict[];
validateDateTime(dateTime: any): ValidationRuleResult;
validateAttendees(attendees: any[]): ValidationRuleResult;
validateRecurrence(recurrence: any): ValidationRuleResult;
addValidationRule(rule: ValidationRule): void;
removeValidationRule(ruleId: string): void;
getValidationRules(): ValidationRule[];
updateBusinessRules(rules: BusinessRuleConfig): void;
updateConflictDetection(config: ConflictDetectionConfig): void;
getValidationStats(): {
totalValidations: number;
passedValidations: number;
failedValidations: number;
conflictsDetected: number;
};
getValidationStatistics(): {
totalValidations: number;
passedValidations: number;
failedValidations: number;
conflictsDetected: number;
};
private initializeDefaultRules;
private validateBasicFields;
private timesOverlap;
}