// GET: Posts public async Task <IActionResult> Index() { IQueryable <string> categoryQuery = from m in _context.Categories orderby m.CategoryName select m.CategoryName; var posts = from m in _context.Posts select m; var postms = new List <PostModel>(); var postmv = new PostModelView(); foreach (var post in posts) { var postmodel = new PostModel { Author = post.Author, PostId = post.PostId, UserId = post.UserId, Text = post.Text, Title = post.Title, ReleaseDate = post.ReleaseDate }; var category = await _context.Categories.SingleOrDefaultAsync(m => m.CategoryId == post.CategoryId); postmodel.CategoryName = category.CategoryName; //StringBuilder sb = new StringBuilder(); var tags = await _context.PostTags.Where(m => m.PostId == postmodel.PostId).Select(pt => pt.Tag.TagName).ToArrayAsync(); ////var tagS = await _context.Tags.ToListAsync(); //for (int i = 0; i < tags.Count(); i++) //{ // var taG = tags[i]; // //var tAg = tagS.FirstOrDefault(t => t.TagId == taG.TagId); // sb.Append(taG.TagName); // if (i != tags.Count() - 1) // { // sb.Append(","); // } //} postmodel.TagStr = String.Join(",", tags);//sb.ToString(); postms.Add(postmodel); } postmv.CategoryNames = new SelectList(await categoryQuery.Distinct().ToListAsync()); postmv.PostModels = postms; return(View(postmv)); }
public async Task <IActionResult> Index(string categoryName, string searchString) { IQueryable <string> categoryQuery = from m in _context.Categories orderby m.CategoryName select m.CategoryName; var tagsL = from m in _context.Tags select m; //var post = new Post(); var postms = new List <PostModel>(); var postmv = new PostModelView(); if (!String.IsNullOrEmpty(categoryName)) { var category = await _context.Categories.Include(k => k.Posts).SingleOrDefaultAsync(m => m.CategoryName == categoryName); var posts = category.Posts; foreach (var post in posts) { var postmodel = new PostModel { Author = post.Author, PostId = post.PostId, UserId = post.UserId, Text = post.Text, Title = post.Title, ReleaseDate = post.ReleaseDate }; //var category = await _context.Categories.SingleOrDefaultAsync(m => m.CategoryId == post.CategoryId); postmodel.CategoryName = category.CategoryName; //StringBuilder sb = new StringBuilder(); var tags = await _context.PostTags.Where(m => m.PostId == postmodel.PostId).Select(pt => pt.Tag.TagName).ToArrayAsync(); ////var tagS = await _context.Tags.ToListAsync(); //for (int i = 0; i < tags.Count(); i++) //{ // var taG = tags[i]; // //var tAg = tagS.FirstOrDefault(t => t.TagId == taG.TagId); // sb.Append(taG.TagName); // if (i != tags.Count() - 1) // { // sb.Append(","); // } //} postmodel.TagStr = String.Join(",", tags);//sb.ToString(); //postmodel.CategoryNames = new SelectList(await categoryQuery.Distinct().ToListAsync()); postms.Add(postmodel); } postmv.CategoryNames = new SelectList(await categoryQuery.Distinct().ToListAsync()); postmv.PostModels = postms; } if (!String.IsNullOrEmpty(searchString)) { tagsL = tagsL.Where(s => s.TagName.Contains(searchString)); //var tagsL = tags.ToList(); foreach (var tag in tagsL) { var tagd = await _context.PostTags.ToListAsync(); if (tagd != null) { foreach (var tago in tagd.Where(m => m.TagId == tag.TagId)) { var post = await _context.Posts.SingleOrDefaultAsync(m => m.PostId == tago.PostId); var postmodel = new PostModel { Author = post.Author, PostId = post.PostId, UserId = post.UserId, Text = post.Text, Title = post.Title, ReleaseDate = post.ReleaseDate }; var category = await _context.Categories.SingleOrDefaultAsync(m => m.CategoryId == post.CategoryId); postmodel.CategoryName = category.CategoryName; //StringBuilder sb = new StringBuilder(); var tags = await _context.PostTags.Where(m => m.PostId == postmodel.PostId).Select(pt => pt.Tag.TagName).ToArrayAsync(); ////var tagS = await _context.Tags.ToListAsync(); //for (int i = 0; i < tags.Count(); i++) //{ // var taG = tags[i]; // //var tAg = tagS.FirstOrDefault(t => t.TagId == taG.TagId); // sb.Append(taG.TagName); // if (i != tags.Count() - 1) // { // sb.Append(","); // } //} postmodel.TagStr = String.Join(",", tags);//sb.ToString(); //postmodel.CategoryNames = new SelectList(await categoryQuery.Distinct().ToListAsync()); postms.Add(postmodel); } } else { break; } } //var postmv = new PostModelView(); postmv.CategoryNames = new SelectList(await categoryQuery.Distinct().ToListAsync()); postmv.PostModels = postms; } return(View(postmv)); }