public OrderItem ToOrderItem(string currency, IProduct product, ProductSelectionBase selection)
        {
            var item = mapper.Map <OrderItem>(product);



            var baseprice = product.BasePrice?.GetInCurrency(configuration, currency?.ToString()) ?? 0;

            var opt = selection?.Option;

            if (opt != null)
            {
                var option = product.Options.ElementAtOrDefault(opt.index);
                var extra  = option?.BasePrice?.GetInCurrency(configuration, currency?.ToString()) ?? 0;

                item.Option = new OrderItemOption
                {
                    Value      = opt.value,
                    SKU        = option?.SKU,
                    Title      = option?.Title,
                    OptionId   = option?.Id,
                    ExtraPrice = extra
                };
            }

            item.Price = item.Price ?? new Amount();

            item.Price.Base            = baseprice;
            item.Price.TaxRateExcluded = product.TaxRateExcluded ?? 0;
            item.Price.TaxRateIncluded = product.TaxRateIncluded ?? 0;


            item.Quantity = selection.Quantity;

            item.ProductId = product.Id;

            return(item);
        }
 public OrderItem ToOrderItem(IOrder order, IProduct product, ProductSelectionBase selection)
 {
     return(ToOrderItem(order.Currency, product, selection));
 }