public async Task <IActionResult> PutUser([FromRoute] int id, [FromBody] User user) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != user.Id) { return(BadRequest()); } _context.Entry(user).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!UserExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
/// <summary> /// Process a payment from the user. /// </summary> /// <param name="payment">Payment item</param> /// <returns></returns> public async Task <bool> Pay(PaymentViewModel payment) { try { var user = _context.Users.Where(p => p.PhoneNumber == payment.PhoneNumber).FirstOrDefault(); if (user == null) { return(false); } var paymentItem = new Payment() { UserId = user.Id, Payer = payment.PhoneNumber.ToString(), Amount = payment.Amount, Reference = payment.Reference, StateId = _context.States.Where(state => state.Name == "Completed").FirstOrDefault().Id }; _context.Payments.Add(paymentItem); await _context.SaveChangesAsync(); user.WalletBalance += paymentItem.Amount; _context.Entry(user).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { return(false); } } catch (Exception) { return(false); } return(true); }