public List <Comunicados> Crear(ComunicadoDto comunicado)
        {
            if (string.IsNullOrEmpty(comunicado.Descripcion))
            {
                return(null);
            }

            var comunicados = new List <Comunicados>();


            if (!comunicado.IdUsuario.Any())
            {
                comunicado.IdUsuario = _context.EstudianteCurso.Where(x => x.IdCurso == comunicado.IdCurso)
                                       .Select(u => u.IdUsuario).ToList();
            }

            foreach (var idUsuarios in comunicado.IdUsuario)
            {
                var comunicadoBase = new Comunicados {
                    Descripcion = comunicado.Descripcion
                };
                comunicadoBase.IdUsuario = idUsuarios;
                comunicados.Add(comunicadoBase);
            }

            _context.Comunicados.AddRange(comunicados);
            _context.SaveChanges();
            return(comunicados);
        }
        private async Task ValidarAbrangenciaDre(ComunicadoDto filtroDto)
        {
            var abrangenciaDres = await consultasAbrangencia.ObterDres(null);

            var dre = abrangenciaDres.FirstOrDefault(x => x.Codigo.Equals(filtroDto.CodigoDre));

            if (dre == null)
            {
                throw new NegocioException($"Usuário não possui permissão para visualizar comunicados da DRE com codigo {filtroDto.CodigoDre}");
            }
        }
        private async Task ValidarAbrangenciaTurma(ComunicadoDto filtroDto)
        {
            foreach (var turma in filtroDto.Turmas)
            {
                var abrangenciaTurmas = await consultasAbrangencia.ObterAbrangenciaTurma(turma.CodigoTurma);

                if (abrangenciaTurmas == null)
                {
                    throw new NegocioException($"Usuário não possui permissão para visualizar comunicados da Turma com codigo {turma.CodigoTurma}");
                }
            }
        }
        private async Task <bool> ValidarAbrangenciaListagem(FiltroComunicadoDto filtroDto)
        {
            try
            {
                ComunicadoDto comunicado = MapearFiltroDtoValidacao(filtroDto);

                await ValidarAbrangenciaUsuario(comunicado);

                return(true);
            }
            catch (NegocioException)
            {
                return(false);
            }
        }
        private async Task ValidarAbrangenciaUE(ComunicadoDto filtroDto)
        {
            var abrangenciaUes = await consultasAbrangencia.ObterUes(filtroDto.CodigoDre, null);

            var ue = abrangenciaUes.FirstOrDefault(x => x.Codigo.Equals(filtroDto.CodigoUe));

            if (ue == null)
            {
                throw new NegocioException($"Usuário não possui permissão para visualizar comunicados da UE com codigo {filtroDto.CodigoUe}");
            }

            if (filtroDto.Turmas != null && filtroDto.Turmas.Any())
            {
                await ValidarAbrangenciaTurma(filtroDto);
            }
        }
Exemple #6
0
        private async Task ValidarAbrangenciaUsuario(ComunicadoDto filtroDto)
        {
            //var usuarioLogado = await servicoUsuario.ObterUsuarioLogado();

            //if ((filtroDto.CodigoDre?.Equals(TODAS) ?? true) && !usuarioLogado.EhPerfilSME())
            //    throw new NegocioException("Apenas usuários SME podem visualizar comunicados de todas as DREs");

            //if ((filtroDto.CodigoUe?.Equals(TODAS) ?? true) && !(usuarioLogado.EhPerfilDRE() || usuarioLogado.EhPerfilSME()))
            //    throw new NegocioException("Apenas usuários SME e DRE podem visualizar comunicados de todas as Escolas");

            //if (usuarioLogado.EhPerfilDRE() && (!filtroDto.CodigoDre?.Equals(TODAS) ?? false))
            //    await ValidarAbrangenciaDre(filtroDto);

            //if (usuarioLogado.EhPerfilUE() && (!filtroDto.CodigoUe?.Equals(TodTODASas) ?? false))
            //    await ValidarAbrangenciaUE(filtroDto);
        }
 public async Task <ActionResult <List <Comunicados> > > CrearComunicado(ComunicadoDto comunicado)
 {
     return(comunicadoRepository.Crear(comunicado));
 }