public async Task <IActionResult> Migrar(int?id, int?idRegistro) { if (id == null) { return(NotFound()); } if (idRegistro == null) { return(NotFound()); } try { var relogio = await _context.Relogios.FindAsync(id); var registro = await _context.Registros.FindAsync(idRegistro); if (registro == null) { return(NotFound()); } IRelogioService relogioService = (IRelogioService)ActivatorUtilities.CreateInstance(this._serviceProvider, typeof(RelogioHenry)); relogioService.LancarRegistro(relogio, registro); ViewBag.Fim = registro.Marcacao.Date; ViewBag.Inicio = registro.Marcacao.Date; return(View("Details", relogio)); } catch (Exception e) { _logger.LogError(e, $"Erro ao migrar Relógio {id} e o registro {idRegistro}"); throw e; } }
public async Task <IActionResult> Details(int?id, DateTime?Inicio, DateTime?Fim) { if (id == null) { return(NotFound()); } if (!Inicio.HasValue) { Inicio = DateTime.Now.AddDays(-3).Date; } if (!Fim.HasValue) { Fim = DateTime.Now.Date; } ViewBag.Fim = Fim; ViewBag.Inicio = Inicio; var relogio = await _context.Relogios .FirstOrDefaultAsync(m => m.Id == id); try { IRelogioService relogioService = (IRelogioService)ActivatorUtilities.CreateInstance(this._serviceProvider, typeof(RelogioHenry)); await relogioService.LerRelogioELancarAsync(relogio, Inicio.Value, Fim.Value.AddDays(1), lancar : false); }catch (Exception e) { _logger.LogError("Não foi possível ler o relógio. Mostrando dados adquiridos anteriormente"); } relogio.Registros = _context.Registros.Where(r => r.IdRelogio == relogio.Id && r.Marcacao > Inicio && r.Marcacao < Fim).OrderBy(r => r.Marcacao).ToList(); if (relogio == null) { return(NotFound()); } return(View(relogio)); }
public override Task DoWork(CancellationToken cancellationToken) { try { _logger.LogInformation($"{DateTime.Now:hh:mm:ss} Iniciando ciclo e leitura."); using var scope = _serviceProvider.CreateScope(); var _pontoSyncContext = scope.ServiceProvider.GetRequiredService <PontoSyncContext>(); var _frequenciaContext = scope.ServiceProvider.GetRequiredService <FrequenciaContext>(); var relogios = _pontoSyncContext.Relogios.ToList(); int count = 0; Parallel.ForEach(relogios, relogio => { try { IRelogioService relogioService = (IRelogioService)ActivatorUtilities.CreateInstance(_serviceProvider.CreateScope().ServiceProvider, typeof(RelogioHenry)); DateTime inicio; //Se nunca havia sido lido antes, ler os últimos 60 minutos. if (relogio.UltimoSucesso == null) { inicio = DateTime.Now.AddMinutes(-60); } else { //Se já havia sido lido, recuperar no máximo 3 dias de leitura. if ((DateTime.Now.Date - relogio.UltimoSucesso.Value.Date).TotalDays > 3) { inicio = DateTime.Now.AddDays(-3); } //Se a leitura é recente ler desde o último sucesso, e 15 minutos de sobreposição. else { inicio = relogio.UltimoSucesso.Value.AddMinutes(-15); } } relogioService.LerRelogioELancarAsync(relogio, inicio, DateTime.Now, true); } catch (Exception e) { count++; _logger.LogError(1, e, $"Problema lendo o relógio {relogio.Nome} com o IP {relogio.URL} e descrito como {relogio.Descricao}"); } } ); _logger.LogInformation($"{DateTime.Now:hh:mm:ss} Terminado ciclo e leitura. Quantidade de erros:" + count); } catch { _logger.LogError("Erro crítico no Job de leitura do relógio"); } return(Task.CompletedTask); }
public HomeController( IBusca buscaInterna, ILogger logger, IUsuarioRepositorio usuarioRepositorio, IContaRepositorio contaRepositorio, IControleAcessoRepositorio controleAcessoRepositorio, IControleAcessoService httpService, IRelogioService relogioService, IAmbienteOracleService ambienteOracleService) { _buscaInterna = buscaInterna; _logger = logger; _usuarioRepositorio = usuarioRepositorio; _contaRepositorio = contaRepositorio; _controleAcessoRepositorio = controleAcessoRepositorio; _httpService = httpService; _relogioService = relogioService; _ambienteOracleService = ambienteOracleService; }
public async Task <IActionResult> MigrarIntervalo(int id, [FromBody] int[] registrosId) { if (id == null) { return(NotFound()); } var relogio = await _context.Relogios.FindAsync(id); if (relogio == null) { return(NotFound()); } if (registrosId == null) { return(BadRequest()); } var registros = _context.Registros.Where(rg => rg.IdRelogio == id && registrosId.Contains(rg.Id)).ToList(); IRelogioService relogioService = (IRelogioService)ActivatorUtilities.CreateInstance(this._serviceProvider, typeof(RelogioHenry)); relogioService.LancarRegistros(relogio, registros); relogio.Registros = registros; return(Ok()); }