Пример #1
0
        private void IncluirLeitor(string Mensagem)
        {
            // Verifica se é a mensagem de iniciar o objeto
            if (string.IsNullOrEmpty(EscutaControle.CodigoInicial)) {

                if (Mensagem != CodIni) {

                    // Apresenta mensagem de erro
                    MessageBox.Show("Você deve primeiro escanear o código de inicialização");

                }
                else {

                    // Devo marcar no objeto como iniciado
                    EscutaControle.CodigoInicial = Mensagem;

                    Dispatcher.Invoke(() => {

                        // Apresenta mensagem de informação
                        tbInformação.Text = "Iniciada saída:";

                        // Limpa Grid
                        dgControle.ItemsSource = null;

                        // Define objeto EscutaControle como novo ItemsSource
                        dgControle.ItemsSource = EscutaControle;

                    });

                }

            }

            // Se o objeto já foi inicializado
            else {

                // Verifico se o código do funcionário está vazrio
                if (string.IsNullOrEmpty(EscutaControle.CodFuncionario)) {

                    // Verifica se a mensagem retornada é um código númerico
                    if (Regex.IsMatch(Mensagem, @"^\d+$")) {

                        var dbResult = RetornaFuncionario(Mensagem);

                        // Verifico se existe o funcionario com o código da mensagem
                        if (string.IsNullOrEmpty(dbResult)) {

                            // Apresento mensagem de que não reconheceu o funcionário
                            MessageBox.Show("Funcionário não reconhecido.\nCódigo do funcionário nãoencontrado: " + Mensagem);

                        }

                        // Se conseguiu encontrar o funcionário
                        else {

                            // Grava código do funcionário no objeto
                            EscutaControle.CodFuncionario = Mensagem;

                            Dispatcher.Invoke(() => {

                                // Apresenta mensagem de informação
                                tbInformação.Text = "Funcionário: " + dbResult;

                            });
                            ;

                        }

                    }

                    // Se ela não for um código numérico
                    else {

                        // Apresento mensagem de que não reconheceu o funcionário
                        MessageBox.Show("Funcionário não reconhecido.\nCódigo do funcionário nãoencontrado: " + Mensagem);

                    }

                }

                // Se o objeto ja foi inicializado, e o funcionário preenchido
                // Neste caso, a Mensagem é o codigo do cliente
                else {

                    switch (Mensagem) {

                        case CodFim: {

                            // Verificose existem registros a serem gravados no banco
                            if (EscutaControle.Count > 0) {

                                // Gero laço para percorrer a lista de registros

                                foreach (var iControle in EscutaControle) {

                                    // Crio objeto de acesso ao banco de dados
                                    var objDB = new DatabaseHelper();

                                    // Crio Dicionario que vai conter os campos  e valores
                                    var dctDados = new Dictionary<string, string>();

                                    // Adiciono dados no dicionario
                                    dctDados.Add("c_nomefuncionario", iControle.NomeFuncionario);
                                    dctDados.Add("i_funcionario_id", iControle.IdFuncionario);
                                    dctDados.Add("c_nomecliente", iControle.NomeCliente);
                                    dctDados.Add("i_cliente_id", iControle.IdCliente);
                                    dctDados.Add("d_data_saida", iControle.DataSaida);
                                    dctDados.Add("t_hora_saida", iControle.HoraSaida);
                                    dctDados.Add("b_fechado", iControle.FlagFechado.ToString());

                                    // Verifico se não consseguir incluir os dados no banco
                                    if (!objDB.Insert("dados.entradas", dctDados)) {

                                        // Apresenta mensagem de erro
                                        MessageBox.Show("Ocorreu um erro ao tentar adicionar o registro");

                                    }

                                }

                            }

                            LimpaObjeto();

                            break;
                        }

                        case CodRetorno: {

                            // Gero novo objeto de acesso ao banco de dados
                            var objDB = new DatabaseHelper();

                            // Gero novo comando SQL
                            var SQL = string.Format("SELECT id FROM dados.entradas WHERE i_funcionario_id = '{0}' AND b_fechado = false", EscutaControle.CodFuncionario);

                            // Salvo resultado do SQL em um datatable
                            var dtResult = objDB.GetDataTable(SQL);

                            // Defino data de saída
                            var dtDataRetorno = DateTime.Now.ToString("dd/MM/yyyy");

                            // Defino hora de saída
                            var dtHoraRetorno = DateTime.Now.ToString("HH:mm:ss");

                            // Crio laço para rodar em cada resultado
                            foreach (DataRow row in dtResult.Rows) {

                                // Defino novo dicionario com campo/valor
                                var dctDados = new Dictionary<string, string>();

                                // Adiciono campos no dicionario
                                dctDados.Add("d_data_chegada", dtDataRetorno);
                                dctDados.Add("t_hora_chegada", dtHoraRetorno);
                                dctDados.Add("b_fechado", "true");

                                // Tenta atualizar os registros
                                if (!objDB.Update("entradas", dctDados, "id = " + row["id"])) {

                                    MessageBox.Show("Ocorreu um erro ao tentar fechar as saídas");

                                }

                            }

                            // Executa rotina para limpar o objeto
                            LimpaObjeto();

                            // Devo limpar e recarregar o Grid de Controle
                            Dispatcher.Invoke(() => {

                                // Apresenta mensagem de informação
                                tbInformação.Text = "Gravado retorno";

                            });

                            break;
                        }

                        default: {

                            // Carrego nome do cliente
                            var dbResult = RetornaCliente(Mensagem);

                            // Verifico se o cliente existe
                            if (string.IsNullOrEmpty(dbResult)) {

                                // Apresento mensagem de que não existe o cliente
                                MessageBox.Show("Não foi possível localizar o cliente com o código :" + Mensagem);

                            }

                            // Se conseguir encontrar o cliente
                            else {

                                // Crio novo objeto controle
                                var ctrTemp = new Controle();

                                // Defino ID
                                ctrTemp.Id = "*";

                                // Defino funcionario com o funcionário atual
                                ctrTemp.IdFuncionario = EscutaControle.CodFuncionario;

                                // Defino nome do funcionario
                                ctrTemp.NomeFuncionario = RetornaFuncionario(EscutaControle.CodFuncionario);

                                // Defino código do cliente
                                ctrTemp.IdCliente = Mensagem;

                                // Defino nome do cliente
                                ctrTemp.NomeCliente = RetornaCliente(Mensagem);

                                // Defino data de saída
                                ctrTemp.DataSaida = DateTime.Now.ToString("dd/MM/yyyy");

                                // Defino hora de saída
                                ctrTemp.HoraSaida = DateTime.Now.ToString("HH:mm:ss");

                                // Defino flag como aberto
                                ctrTemp.FlagFechado = false;

                                Dispatcher.Invoke(() => {

                                    // Adiciono o objeto na lista de objetos
                                    EscutaControle.Add(ctrTemp);

                                });

                            }

                            break;

                        }

                    }

                    // Verifico se devo fechar o registro
                    if (Mensagem == CodFim) {

                    }

                }

            }
        }
