示例#1
0
        public Irmao AlterarSenha(string login, string UserToken, string senha, string novaSenha, string confirmacaoNovaSenha)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                unitOfWork.Begin();
                try
                {
                    var model = BuscarporLogin(ref unitOfWork, login);

                    if (model == null || model.Invalid)
                    {
                        return(model);
                    }

                    if (model.AlteraSenhaAtual(model.Codigo, model.Senha,
                                               senha, novaSenha, confirmacaoNovaSenha, Convert.ToInt32(UserToken)))
                    {
                        _repository.AlterarSenha(ref unitOfWork, model.Codigo, model.Senha);
                        unitOfWork.Commit();
                    }
                    return(model);
                }
                catch
                {
                    unitOfWork.Rollback();
                    throw;
                }
            }
        }
示例#2
0
        public Irmao EsquecerSenha(string login)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                unitOfWork.Begin();
                try
                {
                    var model = BuscarporLogin(ref unitOfWork, login);

                    if (model == null || model.Invalid)
                    {
                        return(model);
                    }
                    else if (model.StatusId != (int)Status.Ativo && model.StatusId != (int)Status.BloqueadoporSenha)
                    {
                        model.AddNotification(nameof(Irmao.Email), Errors.BlockedUser);
                        unitOfWork.Rollback();
                        return(model);
                    }

                    var novasenha = model.GeraNovaSenha(8, false);
                    model.StatusId = (int)Status.Ativo;
                    _repository.ReiniciarSenha(ref unitOfWork, model);
                    _repository.SendEmail(model, novasenha, false);
                    unitOfWork.Commit();
                    return(model);
                }
                catch
                {
                    unitOfWork.Rollback();
                    throw;
                }
            }
        }
示例#3
0
 public DataEvento Adicionar(DataEvento model)
 {
     if (model.Valid)
     {
         using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
         {
             IUnitOfWork unitOfWork = dalSession.UnitOfWork;
             unitOfWork.Begin();
             try
             {
                 if (_repository.PesquisarporDataeCongregacao(ref unitOfWork, model) != null)
                 {
                     model.AddNotification(nameof(model.Data), Errors.EventExists);
                     unitOfWork.Rollback();
                     return(model);
                 }
                 _repository.Inserir(ref unitOfWork, model);
                 unitOfWork.Commit();
             }
             catch
             {
                 unitOfWork.Rollback();
                 throw;
             }
         }
     }
     return(model);
 }
示例#4
0
        public Irmao Autenticar(string login, string password)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                unitOfWork.Begin();
                try
                {
                    var model = BuscarporLogin(ref unitOfWork, login);

                    if (model == null || model.Invalid)
                    {
                        return(model);
                    }
                    else if (!model.ValidarSenha(password))
                    {
                        return(AtualizarLogin(ref unitOfWork, ref model));
                    }

                    return(AtualizarLogin(ref unitOfWork, ref model));
                }
                catch
                {
                    unitOfWork.Rollback();
                    throw;
                }
            }
        }
        public ExcecaoDesignacao Apagar(int id)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                unitOfWork.Begin();
                try
                {
                    var model = BuscarPorId(ref unitOfWork, id);

                    if (model == null || model.Invalid)
                    {
                        return(model);
                    }

                    _repository.Apagar(ref unitOfWork, id);
                    unitOfWork.Commit();
                    return(model);
                }
                catch
                {
                    unitOfWork.Rollback();
                    throw;
                }
            }
        }
