public async Task Migrar(MigrarPlanoAulaDto migrarPlanoAulaDto) { var usuario = await servicoUsuario.ObterUsuarioLogado(); var planoAulaDto = repositorio.ObterPorId(migrarPlanoAulaDto.PlanoAulaId); var aula = repositorioAula.ObterPorId(planoAulaDto.AulaId); await ValidarMigracao(migrarPlanoAulaDto, usuario.CodigoRf, usuario.EhProfessorCj(), aula.UeId); var objetivosPlanoAulaDto = await repositorioObjetivosAula.ObterObjetivosPlanoAula(migrarPlanoAulaDto.PlanoAulaId); unitOfWork.IniciarTransacao(); foreach (var planoTurma in migrarPlanoAulaDto.IdsPlanoTurmasDestino) { AulaConsultaDto aulaConsultaDto = await repositorioAula.ObterAulaDataTurmaDisciplina( planoTurma.Data, planoTurma.TurmaId, migrarPlanoAulaDto.DisciplinaId ); if (aulaConsultaDto == null) { throw new NegocioException($"Não há aula cadastrada para a turma {planoTurma.TurmaId} para a data {planoTurma.Data.ToString("dd/MM/yyyy")} nesta disciplina!"); } var planoCopia = new PlanoAulaDto() { Id = planoTurma.Sobreescrever ? migrarPlanoAulaDto.PlanoAulaId : 0, AulaId = aulaConsultaDto.Id, Descricao = planoAulaDto.Descricao, DesenvolvimentoAula = planoAulaDto.DesenvolvimentoAula, LicaoCasa = migrarPlanoAulaDto.MigrarLicaoCasa ? planoAulaDto.LicaoCasa : string.Empty, ObjetivosAprendizagemJurema = !usuario.EhProfessorCj() || migrarPlanoAulaDto.MigrarObjetivos ? objetivosPlanoAulaDto.Select(o => o.ObjetivoAprendizagemPlano.ObjetivoAprendizagemJuremaId).ToList() : null, RecuperacaoAula = migrarPlanoAulaDto.MigrarRecuperacaoAula ? planoAulaDto.RecuperacaoAula : string.Empty }; await Salvar(planoCopia, false); } unitOfWork.PersistirTransacao(); }
public async Task <bool> Handle(MigrarPlanoAulaCommand request, CancellationToken cancellationToken) { var usuario = request.Usuario; var planoAulaDto = repositorioPlanoAula.ObterPorId(request.PlanoAulaMigrar.PlanoAulaId); var aula = await mediator.Send(new ObterAulaPorIdQuery(planoAulaDto.AulaId)); await ValidarMigracao(request.PlanoAulaMigrar, usuario.CodigoRf, usuario.EhProfessorCj(), aula.UeId); unitOfWork.IniciarTransacao(); foreach (var planoTurma in request.PlanoAulaMigrar.IdsPlanoTurmasDestino) { AulaConsultaDto aulaConsultaDto = await mediator.Send(new ObterAulaDataTurmaDisciplinaQuery( planoTurma.Data, planoTurma.TurmaId, request.PlanoAulaMigrar.DisciplinaId )); if (aulaConsultaDto == null) { throw new NegocioException($"Não há aula cadastrada para a turma {planoTurma.TurmaId} para a data {planoTurma.Data.ToString("dd/MM/yyyy")} nesta disciplina!"); } var planoCopia = new PlanoAulaDto() { Id = planoTurma.Sobreescrever ? request.PlanoAulaMigrar.PlanoAulaId : 0, AulaId = aulaConsultaDto.Id, Descricao = planoAulaDto.Descricao, DesenvolvimentoAula = planoAulaDto.DesenvolvimentoAula, LicaoCasa = request.PlanoAulaMigrar.MigrarLicaoCasa ? planoAulaDto.LicaoCasa : string.Empty, ObjetivosAprendizagemComponente = !usuario.EhProfessorCj() || request.PlanoAulaMigrar.MigrarObjetivos ? (await mediator.Send(new ObterObjetivosComComponentePorPlanoAulaIdQuery(request.PlanoAulaMigrar.PlanoAulaId)))?.ToList() : null, RecuperacaoAula = request.PlanoAulaMigrar.MigrarRecuperacaoAula ? planoAulaDto.RecuperacaoAula : string.Empty }; await mediator.Send(new SalvarPlanoAulaCommand(planoCopia)); } unitOfWork.PersistirTransacao(); return(true); }