public DtoOrder CheckOrder(DtoOrder order)
        {
            try
            {
                EnsureArg.IsNotNull(order, nameof(order));
            }
            catch (Exception ex)
            {
                throw new BadRequest(ex);
            }
            if (order.Id == 0)
            {
                OrderQueries.Create(ref order);
            }

            if (order.AddressToShip == null)
            {
                order.AddressToShip = order.Client?.Addresses?.FirstOrDefault();
                OrderQueries.Update(ref order);
            }

            if (order.RequestedStores == null)
            {
                order.RequestedStores = StoreDomain.GetNearStore(order.AddressToShip);
            }

            if (order.SkusRequesteds?.Count() > 0)
            {
                foreach (var sku in order.SkusRequesteds)
                {
                    sku.ProductReference = ProductDomain.GetProductBySku(sku.Id);
                }
            }

            return(order);

            // TODO Delivery
            //if (order.AddressToShip != null && order.RequestedStores?.Count() > 0)
            //{
            //    foreach (var store in order.RequestedStores)
            //    {
            //        var clientLocation = new GeoCoordinate(order.AddressToShip.Latitude.Value, order.AddressToShip.Longitude.Value);
            //        var storeLocation = new GeoCoordinate(store.Address.Latitude.Value, store.Address.Longitude.Value);

            //        store.Proximity = clientLocation.GetDistanceTo(storeLocation);
            //        if (store.AvaibleDeliveries?.Count > 0)
            //        {
            //            var maxdistance = store.AvaibleDeliveries.Max(i => i.MaxDistance);
            //            var safeDelivery = store.AvaibleDeliveries.Where(i => i.MaxDistance == maxdistance).FirstOrDefault();

            //            var removeDeliverys = new List<DtoDelivery>();
            //            foreach (var delivery in store.AvaibleDeliveries)
            //            {
            //                if (store.Proximity > delivery.MaxDistance)
            //                    removeDeliverys.Add(delivery);
            //            }

            //            var deliveryMethod = store.AvaibleDeliveries
            //                .Where(i => !removeDeliverys.Contains(i))
            //                .OrderBy(i => i.MaxDistance).FirstOrDefault();

            //            if (deliveryMethod == null)
            //                store.Delivery = safeDelivery;
            //            else
            //                store.Delivery = deliveryMethod;
            //        }

            //    }
            //}
        }