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); }
public async Task <int> GetConfNumAprovacoesByValorNF(double valorNF) { ConfiguracaoFaixaVistosAprovacoes conf = await _context.ConfFaixaVistAprov.Where(c => c.FaixaMin < valorNF && valorNF < c.FaixaMax).SingleAsync(); return(conf.Aprovacoes); }