示例#1
0
        //private static byte[] ReadFile(string filePath)
        //{
        //    byte[] buffer;
        //    FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
        //    try
        //    {
        //        int length = (int)fileStream.Length;  // get file length
        //        buffer = new byte[length];            // create buffer
        //        int count;                            // actual number of bytes read
        //        int sum = 0;                          // total number of bytes read

        //        // read until Read method returns 0 (end of the stream has been reached)
        //        while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
        //            sum += count;  // sum is a buffer offset for next reading
        //    }
        //    finally
        //    {
        //        fileStream.Close();
        //    }
        //    return buffer;
        //}

        private void EnviarBiometria(int Terminal, string IP, int Porta, string PIS, string Nome, int Funcionario, string Arquivo)
        {
            string bio = ReadFile(Arquivo);
            string pis = PIS;

            for (int i = pis.Length; i < 12; i++)
            {
                pis = "0" + pis;
            }

            string msg = pis + "1" + bio;

            Comando cmd  = new Comando(Protocolo.CMD_BIOMETRIA, Protocolo.SET, msg);
            Rede    rede = new Rede(IP, Porta, edLog);

            if (rede.EnviaComandoTCP(cmd, Nome) == true)
            {
                DB db = new DB();
                db.ExecuteCommand(
                    "UPDATE TerminaisFuncionarios " +
                    "SET TRMF_BIOMETRIA_ENVIADA_EM = GETDATE() " +
                    "WHERE TRMF_TERMINAL = " + Terminal.ToString() + " " +
                    "AND TRMF_FUNC = " + Funcionario.ToString()
                    );
            }
        }
示例#2
0
        public void EnviaDataHora(string IP, int Porta)
        {
            // Monta a data e hora
            string data = DateTime.Now.Date.ToString("ddMMyyyy");

            string hora = DateTime.Now.Hour.ToString();

            if (hora.Length < 2)
            {
                hora = "0" + hora;
            }
            string min = DateTime.Now.Minute.ToString();

            if (min.Length < 2)
            {
                min = "0" + min;
            }
            string sec = DateTime.Now.Second.ToString();

            if (sec.Length < 2)
            {
                sec = "0" + sec;
            }

            string horario = hora + min + sec;
            string msg     = "";

            msg = data + horario;

            Comando cmd  = new Comando(Protocolo.CMD_DATA_HORA, Protocolo.SET, msg);
            Rede    rede = new Rede(IP, Porta, edLog);

            rede.EnviaComandoTCP(cmd);
        }
示例#3
0
        private void FinalizarImportacao(string arquivo, List <string> marcacoes, Rede rede)
        {
            using (StreamWriter file = new StreamWriter(arquivo))
                foreach (string s in marcacoes)
                {
                    file.WriteLine(s);
                }

            rede.AddLog("MARCAÇÕES SALVAS EM " + arquivo);
        }
示例#4
0
        private void importar_marcacoes_terminal(int Terminal)
        {
            GetDadosTerminal(Terminal, out IP, out PORTA, out TERMINALNOME);

            string diretoriomarcacoes = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Asseponto\\Marcacoes\\" + TERMINALNOME;
            string arquivo            = diretoriomarcacoes + "\\" + String.Format("{0:yyyy MM dd}", DateTime.Now) + ".txt";

            bool ExpirouTimeout = false;

            CANCELAR = false;

            Rede rede = new Rede(IP, PORTA, edLog);

            for (int y = 1; y <= 1; y++)
            {
                rede.RecebeMarcacoesTCP(Terminal, arquivo, Grupo, ref ExpirouTimeout, this);
                ULTIMOARQUIVOIMPORTADO           = arquivo;
                mmUltimoArquivoImportado.Visible = true;

                if (ExpirouTimeout)
                {
                    rede.AddLog("RECONECTANDO APÓS TIMEOUT  [TENTATIVA " + y.ToString() + "]");

                    for (int i = 5; i > 0; i--)
                    {
                        if (i == 1)
                        {
                            rede.AddLog("CONECTANDO EM 1 SEGUNDO");
                        }
                        else
                        {
                            rede.AddLog("CONECTANDO EM " + i.ToString() + " SEGUNDOS");
                        }

                        Application.DoEvents();
                        rSystem.PauseForSeconds(1);

                        if (CANCELAR)
                        {
                            rede.AddLog("RECONEXÃO CANCELADA");
                            break;
                        }
                    }
                }
                else
                {
                    break;
                }

                if (CANCELAR)
                {
                    break;
                }
            }
        }
示例#5
0
        private void ExcluirFuncionario(int Terminal, string IP, int Porta, string PIS, string Nome, int Funcionario)
        {
            string  msg  = MontaMensagemExclusaoFuncionario(PIS);
            Comando cmd  = new Comando(Protocolo.CMD_EXCLUSAO, Protocolo.SET, msg);
            Rede    rede = new Rede(IP, Porta, edLog);

            rede.AddLog("EXCLUINDO " + Nome);
            rede.EnviaComandoTCP(cmd);

            DB db = new DB();

            db.ExecuteCommand(
                "UPDATE TerminaisFuncionarios " +
                "SET TRMF_ARMAZENADO_EM = NULL " +
                "WHERE TRMF_TERMINAL = " + Terminal.ToString() + " " +
                "AND TRMF_FUNC = " + Funcionario.ToString()
                );
        }