示例#6
0
        public Grupo Apagar(int grupoAtual, int grupoNovo)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                unitOfWork.Begin();
                try
                {
                    var model = BuscarPorId(ref unitOfWork, grupoAtual);

                    if (model == null || model.Invalid)
                    {
                        return(model);
                    }

                    _repositoryIrmao.UpdateGrupoCampo(ref unitOfWork, grupoAtual, grupoNovo);
                    _repository.Apagar(ref unitOfWork, grupoAtual);
                    unitOfWork.Commit();
                    return(model);
                }
                catch
                {
                    unitOfWork.Rollback();
                    throw;
                }
            }
        }
        public IReadOnlyCollection <Notification> Atualizar(AssistenciaReuniao updatemodel)
        {
            if (updatemodel.Valid)
            {
                using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
                {
                    IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                    unitOfWork.Begin();
                    try
                    {
                        var model = _repository.FindByData(ref unitOfWork, updatemodel.CongregacaoId, updatemodel.Data);

                        if (model == null)
                        {
                            _repository.Inserir(ref unitOfWork, updatemodel);
                        }
                        else
                        {
                            _repository.Atualizar(ref unitOfWork, updatemodel);
                        }

                        unitOfWork.Commit();

                        return(updatemodel.Notifications);
                    }
                    catch
                    {
                        unitOfWork.Rollback();
                        throw;
                    }
                }
            }
            return(updatemodel.Notifications);
        }
 public ExcecaoDesignacao Inserir(ExcecaoDesignacao model)
 {
     if (model.Valid)
     {
         using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
         {
             IUnitOfWork unitOfWork = dalSession.UnitOfWork;
             unitOfWork.Begin();
             try
             {
                 if (_repository.ExisteExcecaoDesignacaoPorIrmaoEData(ref unitOfWork, model.IrmaoId, model.Data))
                 {
                     model.AddNotification(nameof(model.Data), Errors.ExceptionsExists);
                     unitOfWork.Rollback();
                     return(model);
                 }
                 _repository.Inserir(ref unitOfWork, model);
                 unitOfWork.Commit();
             }
             catch
             {
                 unitOfWork.Rollback();
                 throw;
             }
         }
     }
     return(model);
 }
示例#9
0
        public async Task <QuadroPersonalizado> ApagarQuadroPersonalizado(int congregacaoId, string url, StorageConfig config)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                unitOfWork.Begin();
                try
                {
                    var model = _repositoryQuadro.ObterQuadroPersonalizado(ref unitOfWork, congregacaoId, url);
                    if (model == null)
                    {
                        model = new QuadroPersonalizado();
                        model.AddNotification(nameof(JsonImage.Url), "Quadro não encontrado");
                        unitOfWork.Rollback();
                        return(model);
                    }

                    await _storageAzure.DeleteBlobData(model.Url, config);

                    _repositoryQuadro.ApagarQuadroPersonalizado(ref unitOfWork, url, congregacaoId);
                    unitOfWork.Commit();
                    return(model);
                }
                catch
                {
                    throw;
                }
            }
        }
示例#10
0
        public IEnumerable <GetGrupoIrmao> ObterGruposComIrmaos(int congregacaoId)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                try
                {
                    var ret = _repository.ObterGruposComIrmaos(ref unitOfWork, congregacaoId);

                    foreach (var item in ret)
                    {
                        if (item.Irmaos[0] == null)
                        {
                            item.Irmaos.Clear();
                        }
                    }

                    return(ret);
                }
                catch
                {
                    throw;
                }
            }
        }
示例#11
0
 public Grupo Adicionar(Grupo model)
 {
     if (model.Valid)
     {
         using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
         {
             IUnitOfWork unitOfWork = dalSession.UnitOfWork;
             unitOfWork.Begin();
             try
             {
                 if (_repository.PesquisarporNomeGrupo(ref unitOfWork, model.Nome) != null)
                 {
                     model.AddNotification(nameof(model.Nome), Errors.NameExists);
                     unitOfWork.Rollback();
                     return(model);
                 }
                 _repository.Inserir(ref unitOfWork, model);
                 unitOfWork.Commit();
             }
             catch
             {
                 unitOfWork.Rollback();
                 throw;
             }
         }
     }
     return(model);
 }
        public PartitionedScenarioProvider()
        {
            _partitionProxy = new Mock<IPartitionProxy>();
            _partitionProxy.Setup(x => x.GetConnection())
                .Returns(() => new DatabaseConnection(new DatabaseConnectionString(MsSqlHelper.ConnectionStringSettings)));

            var contextFactory = new PartitionedDbContextFactory<RepositoryAggregateRoot<Book>>(_partitionProxy.Object);

            Session = new RepositorySession(contextFactory);
        }
