/// <summary>
        /// Builds the compact order view model.
        /// </summary>
        /// <param name="rawOrder">The raw order.</param>
        /// <param name="param"></param>
        /// <returns></returns>
        protected virtual LightOrderDetailViewModel BuildLightOrderDetailViewModel(OrderItem rawOrder,
                                                                                   GetOrderHistoryViewModelParam param)
        {
            var lightOrderVm = new LightOrderDetailViewModel();
            var orderInfo    = ViewModelMapper.MapTo <OrderDetailInfoViewModel>(rawOrder, param.CultureInfo);
            var orderId      = Guid.Parse(rawOrder.Id);

            orderInfo.OrderStatus     = GetOrderStatusDisplayName(rawOrder, param);
            orderInfo.OrderStatusRaw  = rawOrder.OrderStatus;
            orderInfo.IsOrderEditable = param.OrderEditingInfos != null && param.OrderEditingInfos.ContainsKey(orderId) && param.OrderEditingInfos[orderId];

            CancellationStatus orderCancellationStatusInfo = null;

            if (param.OrderCancellationStatusInfos != null && param.OrderCancellationStatusInfos.ContainsKey(orderId))
            {
                orderCancellationStatusInfo = param.OrderCancellationStatusInfos[orderId];
            }

            orderInfo.IsOrderCancelable          = orderCancellationStatusInfo?.CanCancel ?? false;
            orderInfo.IsOrderPendingCancellation = orderCancellationStatusInfo?.CancellationPending ?? false;

            orderInfo.IsBeingEdited = param.CurrentlyEditedOrderId == orderId;
            orderInfo.HasOwnDraft   = HasOwnDraft(param, orderId);

            var orderDetailUrl = UrlFormatter.AppendQueryString(param.OrderDetailBaseUrl, new NameValueCollection
            {
                { "id", rawOrder.OrderNumber }
            });

            lightOrderVm.Url = orderDetailUrl;

            lightOrderVm.OrderInfos        = orderInfo;
            lightOrderVm.ShipmentSummaries = new List <OrderShipmentSummaryViewModel>();
            if (rawOrder.ShipmentItems.Count > 0)
            {
                foreach (var shipment in rawOrder.ShipmentItems)
                {
                    var shipmentSummary = new OrderShipmentSummaryViewModel();

                    if (shipment.FulfillmentScheduledTimeBeginDate.HasValue)
                    {
                        shipmentSummary.ScheduledShipDate = LocalizationHelper.LocalizedFormat("General", "ShortDateFormat", shipment.FulfillmentScheduledTimeBeginDate.Value, param.CultureInfo);
                    }

                    if (param.ShipmentsTrackingInfos != null && param.ShipmentsTrackingInfos.ContainsKey(shipment.Id))
                    {
                        var trackingInfo = param.ShipmentsTrackingInfos[shipment.Id];
                        shipmentSummary.TrackingInfo = trackingInfo;
                    }

                    lightOrderVm.ShipmentSummaries.Add(shipmentSummary);
                }
            }

            return(lightOrderVm);
        }
        /// <summary>
        /// Builds the compact order view model.
        /// </summary>
        /// <param name="rawOrder">The raw order.</param>
        /// <param name="param"></param>
        /// <returns></returns>
        protected virtual LightOrderDetailViewModel BuildLightOrderDetailViewModel(OrderItem rawOrder,
                                                                                   GetOrderHistoryViewModelParam param)
        {
            var lightOrderVm = new LightOrderDetailViewModel();
            var orderInfo    = ViewModelMapper.MapTo <OrderDetailInfoViewModel>(rawOrder, param.CultureInfo);

            orderInfo.OrderStatus    = GetOrderStatusDisplayName(rawOrder, param);
            orderInfo.OrderStatusRaw = rawOrder.OrderStatus;

            var orderDetailUrl = UrlFormatter.AppendQueryString(param.OrderDetailBaseUrl, new NameValueCollection
            {
                { "id", rawOrder.OrderNumber }
            });

            lightOrderVm.Url = orderDetailUrl;

            lightOrderVm.OrderInfos = orderInfo;

            lightOrderVm.ShipmentSummaries = new List <OrderShipmentSummaryViewModel>();
            if (rawOrder.ShipmentItems.Count > 0)
            {
                foreach (var shipment in rawOrder.ShipmentItems)
                {
                    var shipmentSummary = new OrderShipmentSummaryViewModel();

                    if (shipment.FulfillmentScheduledTimeBeginDate.HasValue)
                    {
                        shipmentSummary.ScheduledShipDate = LocalizationHelper.LocalizedFormat("General", "ShortDateFormat", shipment.FulfillmentScheduledTimeBeginDate.Value, param.CultureInfo);
                    }

                    if (param.ShipmentsTrackingInfos != null && param.ShipmentsTrackingInfos.ContainsKey(shipment.Id))
                    {
                        var trackingInfo = param.ShipmentsTrackingInfos[shipment.Id];
                        shipmentSummary.TrackingInfo = trackingInfo;
                    }

                    lightOrderVm.ShipmentSummaries.Add(shipmentSummary);
                }
            }

            return(lightOrderVm);
        }