public IActionResult PayForService(PayServiceDTO payServiceDTO) { if (!ModelState.IsValid) { _logger.LogWarning(HttpStatusCode.BadRequest.ToString()); return(BadRequest(HttpStatusCode.BadRequest)); } var result = _providerService.PayForService(payServiceDTO); if (!result) { _logger.LogWarning(HttpStatusCode.BadRequest.ToString()); return(BadRequest(HttpStatusCode.BadRequest)); } return(Ok()); }
public bool PayForService(PayServiceDTO payServiceDTO) { try { _context.BeginTransaction(); var service = _context.Services.Get(payServiceDTO.ServiceId); var card = _context.BankCards.Get(payServiceDTO.CardId); if (service == null || card == null) { return(false); } if (card.Amount < service.Amount) { return(false); } card.Amount -= service.Amount; service.BankCard.Amount += service.Amount; _context.BankCards.Edit(card); _context.BankCards.Edit(service.BankCard); _context.Save(); _context.Commit(); return(true); } catch (Exception e) { _context.Rollback(); _logger.LogError(e.Message); throw; } }