public async Task <IActionResult> EditFatura([FromRoute] long id)
        {
            var fatura = await _context.Fatura.Include(m => m.Fornecedor).Include(m => m.EstadoFatura).SingleOrDefaultAsync(m => m.FaturaID == id);

            var estadosFatura = await _context.EstadoFatura.ToListAsync();

            var fornecedores = await _context.Fornecedor.ToListAsync();

            var model = new EditFaturaViewModel
            {
                FaturaID     = id,
                Valor        = Convert.ToDouble(fatura.Valor),
                Fornecedor   = fatura.Fornecedor.DescritivoFornecedor,
                EstadoFatura = fatura.EstadoFatura.DescritivoEstadoFatura
            };

            foreach (EstadoFatura e in estadosFatura)
            {
                model.EstadosFatura.Add(new SelectListItem {
                    Text = e.DescritivoEstadoFatura
                });
            }
            foreach (Fornecedor f in fornecedores)
            {
                model.Fornecedores.Add(new SelectListItem {
                    Text = f.DescritivoFornecedor
                });
            }

            return(View(model));
        }
        public async Task <IActionResult> EditFatura(EditFaturaViewModel faturaModel)
        {
            if (string.IsNullOrEmpty(faturaModel.EstadoFatura) ||
                string.IsNullOrEmpty(faturaModel.Fornecedor) ||
                faturaModel.FaturaID <= 0 ||
                faturaModel.Valor <= 0.00)
            {
                return(BadRequest());
            }

            Fornecedor fornecedor = await GetFornecedorByName(faturaModel.Fornecedor);

            EstadoFatura estadoFatura = await GetEstadoFaturaByName(faturaModel.EstadoFatura);

            Fatura oldFatura = await GetFaturaById(faturaModel.FaturaID);

            if (fornecedor == null || estadoFatura == null || oldFatura == null)
            {
                return(NotFound());
            }

            try
            {
                oldFatura.Valor          = Convert.ToDecimal(faturaModel.Valor);
                oldFatura.FornecedorID   = fornecedor.FornecedorID;
                oldFatura.AlterUser      = User.Identity.Name.Split('\\')[1];
                oldFatura.AlterDate      = DateTime.Now;
                oldFatura.EstadoFaturaID = estadoFatura.EstadoFaturaID;

                return(await PutFatura(faturaModel.FaturaID, oldFatura));
            }
            catch (Exception e)
            {
                Debug.WriteLine("Ex:->" + e);
                throw;
            }
        }