示例#13
0
        public IReadOnlyCollection <Notification> Atualizar(Irmao updatemodel, int userId)
        {
            if (updatemodel.Valid)
            {
                using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
                {
                    IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                    unitOfWork.Begin();
                    try
                    {
                        var model = BuscarPorId(ref unitOfWork, updatemodel.Codigo);

                        if (model == null || model.Invalid)
                        {
                            return(model.Notifications);
                        }

                        //Valida se não existe um outro registro como este mesmo nome
                        if (!VerificarNome(ref unitOfWork, ref updatemodel, updatemodel.Codigo))
                        {
                            return(updatemodel.Notifications);
                        }

                        //Valida se não existe um outro registro com este mesmo e-mail
                        if (!VerificarEmail(ref unitOfWork, ref model, updatemodel.Email, model.Codigo))
                        {
                            return(model.Notifications);
                        }

                        updatemodel.AtualizarDesignacao = model.AtualizarDesignacao;

                        // Verifica se é necessário atualizar as designações
                        if (!model.AtualizarDesignacao)
                        {
                            updatemodel.VerificaDesignacoes(model);
                        }

                        _repository.Atualizar(ref unitOfWork, updatemodel);

                        unitOfWork.Commit();

                        return(updatemodel.Notifications);
                    }
                    catch
                    {
                        unitOfWork.Rollback();
                        throw;
                    }
                }
            }
            return(updatemodel.Notifications);
        }
示例#14
0
        public async Task <QuadroPersonalizado> NovoQuadroPersonalizado(QuadroPersonalizado model, StorageConfig config, IFormFile file)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                JsonImage   url        = new JsonImage();
                unitOfWork.Begin();
                try
                {
                    if (model.Valid)
                    {
                        if (file != null && _storageAzure.IsImage(file.FileName.Trim('\"')))
                        {
                            if (file.Length > 0)
                            {
                                using (var stream = file.OpenReadStream())
                                    url = await _storageAzure.Upload(stream, Guid.NewGuid() + "_" + file.FileName, config);
                            }
                            else
                            {
                                model.AddNotification(nameof(JsonImage.Url), "Arquivo Vazio");
                            }
                        }
                        else
                        {
                            model.AddNotification(nameof(JsonImage.Url), "Arquivo não suportado");
                        }

                        model.Url = url.Url;
                        if (model.Valid)
                        {
                            _repositoryQuadro.InserirQuadroPersonalizado(ref unitOfWork, model);
                            unitOfWork.Commit();
                        }
                        else if (model.Url != null)
                        {
                            await _storageAzure.DeleteBlobData(model.Url, config);
                        }
                    }
                }
                catch
                {
                    unitOfWork.Rollback();
                    await _storageAzure.DeleteBlobData(model.Url, config);

                    throw;
                }
                return(model);
            }
        }
        public GetGraficoAssistenciaMensal ObterAssistenciasMensal(int congregacaoId)
        {
            string[]  background  = { "rgba(75, 112, 0, 0.6)", "rgba(0, 3, 205, 0.6)" };
            string[]  borderColor = { "rgba(75, 112, 0, 1)", "rgba(0, 3, 205, 1)" };
            const int borderWidth = 1;

            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                try
                {
                    var congregacao = _repositoryCongregacao.ListAll(ref unitOfWork).FirstOrDefault(x => x.Codigo == congregacaoId);
                    var ret         = _repository.ObterAssistenciasMensal(ref unitOfWork, congregacaoId);
                    var model       = new GetGraficoAssistenciaMensal
                    {
                        Labels   = new List <string>(),
                        Datasets = new List <Dataset>()
                    };
                    var label = "";

                    for (int i = 0; i < ret.Count; i++)
                    {
                        label = DateValues.ObterMesPortugues(ret[i].Mes, ret[i].Ano);
                        if (!model.Labels.Contains(label))
                        {
                            model.Labels.Add(label);
                        }

                        if (!model.Datasets.Any(x => x.Label == DateValues.ObterDiaSemanaPortugues(ret[i].DiaReuniao)))
                        {
                            model.Datasets.Add(new Dataset
                            {
                                BackgroundColor = (ret[i].DiaReuniao == congregacao.DiaReuniaoServico) ? background[0] : background[1],
                                BorderColor     = (ret[i].DiaReuniao == congregacao.DiaReuniaoServico) ? borderColor[0] : borderColor[1],
                                BorderWidth     = borderWidth,
                                Label           = DateValues.ObterDiaSemanaPortugues(ret[i].DiaReuniao),
                                Data            = ret.Where(x => x.DiaReuniao == ret[i].DiaReuniao).Select(c => c.AssistenciaTotal / c.QuantidadeReunioes).ToList()
                            });
                        }
                    }

                    return(model);
                }
                catch
                {
                    throw;
                }
            }
        }
