private async Task <IEnumerable <RetornoCopiarAtividadeAvaliativaDto> > Salvar(AtividadeAvaliativa atividadeAvaliativa, AtividadeAvaliativaDto dto, bool ehCopia = false) { var mensagens = new List <RetornoCopiarAtividadeAvaliativaDto>(); var usuario = await servicoUsuario.ObterUsuarioLogado(); foreach (var id in dto.DisciplinasId) { await VerificaSeProfessorPodePersistirTurma(atividadeAvaliativa.ProfessorRf, atividadeAvaliativa.TurmaId, id, atividadeAvaliativa.DataAvaliacao.Date, usuario); } unitOfWork.IniciarTransacao(); await repositorioAtividadeAvaliativa.SalvarAsync(atividadeAvaliativa); if (atividadeAvaliativa.EhRegencia) { if (dto.DisciplinaContidaRegenciaId.Length == 0) { throw new NegocioException("É necessário informar as disciplinas da regência"); } foreach (string id in dto.DisciplinaContidaRegenciaId) { var ativRegencia = new AtividadeAvaliativaRegencia { AtividadeAvaliativaId = atividadeAvaliativa.Id, DisciplinaContidaRegenciaId = id }; await repositorioAtividadeAvaliativaRegencia.SalvarAsync(ativRegencia); } } foreach (var id in dto.DisciplinasId) { var ativDisciplina = new AtividadeAvaliativaDisciplina { AtividadeAvaliativaId = atividadeAvaliativa.Id, DisciplinaId = id }; await repositorioAtividadeAvaliativaDisciplina.SalvarAsync(ativDisciplina); } unitOfWork.PersistirTransacao(); // Verifica Pendencia de avaliação para o professor await mediator.Send(new PublicaFilaExcluirPendenciaAusenciaAvaliacaoCommand(dto.TurmaId, dto.DisciplinasId, usuario, dto.DataAvaliacao)); if (!ehCopia) { mensagens.Add(new RetornoCopiarAtividadeAvaliativaDto("Atividade Avaliativa criada com sucesso", true)); } return(mensagens); }
private async Task <IEnumerable <RetornoCopiarAtividadeAvaliativaDto> > Salvar(AtividadeAvaliativa atividadeAvaliativa, AtividadeAvaliativaDto dto, bool ehCopia = false) { var mensagens = new List <RetornoCopiarAtividadeAvaliativaDto>(); foreach (var id in dto.DisciplinasId) { await VerificaSeProfessorPodePersistirTurma(atividadeAvaliativa.ProfessorRf, atividadeAvaliativa.TurmaId, id, atividadeAvaliativa.DataAvaliacao.Date); } unitOfWork.IniciarTransacao(); await repositorioAtividadeAvaliativa.SalvarAsync(atividadeAvaliativa); if (atividadeAvaliativa.EhRegencia) { if (dto.DisciplinaContidaRegenciaId.Length == 0) { throw new NegocioException("É necessário informar as disciplinas da regência"); } foreach (string id in dto.DisciplinaContidaRegenciaId) { var ativRegencia = new AtividadeAvaliativaRegencia { AtividadeAvaliativaId = atividadeAvaliativa.Id, DisciplinaContidaRegenciaId = id }; await repositorioAtividadeAvaliativaRegencia.SalvarAsync(ativRegencia); } } foreach (var id in dto.DisciplinasId) { var ativDisciplina = new AtividadeAvaliativaDisciplina { AtividadeAvaliativaId = atividadeAvaliativa.Id, DisciplinaId = id }; await repositorioAtividadeAvaliativaDisciplina.SalvarAsync(ativDisciplina); } unitOfWork.PersistirTransacao(); if (!ehCopia) { mensagens.Add(new RetornoCopiarAtividadeAvaliativaDto("Atividade Avaliativa criada com sucesso", true)); } return(mensagens); }
public async Task <IEnumerable <RetornoCopiarAtividadeAvaliativaDto> > Alterar(AtividadeAvaliativaDto dto, long id) { var mensagens = new List <RetornoCopiarAtividadeAvaliativaDto>(); var usuario = await servicoUsuario.ObterUsuarioLogado(); var disciplina = ObterDisciplina(dto.DisciplinasId[0]); var atividadeAvaliativa = MapearDtoParaEntidade(dto, id, usuario.CodigoRf, disciplina.Regencia); var atividadeDisciplinas = await repositorioAtividadeAvaliativaDisciplina.ListarPorIdAtividade(id); atividadeAvaliativa.PodeSerAlterada(usuario); await VerificaSeProfessorPodePersistirTurma(usuario.CodigoRf, atividadeAvaliativa.TurmaId, dto.DisciplinasId[0], atividadeAvaliativa.DataAvaliacao, usuario); unitOfWork.IniciarTransacao(); if (disciplina.Regencia) { var regencias = await repositorioAtividadeAvaliativaRegencia.Listar(atividadeAvaliativa.Id); foreach (var regencia in regencias) { repositorioAtividadeAvaliativaRegencia.Remover(regencia); } foreach (string idRegencia in dto.DisciplinaContidaRegenciaId) { var ativRegencia = new AtividadeAvaliativaRegencia { AtividadeAvaliativaId = atividadeAvaliativa.Id, DisciplinaContidaRegenciaId = idRegencia }; await repositorioAtividadeAvaliativaRegencia.SalvarAsync(ativRegencia); } } foreach (var atividadeDisciplina in atividadeDisciplinas) { atividadeDisciplina.Excluir(); var existeDisciplina = dto.DisciplinasId.Any(a => a == atividadeDisciplina.DisciplinaId); if (existeDisciplina) { atividadeDisciplina.Excluido = false; } await repositorioAtividadeAvaliativaDisciplina.SalvarAsync(atividadeDisciplina); } foreach (var disciplinaId in dto.DisciplinasId) { var existeDisciplina = atividadeDisciplinas.Any(a => a.DisciplinaId == disciplinaId); if (!existeDisciplina) { var novaDisciplina = new AtividadeAvaliativaDisciplina { AtividadeAvaliativaId = atividadeAvaliativa.Id, DisciplinaId = disciplinaId }; await repositorioAtividadeAvaliativaDisciplina.SalvarAsync(novaDisciplina); } } await repositorioAtividadeAvaliativa.SalvarAsync(atividadeAvaliativa); unitOfWork.PersistirTransacao(); mensagens.Add(new RetornoCopiarAtividadeAvaliativaDto("Atividade Avaliativa alterada com sucesso", true)); mensagens.AddRange(await CopiarAtividadeAvaliativa(dto, atividadeAvaliativa.ProfessorRf)); return(mensagens); }