private async Task ValidaTurmasProfessor(MigrarPlanoAnualDto migrarPlanoAnualDto, PlanoAnualDto planoAnualDto) { var turmasAtribuidasAoProfessor = await consultasProfessor.ObterTurmasAtribuidasAoProfessorPorEscolaEAnoLetivo(migrarPlanoAnualDto.RFProfessor, planoAnualDto.EscolaId, planoAnualDto.AnoLetivo.Value); var idsTurmasProfessor = turmasAtribuidasAoProfessor?.Select(c => c.CodigoTurma).ToList(); if (idsTurmasProfessor == null || migrarPlanoAnualDto.IdsTurmasDestino.Any(c => !idsTurmasProfessor.Contains(c))) { throw new NegocioException("Somente é possível migrar o plano anual para turmas atribuidas ao professor"); } }
public async Task Migrar(MigrarPlanoAnualDto migrarPlanoAnualDto) { var planoAnualDto = migrarPlanoAnualDto.PlanoAnual; using (var transacao = unitOfWork.IniciarTransacao()) { foreach (var bimestrePlanoAnual in planoAnualDto.Bimestres) { var planoAnualOrigem = ObterPlanoAnualSimplificado(planoAnualDto, bimestrePlanoAnual.Bimestre.Value); if (planoAnualOrigem == null) { throw new NegocioException("Plano anual de origem não encontrado"); } await ValidaTurmasProfessor(migrarPlanoAnualDto, planoAnualDto); foreach (var turmaId in migrarPlanoAnualDto.IdsTurmasDestino) { var planoCopia = new PlanoAnualDto( planoAnualDto.AnoLetivo, planoAnualDto.Bimestres, planoAnualDto.EscolaId, planoAnualDto.Id, planoAnualDto.TurmaId, planoAnualDto.ComponenteCurricularEolId); planoCopia.TurmaId = turmaId; var planoAnual = ObterPlanoAnualSimplificado(planoCopia, bimestrePlanoAnual.Bimestre.Value); if (planoAnual == null) { planoAnual = MapearParaDominio(planoCopia, planoAnual, bimestrePlanoAnual); } planoAnual.Descricao = planoAnualOrigem.Descricao; Salvar(planoCopia, planoAnual, bimestrePlanoAnual); } } unitOfWork.PersistirTransacao(); } }
public async Task Migrar(MigrarPlanoAnualDto migrarPlanoAnualDto) { var planoAnualDto = migrarPlanoAnualDto.PlanoAnual; var planoCopia = new PlanoAnualDto( planoAnualDto.AnoLetivo, planoAnualDto.Bimestres, planoAnualDto.EscolaId, planoAnualDto.Id, planoAnualDto.TurmaId, planoAnualDto.ComponenteCurricularEolId); unitOfWork.IniciarTransacao(); foreach (var bimestrePlanoAnual in migrarPlanoAnualDto.BimestresDestino.OrderBy(c => c)) { var planoAnualOrigem = await ObterPlanoAnualSimplificado(planoAnualDto, bimestrePlanoAnual); if (planoAnualOrigem == null) { throw new NegocioException("Plano anual de origem não encontrado"); } var bimestreAtual = planoAnualDto.Bimestres.FirstOrDefault(c => c.Bimestre == bimestrePlanoAnual); foreach (var turmaId in migrarPlanoAnualDto.IdsTurmasDestino) { planoCopia.TurmaId = turmaId; var planoAnual = await ObterPlanoAnualSimplificado(planoCopia, bimestrePlanoAnual); if (planoAnual == null) { planoAnual = MapearParaDominio(planoCopia, planoAnual, bimestrePlanoAnual, bimestreAtual.Descricao); } planoAnual.Descricao = planoAnualOrigem.Descricao; Salvar(planoCopia, planoAnual, bimestreAtual); } } unitOfWork.PersistirTransacao(); }
public IActionResult Migrar(MigrarPlanoAnualDto migrarPlanoAnualDto, [FromServices] IComandosPlanoAnual comandosPlanoAnual) { comandosPlanoAnual.Migrar(migrarPlanoAnualDto); return(Ok()); }
public async Task <IActionResult> Migrar(MigrarPlanoAnualDto migrarPlanoAnualDto, [FromServices] IComandosPlanoAnual comandosPlanoAnual) { await comandosPlanoAnual.Migrar(migrarPlanoAnualDto); return(Ok()); }