# GetCompanyHoliday

## Overview

GetCompanyHoliday retrieves a single `CompanyHoliday` record by its surrogate id, returning the holiday date, its `holidayKind` (`STATUTORY` / `PRESCRIBED`), and name. It supports admin/UI lookups where the record's id is already known (e.g. viewing or editing a specific calendar entry).

## Business Rules

- Resolves by the surrogate `id`, not by `holidayDate` — use `getCompanyHolidayByDate` to resolve by date instead
- Returns the holiday fact as currently stored; `CompanyHoliday` is a plain dated fact, not effective-dated, so there is no `asOf` resolution — a correction is visible immediately in place
- `holidayKind` is returned as the normalized enum (`STATUTORY` / `PRESCRIBED`), never as a display label

## Process Flow

```mermaid
flowchart TD
    A[Caller provides CompanyHoliday id] --> B[Look up record by id]
    B --> C{Found?}
    C -- Yes --> D[Return CompanyHoliday: holidayDate, holidayKind, name]
    C -- No --> E[Return COMPANY_HOLIDAY_NOT_FOUND]
```

## External Dependencies

- [time-tracking::CompanyHoliday](../model/CompanyHoliday.md) model — entity being queried

## Error Scenarios

- **COMPANY_HOLIDAY_NOT_FOUND**: no CompanyHoliday exists with the specified id
- **VALIDATION_ERROR**: the supplied input is malformed, out of range, or references an unrecognized enum value

## Test Cases

- returns the CompanyHoliday when found by id
- returns COMPANY_HOLIDAY_NOT_FOUND when no record matches the id
- returns `holidayKind` as the normalized enum value, not a display label
