コード例 #1
0
        public void LancarRegistro(Registro registro)
        {
            int lastUsedId = _frequenciaContext.MarcacaoFrequencia.Max(mf => mf.Id);
            var r          = _pontoSyncContext.Registros.Find(registro.Id);

            try
            {
                var servidor = _frequenciaContext.Servidores.FromSqlRaw($"select s.mat_servidor, s.nom, s.e_mail from srh2.servidor s where s.mat_servidor = {int.Parse(registro.Matricula)} ").FirstOrDefault();
                MarcacaoFrequencia marcacao = new MarcacaoFrequencia(++lastUsedId, registro, servidor.Matricula);
                if (VerificarDuplicado(registro, servidor.Matricula))
                {
                    _logger.LogWarning("Tentando lançar registro duplicado.");
                    r.Migrado = true;
                    return;
                }
                _frequenciaContext.MarcacaoFrequencia.Add(marcacao);
                _frequenciaContext.SaveChanges();
                r.Migrado = true;
            }catch (Exception e) {
                r.Migrado = false;
                _pontoSyncContext.SaveChanges();
                _logger.LogError(e, $"Erro ao lançar o registro do servidor {registro.Matricula} na hora {registro.Marcacao}");
            }
            finally
            {
                _pontoSyncContext.Update(r);
                _pontoSyncContext.SaveChanges();
            }
        }
コード例 #2
0
ファイル: RelogioHenry.cs プロジェクト: AlexGracas/PontoSync
        public async Task <ICollection <Registro> > ObterRegistrosAsync(Relogio relogio, DateTime Inicio, DateTime Fim)
        {
            try
            {
                relogio = _context.Relogios.Find(relogio.Id);
                relogio.UltimaLeitura = DateTime.Now;

                if (!(await Login(relogio)))
                {
                    throw new Exception("Não foi possível realizar login no relógio");
                }
                String urlNow = relogio.URL.ToString() + DownloadURL(Inicio, Fim);
                HttpResponseMessage response = await HttpClient.GetAsync(urlNow);

                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();

                var registros = CriarRegistrosDeTexto(relogio, responseBody);

                _logger.LogInformation($"Lido {registros.Count} registros do relógio {relogio.Nome}");
                VerificarRegistrosEAtualizarBanco(registros);
                relogio.UltimoSucesso = relogio.UltimaLeitura;
                _logger.LogInformation($"Marcações do relógio {relogio.Nome} lançadas com sucesso.");
                return(registros);
            }
            catch (Exception e)
            {
                relogio.UltimaFalha = relogio.UltimaLeitura;
                _logger.LogError(e, $"Erro ao realizar leitura do relógio {relogio.Nome}.");
                throw e;
            }
            finally
            {
                _context.SaveChanges();
            }
        }