示例#16
0
 public IEnumerable <Grupo> ObterGruposPorCongregacao(int congregacaoId)
 {
     using (RepositorySession dalSession = new RepositorySession("JW"))
     {
         IUnitOfWork unitOfWork = dalSession.UnitOfWork;
         try
         {
             return(_repository.ObterGruposPorCongregacao(ref unitOfWork, congregacaoId));
         }
         catch
         {
             throw;
         }
     }
 }
 public IEnumerable <ExcecaoDesignacao> ObterExcecaoPorCongregacao(int congregacaoId)
 {
     using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
     {
         IUnitOfWork unitOfWork = dalSession.UnitOfWork;
         try
         {
             return(_repository.ObterExcecaoPorCongregacao(ref unitOfWork, congregacaoId));
         }
         catch
         {
             throw;
         }
     }
 }
示例#18
0
 public IEnumerable <Congregacao> ObterTodos()
 {
     using (RepositorySession dalSession = new RepositorySession("JW"))
     {
         IUnitOfWork unitOfWork = dalSession.UnitOfWork;
         try
         {
             return(_repository.ListAll(ref unitOfWork));
         }
         catch
         {
             throw;
         }
     }
 }
示例#19
0
 public List <QuadroPersonalizado> ObterQuadrosPersonalizados(int congregacaoId)
 {
     using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
     {
         IUnitOfWork unitOfWork = dalSession.UnitOfWork;
         try
         {
             return(_repositoryQuadro.ObterQuadrosPersonalizadosAtivosPorCongregacao(ref unitOfWork, congregacaoId));
         }
         catch
         {
             throw;
         }
     }
 }
示例#20
0
        public List <GetQuadroDesignacaoMecanica> ObterListaDesignacoesMecanicas(int congregacaoId)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                try
                {
                    var quadroAtual   = _repositoryQuadro.ObterQuadroAtual(ref unitOfWork, congregacaoId);
                    var proximoQuadro = _repositoryQuadro.ObterProximoQuadro(ref unitOfWork, congregacaoId);

                    return(ObterListaPorQuadroId(ref unitOfWork, quadroAtual, proximoQuadro));
                }
                catch
                {
                    throw;
                }
            }
        }
        public IReadOnlyCollection <Notification> Apagar(int congregacaoId, DateTime data)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                unitOfWork.Begin();
                try
                {
                    _repository.Apagar(ref unitOfWork, data, congregacaoId);
                    unitOfWork.Commit();

                    return(new AssistenciaReuniao().Notifications);
                }
                catch
                {
                    unitOfWork.Rollback();
                    throw;
                }
            }
        }
        private bool TryAddSlugsIfNotExist(IReadOnlyCollection <string> slugs, RepositorySession repositorySession)
        {
            var slugsAsString = string.Join(", ", slugs);

            Console.WriteLine($"Importing Slugs: {slugsAsString}");

            var toAdd = slugs.Where(w => !repositorySession.RepositorySlugs.Contains(w));

            var(repositoriesThatExist, repositoriesThatDoNotExist) = _repositoryProvider.RepositoriesExist(toAdd).SplitExistingAndNonExisting();

            if (repositoriesThatDoNotExist.Any() && !_continueEvent.Continue($"Could not find slugs: {string.Join(", ", repositoriesThatDoNotExist)}. Continue? "))
            {
                return(false);
            }

            repositorySession.RepositorySlugs.AddRange(repositoriesThatExist);
            Console.WriteLine($"Importing Slugs: {slugsAsString}");

            return(true);
        }
示例#23
0
        public Irmao Adicionar(Irmao model, int userId)
        {
            if (model.Valid)
            {
                var password = model.GeraNovaSenha(8, true);

                using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
                {
                    IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                    unitOfWork.Begin();
                    try
                    {
                        if (_repository.PesquisarporEmail(ref unitOfWork, model.Email) != null)
                        {
                            model.AddNotification(nameof(model.Email), Errors.LoginExists);
                            unitOfWork.Rollback();
                            return(model);
                        }

                        // Valida se não existe um outro registro com mesmo nome
                        if (!VerificarNome(ref unitOfWork, ref model))
                        {
                            return(model);
                        }

                        model.Codigo = _repository.Inserir(ref unitOfWork, model);

                        _repository.SendEmail(model, password, true);

                        unitOfWork.Commit();
                    }
                    catch
                    {
                        unitOfWork.Rollback();
                        throw;
                    }
                }
            }

            return(model);
        }
        public List <GetDetalheAssistencia> ObterAssistenciasPorCongregacao(int congregacaoId, DateTime dataInicial, DateTime dataFinal)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                try
                {
                    var ret = _repository.ObterAssistenciasPorCongregacao(ref unitOfWork, congregacaoId, dataInicial, dataFinal);

                    for (int i = 0; i < ret.Count; i++)
                    {
                        ret[i].DiaSemana = DateValues.ObterDiaSemanaPortugues(ret[i].Data.DayOfWeek);
                    }

                    return(ret);
                }
                catch
                {
                    throw;
                }
            }
        }
