/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.elotech.websaude.integracao.cnes.backend.controller;

import br.com.elotech.websaude.integracao.cnes.backend.model.Equipe;
import br.com.elotech.websaude.integracao.cnes.backend.model.Estabelecimento;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import static br.com.elotech.websaude.integracao.cnes.backend.model.dao.Conexao.CONN;

/**
 *
 * @author elotech
 */
public class TbEquipeController {

    
    PreparedStatement pstmt;

    public void inativarEquipes() throws SQLException {
        CONN.prepareStatement("UPDATE tb_equipe SET st_ativo='I'").executeUpdate();
    }

    public void cadastraEquipe(Estabelecimento e, int uni_codigo) throws SQLException {
        List<Equipe> equipes = (e.equipe != null) ? e.equipe : new ArrayList<>();
        UsuariosEquipeController usuariosEquipeController = new UsuariosEquipeController();

        for (Equipe eq : equipes) {
            String sql = "";
            int co_equipe = verificaSeExiste(eq.coEquipe, uni_codigo);
            if (co_equipe > 0) {
                sql = "UPDATE tb_equipe SET tp_equipe=?,no_equipe=?,nu_ine=?,ds_area=?,st_ativo=?,uni_codigo=? WHERE co_seq_equipe=?";
                pstmt = CONN.prepareStatement(sql);
                pstmt.setInt(7, co_equipe);
            } else {
                sql = "INSERT INTO tb_equipe(tp_equipe,no_equipe,nu_ine,ds_area,st_ativo,uni_codigo) VALUES (?,?,?,?,?,?)";
                pstmt = CONN.prepareStatement(sql);
            }
            pstmt.setString(5, (desativado(eq.dtDesativacao) ? "I" : "A"));
            pstmt.setInt(6, uni_codigo);
            pstmt.setInt(1, Integer.valueOf(eq.tpEquipe));
            pstmt.setString(2, eq.dsArea);
            pstmt.setString(3, eq.coEquipe);
            pstmt.setString(4, eq.codArea);

            pstmt.executeUpdate();
            CONN.commit();

           int  co_seq_equipe = verificaSeExiste(eq.coEquipe, uni_codigo);
            System.out.println("co_seq_equipe = "+co_seq_equipe);
            usuariosEquipeController.cadastrarEquipe(eq,uni_codigo,co_seq_equipe);
        }

    }

    public int verificaSeExiste(String nu_ine, int uni_codigo) throws SQLException {
        pstmt = CONN.prepareStatement("SELECT co_seq_equipe FROM tb_equipe WHERE nu_ine=? AND uni_codigo=? order by co_seq_equipe desc limit 1");
        pstmt.setString(1, nu_ine);
        pstmt.setInt(2, uni_codigo);
        System.out.println(pstmt);
        ResultSet rs = pstmt.executeQuery();
        if(rs.next()){
            return rs.getInt("co_seq_equipe");
        }
        return 0;
    }

    private boolean desativado(String data) {
        return (data != null && data.length() > 0);
    }

}
