Exemplo n.º 1
0
 private IEnumerable<CreditCardTransaction> Generate(IOrder order, ICreditCard[] cards)
 {
     if (cards.IsNullOrEmpty()) yield break;
     var countCard = cards.Count();
     foreach (var card in cards)
     {
         var transaction = new CreditCardTransaction
         {
             /*Divide o total da compra pelo número de cartões enviados*/
             AmountInCents = order.AmountInCents / countCard,
             TransactionReference = order.TransactionReference,
             InstallmentCount = card.InstallmentCount
         };
         if (card.InstantBuyKey.HasValue && card.InstantBuyKey.Value != Guid.Empty)
         {
             transaction.CreditCard = new CreditCard()
             {
                 InstantBuyKey = card.InstantBuyKey.Value
             };
             yield return transaction;
             continue;
         }
         transaction.CreditCard = card.Copiar<ICreditCard, CreditCard>();
         Contract.Assert(card.CreditCardBrand.HasValue);
         GatewayApiClient.DataContracts.EnumTypes.CreditCardBrandEnum brand;
         Enum.TryParse(card.CreditCardBrand.GetValueOrDefault().ToString(), true, out brand);
         transaction.CreditCard.CreditCardBrand = brand;
         yield return transaction;
     }
 }