Exemplo n.º 1
0
        public async Task <IEnumerable <RetornoCopiarEventoDto> > Alterar(long id, EventoDto eventoDto)
        {
            var evento = repositorioEvento.ObterPorId(id);

            if (evento == null)
            {
                throw new NegocioException("Não foi possível obter o evento");
            }

            var tipoEvento = repositorioEventoTipo.ObterPorId(evento.TipoEventoId);

            if (tipoEvento == null)
            {
                throw new NegocioException("Não foi possível obter o tipo do evento");
            }

            try
            {
                ValidacaoPermissaoEdicaoExclusaoPorPerfilUsuarioTipoEevento(evento);
            }
            catch (NegocioException)
            {
                throw new NegocioException($"O seu perfil de usuário não permite a alteração desse evento");
            }

            evento.AdicionarTipoEvento(tipoEvento);

            if (!evento.PodeAlterar())
            {
                throw new NegocioException("Não é possível editar um evento em aprovação");
            }

            evento = MapearParaEntidade(evento, eventoDto);
            return(await SalvarEvento(eventoDto, evento));
        }
        public async Task <IEnumerable <RetornoCopiarEventoDto> > Alterar(long id, EventoDto eventoDto)
        {
            var evento = repositorioEvento.ObterPorId(id);

            if (evento == null)
            {
                throw new NegocioException("Não foi possível obter o evento");
            }

            var tipoEvento = repositorioEventoTipo.ObterPorId(evento.TipoEventoId);

            if (tipoEvento == null)
            {
                throw new NegocioException("Não foi possível obter o tipo do evento");
            }

            evento.AdicionarTipoEvento(tipoEvento);

            if (!evento.PodeAlterar())
            {
                throw new NegocioException("Não é possível editar um evento em aprovação");
            }

            evento = MapearParaEntidade(evento, eventoDto);
            return(await SalvarEvento(eventoDto, evento));
        }
Exemplo n.º 3
0
        public async Task <IEnumerable <RetornoCopiarEventoDto> > Alterar(long id, EventoDto eventoDto)
        {
            var evento = repositorioEvento.ObterPorId(id);

            evento = MapearParaEntidade(evento, eventoDto);
            await servicoEvento.Salvar(evento);

            await GravarRecorrencia(eventoDto, evento);

            return(await CopiarEventos(eventoDto));
        }
Exemplo n.º 4
0
        public async Task Excluir(long[] ids)
        {
            var erros = new StringBuilder();

            var comunicados = ids.Select(id =>
            {
                var comunicado = repositorio.ObterPorId(id);
                if (comunicado == null)
                {
                    erros.Append($"<li>{id} - comunicado não encontrado</li>");
                }
                else
                {
                    if (comunicado.EventoId.HasValue)
                    {
                        var evento = repositorioEvento.ObterPorId(comunicado.EventoId.Value);
                        if (evento != null && !evento.Excluido)
                        {
                            erros.Append($"<li>{id} - {comunicado.Titulo} - Comunicado com evento vinculado</li>");
                        }
                    }
                }
                return(comunicado);
            });

            if (string.IsNullOrEmpty(erros.ToString()))
            {
                await servicoAcompanhamentoEscolar.ExcluirComunicado(ids);

                foreach (var comunicado in comunicados)
                {
                    try
                    {
                        await repositorioComunicadoGrupo.ExcluirPorIdComunicado(comunicado.Id);

                        await repositorioComunicadoAluno.RemoverTodosAlunosComunicado(comunicado.Id);

                        await repositorioComunicadoTurma.RemoverTodasTurmasComunicado(comunicado.Id);

                        comunicado.MarcarExcluido();

                        await repositorio.SalvarAsync(comunicado);
                    }
                    catch
                    {
                        erros.Append($"<li>{comunicado.Id} - {comunicado.Titulo}</li>");
                    }
                }
            }

            if (!string.IsNullOrEmpty(erros.ToString()))
            {
                throw new NegocioException($"<p>Os seguintes comunicados não puderam ser excluídos:</p><br/>{erros.ToString()} por favor, tente novamente");
            }
        }
