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;
                }
            }
        }
示例#2
0
 public IEnumerable <Congregacao> ObterTodos()
 {
     using (RepositorySession dalSession = new RepositorySession("JW"))
     {
         IUnitOfWork unitOfWork = dalSession.UnitOfWork;
         try
         {
             return(_repository.ListAll(ref unitOfWork));
         }
         catch
         {
             throw;
         }
     }
 }
示例#3
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);
        }