public FrmAutenticaRede(string Usuario) { InitializeComponent(); CAutentica.CAutenticaClient oProxy = new CAutentica.CAutenticaClient(); CPonto.CPontoClient oCPonto = new CPonto.CPontoClient(); CPonto.USUARIO oUsuario = oCPonto.SelecionaUsuarioRede(Usuario); string UsuarioRede = oUsuario.USUSUARIOREDE; sUsuario = UsuarioRede; TxtUsuario.Text = UsuarioRede; oProxy.Close(); }
private void CarregaDadosUsuario(int Codigo, CPonto.CPontoClient oProxy, out CPonto.USUARIO oUsuario) { oUsuario = oProxy.SelecionaUsuario(Codigo); string strCodigo; if (oUsuario.USTIPO == char.Parse("T")) { //Terceirizado CPonto.TERCEIRO oTerceiro = oProxy.SelecionaTerceiro((int)oUsuario.USCODIGOTERCEIRO); strCodigo = oTerceiro.TeCodigo.ToString("00000000"); LblUsuario.Text = strCodigo + " - " + oTerceiro.TeNome; PicFoto.ImageLocation = DownloadFile(strCodigo + ".jpg", 1); } else if (oUsuario.USTIPO == char.Parse("E")) { //Empregado CPonto.FUNCIONARIO oFuncionario = oProxy.SelecionaFuncionario((int)oUsuario.USMATFUNC); strCodigo = oFuncionario.FUMATFUNC.ToString("00000000"); LblUsuario.Text = strCodigo + " - " + oFuncionario.FUNOMFUNC; PicFoto.ImageLocation = DownloadFile(strCodigo + ".jpg", 0); } else if (oUsuario.USTIPO == char.Parse("S")) { //Estagiário CPonto.ESTAGIARIO oEstagiario = oProxy.SelecionaEstagiario((int)oUsuario.USCODIGOESTAGIARIO); strCodigo = oEstagiario.ESCodigo.ToString("00000000"); LblUsuario.Text = strCodigo + " - " + oEstagiario.ESNome; PicFoto.ImageLocation = DownloadFile(strCodigo + ".jpg", 0); } else if (oUsuario.USTIPO == char.Parse("V")) { //Visitante CPonto.VISITANTE oVisitante = oProxy.SelecionaVisitante((int)oUsuario.USCODIGOVISITANTE); strCodigo = oVisitante.ViCodigo.ToString("00000000"); LblUsuario.Text = strCodigo + " - " + oVisitante.ViNome; PicFoto.ImageLocation = DownloadFile(strCodigo + ".jpg", 2); } }
private void TimeCartao_Tick(object sender, EventArgs e) { string MsgAdicional = ""; if (SerialCartao.IsOpen == false) { SerialCartao.Open(); } LblMsg.Text = "Passe o cartão de identificação CId_S no leitor"; this.Refresh(); if (SerialCartao.BytesToRead > 0) { TimeCartao.Enabled = false; string NumeroCartao = SerialCartao.ReadExisting().ToString().Substring(3, 5); SerialCartao.Close(); //Fecha a porta para não receber mais nada. CPonto.CPontoClient oProxy = new CPonto.CPontoClient(); CPonto.CARTAO oCartao; CPonto.USUARIO oUsuario = null; CPonto.CARTAOUSUARIO oCartaoUsuario; int CodigoUsuario; oCartao = oProxy.SelecionaCartao(out oCartaoUsuario, NumeroCartao); bool PossuiAcesso = false; if (oCartao == null) { nTentativas += 1; if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso) { AcionaSirene(); } LblMsg.Text = "Cartão de identificação CId_S inválido ou não cadastrado no sistema. Entrar em contato com o departamento de Segurança Patrimonial."; } else { if ((bool)oCartao.CrBloqueado) { if (MatTentou != oCartaoUsuario.CSCodigoUsuario) { nTentativas = 1; } else { nTentativas += 1; } if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso) { AcionaSirene(); } CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario); LblMsg.Text = "O cartão de identificação do usuário foi bloqueado pelo motivo: " + oCartao.CrMotivoBloqueio + "."; } else { try { PossuiAcesso = oProxy.PossuiPermissaoPonto(oCartaoUsuario.CSCodigoUsuario, CodigoPonto); } catch (Exception ex) { PossuiAcesso = false; MsgAdicional = ex.Message; } if (PossuiAcesso) { if (oPonto.PoBiometria) { LblMsg.Text = "Coloque o dedo cadastrado no leitor biométrico da impressão digital."; this.Refresh(); //Implementar o acesso biométrico CPonto.HASHDIGITAL[] oListaHash = oProxy.SelecionaHashUsuario(oCartaoUsuario.CSCodigoUsuario); m_NBioAPI = new NBioAPI(); uint ret; oIndexSearch = new NBioAPI.IndexSearch(m_NBioAPI); ret = oIndexSearch.InitEngine(); if (ret != NBioAPI.Error.NONE) { MsgErro(ret); } oIndexSearch.ClearDB(); foreach (CPonto.HASHDIGITAL oHash in oListaHash) { NBioAPI.Type.FIR_TEXTENCODE oFir = new NBioAPI.Type.FIR_TEXTENCODE(); oFir.TextFIR = oHash.HaCredencialBiometricaTextual; NBioAPI.IndexSearch.FP_INFO[] oInfo; oIndexSearch.AddFIR(oFir, uint.Parse(oHash.HaCodigo.ToString()), out oInfo); } if (AcessoBiometrico(out CodigoUsuario, oProxy, false)) { PossuiAcesso = true; } else { PossuiAcesso = false; } } if (oPonto.PoSenha) { //Acesso via senha de rede. FrmAutenticaRede oFrm = new FrmAutenticaRede(); oFrm.ShowDialog(); if (oFrm.Autenticado) { oUsuario = oFrm.Usuario; if (oUsuario.USCODIGO != oCartaoUsuario.CSCodigoUsuario) { PossuiAcesso = false; RegistrarAcesso(oProxy, oCartaoUsuario.CSCODIGO, oUsuario.USCODIGO, DateTime.Parse(LblDataHora.Text), true); if (MatTentou != oUsuario.USCODIGO) { nTentativas = 1; } else { nTentativas += 1; } if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso) { AcionaSirene(); } MatTentou = oUsuario.USCODIGO; CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario); LblMsg.Text = "O usuário que se autenticou é diferente do usuário a qual pertence o crachá."; } } else { PossuiAcesso = false; } } if (oUsuario == null) { oUsuario = oProxy.SelecionaUsuario(oCartaoUsuario.CSCodigoUsuario); } NumeroDia += 1; if (VerificaEquipamentos(oProxy, oUsuario) == false) { CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario); RegistrarAcesso(oProxy, oCartaoUsuario.CSCODIGO, oCartaoUsuario.CSCodigoUsuario, DateTime.Now, true); if (MatTentou != oCartaoUsuario.CSCodigoUsuario) { nTentativas = 1; } else { nTentativas += 1; } if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso) { AcionaSirene(); } MatTentou = oCartaoUsuario.CSCodigoUsuario; timer1.Enabled = true; return; } else { PossuiAcesso = true; } if (PossuiAcesso) { //Registrar que o acesso foi autorizado e acionar a porta elétrica para liberação LblDataHora.Text = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); PctSemSinal.Visible = false; PctVerde.Visible = true; RegistrarAcesso(oProxy, oCartaoUsuario.CSCODIGO, oCartaoUsuario.CSCodigoUsuario, DateTime.Parse(LblDataHora.Text), false); CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario); AcionaTranca(); } else { CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario); RegistrarAcesso(oProxy, oCartaoUsuario.CSCODIGO, oCartaoUsuario.CSCodigoUsuario, DateTime.Parse(LblDataHora.Text), true); if (MatTentou != oCartaoUsuario.CSCodigoUsuario) { nTentativas = 1; } else { nTentativas += 1; } if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso) { AcionaSirene(); } MatTentou = oCartaoUsuario.CSCodigoUsuario; LblMsg.Text = "O Acesso não foi autorizado."; } } else { CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario); RegistrarAcesso(oProxy, oCartaoUsuario.CSCODIGO, oCartaoUsuario.CSCodigoUsuario, DateTime.Now, true); if (MatTentou != oCartaoUsuario.CSCodigoUsuario) { nTentativas = 1; } else { nTentativas += 1; } if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso) { AcionaSirene(); } MatTentou = oCartaoUsuario.CSCodigoUsuario; LblMsg.Text = "O Usuário não possui acesso ao ponto de controle PCAP_S. Entrar em contato com a segurança patrimonial." + MsgAdicional + "."; } } } oProxy.Close(); //Libera o timer que limpa os dados e habilita novamente a leitura ou entaõ, libera o timer do cartao; timer1.Enabled = true; if (PossuiAcesso) { PctVerde.Visible = true; PctVermelho.Visible = false; PctAmarelo.Visible = false; PctSemSinal.Visible = false; } else { PctVerde.Visible = false; PctVermelho.Visible = true; PctAmarelo.Visible = false; PctSemSinal.Visible = false; } } }
private void ComandoTimeSemCartao() { int CodigoUsuario; CPonto.CPontoClient oProxy = new CPonto.CPontoClient(); CPonto.USUARIO oUsuario = null; string MsgAdicional = ""; bool PossuiAcesso = false; LblMsg.Text = "Coloque o dedo cadastrado no leitor biométrico da impressão digital."; this.Refresh(); //return; if (AcessoBiometrico(out CodigoUsuario, oProxy, true)) { LblMsg.Text = ""; this.Refresh(); if (ChkPoSenha.Checked) { FrmAutenticaRede oFrm = new FrmAutenticaRede(CodigoUsuario.ToString()); oFrm.ShowDialog(); if (oFrm.Autenticado) { try { PossuiAcesso = oProxy.PossuiPermissaoPonto(CodigoUsuario, CodigoPonto); } catch (Exception Ex) { MsgAdicional = Ex.Message; } if (PossuiAcesso) { //Registrar que o acesso foi autorizado e acionar a porta elétrica para liberação LblDataHora.Text = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); PctSemSinal.Visible = false; PctVerde.Visible = true; RegistrarAcesso(oProxy, 0, CodigoUsuario, DateTime.Now, false); CarregaDadosUsuario(CodigoUsuario, oProxy, out oUsuario); AcionaTranca(); } else { RegistrarAcesso(oProxy, 0, CodigoUsuario, DateTime.Now, true); if (MatTentou != CodigoUsuario) { nTentativas = 1; } else { nTentativas += 1; } if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso) { AcionaSirene(); } MatTentou = CodigoUsuario; LblMsg.Text = "O usuário USR não possui acesso ao ponto de controle PCAP_S. Entrar em contato com o departamento de segurança patrimonial." + MsgAdicional + "."; //Registrar a tentativa inválida de sucesso e incrementar o sinal da sirene, caso tenha } } else { RegistrarAcesso(oProxy, 0, CodigoUsuario, DateTime.Now, true); if (MatTentou != CodigoUsuario) { nTentativas = 1; } else { nTentativas += 1; } if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso) { AcionaSirene(); } MatTentou = CodigoUsuario; LblMsg.Text = "Usuário ou senha inválido! Entrar em contato com a segurança patrimonial."; } } else { try { PossuiAcesso = oProxy.PossuiPermissaoPonto(CodigoUsuario, CodigoPonto); } catch (Exception Ex) { MsgAdicional = Ex.Message; } if (PossuiAcesso) { if (oUsuario == null) { oUsuario = oProxy.SelecionaUsuario(CodigoUsuario); } NumeroDia += 1; if (VerificaEquipamentos(oProxy, oUsuario) == false) { RegistrarAcesso(oProxy, 0, CodigoUsuario, DateTime.Now, true); if (MatTentou != CodigoUsuario) { nTentativas = 1; } else { nTentativas += 1; } if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso) { AcionaSirene(); } MatTentou = CodigoUsuario; return; } else { //Registrar que o acesso foi autorizado e acionar a porta elétrica para liberação LblDataHora.Text = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); PctSemSinal.Visible = false; PctVerde.Visible = true; RegistrarAcesso(oProxy, 0, CodigoUsuario, DateTime.Now, false); CarregaDadosUsuario(CodigoUsuario, oProxy, out oUsuario); AcionaTranca(); } } else { RegistrarAcesso(oProxy, 0, CodigoUsuario, DateTime.Now, true); if (MatTentou != CodigoUsuario) { nTentativas = 1; } else { nTentativas += 1; } if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso) { AcionaSirene(); } MatTentou = CodigoUsuario; LblMsg.Text = "O usuário USR não possui acesso ao ponto de controle PCAP_S. Entrar em contato com o departamento de segurança patrimonial."; } } } else { nTentativas += 1; if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso) { AcionaSirene(); } if (CodigoUsuario == 0) { LblMsg.Text = "Não foi possível identificar o usuário USR. Entrar em contato com o departamento de segurança patrimonial."; } else { LblMsg.Text = "O usuário USR não possui acesso ao ponto de controle PCAP_S. Entrar em contato com o departamento de segurança patrimonial."; } } oProxy.Close(); timer1.Enabled = true; }
private bool VerificaEquipamentos(CPonto.CPontoClient oProxy, CPonto.USUARIO oUsuario) { NumeroEquipamento = ""; string TAGEQUIPAMENTO = ""; bool ConseguiuLer = false; if (ChkEquipObrigatorio.Checked) { var oListaObrigatorio = from p in oListaEquipamentoPonto where p.EPObrigatorio == true select p; foreach (CPonto.vw_EquipamentoPonto oEquipamento in oListaObrigatorio) { //Caso a unidade não exija autenticação via crachá, solicitará os equipamentos de segurança //mas, para isso, precisa abrir a serial e fechar SerialCartao.Open(); LblMsg.Text = "Passe o equipamento " + oEquipamento.TEDescricao + " no leitor RFID. "; this.Refresh(); //O Delay será de 100 milissegundos para ver se a porta seria tem algo. //com 100 voltas, o sistema aguardará 10 segundos para a leitura do equipamento, senão, dará como leitura inválida e encerrará o processo. ConseguiuLer = false; for (int i = 0; i < 100; i++) { Delay(100); if (SerialCartao.BytesToRead > 9) { TAGEQUIPAMENTO = SerialCartao.ReadExisting().ToString().Substring(3, 5); ConseguiuLer = true; break; } } //Caso não tenha conseguido ler o equipamento, o retorno será falso if (ConseguiuLer == false) { LblMsg.Text = "Equipamento " + oEquipamento.TEDescricao + " não informado."; this.Refresh(); SerialCartao.Close(); return(false); } else { var Equipamento = oProxy.ListaEquipamentoUsuarioTAG(oUsuario.USCODIGO, TAGEQUIPAMENTO); if (Equipamento == null) { LblMsg.Text = "O equipamento informado não corresponde a um " + oEquipamento.TEDescricao + " relacionado com o usuário. "; this.Refresh(); SerialCartao.Close(); return(false); } } SerialCartao.Close(); } } if (ChkEquipRandomico.Checked) { var res = from p in OrdemVerificaRandomico where p == NumeroDia select p; if (res.Count() > 0) { var oListaRandomico = from p in oListaEquipamentoPonto where p.EPObrigatorio == false select p; foreach (CPonto.vw_EquipamentoPonto oEquipamento in oListaRandomico) { //Caso a unidade não exija autenticação via crachá, solicitará os equipamentos de segurança //mas, para isso, precisa abrir a serial e fechar SerialCartao.Open(); //****************************************************************************************** LblMsg.Text = "Você foi sorteado para passar os equipamentos pela ordem de acesso. Passe o equipamento " + oEquipamento.TEDescricao + " no leitor RFID. "; this.Refresh(); //O Delay será de 100 milissegundos para ver se a porta seria tem algo. //com 100 voltas, o sistema aguardará 10 segundos para a leitura do equipamento, senão, dará como leitura inválida e encerrará o processo. ConseguiuLer = false; for (int i = 0; i < 100; i++) { Delay(100); if (SerialCartao.BytesToRead > 0) { TAGEQUIPAMENTO = SerialCartao.ReadExisting().ToString().Substring(3, 5); ConseguiuLer = true; break; } } //Caso não tenha conseguido ler o equipamento, o retorno será falso if (ConseguiuLer == false) { LblMsg.Text = "Equipamento " + oEquipamento.TEDescricao + " não informado."; this.Refresh(); SerialCartao.Close(); return(false); } else { var Equipamento = oProxy.ListaEquipamentoUsuarioTAG(oUsuario.USCODIGO, TAGEQUIPAMENTO); if (Equipamento == null) { LblMsg.Text = "O equipamento informado não corresponde a um " + oEquipamento.TEDescricao + " relacionado com o usuário. "; this.Refresh(); SerialCartao.Close(); return(false); } } SerialCartao.Close(); } } } LblMsg.Text = ""; this.Refresh(); return(true); }