<?php

class Sistema_Factory_Usuarios
{
    public static function getInstanceParentByTipoUsuario(string $tipoUsuario): Agro_Db_Table_Abstract
    {
        switch ($tipoUsuario) {
            case Sistema_Model_Usuarios::TIPO_USUARIO_ASSESSORIA:
                $model = new Sistema_Model_Assessorias();
                break;
            case Sistema_Model_Usuarios::TIPO_USUARIO_CORRETOR:
                $model = new Sistema_Model_Corretores();
                break;
            case Sistema_Model_Usuarios::TIPO_USUARIO_FUNCIONARIO:
                $model = new Sistema_Model_Funcionarios();
                break;
            case Sistema_Model_Usuarios::TIPO_USUARIO_HELPER:
            case Sistema_Model_Usuarios::TIPO_USUARIO_MANAGER:
            case Sistema_Model_Usuarios::TIPO_USUARIO_VISTORIADOR:
                $model = new Sistema_Model_VistoriadoresAuxiliares();
                break;
            case Sistema_Model_Usuarios::TIPO_USUARIO_PREPOSTO:
                $model = new Sistema_Model_Prepostos();
                break;
            default:
                throw new UnexpectedValueException('Tipo de usuário não encontrado.');
        }

        return $model;
    }
}