示例#25
0
        public IReadOnlyCollection <Notification> Atualizar(Grupo updatemodel)
        {
            if (updatemodel.Valid)
            {
                using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
                {
                    IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                    unitOfWork.Begin();
                    try
                    {
                        var model = BuscarPorId(ref unitOfWork, updatemodel.Codigo);

                        if (model == null || model.Invalid)
                        {
                            return(model.Notifications);
                        }

                        if (_repository.PesquisarporNomeGrupo(ref unitOfWork, updatemodel.Nome, model.Codigo) != null)
                        {
                            model.AddNotification(nameof(model.Nome), Errors.NameExists);
                            unitOfWork.Rollback();
                            return(model.Notifications);
                        }

                        _repository.Atualizar(ref unitOfWork, updatemodel);

                        unitOfWork.Commit();

                        return(updatemodel.Notifications);
                    }
                    catch
                    {
                        unitOfWork.Rollback();
                        throw;
                    }
                }
            }
            return(updatemodel.Notifications);
        }
示例#26
0
        public async Task <List <QuadroPersonalizado> > ApagarStorageNaoUtilizado(StorageConfig config)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                try
                {
                    var ret = _repositoryQuadro.ObterQuadrosPersonalizadosExpiradosAtivosStorage(ref unitOfWork);

                    foreach (var item in ret)
                    {
                        await _storageAzure.DeleteBlobData(item.Url, config);

                        _repositoryQuadro.AlterarStatusStorageQuadroPersonalizado(ref unitOfWork, item.Url);
                    }
                    return(ret);
                }
                catch
                {
                    throw;
                }
            }
        }
        private bool TryImportRepositoryGroup(string repositoryGroupName, RepositorySession repositorySession)
        {
            Console.WriteLine($"Importing Group: {repositoryGroupName} into session");

            var repositoryGroup = _fileRepository.GetGroup(repositoryGroupName);

            if (repositoryGroup == null)
            {
                return(!_continueEvent.Continue($"Could not find Repository Group: {repositoryGroupName}, Continue? "));
            }

            repositorySession.RepositoryGroupName = repositoryGroupName;

            var slugsToAdd =
                repositoryGroup.RepositorySlugs.Where(slug =>
                                                      !repositorySession.RepositorySlugs.Contains(slug));

            repositorySession.RepositorySlugs.AddRange(slugsToAdd);

            Console.WriteLine($"Imported Group: {repositoryGroupName} into session");

            return(true);
        }
示例#28
0
 public SessionController()
 {
     TrainingContext = new TrainingContext();
     RepoSession     = new RepositorySession(TrainingContext);
 }
