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