/// <summary> /// GetPickupLocationsPreferences for a Distributor /// MEXICO ONLY /// </summary> /// <param name="distributorId"></param> /// <param name="country"></param> /// <returns></returns> public override List <PickupLocationPreference_V01> GetPickupLocationsPreferences(string distributorId, string country) { if (Thread.CurrentThread.CurrentCulture.Name.Equals("en-MX")) { var values = base.GetPickupLocationsPreferences(distributorId, country); return(values); } // gets cache key string cacheKey = getPickupLocationPreferenceKey(distributorId, country); HttpSessionState session = HttpContext.Current.Session; bool loadFromService = false; if (null == session[cacheKey]) { loadFromService = true; } List <PickupLocationPreference_V01> PickupLocationPreferences = getPickupLocationsPreferencesFromCache(distributorId, country); List <PickupLocationPreference_V01> PickupLocationPreferencestoRemove = new List <PickupLocationPreference_V01>(); if (PickupLocationPreferences != null && loadFromService == true) { var proxy = ServiceClientProvider.GetMexicoShippingServiceProxy(); foreach (PickupLocationPreference_V01 pref in PickupLocationPreferences) { //checking if the location saved is in CUBO DB var option = GetShippingInfoFromID(distributorId, Thread.CurrentThread.CurrentCulture.Name, DeliveryOptionType.Pickup, pref.PickupLocationID, 0); if (option != null) { if (string.IsNullOrEmpty(pref.PickupLocationNickname)) { DeliveryOptionForIDRequest_V01 request = new DeliveryOptionForIDRequest_V01(); request.ID = pref.PickupLocationID; var pickupAlternativesResponse = proxy.GetPickupAlternativeForDeliveryOptionID(new GetPickupAlternativeForDeliveryOptionIDRequest(request)).GetPickupAlternativeForDeliveryOptionIDResult as PickupAlternativesResponse_V01; if (pickupAlternativesResponse != null && pickupAlternativesResponse.PickupAlternatives != null && pickupAlternativesResponse.PickupAlternatives.Count > 0) { pref.PickupLocationNickname = pickupAlternativesResponse.PickupAlternatives[0].BranchName; } } } else { PickupLocationPreferencestoRemove.Add(pref); } } //removing the not existing locations in cubo if (PickupLocationPreferencestoRemove.Count > 0) { foreach (var item in PickupLocationPreferencestoRemove) { DeletePickupLocationsPreferences(item.DistributorID, item.PickupLocationID, item.Country); session["showMessageOnPage"] = "True"; } } session[cacheKey] = PickupLocationPreferences; } return(PickupLocationPreferences); }
public override ShippingInfo GetShippingInfoFromID(string distributorID, string locale, DeliveryOptionType type, int deliveryOptionID, int shippingAddressID) { if (locale.Equals("en-MX")) { return(base.GetShippingInfoFromID(distributorID, locale, type, deliveryOptionID, shippingAddressID)); } var proxy = ServiceClientProvider.GetMexicoShippingServiceProxy(); DeliveryOptionForIDRequest_V01 request = new DeliveryOptionForIDRequest_V01(); request.ID = deliveryOptionID; DeliveryOption deliveryOption = null; if (type == DeliveryOptionType.Pickup) { string countryCode = locale.Substring(3, 2); List <PickupLocationPreference_V01> pickupLocationPreference = GetPickupLocationsPreferences(distributorID, countryCode); if (pickupLocationPreference != null && pickupLocationPreference.Count > 0) { var vPickupLocation = pickupLocationPreference.Find(p => p.PickupLocationID == deliveryOptionID); if (vPickupLocation != null) { int PickupLocationID = vPickupLocation.PickupLocationID; request.ID = PickupLocationID; PickupAlternativesResponse_V01 pickupAlternativesResponse = proxy.GetPickupAlternativeForDeliveryOptionID(new GetPickupAlternativeForDeliveryOptionIDRequest(request)).GetPickupAlternativeForDeliveryOptionIDResult as PickupAlternativesResponse_V01; if (pickupAlternativesResponse != null && pickupAlternativesResponse.PickupAlternatives != null && pickupAlternativesResponse.PickupAlternatives.Count > 0) { deliveryOption = new DeliveryOption(ObjectMappingHelper.Instance.GetToShipping(pickupAlternativesResponse.PickupAlternatives[0])); deliveryOption.Id = deliveryOption.ID = PickupLocationID; return(new ShippingInfo(deliveryOption)); } } } } else { ShippingAddress_V02 shippingAddress = null; if (shippingAddressID != 0) { List <DeliveryOption> shippingAddresses = GetShippingAddresses(distributorID, locale); if (shippingAddresses != null) { if ((shippingAddress = shippingAddresses.Find(s => s.ID == shippingAddressID)) == null) { shippingAddress = shippingAddresses.Find(s => s.IsPrimary == true); } } } else { List <DeliveryOption> addresses = base.GetShippingAddresses(distributorID, locale); if (addresses != null && addresses.Count > 0) { if ((shippingAddress = addresses.Find(s => s.IsPrimary == true)) == null) { shippingAddress = addresses.First(); } } } if (shippingAddress != null) { List <DeliveryOption> deliveryOptions = GetDeliveryOptions(type, shippingAddress); if (deliveryOptions != null && deliveryOptions.Count > 0) { deliveryOption = deliveryOptions.First(); return(new ShippingInfo(deliveryOption, shippingAddress)); } } } return(null); }