Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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);
        }
Exemple #4
0
 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;
 }
Exemple #5
0
        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());
        }