Exemplo n.º 5
0
        private void AtualizaEventoDeFechamento(PeriodoFechamentoBimestre bimestre, EventoFechamento fechamentoExistente)
        {
            var eventoExistente = fechamentoExistente.Evento ?? repositorioEvento.ObterPorId(fechamentoExistente.EventoId);

            if (eventoExistente != null)
            {
                eventoExistente.DataInicio = bimestre.InicioDoFechamento;
                eventoExistente.DataFim    = bimestre.FinalDoFechamento;
                repositorioEvento.Salvar(eventoExistente);
            }
        }
        public async Task <EventoCompletoDto> ObterPorId(long id)
        {
            var evento = repositorioEvento.ObterPorId(id);

            evento.TipoEvento = repositorioEventoTipo.ObterPorId(evento.TipoEventoId);
            var usuario = await servicoUsuario.ObterUsuarioLogado();

            //verificar se o evento e o perfil do usuário é SME para possibilitar alteração
            bool podeAlterar = !EhEventoSME(evento) || (EhEventoSME(evento) && usuario.EhPerfilSME());

            if (!EhEventoSME(evento) &&
                (evento.TipoEventoId == (long)TipoEvento.LiberacaoExcepcional ||
                 evento.TipoEventoId == (long)TipoEvento.ReposicaoNoRecesso))
            {
                podeAlterar = !usuario.TemPerfilGestaoUes();
            }

            return(MapearParaDto(evento, podeAlterar));
        }
Exemplo n.º 7
0
        public async Task <string> Salvar(Evento evento, bool alterarRecorrenciaCompleta = false, bool dataConfirmada = false, bool unitOfWorkJaEmUso = false)
        {
            ObterTipoEvento(evento);

            TipoCalendario tipoCalendario = ObterTipoCalendario(evento);

            evento.ValidaPeriodoEvento();

            var usuario = await servicoUsuario.ObterUsuarioLogado();

            bool ehAlteracao = true;

            if (evento.Id == 0)
            {
                ehAlteracao = false;
                evento.TipoPerfilCadastro = usuario.ObterTipoPerfilAtual();
            }
            else
            {
                var entidadeNaoModificada = repositorioEvento.ObterPorId(evento.Id);
                ObterTipoEvento(entidadeNaoModificada);
                usuario.PodeAlterarEvento(entidadeNaoModificada);
            }

            usuario.PodeCriarEvento(evento);

            var periodos = repositorioPeriodoEscolar.ObterPorTipoCalendario(evento.TipoCalendarioId);

            if (evento.DeveSerEmDiaLetivo())
            {
                evento.EstaNoPeriodoLetivo(periodos);
            }

            bool devePassarPorWorkflowLiberacaoExcepcional = await ValidaDatasETiposDeEventos(evento, dataConfirmada, usuario, periodos);

            AtribuirNullSeVazio(evento);

            if (!unitOfWorkJaEmUso)
            {
                unitOfWork.IniciarTransacao();
            }

            repositorioEvento.Salvar(evento);

            // Envia para workflow apenas na Inclusão ou alteração apos aprovado
            var enviarParaWorkflow = !string.IsNullOrWhiteSpace(evento.UeId) && devePassarPorWorkflowLiberacaoExcepcional;

            if (!ehAlteracao || (evento.Status == EntidadeStatus.Aprovado))
            {
                if (enviarParaWorkflow)
                {
                    await PersistirWorkflowEvento(evento, devePassarPorWorkflowLiberacaoExcepcional);
                }
            }

            if (!unitOfWorkJaEmUso)
            {
                unitOfWork.PersistirTransacao();
            }

            if (evento.EventoPaiId.HasValue && evento.EventoPaiId > 0 && alterarRecorrenciaCompleta)
            {
                SME.Background.Core.Cliente.Executar(() => AlterarRecorrenciaEventos(evento, alterarRecorrenciaCompleta));
            }

            if (ehAlteracao)
            {
                if (enviarParaWorkflow)
                {
                    return("Evento alterado e será válido após aprovação.");
                }
                else
                {
                    return("Evento alterado com sucesso.");
                }
            }
            else
            {
                if (enviarParaWorkflow)
                {
                    return("Evento cadastrado e será válido após aprovação.");
                }
                else
                {
                    return("Evento cadastrado com sucesso.");
                }
            }
        }
Exemplo n.º 8
0
 public EventoCompletoDto ObterPorId(long id)
 {
     return(MapearParaDto(repositorioEvento.ObterPorId(id)));
 }