示例#29
0
        public IReadOnlyCollection <Notification> RegerarListaAtual(int congregacaoAtual)
        {
            var model = new Quadro();

            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                unitOfWork.Begin();
                try
                {
                    var congregacao = _repositoryCongregacao.ListAll(ref unitOfWork).ToList().Find(x => x.Codigo == congregacaoAtual);

                    if (congregacao == null)
                    {
                        model.AddNotification("Congregacao", "Não existe nenhuma congregação cadastrada");
                        unitOfWork.Rollback();
                        return(model.Notifications);
                    }

                    var      quadroAtual   = _repositoryQuadro.ObterQuadroAtual(ref unitOfWork, congregacaoAtual);
                    var      proximoQuadro = _repositoryQuadro.ObterProximoQuadro(ref unitOfWork, congregacaoAtual);
                    int      quadro        = 0;
                    DateTime dataInicioLista;

                    if (proximoQuadro > 0)
                    {
                        quadro = proximoQuadro;
                    }
                    else
                    {
                        quadro = quadroAtual;
                    }

                    dataInicioLista = _repositoryQuadroDetalhe.ObterDataInicioQuadro(ref unitOfWork, quadro);


                    var      tipolistas     = _repositoryTipoLista.ListAll(ref unitOfWork, congregacaoAtual);
                    DateTime dataFinalLista = _repositoryQuadroDetalhe.ObterDataFimQuadro(ref unitOfWork, quadro);
                    //Apaga Lista Atual
                    _repositoryQuadroDetalhe.ApagaDetalhesQuadro(ref unitOfWork, quadro);

                    // Caso a próxima lista ainda não foi gerada, a lista atual será gerada até a última reunião antes da data atual
                    if (proximoQuadro == 0)
                    {
                        // Gera lista até data atual
                        GeraListas(ref unitOfWork, ref tipolistas, ref congregacao, dataInicioLista, quadro, DateTime.Now, true, true);

                        // Atualiza o Controle da lista com base nas atribuições atuais dos irmãos
                        AtualizarControleLista(ref unitOfWork, congregacao.Codigo, false);

                        // Continua a geração da lista da data atual até o final da lista
                        GeraListas(ref unitOfWork, ref tipolistas, ref congregacao, DateTime.Now.AddDays(1), quadro, dataFinalLista, false, false);
                    }
                    else
                    {
                        // Recupera Backup das lista
                        foreach (var item in tipolistas)
                        {
                            _repositoryControleLista.RecuperaBackupListaAtual(ref unitOfWork, (int)item.Codigo, congregacaoAtual);
                        }

                        // Atualiza o Controle da lista com base nas atribuições atuais dos irmãos
                        AtualizarControleLista(ref unitOfWork, congregacao.Codigo, false);

                        // Gera lista até data atual
                        GeraListas(ref unitOfWork, ref tipolistas, ref congregacao, dataInicioLista, quadro, dataFinalLista, true, false);
                    }

                    unitOfWork.Commit();
                }
                catch
                {
                    unitOfWork.Rollback();
                    throw;
                }
            }

            return(model.Notifications);
        }
