"""Availability validators — Phase 10.3.""" from __future__ import annotations from datetime import datetime from shared.exceptions import AppError from app.validators.foundation import validate_non_empty def validate_shift_window(*, starts_at: datetime, ends_at: datetime) -> None: if ends_at <= starts_at: raise AppError( "زمان پایان شیفت باید بعد از زمان شروع باشد", status_code=422, error_code="invalid_shift_window", ) def validate_availability_window( *, effective_from: datetime | None, effective_until: datetime | None ) -> None: if effective_from and effective_until and effective_until <= effective_from: raise AppError( "بازه دسترسی نامعتبر است", status_code=422, error_code="invalid_availability_window", ) def validate_shift_name(name: str) -> str: return validate_non_empty(name, "name") def validate_zone_name(name: str) -> str: return validate_non_empty(name, "name")