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); }
/// <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); }
/// <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); }