private async Task CriarNovaPendenciaAusenciaRegistroIndividualAsync(Turma turma, IEnumerable <AlunoPorTurmaResposta> alunosTurmaComAusenciaRegistroIndividualPorDias) { var professoresDaTurma = await mediator.Send(new ObterProfessoresTitularesDaTurmaQuery(turma.CodigoTurma)); if (!professoresDaTurma?.Any() ?? true) { throw new NegocioException($"Não foram encontrados professores para a turma {turma.CodigoTurma}."); } var titulo = DefinirTituloDaPendenciaPorAusenciaDeRegistroIndividual(turma); var pendencia = new Pendencia(TipoPendencia.AusenciaDeRegistroIndividual, titulo, DescricaoBase); pendencia.Id = await repositorioPendencia.SalvarAsync(pendencia); var professoresRfsParaBusca = new List <string>(); foreach (var professores in professoresDaTurma) { var listaProfessorComVirgulas = professores.Split(','); professoresRfsParaBusca.AddRange(listaProfessorComVirgulas.Select(a => a.Trim())); } await AdicionarUsuariosDaPendenciaAsync(pendencia, turma, professoresRfsParaBusca); await AdicionarPendenciaRegistroIndividualAsync(pendencia, turma, alunosTurmaComAusenciaRegistroIndividualPorDias); }
public async Task <long> Handle(SalvarPendenciaCommand request, CancellationToken cancellationToken) { var pendencia = new Pendencia(request.TipoPendencia); pendencia.Titulo = string.IsNullOrEmpty(request.Titulo) ? ObterTitulo(request.TipoPendencia) : request.Titulo; pendencia.Descricao = string.IsNullOrEmpty(request.Descricao) ? ObterDescricao(request.TipoPendencia) : request.Descricao; pendencia.Instrucao = request.Instrucao; return(await repositorioPendencia.SalvarAsync(pendencia)); }
public async Task <bool> Handle(ExcluirPendenciaPorIdCommand request, CancellationToken cancellationToken) { var pendencia = await repositorioPendencia.ObterPorIdAsync(request.PendenciaId); pendencia.Excluido = true; await repositorioPendencia.SalvarAsync(pendencia); await mediator.Send(new ExcluirPendenciasUsuariosPorPendenciaIdCommand(request.PendenciaId)); return(true); }
public async Task <AuditoriaPersistenciaDto> AtualizarPendencia(long pendenciaId, SituacaoPendencia situacaoPendencia) { var pendencia = repositorioPendencia.ObterPorId(pendenciaId); if (pendencia == null) { throw new NegocioException("Pendência de fechamento não localizada com o identificador consultado"); } pendencia.Situacao = situacaoPendencia; await repositorioPendencia.SalvarAsync(pendencia); return((AuditoriaPersistenciaDto)pendencia); }
protected override async Task Handle(AtualizarPendenciaRegistroIndividualCommand request, CancellationToken cancellationToken) { var pendenciaRegistroIndividual = await repositorioPendenciaRegistroIndividual.ObterPendenciaRegistroIndividualPorTurmaESituacao(request.TurmaId, SituacaoPendencia.Pendente); if (pendenciaRegistroIndividual is null) { return; } var alunoDaPendencia = pendenciaRegistroIndividual.Alunos?.FirstOrDefault(x => x.CodigoAluno == request.CodigoAluno && x.Situacao == SituacaoPendenciaRegistroIndividualAluno.Pendente); if (alunoDaPendencia is null) { return; } var diasDeAusencia = await ObterDiasDeAusenciaParaPendenciaRegistroIndividualAsync(); var direrencaEntreDataAtualEUltimoRegistro = DateTime.Today.Subtract(request.DataRegistro.Date); if (direrencaEntreDataAtualEUltimoRegistro.Days >= diasDeAusencia) { return; } using (var transacao = unitOfWork.IniciarTransacao()) { try { alunoDaPendencia.ResolverPendenciaDoAluno(); await repositorioPendenciaRegistroIndividualAluno.SalvarAsync(alunoDaPendencia); if (pendenciaRegistroIndividual.Alunos.All(x => x.Situacao == SituacaoPendenciaRegistroIndividualAluno.Resolvido)) { pendenciaRegistroIndividual.ResolverPendencia(); await repositorioPendencia.SalvarAsync(pendenciaRegistroIndividual.Pendencia); } unitOfWork.PersistirTransacao(); } catch { unitOfWork.Rollback(); throw; } } }