public ActionResult Details(string id) { var dbId = int.Parse(this.identifierProvider.DecodeId(id)); var chapterDetails = new ChapterDetailsViewModel(); chapterDetails.ChapterId = dbId; var chaptersList = new List<SingleChapterViewModel>(); chapterDetails.Comments = new List<CommentViewModel>(); var comments = this.chapterService .GetById(dbId) .Select(x => x.Comments) .FirstOrDefault(); foreach (var comment in comments) { var mappedComment = this.Mapper.Map<CommentViewModel>(comment); chapterDetails.Comments.Add(mappedComment); } this.GetChildren(ref chaptersList, dbId); chapterDetails.SingleChapterViewModel = chaptersList; foreach (var chapter in chapterDetails.SingleChapterViewModel) { chapter.StoryUrl = this.identifierProvider.EncodeId(chapter.StoryId.ToString()); } chapterDetails.StatisticsChapterViewModel = this.Cache.Get("GetChapterStats", () => this.GetStats(dbId), 60 * 15); this.chapterService.IncreaseViewCount(dbId); return this.View(chapterDetails); }
// GET: Chapters/Details/5 public async Task <IActionResult> Details(int?id) { ViewBag.User = await GetCurrentUser(); if (id == null) { return(NotFound()); } var model = await _context.Chapters.SingleOrDefaultAsync(m => m.Id == id); if (model == null) { return(NotFound()); } var chapterMembers = _context.MemberChapters .Where(m => m.ChapterId == model.Id && m.WhenExpires >= DateTime.Now) .Include(m => m.ApplicationUser); var memberInfo = new List <ChapterMemberViewModel>(); foreach (var member in chapterMembers) { if (member.ApplicationUser != null) { memberInfo.Add(new ChapterMemberViewModel { Name = member.ApplicationUser.ContactName == "Legal Name" ? member.ApplicationUser.FirstName : member.ApplicationUser.Pseudonym, WhenJoined = member.WhenJoined, Email = member.ApplicationUser.Email }); } } IList <MeetingDetailsViewModel> meetingDetails = new List <MeetingDetailsViewModel>(); var meetings = await _context.ChapterMeetings.Where(m => m.ChapterId == id).ToListAsync(); foreach (var meeting in meetings) { var details = new MeetingDetailsViewModel { Id = meeting.Id, MeetingType = meeting.MeetingType, Description = meeting.Description, Venue = meeting.Venue, Street1 = meeting.Street1, Street2 = meeting.Street2, City = meeting.City, State = meeting.State, Zip = meeting.Zip, MeetingInfo = BuildMeetingInfo(meeting.MeetingWeek, meeting.MeetingDay, meeting.StartTime, meeting.EndTime) }; meetingDetails.Add(details); } ; var viewModel = new ChapterDetailsViewModel { Id = model.Id, Name = model.Name, SubName = model.SubName, Description = model.Description, Meetings = meetingDetails, Url = model.Url, Email = model.Email, Phone = model.Phone, Notes = model.Notes, Members = memberInfo.OrderBy(m => m.Name).ToList() }; ViewBag.MemberCount = viewModel.Members.Count; ViewBag.Last30Days = viewModel.Members.Count(m => m.WhenJoined >= DateTime.Now.AddDays(-30)); return(View(viewModel)); }