示例#30
0
        public IReadOnlyCollection <Notification> GeraLista(int congregacaoAtual)
        {
            var model = new Quadro();

            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                unitOfWork.Begin();
                try
                {
                    var congregacao = _repositoryCongregacao.ListAll(ref unitOfWork).ToList().Find(x => x.Codigo == congregacaoAtual);

                    if (congregacao == null)
                    {
                        model.AddNotification("Congregacao", "Não existe nenhuma congregação cadastrada");
                        unitOfWork.Rollback();
                        return(model.Notifications);
                    }

                    DateTime dataInicioLista;
                    if (DateTime.Now.Date < Convert.ToDateTime(congregacao.DataPrimeiraLista).Date)
                    {
                        dataInicioLista = Convert.ToDateTime(congregacao.DataPrimeiraLista).Date;
                    }
                    else
                    {
                        var ultimareuniao = _repositoryQuadro.ObterUltimoQuadro(ref unitOfWork, congregacao.Codigo);
                        dataInicioLista = ultimareuniao.DataFimLista.Date.AddDays(1);
                    }

                    if (DateTime.Now.Date < dataInicioLista.Date.AddDays(congregacao.DiasAntecedenciaGerarLista * -1))
                    {
                        model.AddNotification("Congregacao", $"A lista somente pode ser gerada a partir de + " +
                                              $"'{dataInicioLista.Date.AddDays(congregacao.DiasAntecedenciaGerarLista * -1).Date}'");
                        unitOfWork.Rollback();
                        return(model.Notifications);
                    }

                    var tipolistas = _repositoryTipoLista.ListAll(ref unitOfWork, congregacao.Codigo);
                    int quadro     = 0;
                    int codQuadro  = 0;
                    if (tipolistas.Count() > 0)
                    {
                        quadro = _repositoryQuadro.ObterCodigoProximoQuadro(ref unitOfWork);
                        // Incluir / retirar irmãos da lista / atualiza designações
                        AtualizarControleLista(ref unitOfWork, congregacao.Codigo, true);
                    }
                    DateTime dataFinalLista = DateTime.MinValue;

                    foreach (var itemTipoLista in tipolistas)
                    {
                        DateTime dataControle = dataInicioLista;
                        _repositoryControleLista.BackupListaAtual(ref unitOfWork, (int)itemTipoLista.Codigo, dataInicioLista, itemTipoLista.CongregacaoId);
                        codQuadro = _repositoryQuadro.InserirNovoQuadro(ref unitOfWork, congregacao.Codigo, quadro, (int)itemTipoLista.Codigo);

                        int i = 0;
                        while (i < itemTipoLista.QuantidadeDatas)
                        {
                            bool assembleia = false;
                            switch (itemTipoLista.Codigo)
                            {
                            case Core.Domain.enums.eTipoLista.Indicador:
                                if (dataControle.DayOfWeek == congregacao.DiaReuniaoSentinela || dataControle.DayOfWeek == congregacao.DiaReuniaoServico)
                                {
                                    for (int iIndicador = 0; iIndicador < congregacao.QuantidadeIndicadores; iIndicador++)
                                    {
                                        if (!assembleia)
                                        {
                                            assembleia = InsereDetalheQuadro(ref unitOfWork, dataControle, congregacao, codQuadro, itemTipoLista);
                                        }
                                    }
                                    i++;
                                }
                                break;

                            case Core.Domain.enums.eTipoLista.AudioVideo:
                                if (dataControle.DayOfWeek == congregacao.DiaReuniaoSentinela || dataControle.DayOfWeek == congregacao.DiaReuniaoServico)
                                {
                                    for (int iSistemaSonoro = 0; iSistemaSonoro < congregacao.QuantidadeSistemaSonoro; iSistemaSonoro++)
                                    {
                                        if (!assembleia)
                                        {
                                            assembleia = InsereDetalheQuadro(ref unitOfWork, dataControle, congregacao, codQuadro, itemTipoLista);
                                        }
                                    }
                                    i++;
                                }
                                break;

                            case Core.Domain.enums.eTipoLista.Microfonista:
                                if (dataControle.DayOfWeek == congregacao.DiaReuniaoSentinela || dataControle.DayOfWeek == congregacao.DiaReuniaoServico)
                                {
                                    for (int iMicrofonistas = 0; iMicrofonistas < congregacao.QuantidadeMicrofonistas; iMicrofonistas++)
                                    {
                                        if (!assembleia)
                                        {
                                            assembleia = InsereDetalheQuadro(ref unitOfWork, dataControle, congregacao, codQuadro, itemTipoLista);
                                        }
                                    }
                                    i++;
                                }
                                break;

                            case Core.Domain.enums.eTipoLista.OracaoFinal:
                            case Core.Domain.enums.eTipoLista.OracaoInicial:
                                if (dataControle.DayOfWeek == congregacao.DiaReuniaoSentinela || dataControle.DayOfWeek == congregacao.DiaReuniaoServico)
                                {
                                    InsereDetalheQuadro(ref unitOfWork, dataControle, congregacao, codQuadro, itemTipoLista);
                                    i++;
                                }
                                break;

                            case Core.Domain.enums.eTipoLista.LeitorJW:
                                if (dataControle.DayOfWeek == congregacao.DiaReuniaoSentinela)
                                {
                                    InsereDetalheQuadro(ref unitOfWork, dataControle, congregacao, codQuadro, itemTipoLista);
                                    i = i + 2;
                                }
                                break;

                            case Core.Domain.enums.eTipoLista.LeitorELC:
                                if (dataControle.DayOfWeek == congregacao.DiaReuniaoServico)
                                {
                                    InsereDetalheQuadro(ref unitOfWork, dataControle, congregacao, codQuadro, itemTipoLista);
                                    i = i + 2;
                                }
                                break;

                            default:
                                break;
                            }
                            dataControle = dataControle.AddDays(1);
                        }
                        if (dataFinalLista == DateTime.MinValue)
                        {
                            dataFinalLista = dataControle.AddDays(-1);
                        }
                    }

                    unitOfWork.Commit();
                }
                catch
                {
                    unitOfWork.Rollback();
                    throw;
                }
            }

            return(model.Notifications);
        }
 public OrdinaryScenarioProvider()
 {
     var contextFactory = new DbContextFactory<RepositoryAggregateRoot<Book>>(MsSqlHelper.EfConnectionStringName);
     Session = new RepositorySession(contextFactory);
 }
示例#32
0
 public UserRepository(IRepositorySession repositorySession)
 {
     _repositorySession = (RepositorySession)repositorySession;
 }