public void Execute(OrderLine orderLine)
        {
            if (orderLine == null || orderLine.ProductVariant == null || string.IsNullOrWhiteSpace(orderLine.Data))
            {
                return;
            }
            ProductVariant productVariant = orderLine.ProductVariant;

            if (productVariant.IsGiftCard)
            {
                // ensure that duplicate cards aren't generated
                if (orderLine.GiftCards.Any())
                {
                    return;
                }
                try
                {
                    var giftCardInfo = JsonConvert.DeserializeObject <GiftCardInfo>(orderLine.Data);

                    var giftCard = new GiftCard
                    {
                        Code           = _generateGiftCardCode.Generate(),
                        GiftCardType   = productVariant.GiftCardType,
                        Message        = giftCardInfo.Message,
                        RecipientEmail = giftCardInfo.RecipientEmail,
                        RecipientName  = giftCardInfo.RecipientName,
                        SenderEmail    = giftCardInfo.SenderEmail,
                        SenderName     = giftCardInfo.SenderName,
                        Value          = orderLine.Price,
                        OrderLine      = orderLine,
                    };
                    orderLine.GiftCards.Add(giftCard);
                    _session.Transact(session => session.Save(giftCard));
                }
                catch (Exception exception)
                {
                    CurrentRequestData.ErrorSignal.Raise(exception);
                }
            }
        }
 public string GenerateCode()
 {
     return(_generateGiftCardCode.Generate());
 }