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(StoreSearchCriteria).IsAssignableFrom(objectType)) { retVal = AbstractTypeFactory <StoreSearchCriteria> .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); }
private void PopulateStore(Store store, StoreEntity dbStore) { //Return all registered methods with store settings store.PaymentMethods = _paymentMethodRegistrar.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 = _shippingMethodRegistrar.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 = _taxProviderRegistrar.GetAllTaxProviders(); foreach (var taxProvider in store.TaxProviders) { var dbStoredTaxProvider = dbStore.TaxProviders.FirstOrDefault(x => x.Code.EqualsInvariant(taxProvider.Code)); if (dbStoredTaxProvider != null) { dbStoredTaxProvider.ToModel(taxProvider); } } }