package br.com.elotech.saude.scripts;

public abstract class CarteirinhaVacinacaoScript {

    private static StringBuilder builder;

    public static String montaCarterinha(){
        builder = new StringBuilder();
        builder.append(" SELECT")
               .append("     pro.pro_codigo,")
               .append("     pro.pro_nome,")
               .append("     CASE WHEN car.dose = 'S' THEN true ELSE false END AS dose,")
               .append("     CASE WHEN car.dose_inicial = 'S' THEN true ELSE false END AS dose_inicial,")
               .append("     CASE WHEN car.dose_adicional = 'S' THEN true ELSE false END AS dose_adicional,")
               .append("     CASE WHEN car.dose_unica = 'S' THEN true ELSE false END AS dose_unica,")
               .append("     CASE WHEN car.dose_um = 'S' THEN true ELSE false END AS dose_um,")
               .append("     CASE WHEN car.dose_dois = 'S' THEN true ELSE false END AS dose_dois,")
               .append("     CASE WHEN car.dose_tres = 'S' THEN true ELSE false END AS dose_tres,")
               .append("     CASE WHEN car.dose_quatro = 'S' THEN true ELSE false END AS dose_quatro,")
               .append("     CASE WHEN car.dose_cinco = 'S' THEN true ELSE false END AS dose_cinco,")
               .append("     CASE WHEN car.reforco = 'S' THEN true ELSE false END AS reforco,")
               .append("     CASE WHEN car.reforco2 = 'S' THEN true ELSE false END AS reforco2,")
               .append("     CASE WHEN car.revacinacao = 'S' THEN true ELSE false END AS revacinacao,")
               .append("     CASE WHEN car.revacinacao_um = 'S' THEN true ELSE false END AS revacinacao_um,")
               .append("     CASE WHEN car.revacinacao_dois = 'S' THEN true ELSE false END AS revacinacao_dois,")
               .append("     CASE WHEN car.revacinacao_tres = 'S' THEN true ELSE false END AS revacinacao_tres,")
               .append("     CASE WHEN car.revacinacao_quatro = 'S' THEN true ELSE false END AS revacinacao_quatro,")
               .append("     CASE WHEN car.reforco_unico = 'S' THEN true ELSE false END AS reforco_unico")
               .append(" FROM carteirinha car")
               .append(" JOIN produto pro on car.pro_codigo = pro.pro_codigo")
               .append(" ORDER BY pro.pro_nome");
        return builder.toString();
    }

    public static String sqlDadosCarteirinha(){
        builder = new StringBuilder();
        builder.append(" SELECT")
               .append("    vac.vac_data,")
               .append("    vac.vac_dose,")
               .append("    CASE WHEN vac.vac_acao = 'A' THEN true ELSE false END AS aplicado,")
               .append("    CASE vac.vac_acao")
               .append("        WHEN 'A' THEN 'APLICADO'")
               .append("        WHEN 'P' THEN 'PREENCHIDO'")
               .append("        WHEN 'Z' THEN 'APRAZADO'")
               .append("        WHEN 'C' THEN 'CANCELADO'")
               .append("    END AS vac_acao,")
               .append("    COALESCE(ite_lote, '--')             AS ite_lote,")
               .append("    COALESCE(ite_validade, '1900-01-01') AS ite_validade,")
               .append("    pro2.pro_nome,")
               .append("    pro2.pro_codigo,")
               .append("    uni.uni_desc,")
               .append("    COALESCE(usr_nome, '--')  AS usr_nome")
               .append("  FROM vacina_usuario AS vac ")
               .append("  LEFT JOIN controlefracionado AS cont ON cont.cont_codigo = vac.cont_codigo")
               .append("  LEFT JOIN itens_movimento AS ite ON ite.ite_codigo = cont.ite_codigo")
               .append("  LEFT JOIN produto AS pro2 ON pro2.pro_codigo = vac.pro_codigo")
               .append(" INNER JOIN unidade AS uni ON CAST(uni.uni_codigo AS TEXT) = vac.vac_unidade")
               .append("  LEFT JOIN usuarios AS usr ON usr.usr_codigo = vac.usr_codigo")
               .append(" WHERE (vac.usu_codigo = :usu_codigo)")
               .append("   AND pro2.pro_codigo = :pro_codigo")
               .append(" ORDER BY vac.vac_data");
        return builder.toString();
    }

    public static String getDadosPaciente(){
        builder = new StringBuilder();
        builder.append(" SELECT")
               .append("     usu.usu_nome as paciente,")
               .append("     usu.usu_datanasc as datanasc,")
               .append("     usu.usu_cartao_sus as cartaosus,")
               .append("     usu.usu_prontuario as prontuario,")
               .append("     usu.usu_mae")
               .append("  FROM usuario usu")
               .append(" WHERE usu_codigo = :usu_codigo");
        return builder.toString();
    }
}
