// GET:
        public ActionResult Index(int?memberId, int?ccgId,
                                  int?dateRangeFilter = (int)DateRangeFilter.TwoWeeks,
                                  int?sortOption      = (int)ContactsSort.DateDescending,
                                  int?page            = 1, int?itemsPerPage = 10, bool getAll = false, string query = null)
        {
            // Cast int passed by route to an enum
            var dateFilter   = dateRangeFilter != null ? (DateRangeFilter)dateRangeFilter : DateRangeFilter.TwoWeeks;
            var contactsSort = sortOption == null ? ContactsSort.DateDescending : (ContactsSort)sortOption;

            #region Set params to pass to view
            var prayerRequestsList = new PrayerRequestListViewModel
            {
                Params = new ActionMethodParams
                {
                    MemberId        = memberId,
                    CCGId           = ccgId,
                    ItemsPerPage    = itemsPerPage,
                    Page            = page,
                    GetAll          = getAll,
                    DateRangeFilter = dateFilter,
                    Query           = query,
                    ContactsSort    = contactsSort
                }
            };
            #endregion

            // Get principal user obj
            var user = unitOfWork.AppUserRepository.FindUserByEmail(User.Identity.Name);

            if (memberId != null)
            {
                var member = unitOfWork.MemberRepository.FindMemberById(memberId);
                ViewBag.MemberName = $"{member.FirstName} {member.LastName}";
            }

            DateTime dateTimeOffset;
            _service.GetOffsetDate(dateFilter, out dateTimeOffset);

            List <ContactRecord> prayerRequests;


            // determine if user is leadership, pastor or admin
            AppUserRole[] roles = new AppUserRole[] { AppUserRole.Admin,
                                                      AppUserRole.DeaconLeadership,
                                                      AppUserRole.Pastor };
            // get all if user is admin, leadership, or pastor
            getAll = AuthHelper.IsInRole(User.Identity.Name, roles);

            // not leadership so only get prayer requests within ccg
            if (!getAll && ccgId == null)
            {
                ccgId = user.CcgId;
            }

            prayerRequests = _service.GetPrayerRequests(memberId,
                                                        dateTimeOffset, ccgId, getAll, user, query).ToList();

            // Sort prayer requests
            prayerRequests = _service.SortContactRecords(contactsSort, prayerRequests).ToList();

            // Used to check permission to edit in the view
            prayerRequestsList.Params.UserId = user.Id;

            var prayerRequestsVM = Mapper.Map <IList <PrayerRequestViewModel> >(prayerRequests);

            prayerRequestsList.PrayerRequests = prayerRequestsVM.ToPagedList(page ?? 1, itemsPerPage ?? 10);


            // Truncates the subject and comments
            // Keeps comments private if marked as such
            _service.TruncateTextAndKeepPrivate(prayerRequestsList.PrayerRequests, user.Id);

            // Get CCGs for filter menu
            var ccgs = unitOfWork.CCGRepository.FindAll().ToList();

            // Add 'All CCGs' option to menu
            _ccgService.SetCCGViewName(ccgs);
            ccgs.Insert(0, new CCG {
                Id = -1, CCGName = "All CCGs"
            });
            prayerRequestsList.CCGs = new SelectList(ccgs, "Id", "CcgName");

            if (ccgId != null && ccgId != -1)
            {
                var ccg = unitOfWork.CCGRepository.Find(g => g.Id == ccgId);
                prayerRequestsList.CcgName = ccg.CCGName;
            }

            return(View(prayerRequestsList));
        }
예제 #2
0
        // GET:
        public ActionResult Index(int?memberId, int?ccgId,
                                  int?dateRangeFilter = (int)DateRangeFilter.TwoWeeks,
                                  int?sortOption      = (int)ContactsSort.DateDescending,
                                  int?page            = 1, int?itemsPerPage = 10, bool getAll = false, string query = null)
        {
            // Cast int passed by route to an enum
            var dateFilter   = dateRangeFilter != null ? (DateRangeFilter)dateRangeFilter : DateRangeFilter.TwoWeeks;
            var contactsSort = sortOption == null ? ContactsSort.DateDescending : (ContactsSort)sortOption;

            #region Set params to pass to view
            var prayerRequestsList = new PrayerRequestListViewModel
            {
                Params = new ActionMethodParams
                {
                    MemberId        = memberId,
                    CCGId           = ccgId,
                    ItemsPerPage    = itemsPerPage,
                    Page            = page,
                    GetAll          = getAll,
                    DateRangeFilter = dateFilter,
                    Query           = query,
                    ContactsSort    = contactsSort
                }
            };
            #endregion

            // Get principal user obj
            var user = unitOfWork.AppUserRepository.FindUserByEmail(User.Identity.Name);

            if (memberId != null)
            {
                var member = unitOfWork.MemberRepository.FindMemberById(memberId);
                ViewBag.MemberName = $"{member.FirstName} {member.LastName}";
            }

            var prayerRequests = _service.PrayerRequests(memberId, ccgId, dateFilter, contactsSort, getAll, query, user);

            // Used to check permission to edit in the view
            prayerRequestsList.Params.UserId = user.Id;

            var prayerRequestsVM = Mapper.Map <IList <PrayerRequestViewModel> >(prayerRequests);

            prayerRequestsList.PrayerRequests = prayerRequestsVM.ToPagedList(page ?? 1, itemsPerPage ?? 10);


            // Truncates the subject and comments
            // Keeps comments private if marked as such
            _service.TruncateTextAndKeepPrivate(prayerRequestsList.PrayerRequests, user.Id);

            // Get CCGs for filter menu
            var ccgs = unitOfWork.CCGRepository.FindAll().ToList();

            // Add 'All CCGs' option to menu
            _ccgService.SetCCGViewName(ccgs);
            ccgs.Insert(0, new CCG {
                Id = -1, CCGName = "All CCGs"
            });
            prayerRequestsList.CCGs = new SelectList(ccgs, "Id", "CcgName");

            if (ccgId != null && ccgId != -1)
            {
                var ccg = unitOfWork.CCGRepository.Find(g => g.Id == ccgId);
                prayerRequestsList.CcgName = ccg.CCGName;
            }

            return(View(prayerRequestsList));
        }