CREATE OR ALTER VIEW VWPAINEL_CASO(
    CASO_ID,
    PAINEL_ID,
    DATAHORA_ABERTURA,
    DATAHORA_FECHAMENTO,
    DATA_ABERTURA,
    DATA_FECHAMENTO,
    MOTIVO_ID,
    MOTIVO,
    TIPO_ID,
    TIPO,
    ORIGEM_ID,
    ORIGEM,
    RESPONSAVEL,
    STATUS,
    STATUS_COR,
    FECHADO,
    CASO_ORIGEM_ID,
    CASO_ORIGEM_TABELA,
    CAMPO_ID,
    CAMPO_TIPO,
    CAMPO_DESCRICAO,
    CAMPO_VALOR,
    CAMPO_JSON)
AS
SELECT
        CASO_ID,
        PAINEL_ID,
        DATAHORA_ABERTURA,
        DATAHORA_FECHAMENTO,
        DATA_ABERTURA,
        DATA_FECHAMENTO,
        MOTIVO_ID,
        MOTIVO,
        TIPO_ID,
        TIPO,
        ORIGEM_ID,
        ORIGEM,
        RESPONSAVEL,
        STATUS,
        STATUS_COR,
        FECHADO,
        CASO_ORIGEM_ID,
        CASO_ORIGEM_TABELA,
        CAMPO_ID,
        CAMPO_TIPO,
        CAMPO_DESCRICAO,
        CAMPO_VALOR,
        CAMPO_JSON
    
    FROM (
        SELECT
            T.ID AS CASO_ID,
            T.PAINEL_ID,
            T.DATAHORA_REGISTRO DATAHORA_ABERTURA,
            T.DATA_FECHAMENTO DATAHORA_FECHAMENTO,
            CAST(T.DATAHORA_REGISTRO AS DATE) DATA_ABERTURA,
            CAST(T.DATA_FECHAMENTO AS DATE) DATA_FECHAMENTO,
            UPPER(G.ID) AS MOTIVO_ID,
            UPPER(G.DESCRICAO) AS MOTIVO,
            UPPER(H.ID) AS TIPO_ID,
            UPPER(H.DESCRICAO) AS TIPO,
            UPPER(I.ID) AS ORIGEM_ID,
            UPPER(I.DESCRICAO) AS ORIGEM,
            UPPER(IIF(CHAR_LENGTH(J.NOME) > 0, J.NOME, J.USUARIO)) AS RESPONSAVEL,
            UPPER(K.DESCRICAO) AS STATUS,
            K.COR AS STATUS_COR,
            T.FECHADO,
            T.CASO_ORIGEM_ID,
            T.CASO_ORIGEM_TABELA,
        
            A.CAMPO_ID,
    
            IIF(E.TIPO = 1, 'STRING',
            IIF(E.TIPO = 2, 'NUMERO',
            IIF(E.TIPO = 3, 'DATA',
            IIF(E.TIPO = 4, 'CHECKBOX',
            IIF(E.TIPO = 5, 'RADIO BUTTON',
            IIF(E.TIPO = 6, 'RANGE',
            IIF(E.TIPO = 7, 'SEARCH',
            IIF(E.TIPO = 8, 'TIME',
            IIF(E.TIPO = 9, 'SELECT',
            IIF(E.TIPO = 10, 'TEXT AREA', '')))))))))) AS CAMPO_TIPO,
    
            UPPER(E.DESCRICAO) AS CAMPO_DESCRICAO,
    

            IIF(E.TIPO = 4 OR E.TIPO = 5 OR E.TIPO = 9,
                COALESCE((SELECT FIRST 1
                    UPPER( C3.DESCRICAO )
                FROM TBCASO_PAINEL_CONF_ITENS C3
                WHERE C3.CAMPO_ID = A.CAMPO_ID
                AND C3.VALOR = A.VALOR
                AND C3.PAINEL_ID = T.PAINEL_ID), ''),
            IIF(E.TIPO = 7,
                COALESCE((SELECT FIRST 1
                    UPPER( IIF(C2.OTIPO = 2 OR C2.OTIPO = 6, COALESCE(C2.OVALOR, '0'), COALESCE(C2.OVALOR, '')) )
                FROM SPC_CASO_DETALHE(A.PAINEL_ID, A.REGISTRO_ID, COALESCE(F.CAMPOS_RETORNO, '')) C2 WHERE C2.OCAMPO_ID = A.CAMPO_ID), ''), UPPER(COALESCE(A.VALOR, '')))) AS CAMPO_VALOR,
    

            IIF(E.TIPO = 7, A.JSON, '') AS CAMPO_JSON
        
        FROM TBCASO_REGISTRO T
        INNER JOIN TBCASO_REGISTRO_DETALHE A ON A.REGISTRO_ID = T.ID AND A.PAINEL_ID = T.PAINEL_ID
        LEFT JOIN TBCASO_PAINEL D ON D.ID = T.PAINEL_ID
        LEFT JOIN TBCASO_PAINEL_CONF E ON E.PAINEL_ID = D.ID AND E.ID = A.CAMPO_ID
        LEFT JOIN TBCASO_CAMPO_CONSULTA F ON F.PAINEL_ID = E.PAINEL_ID AND F.CAMPO_ID = E.ID
        LEFT JOIN TBCASO_MOTIVO G ON G.ID = T.MOTIVO_ID AND G.PAINEL_ID = D.ID
        LEFT JOIN TBCASO_TIPO H ON H.ID = T.TIPO_ID AND H.MOTIVO_ID = G.ID
        LEFT JOIN TBCASO_ORIGEM I ON I.ID = T.ORIGEM_ID AND I.TIPO_ID = H.ID
        LEFT JOIN TBUSUARIO J ON J.CODIGO = T.RESPONSAVEL_ID
        LEFT JOIN TBCASO_STATUS K ON K.ID = T.STATUS_ID AND K.PAINEL_ID = D.ID
        WHERE T.ID > 0
    
    )
;

