예제 #1
0
        /// <exception cref="InvalidOperationException">Ocorre quando não há itens no pedido</exception>
        public void Buy(IBuyOnClick model)
        {
            var user = _context.UsersInfo.FindOrDefault(model.UserId);
            if (user == null)
                throw new InvalidOperationException("User not found");
            if (!user.InstantBuyKey.HasValue)
                throw new InvalidOperationException("You not have an card configution, you need sends  informations from card of credit");

            Contract.EndContractBlock();

            var request = SaveRequest(model);

            var card = new CardOfCredit(request.User.InstantBuyKey.Value);
            Buy(card, request, false);
        }
예제 #2
0
        private void Buy(CardOfCredit card, Request request, bool saveCard)
        {
            card.Subscribe(MessageServer);

            var gateway = new MundiPaggClient();
            var priceInCents = (long)request.Total * 100;
            var order = new Order(priceInCents,
                request.Id.ToString(), _userFromRequest.Email);

            var msg = gateway.Pay(order, card);
            foreach (var message in msg)
            {
                if (saveCard && message.StatusCode == 201)
                    _userFromRequest.InstantBuyKey = message.InstantBuyKey;

                request.StatusId = message.StatusCode;
                card.Notificar(message);
            }
            var resultSave = _context.SaveChange();
            Contract.Assert(resultSave > 0);
        }
예제 #3
0
 /// <summary>makes the purchase of tickets</summary>
 /// <param name="model">Request</param>
 /// <exception cref="InvalidOperationException">Ocorre quando não há itens no pedido</exception>
 public void Buy(IBuyOnCard model)
 {
     var request = SaveRequest(model);
     var card = new CardOfCredit(model);
     Buy(card, request, model.SaveCard);
 }