<?php
declare(strict_types=1);

function motorista_status_documento(array $motorista, string $campo): string
{
    return (string) ($motorista[$campo] ?? 'pendente');
}

function motorista_documentos_aprovados(array $motorista): bool
{
    return motorista_status_documento($motorista, 'cnh_status') === 'aprovado'
        && motorista_status_documento($motorista, 'selfie_status') === 'aprovado';
}

function motorista_status_geral(array $motorista): string
{
    if (motorista_documentos_aprovados($motorista)) {
        return 'aprovado';
    }

    if (
        motorista_status_documento($motorista, 'cnh_status') === 'reprovado'
        || motorista_status_documento($motorista, 'documento_veiculo_status') === 'reprovado'
        || motorista_status_documento($motorista, 'selfie_status') === 'reprovado'
    ) {
        return 'reprovado';
    }

    return 'pendente';
}

function motorista_status_operacional(array $motorista, bool $temVeiculoAprovado): string
{
    if (
        motorista_status_documento($motorista, 'cnh_status') === 'reprovado'
        || motorista_status_documento($motorista, 'selfie_status') === 'reprovado'
    ) {
        return 'reprovado';
    }

    if (motorista_documentos_aprovados($motorista) && $temVeiculoAprovado) {
        return 'aprovado';
    }

    return 'pendente';
}

function motorista_pode_ficar_online(array $motorista): bool
{
    $temVeiculo = isset($motorista['tem_veiculo_aprovado'])
        ? (bool) $motorista['tem_veiculo_aprovado']
        : false;

    return motorista_documentos_aprovados($motorista) && $temVeiculo;
}

function motorista_status_documento_real(array $motorista): string
{
    $aprovados = (int) ($motorista['veiculos_aprovados'] ?? 0);
    $reprovados = (int) ($motorista['veiculos_reprovados'] ?? 0);
    $total = (int) ($motorista['total_veiculos'] ?? 0);

    if ($aprovados > 0) {
        return 'aprovado';
    }

    if ($reprovados > 0) {
        return 'reprovado';
    }

    if ($total > 0) {
        return 'pendente';
    }

    return (string) ($motorista['documento_veiculo_status'] ?? 'pendente');
}
