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