示例#6
0
        public void EnviaInfoEmpresa(int Terminal, string IP, int Porta)
        {
            string Identificador;
            string Nome;
            string Cei;
            string Endereco;
            byte   IdentificadorTipo;

            DB db = new DB();

            db.LerEmpresa(Terminal, out IdentificadorTipo, out Identificador, out Nome, out Cei, out Endereco);

            string  mensagem = MontaMensagemEmpresa(Identificador, Nome, Cei, Endereco);
            Comando cmd      = MontaComando(mensagem, Protocolo.CMD_EMPRESA, Protocolo.SET);
            Rede    rede     = new Rede(IP, Porta, edLog);

            rede.EnviaComandoTCP(cmd);
        }
示例#7
0
        private void enviar_biometrias_terminal(int Terminal)
        {
            DB db = new DB();

            GetDadosTerminal(Terminal, out IP, out PORTA, out TERMINALNOME);

            Rede rede = new Rede(IP, PORTA, edLog);  // apenas para o log

            SqlCommand comm = db.Conn.CreateCommand();

            comm.CommandText = "SELECT FUNC_NOME, FUNC_PIS, FUNC_IND " +
                               "FROM Funcionarios " +
                               "INNER JOIN TerminaisFuncionarios ON TRMF_FUNC = FUNC_IND " +
                               "WHERE TRMF_TERMINAL = " + Terminal + " AND FUNC_PIS IS NOT NULL " +
                               "ORDER BY FUNC_NOME";

            SqlDataReader reader = comm.ExecuteReader();

            string diretoriobiometrias = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Asseponto\\Biometria";
            string arquivo;

            while (reader.Read())
            {
                arquivo = diretoriobiometrias + "\\" + reader["FUNC_PIS"].ToString().Trim() + "-1.bio";

                rede.AddLog("ENVIANDO BIOMETRIA: " + reader["FUNC_NOME"].ToString().Trim());

                if (File.Exists(arquivo))
                {
                    EnviarBiometria(
                        Terminal, IP, PORTA,
                        reader["FUNC_PIS"].ToString().Trim(),
                        "",
                        Convert.ToInt32(reader["FUNC_IND"].ToString()),
                        arquivo
                        );
                }
                else
                {
                    rede.AddLog("ARQUIVO DE BIOMETRIA NÃO ENCONTRADO");
                }
            }
            reader.Close();
        }
示例#8
0
        private void EnviarFuncionario(int Terminal, string IP, int Porta, string Cartao, string PIS, string Senha, string Nome, int Funcionario, bool CodigoBarras, bool Proximidade, bool Biometria, bool Teclado)
        {
            Rede rede = new Rede(IP, Porta, edLog);

            if (PIS == string.Empty)
            {
                rede.AddLog(String.Format("{0}: PIS NÃO INFORMADO", Nome));
                return;
            }

            string  msg = MontaMensagemFuncionario(Cartao, PIS, Senha, Nome, CodigoBarras, Proximidade, Biometria, Teclado);
            Comando cmd = new Comando(Protocolo.CMD_FUNCIONARIO, Protocolo.SET, msg);
            DB      db  = new DB();

            if (rede.EnviaComandoTCP(cmd) == true)
            {
                db.ExecuteCommand(
                    "UPDATE TerminaisFuncionarios " +
                    "SET TRMF_ARMAZENADO_EM = GETDATE() " +
                    "WHERE TRMF_TERMINAL = " + Terminal.ToString() + " " +
                    "AND TRMF_FUNC = " + Funcionario.ToString()
                    );
            }
        }
示例#9
0
        public void ProcessarMarcacoes(Rede rede, int Grupo, List <string> marcacoes)
        {
            Inicializar_TabTemp_DescontoDsr();

            rede.AddLogUnformatted();
            rede.AddLog(string.Format("PROCESSANDO {0} MARCAÇÕES", marcacoes.Count));

            int marcacao = 1;

            try
            {
                foreach (string s in marcacoes)
                {
                    string Pis      = "";
                    string Data     = "";
                    string Hora     = "";
                    string Nome     = "";
                    string Mensagem = "";

                    Pis  = s.Substring(0, 12).Trim();
                    Data = s.Substring(13, 10);
                    Hora = s.Substring(24);

                    //progressimportacao.lbMensagem.Text = String.Format("{0} {1} {2}", Pis, Data, Hora);
                    //ExecuteCommand(String.Format("EXEC importar_marcacao @P_GRUPO = {0},@P_PIS = {1}, @P_DATA = '{2}', @P_HORA = '{3}'", Grupo, Pis, Data, Hora));
                    ProcessarMarcacao(Grupo, Pis, Data, Hora, out Nome, out Mensagem);
                    rede.AddLogUnformatted(String.Format("{0} {1} {2} {3} {4} {5}", marcacao.ToString() + "/" + marcacoes.Count.ToString(), Pis, Data, Hora, Nome, Mensagem));
                    Application.DoEvents();
                    marcacao++;
                }
            }
            finally
            {
                Finalizar_TabTemp_DescontoDsr();
            }
        }