示例#1
0
        public async Task <AuditoriaDto> Executar(InserirDevolutivaDto param)
        {
            IEnumerable <Tuple <long, DateTime> > dados = await mediator.Send(new ObterDatasEfetivasDiariosQuery(param.TurmaCodigo, param.CodigoComponenteCurricular, param.PeriodoInicio.Date, param.PeriodoFim.Date));

            if (!dados.Any())
            {
                throw new NegocioException("Diários de bordo não encontrados para aplicar Devolutiva.");
            }

            DateTime inicioEfetivo = dados.Select(x => x.Item2.Date).Min();
            DateTime fimEfetivo    = dados.Select(x => x.Item2.Date).Max();

            await ValidarDevolutivaNoPeriodo(param.TurmaCodigo, param.CodigoComponenteCurricular, param.PeriodoInicio.Date, param.PeriodoFim.Date);

            var turma = await ObterTurma(param.TurmaCodigo);

            var bimestre = await ValidarBimestreDiarios(turma, inicioEfetivo, fimEfetivo);

            await ValidarBimestreEmAberto(turma, bimestre);

            IEnumerable <long> idsDiarios = dados.Select(x => x.Item1);

            AuditoriaDto auditoria = await mediator.Send(new InserirDevolutivaCommand(param.CodigoComponenteCurricular, idsDiarios, inicioEfetivo, fimEfetivo, param.Descricao, turma.Id));

            bool diariosAtualizados = await mediator.Send(new AtualizarDiarioBordoComDevolutivaCommand(idsDiarios, auditoria.Id));



            return(auditoria);
        }
        private static AuditoriaDto MapearRegistro(ContextoSe contexto, AuditoriaDtm registro)
        {
            var elemento = new AuditoriaDto();

            elemento.Id           = registro.Id;
            elemento.IdElemento   = registro.IdElemento;
            elemento.IdUsuario    = registro.IdUsuario;
            elemento.AuditadoEl   = registro.AuditadoEl;
            elemento.Operacion    = registro.Operacion;
            elemento.registroJson = registro.registroJson;
            elemento.Usuario      = UsuarioDtm.NombreCompleto(Entorno.GestorDeUsuarios.LeerUsuario(contexto, elemento.IdUsuario));
            return(elemento);
        }
示例#3
0
        public async Task <List <CartaIntencoesRetornoPersistenciaDto> > Executar(CartaIntencoesPersistenciaDto param)
        {
            List <CartaIntencoesRetornoPersistenciaDto> auditorias = new List <CartaIntencoesRetornoPersistenciaDto>();

            var turmaId = await mediator.Send(new ObterTurmaIdPorCodigoQuery(param.CodigoTurma));

            if (turmaId == 0)
            {
                throw new NegocioException("Não foi possível encontrar a turma.");
            }

            var aberto = await AulaDentroDoPeriodo(mediator, param.CodigoTurma, DateTime.Now);

            if (!aberto)
            {
                throw new NegocioException("Não é possível salvar carta de intenções pois o período não está aberto.");
            }

            AuditoriaDto auditoria = null;

            foreach (CartaIntencoesDto carta in param.Cartas)
            {
                if (carta.Id == 0)
                {
                    auditoria = await mediator.Send(new InserirCartaIntencoesCommand(carta, turmaId, param.ComponenteCurricularId));
                }
                else
                {
                    var existente = await mediator.Send(new ObterCartaIntentocesPorIdQuery(carta.Id));

                    auditoria = await mediator.Send(new AlterarCartaIntencoesCommand(carta, existente, turmaId, param.ComponenteCurricularId));
                }

                auditorias.Add(new CartaIntencoesRetornoPersistenciaDto
                {
                    PeriodoEscolarId = carta.PeriodoEscolarId,
                    Auditoria        = auditoria
                });
            }

            return(auditorias);
        }
示例#4
0
 public ActionResult Post([FromBody] AuditoriaDto auditoria)
 {
     return(Ok());
 }