コード例 #1
0
        public async Task <bool> Handle(AutorizacaoNotasCommand request, CancellationToken cancellationToken)
        {
            try
            {
                var usuario = _context.Usuarios.SingleOrDefault(x => x.Id == request.IdUsuario);
                var nota    = _context.NotadeCompras.SingleOrDefault(x => x.Id == request.IdNota);


                _context.AutorizacaoHistoricos.Add(new AutorizacaoHistorico(DateTime.Now, usuario, nota, usuario.Papel));


                if (ValidacoeseVerificacoes.VerificarConfiguracaoAutorizacao(_context, nota, usuario.Papel))
                {
                    nota.AprovarNota();
                    _context.NotadeCompras.Update(nota);
                }

                await _context.SaveChangesAsync(cancellationToken);

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
        public async Task <IList <NotadeCompraDTO> > Handle(ListarNotasparaAprovacaoQuery request, CancellationToken cancellationToken)
        {
            var listaresultado = new List <NotadeCompraDTO>();
            var usuario        = _context.Usuarios.SingleOrDefault(x => x.Id == request.IdUsuario);

            if (usuario == null)
            {
                return(listaresultado);
            }

            //teste adm
            if (usuario.Papel == PapelAprovacao.Adm)
            {
                return(await _context.NotadeCompras.ProjectTo <NotadeCompraDTO>(_mapper.ConfigurationProvider).OrderBy(o => o.DataEmissao).ToListAsync(cancellationToken));
            }



            var listadenotas = _context.NotadeCompras.Where(GetQuery(request, usuario)).OrderBy(o => o.DataEmissao).ToList();

            foreach (var nota in listadenotas)
            {
                if (_context.AutorizacaoHistoricos.Any(x => x.Nota.Id == nota.Id && x.Usuario.Id == usuario.Id))
                {
                    continue;
                }
                var hist = _context.AutorizacaoHistoricos.Where(x => x.Nota.Id == nota.Id).ToList();

                if (ValidacoeseVerificacoes.VerificarConfiguracaoAutorizacaoDiponivel(_context, nota, hist, usuario))
                {
                    listaresultado.Add(_mapper.Map <NotadeCompraDTO>(nota));
                    continue;
                }
            }
            return(listaresultado);
        }