public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { object retVal = null; var obj = JObject.Load(reader); if (typeof(Store).IsAssignableFrom(objectType)) { retVal = AbstractTypeFactory <Store> .TryCreateInstance(); } else if (typeof(SearchCriteria).IsAssignableFrom(objectType)) { retVal = AbstractTypeFactory <SearchCriteria> .TryCreateInstance(); } else if (objectType == typeof(PaymentMethod)) { var paymentGatewayCode = obj["code"].Value <string>(); retVal = _paymentMethodsService.GetAllPaymentMethods().FirstOrDefault(x => x.Code.EqualsInvariant(paymentGatewayCode)); } else if (objectType == typeof(ShippingMethod)) { var shippingGatewayCode = obj["code"].Value <string>(); retVal = _shippingMethodsService.GetAllShippingMethods().FirstOrDefault(x => x.Code.EqualsInvariant(shippingGatewayCode)); } else if (objectType == typeof(TaxProvider)) { var taxProviderCode = obj["code"].Value <string>(); retVal = _taxService.GetAllTaxProviders().FirstOrDefault(x => x.Code.EqualsInvariant(taxProviderCode)); } serializer.Populate(obj.CreateReader(), retVal); return(retVal); }
public Store[] GetByIds(string[] ids) { var stores = new List <Store>(); using (var repository = _repositoryFactory()) { var fulfillmentCenters = _commerceService.GetAllFulfillmentCenters().ToList(); var dbStores = repository.GetStoresByIds(ids); foreach (var dbStore in dbStores) { var store = AbstractTypeFactory <Store> .TryCreateInstance(); dbStore.ToModel(store); //Return all registered methods with store settings store.PaymentMethods = _paymentService.GetAllPaymentMethods(); foreach (var paymentMethod in store.PaymentMethods) { var dbStoredPaymentMethod = dbStore.PaymentMethods.FirstOrDefault(x => x.Code.EqualsInvariant(paymentMethod.Code)); if (dbStoredPaymentMethod != null) { dbStoredPaymentMethod.ToModel(paymentMethod); } } store.ShippingMethods = _shippingService.GetAllShippingMethods(); foreach (var shippingMethod in store.ShippingMethods) { var dbStoredShippingMethod = dbStore.ShippingMethods.FirstOrDefault(x => x.Code.EqualsInvariant(shippingMethod.Code)); if (dbStoredShippingMethod != null) { dbStoredShippingMethod.ToModel(shippingMethod); } } store.TaxProviders = _taxService.GetAllTaxProviders(); foreach (var taxProvider in store.TaxProviders) { var dbStoredTaxProvider = dbStore.TaxProviders.FirstOrDefault(x => x.Code.EqualsInvariant(taxProvider.Code)); if (dbStoredTaxProvider != null) { dbStoredTaxProvider.ToModel(taxProvider); } } store.ReturnsFulfillmentCenter = fulfillmentCenters.FirstOrDefault(x => x.Id == dbStore.ReturnsFulfillmentCenterId); store.FulfillmentCenter = fulfillmentCenters.FirstOrDefault(x => x.Id == dbStore.FulfillmentCenterId); //Set default settings for store it can be override by store instance setting in LoadEntitySettingsValues store.Settings = _settingManager.GetModuleSettings("VirtoCommerce.Store"); _settingManager.LoadEntitySettingsValues(store); stores.Add(store); } } var result = stores.ToArray(); _dynamicPropertyService.LoadDynamicPropertyValues(result); _commerceService.LoadSeoForObjects(result); return(result); }
public IHttpActionResult Create(webModel.Store store) { var coreStore = store.ToCoreModel(_shippingService.GetAllShippingMethods(), _paymentService.GetAllPaymentMethods(), _taxService.GetAllTaxProviders()); var retVal = _storeService.Create(coreStore); return(Ok(retVal.ToWebModel())); }
public coreModel.Store[] GetByIds(string[] ids) { var retVal = new List <coreModel.Store>(); using (var repository = _repositoryFactory()) { var fulfillmentCenters = _commerceService.GetAllFulfillmentCenters().ToList(); var dbStores = repository.GetStoresByIds(ids); foreach (var dbStore in dbStores) { //Load original typed shipping method and populate it personalized information from db var store = dbStore.ToCoreModel(_shippingService.GetAllShippingMethods(), _paymentService.GetAllPaymentMethods(), _taxService.GetAllTaxProviders()); store.ReturnsFulfillmentCenter = fulfillmentCenters.FirstOrDefault(x => x.Id == dbStore.ReturnsFulfillmentCenterId); store.FulfillmentCenter = fulfillmentCenters.FirstOrDefault(x => x.Id == dbStore.FulfillmentCenterId); //Set default settings for store it can be override by store instance setting in LoadEntitySettingsValues store.Settings = _settingManager.GetModuleSettings("VirtoCommerce.Store"); _settingManager.LoadEntitySettingsValues(store); _dynamicPropertyService.LoadDynamicPropertyValues(store); retVal.Add(store); } } _commerceService.LoadSeoForObjects(retVal.ToArray()); return(retVal.ToArray()); }
public coreModel.Store GetById(string id) { coreModel.Store retVal = null; using (var repository = _repositoryFactory()) { var entity = repository.GetStoreById(id); if (entity != null) { //Load original typed shipping method and populate it personalized information from db retVal = entity.ToCoreModel(_shippingService.GetAllShippingMethods(), _paymentService.GetAllPaymentMethods(), _taxService.GetAllTaxProviders()); var fulfillmentCenters = _commerceService.GetAllFulfillmentCenters().ToList(); retVal.ReturnsFulfillmentCenter = fulfillmentCenters.FirstOrDefault(x => x.Id == entity.ReturnsFulfillmentCenterId); retVal.FulfillmentCenter = fulfillmentCenters.FirstOrDefault(x => x.Id == entity.FulfillmentCenterId); _commerceService.LoadSeoForObjects(new[] { retVal }); _settingManager.LoadEntitySettingsValues(retVal); _dynamicPropertyService.LoadDynamicPropertyValues(retVal); } } return(retVal); }