"""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")
