/// <returns>A task that represents the asynchronous operation</returns>
        protected virtual async Task SaveStoreMappingsAsync(NewsItem newsItem, NewsItemModel model)
        {
            newsItem.LimitedToStores = model.SelectedStoreIds.Any();
            await _newsService.UpdateNewsAsync(newsItem);

            var existingStoreMappings = await _storeMappingService.GetStoreMappingsAsync(newsItem);

            var allStores = await _storeService.GetAllStoresAsync();

            foreach (var store in allStores)
            {
                if (model.SelectedStoreIds.Contains(store.Id))
                {
                    //new store
                    if (existingStoreMappings.Count(sm => sm.StoreId == store.Id) == 0)
                    {
                        await _storeMappingService.InsertStoreMappingAsync(newsItem, store.Id);
                    }
                }
                else
                {
                    //remove store
                    var storeMappingToDelete = existingStoreMappings.FirstOrDefault(sm => sm.StoreId == store.Id);
                    if (storeMappingToDelete != null)
                    {
                        await _storeMappingService.DeleteStoreMappingAsync(storeMappingToDelete);
                    }
                }
            }
        }
Exemplo n.º 2
0
        protected virtual async Task SaveStoreMappingsAsync(Topic topic, TopicModel model)
        {
            topic.LimitedToStores = model.SelectedStoreIds.Any();
            await _topicService.UpdateTopicAsync(topic);

            var existingStoreMappings = await _storeMappingService.GetStoreMappingsAsync(topic);

            var allStores = await _storeService.GetAllStoresAsync();

            foreach (var store in allStores)
            {
                if (model.SelectedStoreIds.Contains(store.Id))
                {
                    //new store
                    if (!existingStoreMappings.Any(sm => sm.StoreId == store.Id))
                    {
                        await _storeMappingService.InsertStoreMappingAsync(topic, store.Id);
                    }
                }
                else
                {
                    //remove store
                    var storeMappingToDelete = existingStoreMappings.FirstOrDefault(sm => sm.StoreId == store.Id);
                    if (storeMappingToDelete != null)
                    {
                        await _storeMappingService.DeleteStoreMappingAsync(storeMappingToDelete);
                    }
                }
            }
        }
        protected async Task UpdateStoreMappingsAsync <TEntity>(TEntity entity, List <int> passedStoreIds) where TEntity : BaseEntity, IStoreMappingSupported
        {
            if (passedStoreIds == null)
            {
                return;
            }

            entity.LimitedToStores = passedStoreIds.Any();

            var existingStoreMappings = await StoreMappingService.GetStoreMappingsAsync(entity);

            var allStores = await StoreService.GetAllStoresAsync();

            foreach (var store in allStores)
            {
                if (passedStoreIds.Contains(store.Id))
                {
                    //new store
                    if (existingStoreMappings.Count(sm => sm.StoreId == store.Id) == 0)
                    {
                        await StoreMappingService.InsertStoreMappingAsync(entity, store.Id);
                    }
                }
                else
                {
                    //remove store
                    var storeMappingToDelete = existingStoreMappings.FirstOrDefault(sm => sm.StoreId == store.Id);
                    if (storeMappingToDelete != null)
                    {
                        await StoreMappingService.DeleteStoreMappingAsync(storeMappingToDelete);
                    }
                }
            }
        }
Exemplo n.º 4
0
        private async Task SaveStoreMappingsAsync <TEntity, TModel>(TEntity entity, TModel model)
            where TEntity : BaseEntity, IStoreMappingSupported
            where TModel : BaseNopEntityModel, IStoreMappingSupportedModel
        {
            var existingStoreMappings = await _storeMappingService.GetStoreMappingsAsync(entity);

            var allStores = await _storeService.GetAllStoresAsync();

            foreach (var store in allStores)
            {
                if (model.SelectedStoreIds.Contains(store.Id))
                {
                    //new store
                    if (!existingStoreMappings.Any(sm => sm.StoreId == store.Id))
                    {
                        await _storeMappingService.InsertStoreMappingAsync(entity, store.Id);
                    }
                }
                else
                {
                    //remove store
                    var storeMappingToDelete = existingStoreMappings.FirstOrDefault(sm => sm.StoreId == store.Id);
                    if (storeMappingToDelete != null)
                    {
                        await _storeMappingService.DeleteStoreMappingAsync(storeMappingToDelete);
                    }
                }
            }
        }
        /// <returns>A task that represents the asynchronous operation</returns>
        protected virtual async Task SaveStoreMappingsAsync(Poll poll, PollModel model)
        {
            poll.LimitedToStores = model.SelectedStoreIds.Any();
            await _pollService.UpdatePollAsync(poll);

            //manage store mappings
            var existingStoreMappings = await _storeMappingService.GetStoreMappingsAsync(poll);

            foreach (var store in await _storeService.GetAllStoresAsync())
            {
                var existingStoreMapping = existingStoreMappings.FirstOrDefault(storeMapping => storeMapping.StoreId == store.Id);

                //new store mapping
                if (model.SelectedStoreIds.Contains(store.Id))
                {
                    if (existingStoreMapping == null)
                    {
                        await _storeMappingService.InsertStoreMappingAsync(poll, store.Id);
                    }
                }
                //or remove existing one
                else if (existingStoreMapping != null)
                {
                    await _storeMappingService.DeleteStoreMappingAsync(existingStoreMapping);
                }
            }
        }
Exemplo n.º 6
0
        // currently only doing main store
        private async System.Threading.Tasks.Task UnmapFromStoreAsync(Product product, ProductAbcDescription pad)
        {
            var mainStore = (await _storeService.GetAllStoresAsync())
                            .Where(s => !s.Name.ToLower().Contains("clearance"))
                            .First();
            var mainStoreMapping = (await _storeMappingService.GetStoreMappingsAsync(product))
                                   .Where(sm => sm.StoreId == mainStore.Id)
                                   .FirstOrDefault();

            if (mainStoreMapping != null)
            {
                await _storeMappingService.DeleteStoreMappingAsync(mainStoreMapping);
            }
        }