Example #1
0
        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);
        }
Example #2
0
        // 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));
        }