/*
 * 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 java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

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

    PreparedStatement pstmt;
    
    public void dadosUnidadeUsuarios(int usrCodigo, int uniCodigo) throws SQLException {
            int unuCodigo = getCodigoPorUsuariosComUnidades(usrCodigo,uniCodigo);
            String sql = "";
            
            if (unuCodigo != 0){ 
                sql = "UPDATE unidade_usuarios SET usr_codigo="+usrCodigo+" WHERE unu_codigo="+unuCodigo;
                pstmt = CONN.prepareStatement(sql);
            }else{
                sql = "INSERT INTO unidade_usuarios(uni_codigo"+(usrCodigo!=0?",usr_codigo":"")+") VALUES("+uniCodigo+(usrCodigo!=0?","+usrCodigo:"")+")";
                pstmt = CONN.prepareStatement(sql);
            }
            
            if(usrCodigo!=0 && (uniCodigo!=0 || unuCodigo!=0)){
                pstmt.executeUpdate();
            }
    }
    
    public int getCodigoPorUsuariosComUnidades(int usrCodigo,int uniCodigo) throws SQLException{
        if(uniCodigo!=0){
            pstmt = CONN.prepareStatement("SELECT unu_codigo FROM unidade_usuarios unu "
                + "INNER JOIN unidade uni ON uni.uni_codigo=unu.uni_codigo "
                + "WHERE unu.usr_codigo=? AND unu.uni_codigo=? AND uni.cnes_ativo='A' ");
            pstmt.setInt(2, uniCodigo);
        }else{
            pstmt = CONN.prepareStatement("SELECT unu_codigo FROM unidade_usuarios unu WHERE unu.usr_codigo=?");
            
        }
        pstmt.setInt(1, usrCodigo);
        
        ResultSet rs = pstmt.executeQuery();
        if(rs.next()){
            return rs.getInt("unu_codigo");
        }
        return 0;
    }


    public void apagaTudo(int uniCodigo) throws SQLException {
        pstmt = CONN.prepareStatement("DELETE FROM unidade_usuarios WHERE uni_codigo=? AND not exists (select true from usuarios where usr_mestre='S' AND usr_codigo=unidade_usuarios.usr_codigo) AND EXISTS(SELECT true FROM logon WHERE usr_codigo=id_login AND dt_entrada < (SELECT current_date - integer '60') AND uni_codigo=?)");
        pstmt.setInt(1,uniCodigo);
        pstmt.setInt(2,uniCodigo);
        pstmt.executeUpdate();
        
        CONN.commit();
    }
    
    
}
