-- +goose Up
-- +goose StatementBegin

-- ─────────────────────────────────────────────────────────────────────────────
-- Feriados — sem ano (valem para todos os anos)
-- Ex: Natal = mes=12 dia=25
-- Pode ser nacional, estadual ou municipal por tenant
-- ─────────────────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS feriados (
    id          UUID        PRIMARY KEY DEFAULT uuid_generate_v4(),
    tenant_id   UUID        NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
    nome        TEXT        NOT NULL,
    mes         INT         NOT NULL CHECK (mes BETWEEN 1 AND 12),
    dia         INT         NOT NULL CHECK (dia BETWEEN 1 AND 31),
    tipo        TEXT        NOT NULL DEFAULT 'nacional'
                            CHECK (tipo IN ('nacional','estadual','municipal','facultativo')),
    descricao   TEXT        NOT NULL DEFAULT '',
    ativo       BOOLEAN     NOT NULL DEFAULT true,
    criado_em   TIMESTAMPTZ NOT NULL DEFAULT now(),
    UNIQUE (tenant_id, mes, dia)
);

CREATE INDEX IF NOT EXISTS idx_feriados_tenant ON feriados (tenant_id, ativo);

-- ─────────────────────────────────────────────────────────────────────────────
-- Feriados nacionais brasileiros pré-populados para todos os tenants
-- (inserção simbólica — em produção fazer via seed por tenant)
-- ─────────────────────────────────────────────────────────────────────────────

-- Adicionar coluna na jornada para controlar se Sábado é pago como DSR
ALTER TABLE jornadas
    ADD COLUMN IF NOT EXISTS sabado_dsr        BOOLEAN NOT NULL DEFAULT false,
    ADD COLUMN IF NOT EXISTS domingo_dsr       BOOLEAN NOT NULL DEFAULT true,
    ADD COLUMN IF NOT EXISTS feriado_pago      BOOLEAN NOT NULL DEFAULT true,
    ADD COLUMN IF NOT EXISTS he_sabado_perc    NUMERIC(5,2) NOT NULL DEFAULT 50,
    ADD COLUMN IF NOT EXISTS he_domingo_perc   NUMERIC(5,2) NOT NULL DEFAULT 100,
    ADD COLUMN IF NOT EXISTS he_feriado_perc   NUMERIC(5,2) NOT NULL DEFAULT 100;

-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
DROP TABLE IF EXISTS feriados;
ALTER TABLE jornadas
    DROP COLUMN IF EXISTS sabado_dsr,
    DROP COLUMN IF EXISTS domingo_dsr,
    DROP COLUMN IF EXISTS feriado_pago,
    DROP COLUMN IF EXISTS he_sabado_perc,
    DROP COLUMN IF EXISTS he_domingo_perc,
    DROP COLUMN IF EXISTS he_feriado_perc;
-- +goose StatementEnd
