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);
        }
示例#2
0
        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);
        }
示例#3
0
        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()));
        }
示例#4
0
        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());
        }
示例#5
0
        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);
        }