public IEnumerable <ArticleModel> GetArticlesByIds(IEnumerable <int> articleIds) { using (PoshBoutiqueData dataContext = new PoshBoutiqueData()) { Article[] articlesInCollection = dataContext.Articles.Where(a => articleIds.Contains(a.Id) && a.Visible).OrderByDescending(a => a.DateCreated).ToArray(); if (articlesInCollection.Length == 0) { return(null); } ArticlesConverter converter = new ArticlesConverter(); ArticleModel[] articlesInCollectionModels = articlesInCollection.Select(a => converter.ToModel(a, null)).ToArray(); return(articlesInCollectionModels); } }
public async Task <IEnumerable <ArticleModel> > GetRecommendedArticles() { using (PoshBoutiqueData dataContext = new PoshBoutiqueData()) { Article[] articlesInCollection = await dataContext.Articles.Where(a => a.IsRecommended && a.Visible).OrderByDescending(a => a.DateCreated).ToArrayAsync(); if (articlesInCollection.Length == 0) { return(null); } ArticlesConverter converter = new ArticlesConverter(); ArticleModel[] articlesInCollectionModels = articlesInCollection.Select(a => converter.ToModel(a, null)).ToArray(); return(articlesInCollectionModels); } }
public async Task <ArticlesListModel> GetArticlesInCategory(string categoryUrl, string filter, string orderBy, SortDirection sortDirection, Guid?currentUserId) { ArticlesListModel articlesListModel = null; using (PoshBoutiqueData dataContext = new PoshBoutiqueData()) { Category category = await dataContext.Categories.FirstOrDefaultAsync(c => c.UrlName == categoryUrl); if (category == null && !categoryUrl.Equals(ArticlesProvider.ALL_CATEGORIES_URL_NAME, StringComparison.InvariantCultureIgnoreCase)) { return(null); } articlesListModel = new ArticlesListModel(); articlesListModel.Category = new CategoriesConverter().ToModel(category); IQueryable <Article> articlesQuery = dataContext.Articles .Where(article => article.Visible); if (category != null) { articlesQuery = articlesQuery.Where(article => article.Categories.Any(c => c.Id == category.Id)); } if (!string.IsNullOrEmpty(filter)) { articlesQuery = articlesQuery .Where(article => article.Title.Contains(filter) || article.Description.Contains(filter) || article.MaterialDescription.Contains(filter)); } if (!string.IsNullOrEmpty(orderBy)) { articlesQuery = articlesQuery.Sort(orderBy, sortDirection); } List <Article> articlesList = await articlesQuery.ToListAsync(); HashSet <int> userLikes = this.GetUserLikes(currentUserId); ArticlesConverter converter = new ArticlesConverter(); articlesListModel.Articles = articlesList.Select(a => converter.ToModel(a, userLikes)).ToList(); } return(articlesListModel); }
public async Task <IEnumerable <ArticleModel> > GetFeaturedArticles(Guid?currentUserId) { using (PoshBoutiqueData dataContext = new PoshBoutiqueData()) { Article[] featuredArticles = await dataContext.Articles.Where(a => a.IsFeatured && a.Visible).OrderByDescending(a => a.DateCreated).ToArrayAsync(); if (featuredArticles.Length == 0) { return(null); } HashSet <int> userLikes = this.GetUserLikes(currentUserId); ArticlesConverter converter = new ArticlesConverter(); ArticleModel[] featuredArticlesModels = featuredArticles.Select(a => converter.ToModel(a, userLikes)).ToArray(); return(featuredArticlesModels); } }
public async Task <IEnumerable <ArticleModel> > GetRelatedArticles(int articleId) { using (PoshBoutiqueData dataContext = new PoshBoutiqueData()) { Article parentArticle = await dataContext.Articles.FindAsync(articleId); if (parentArticle == null) { return(null); } Article[] relatedArticles = parentArticle.RelatedArticles.OrderByDescending(a => a.DateCreated).ToArray(); if (relatedArticles.Length == 0) { return(null); } ArticlesConverter converter = new ArticlesConverter(); ArticleModel[] relatedArticlesModels = relatedArticles.Select(a => converter.ToModel(a, null)).ToArray(); return(relatedArticlesModels); } }
public async Task <IEnumerable <ArticleModel> > GetLikedArticles(Guid userId) { using (PoshBoutiqueData dataContext = new PoshBoutiqueData()) { IQueryable <UserLike> userLikesQuery = dataContext.UserLikes.Where(ul => ul.UserId == userId); Article[] likedArticles = await dataContext.Articles.Join(userLikesQuery, a => a.Id, ul => ul.ArticleId, (a, ul) => a).OrderBy(a => a.Title).ToArrayAsync(); if (likedArticles.Length == 0) { return(new ArticleModel[0]); } ArticlesConverter converter = new ArticlesConverter(); ArticleModel[] likedArticlesModels = likedArticles.Select(a => { ArticleModel likedArticleModel = converter.ToModel(a, null); likedArticleModel.IsLiked = true; return(likedArticleModel); }).ToArray(); return(likedArticlesModels); } }