示例#1
0
        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());
        }
示例#2
0
        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;
            }
        }