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(); } }
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(); } }