Exemplo n.º 1
0
        public async Task <string> Alterar(long id, ComunicadoInserirDto comunicadoDto)
        {
            Comunicado comunicado = BuscarComunicado(id);

            ComunicadoInserirAeDto comunicadoServico = new ComunicadoInserirAeDto();

            var usuarioLogado = (await servicoUsuario.ObterUsuarioLogado())
                                ?? throw new NegocioException("Usuário logado não encontrado");

            await ValidarAbrangenciaUsuario(comunicadoDto, usuarioLogado);

            MapearAlteracao(comunicadoDto, comunicado);

            try
            {
                unitOfWork.IniciarTransacao();

                await repositorio.SalvarAsync(comunicado);

                MapearParaEntidadeServico(comunicadoServico, comunicado);

                await servicoAcompanhamentoEscolar.AlterarComunicado(comunicadoServico, id);

                unitOfWork.PersistirTransacao();
            }
            catch
            {
                unitOfWork.Rollback();
                throw;
            }

            return("Comunicado alterado com sucesso");
        }
        public async Task <string> Handle(SolicitarAlteracaoComunicadoEscolaAquiCommand request, CancellationToken cancellationToken)
        {
            // TODO: Criar Query Handler para Obter comunicado
            Comunicado comunicado = BuscarComunicado(request.Id);

            ComunicadoInserirAeDto comunicadoServico = new ComunicadoInserirAeDto();

            var usuarioLogado = await _mediator.Send(new ObterUsuarioLogadoQuery());

            await ValidarAbrangenciaUsuario(request, usuarioLogado);

            MapearAlteracao(request, comunicado);

            try
            {
                _unitOfWork.IniciarTransacao();

                await _repositorioComunicado.SalvarAsync(comunicado);

                MapearParaEntidadeServico(comunicadoServico, comunicado);

                await _servicoAcompanhamentoEscolar.AlterarComunicado(comunicadoServico, request.Id);

                _unitOfWork.PersistirTransacao();
            }
            catch
            {
                _unitOfWork.Rollback();
                throw;
            }

            return("Comunicado alterado com sucesso");
        }
Exemplo n.º 3
0
        public async Task <string> Handle(SolicitarExclusaoComunicadosEscolaAquiCommand request, CancellationToken cancellationToken)
        {
            var erros = new StringBuilder();

            var comunicados = request.Ids.Select(id =>
            {
                var comunicado = _repositorioComunicado.ObterPorId(id);
                if (comunicado == null)
                {
                    erros.Append($"<li>{id} - comunicado não encontrado</li>");
                }
                return(comunicado);
            });

            if (string.IsNullOrEmpty(erros.ToString()))
            {
                await _servicoAcompanhamentoEscolar.ExcluirComunicado(request.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 _repositorioComunicado.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");
            }

            return("Comunicaos excluídos com sucesso");
        }
        public async Task <string> Handle(SolicitarInclusaoComunicadoEscolaAquiCommand request, CancellationToken cancellationToken)
        {
            var comunicado        = new Comunicado();
            var comunicadoServico = new ComunicadoInserirAeDto();

            await ValidarInsercao(request);

            MapearParaEntidade(request, comunicado);

            try
            {
                _unitOfWork.IniciarTransacao();

                var id = await _repositorioComunicado.SalvarAsync(comunicado);

                // Grupos
                await SalvarComunicadosParaGrupos(id, request);

                comunicado.AtualizarIdAlunos();
                comunicado.AtualizarIdTurmas();

                // Turmas
                await SalvarComunicadosParaTurmas(comunicado.Turmas);

                // Alunos
                await SalvarComunicadosParaAlunos(comunicado.Alunos);

                MapearParaEntidadeServico(comunicadoServico, comunicado);

                // Criar comunicado no Escola Aqui
                await _servicoAcompanhamentoEscolar.CriarComunicado(comunicadoServico);

                _unitOfWork.PersistirTransacao();
            }
            catch
            {
                _unitOfWork.Rollback();
                throw;
            }

            return("Comunicado criado com sucesso!");
        }