public void NotificacaoPrimeiraAula_GetDevicesNotificacaoPrimeiraAula_DataParametrizada()
        {
            var notificacao = NotificacaoEntityTestData.GetNotificacaoPrimeiraAula();

            var parametros = new ParametrosPrimeiraAula
            {
                Data = new DateTime(2019, 01, 11)
            };


            var devices = new NotificacaoBusiness(new NotificacaoEntity(),
                                                  new AccessEntity(),
                                                  new AlunoEntity(),
                                                  new NotificacaoDuvidasAcademicasEntity(),
                                                  new MenuBusiness(new MenuEntity(), new PessoaEntity(), new BlackListEntity())
                                                  ).GetDevicesNotificacaoPrimeiraAula(notificacao, parametros);


            if (!devices.Any())
            {
                Assert.Inconclusive("Não há notificações a processar");
            }

            Assert.IsTrue(devices.All(x => x.Data.Date == parametros.Data.Date));
        }
        public void NotificacaoPrimeiraAula_GetDevicesNotificacaoPrimeiraAula_DataSemParametro()
        {
            var notificacao = NotificacaoEntityTestData.GetNotificacaoPrimeiraAula();
            var parametros  = new ParametrosPrimeiraAula();

            var hoje = DateTime.Today;

            var devices = new NotificacaoBusiness(new NotificacaoEntity(),
                                                  new AccessEntity(),
                                                  new AlunoEntity(),
                                                  new NotificacaoDuvidasAcademicasEntity(),
                                                  new MenuBusiness(new MenuEntity(), new PessoaEntity(), new BlackListEntity())
                                                  ).GetDevicesNotificacaoPrimeiraAula(notificacao, parametros);


            if (!devices.Any())
            {
                Assert.Inconclusive("Não há notificações a processar");
            }

            Assert.IsTrue(devices.All(x => x.Data.Date == hoje.AddDays(Utilidades.NotificacaoPrimeiraAulaDiasAntecedenciaPadrao)));
        }
Example #3
0
        public List <DeviceNotificacao> GetDevicesNotificacaoPrimeiraAula(Notificacao notificacao, ParametrosPrimeiraAula parametros)
        {
            using (MiniProfiler.Current.Step("Obtendo devices notificação primeira aula")) {
                var devices        = new List <DeviceNotificacao> ();
                var aulaRepository = new AulaEntity();

                int diasAntecedencia = parametros.DiasAntecedencia == default(int) ? Utilidades.NotificacaoPrimeiraAulaDiasAntecedenciaPadrao : parametros.DiasAntecedencia;

                var dataAula = parametros.Data == default(DateTime) ? DateTime.Now.Date.AddDays(diasAntecedencia) : parametros.Data;

                var turmasPrimeiraAula = aulaRepository.GetPrimeiraAulaTurma(dataAula, parametros.TurmaId);
                var alunos             = aulaRepository.GetAlunosAulaTurma(turmasPrimeiraAula);

                var alunosCourse = alunos.GroupBy(x => x.CourseId).ToList();

                alunosCourse.ForEach(x => {
                    var devicesCurso = x.Where(y => y.CourseId == x.Key).Select(z => new DeviceNotificacao {
                        ClientId      = z.ClientId,
                        DeviceToken   = z.ClientDeviceToken,
                        NotificacaoId = notificacao.IdNotificacao,
                        Status        = EStatusEnvioNotificacao.NaoEnviado,
                        Data          = z.LessonDatetime,
                        Titulo        = notificacao.Titulo.Replace("#PRODUTO", z.ProductName),
                        Mensagem      = notificacao.Texto.Replace("#DATA", z.LessonDatetime.ToString("dd/MM/yyyy")).Replace("#HORA", z.LessonDatetime.ToString("HH:mm"))
                    }).ToList();

                    devices.AddRange(devicesCurso);
                });

                return(devices);
            }
        }