Exemple #1
0
        public async Task <bool> RegistraVistoAprovacaoAsyncById(int idNotaCompra, int usuarioId)
        {
            Usuario    usuario = _context.Usuario.Find(usuarioId);
            NotaCompra nf      = await _context.NotasCompra.Include(n => n.HistAprovNotasCompra).SingleAsync(n => n.Id == idNotaCompra);

            ConfiguracaoFaixaVistosAprovacoes ConfFaixaVistAprov = await _context.ConfFaixaVistAprov.Where(conf => conf.FaixaMin <= nf.ValorTotal && nf.ValorTotal <= conf.FaixaMax).SingleAsync();

            //Verifica se Usuario já nao aprovou/Vistoriou Nota
            bool usuarioJaRegistrou = (nf.HistAprovNotasCompra.Where(h => h.Id == idNotaCompra && h.Usuario == usuario).Count() != 0);
            //Verifica se Nota Precisa de Visto e Aprovacao dado pepel do usuario
            bool podeRegistrarNF = (usuario.Papel == Papel.Visto && nf.PrecisaVisto(ConfFaixaVistAprov.Vistos)) || (usuario.Papel == Papel.Aprovacao && nf.PrecisaAprovacao(ConfFaixaVistAprov.Vistos, ConfFaixaVistAprov.Aprovacoes));

            //Registra VistoAprov
            if (!usuarioJaRegistrou && podeRegistrarNF)
            {
                HistoricoAprovacaoNotaCompra HistAprovNF = new HistoricoAprovacaoNotaCompra {
                    Data         = DateTime.Now,
                    UsuarioId    = usuario.Id,
                    Operacao     = usuario.Papel == Papel.Visto ? Operacao.Visto : Operacao.Aprovacao,
                    NotaCompraId = nf.Id
                };
                _context.Add(HistAprovNF);
                await _context.SaveChangesAsync();

                // Aprova a Nota
                if (nf.PodeAprovar(ConfFaixaVistAprov.Vistos, ConfFaixaVistAprov.Aprovacoes))
                {
                    nf.Status = Status.Aprovada;
                    _context.Update(nf);
                    return(await _context.SaveChangesAsync() > 0);
                }
                return(true);
            }
            return(false);
        }
Exemple #2
0
        public async Task <int> GetConfNumAprovacoesByValorNF(double valorNF)
        {
            ConfiguracaoFaixaVistosAprovacoes conf = await _context.ConfFaixaVistAprov.Where(c => c.FaixaMin < valorNF && valorNF < c.FaixaMax).SingleAsync();

            return(conf.Aprovacoes);
        }