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!");
        }
Ejemplo n.º 2
0
        public async Task <string> Inserir(ComunicadoInserirDto comunicadoDto)
        {
            Comunicado             comunicado        = new Comunicado();
            ComunicadoInserirAeDto comunicadoServico = new ComunicadoInserirAeDto();

            await ValidarInsercao(comunicadoDto);

            MapearParaEntidade(comunicadoDto, comunicado);

            try
            {
                unitOfWork.IniciarTransacao();

                var id = await repositorio.SalvarAsync(comunicado);

                await SalvarGrupos(id, comunicadoDto);

                comunicado.AtualizarIdAlunos();

                comunicado.AtualizarIdTurmas();

                await SalvarTurmas(comunicado.Turmas);

                await SalvarAlunos(comunicado.Alunos);

                MapearParaEntidadeServico(comunicadoServico, comunicado);

                await servicoAcompanhamentoEscolar.CriarComunicado(comunicadoServico);

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

            return("Comunicado criado com sucesso");
        }