예제 #1
0
        public void RetornarSuspensaoAutomaticamente()
        {
            BeginTransaction();
            var pactosAReiniciar = _pactoService.ObterTodosSuspensosComPrazoParaRetorno();

            pactosAReiniciar.ToList().ForEach(p =>
            {
                _pactoService.ReiniciarPacto(p, false);

                if (p.ValidationResult.IsValid)
                {
                    _logService.Logar(p, "Tarefa Automática", Domain.Enums.Operacao.Alteração.ToString());

                    // O envio de email não precisa dar rollback na transação em caso de erro
                    try
                    {
                        _notificadorAppService.EnviarEmailNotificacaoReativacaoAutomaticaPacto(Mapper.Map <PactoViewModel>(p));
                    }
                    catch (Exception ex)
                    {
                        // LogManagerComum.LogarErro(ex, null, "  => O Plano de Trabalho " + p.IdPacto + " teve o status alterado para PENDENTE PARA AVALIAÇÃO mas não foi possível notificar os interessados.");
                    }
                }
                else
                {
                    // LogManagerComum.LogarErro(null, null, "  => O Plano de Trabalho " + p.IdPacto + " não teve o status alterado para Em execução. Erro: " + p.ValidationResult.Erros?.FirstOrDefault()?.Message);
                }
            });
            Commit();
        }