Пример #2
0
        private void EscutarConexao()
        {
            // Seta controle da Thread como false
            NeedStop = false;

            try {
                // Instâncio TcpListener
                tcpServidor = new TcpListener(Server, Porta);

                // Inicio o TcpListener
                tcpServidor.Start();

                // Defino Buffer para recebimento de mensagem
                var bytes = new byte[256];

                // Defino variavel que vai receber o texto da mensamge
                string Mensagem = null;

                // Faço laço para ficar verificando mensagem
                while (true) {
                    // Verifico se deve parar o while
                    if (NeedStop) {
                        // Try to stop Thread
                        MinhaThread.Abort();

                        // Get out off the while
                        break;
                    }

                    // Perform a blocking call to accept requests.
                    // You could also user server.AcceptSocket() here.
                    var client = tcpServidor.AcceptTcpClient();

                    // Limpa mensagem
                    Mensagem = null;

                    // Cria objeto stream para ler e escrever no socket
                    var SocketStream = client.GetStream();

                    // Variáve de controle
                    int i;

                    // Faz loop para receber o texto da mensagem enviado pelo cliente.
                    while ((i = SocketStream.Read(bytes, 0, bytes.Length)) != 0) {

                        // Traduz os bytes para uma string
                        Mensagem = Encoding.ASCII.GetString(bytes, 0, i);

                        // Verifica se é a mensagem de iniciar o objeto
                        if (string.IsNullOrEmpty(EscutaControle.CodigoInicial)) {

                            if (Mensagem != CodIni) {

                                // Apresenta mensagem de erro
                                MessageBox.Show("Você deve primeiro escanear o código de inicialização");

                            }
                            else {

                                // Devo marcar no objeto como iniciado
                                EscutaControle.CodigoInicial = Mensagem;

                                Dispatcher.Invoke(() => {

                                    // Apresenta mensagem de informação
                                    tbInformação.Text = "Iniciada saída:";

                                    // Limpa Grid
                                    dgControle.ItemsSource = null;

                                    // Define objeto EscutaControle como novo ItemsSource
                                    dgControle.ItemsSource = EscutaControle;

                                });

                            }

                        }

                        // Se o objeto já foi inicializado
                        else {

                            // Verifico se o código do funcionário está vazrio
                            if (string.IsNullOrEmpty(EscutaControle.CodFuncionario)) {

                                // Verifica se a mensagem retornada é um código númerico
                                if (Regex.IsMatch(Mensagem, @"^\d+$")) {

                                    var dbResult = RetornaFuncionario(Mensagem);

                                    // Verifico se existe o funcionario com o código da mensagem
                                    if (string.IsNullOrEmpty(dbResult)) {

                                        // Apresento mensagem de que não reconheceu o funcionário
                                        MessageBox.Show("Funcionário não reconhecido.\nCódigo do funcionário nãoencontrado: " + Mensagem);

                                    }

                                    // Se conseguiu encontrar o funcionário
                                    else {

                                        // Grava código do funcionário no objeto
                                        EscutaControle.CodFuncionario = Mensagem;

                                        Dispatcher.Invoke(() => {

                                            // Apresenta mensagem de informação
                                            tbInformação.Text = "Funcionário: " + dbResult;

                                        });
                                        ;

                                    }

                                }

                                // Se ela não for um código numérico
                                else {

                                    // Apresento mensagem de que não reconheceu o funcionário
                                    MessageBox.Show("Funcionário não reconhecido.\nCódigo do funcionário nãoencontrado: " + Mensagem);

                                }

                            }

                            // Se o objeto ja foi inicializado, e o funcionário preenchido
                            // Neste caso, a Mensagem é o codigo do cliente
                            else {

                                switch (Mensagem) {

                                    case CodFim: {

                                        // Verificose existem registros a serem gravados no banco
                                        if (EscutaControle.Count > 0) {

                                            // Gero laço para percorrer a lista de registros

                                            foreach (var iControle in EscutaControle) {

                                                // Crio objeto de acesso ao banco de dados
                                                var objDB = new DatabaseHelper();

                                                // Crio Dicionario que vai conter os campos  e valores
                                                var dctDados = new Dictionary<string, string>();

                                                // Adiciono dados no dicionario
                                                dctDados.Add("c_nomefuncionario", iControle.NomeFuncionario);
                                                dctDados.Add("i_funcionario_id", iControle.IdFuncionario);
                                                dctDados.Add("c_nomecliente", iControle.NomeCliente);
                                                dctDados.Add("i_cliente_id", iControle.IdCliente);
                                                dctDados.Add("d_data_saida", iControle.DataSaida);
                                                dctDados.Add("t_hora_saida", iControle.HoraSaida);
                                                dctDados.Add("b_fechado", iControle.FlagFechado.ToString());

                                                // Verifico se não consseguir incluir os dados no banco
                                                if (!objDB.Insert("dados.entradas", dctDados)) {

                                                    // Apresenta mensagem de erro
                                                    MessageBox.Show("Ocorreu um erro ao tentar adicionar o registro");

                                                }

                                            }

                                        }

                                        LimpaObjeto();

                                        break;
                                    }

                                    case CodRetorno: {

                                        // Gero novo objeto de acesso ao banco de dados
                                        var objDB = new DatabaseHelper();

                                        // Gero novo comando SQL
                                        var SQL = string.Format("SELECT id FROM dados.entradas WHERE i_funcionario_id = '{0}' AND b_fechado = false", EscutaControle.CodFuncionario);

                                        // Salvo resultado do SQL em um datatable
                                        var dtResult = objDB.GetDataTable(SQL);

                                        // Defino data de saída
                                        var dtDataRetorno = DateTime.Now.ToString("dd/MM/yyyy");

                                        // Defino hora de saída
                                        var dtHoraRetorno = DateTime.Now.ToString("HH:mm:ss");

                                        // Crio laço para rodar em cada resultado
                                        foreach (DataRow row in dtResult.Rows) {

                                            // Defino novo dicionario com campo/valor
                                            var dctDados = new Dictionary<string, string>();

                                            // Adiciono campos no dicionario
                                            dctDados.Add("d_data_chegada", dtDataRetorno);
                                            dctDados.Add("t_hora_chegada", dtHoraRetorno);
                                            dctDados.Add("b_fechado", "true");

                                            // Tenta atualizar os registros
                                            if (!objDB.Update("entradas", dctDados, "id = " + row["id"])) {

                                                MessageBox.Show("Ocorreu um erro ao tentar fechar as saídas");

                                            }

                                        }

                                        // Executa rotina para limpar o objeto
                                        LimpaObjeto();

                                        // Devo limpar e recarregar o Grid de Controle
                                        Dispatcher.Invoke(() => {

                                            // Apresenta mensagem de informação
                                            tbInformação.Text = "Gravado retorno";

                                        });

                                        break;
                                    }

                                    default: {

                                        // Carrego nome do cliente
                                        var dbResult = RetornaCliente(Mensagem);

                                        // Verifico se o cliente existe
                                        if (string.IsNullOrEmpty(dbResult)) {

                                            // Apresento mensagem de que não existe o cliente
                                            MessageBox.Show("Não foi possível localizar o cliente com o código :" + Mensagem);

                                        }

                                        // Se conseguir encontrar o cliente
                                        else {

                                            // Crio novo objeto controle
                                            var ctrTemp = new Controle();

                                            // Defino ID
                                            ctrTemp.Id = "*";

                                            // Defino funcionario com o funcionário atual
                                            ctrTemp.IdFuncionario = EscutaControle.CodFuncionario;

                                            // Defino nome do funcionario
                                            ctrTemp.NomeFuncionario = RetornaFuncionario(EscutaControle.CodFuncionario);

                                            // Defino código do cliente
                                            ctrTemp.IdCliente = Mensagem;

                                            // Defino nome do cliente
                                            ctrTemp.NomeCliente = RetornaCliente(Mensagem);

                                            // Defino data de saída
                                            ctrTemp.DataSaida = DateTime.Now.ToString("dd/MM/yyyy");

                                            // Defino hora de saída
                                            ctrTemp.HoraSaida = DateTime.Now.ToString("HH:mm:ss");

                                            // Defino flag como aberto
                                            ctrTemp.FlagFechado = false;

                                            Dispatcher.Invoke(() => {

                                                // Adiciono o objeto na lista de objetos
                                                EscutaControle.Add(ctrTemp);

                                            });

                                        }

                                        break;

                                    }

                                }

                                // Verifico se devo fechar o registro
                                if (Mensagem == CodFim) {

                                }

                            }

                        }

                        // Define mensagem de resposta transformando de string para bytes
                        var msg = Encoding.ASCII.GetBytes("OK");

                        // Envia a resposta
                        SocketStream.Write(msg, 0, msg.Length);
                    }

                    // Finaliza a conexao
                    SocketStream.Close();
                }
            }

                // Em caso de erro , apresenta a mensagem na tela
            catch (SocketException e) {
                MessageBox.Show("Ocorreu um erro\n" + e);
            }

            finally {
                // Finaliza a escuta
                tcpServidor.Stop();
            }
        }