Example #1
0
        public FileResult CCGMembers(int?ccgId, bool getAll   = false,
                                     string query             = null, bool allAccess = false,
                                     int?memberFilter         = (int)MemberFilter.None,
                                     int?dataDownloadFileType = (int)ExportDataFileType.Xls)
        {
            var fileType = dataDownloadFileType != null ? (ExportDataFileType)dataDownloadFileType : ExportDataFileType.Xls;

            // Get members collection from db
            // TODO  action result not needed here
            ActionResult actionResult;
            var          members = _membersService.GetMembersList(ccgId, getAll, query, allAccess,
                                                                  User.Identity.Name, out actionResult).ToList();

            // Filter members
            var filter = memberFilter != null ? (MemberFilter)memberFilter : MemberFilter.None;

            _membersService.FilterMembers(ref members, filter, unitOfWork.AppUserRepository.FindUserByEmail(User.Identity.Name));

            switch (fileType)
            {
            case ExportDataFileType.Xls:
                // Export excel file to user's browser
                return(_service.ExportCCGMembersAsXls(members));

            case ExportDataFileType.Csv:
                break;
            }
            //TODO temporary
            return(new FileContentResult(new byte[] { }, ""));
        }
Example #2
0
        public ActionResult ContactSelected(int?ccgId, bool getAll, string query,
                                            bool allAccess, bool selectAll = false, params int?[] memberIds)
        {
            IEnumerable <CCGMember> members = new List <CCGMember>();
            string userEmail = User.Identity.Name;

            #region Get selected members
            if (selectAll)
            {
                ActionResult actionResult;
                members = _membersService.GetMembersList(ccgId,
                                                         getAll, query, allAccess, userEmail, out actionResult);

                // User may not get authorized and redirected
                if (actionResult != null)
                {
                    return(actionResult);
                }
            }
            else // multi-selected members but not all
            {
                // Get members from data store where id's match those in view model.
                if (memberIds != null && memberIds.Length != 0)
                {
                    members = _membersService.GetSelecteMembers(memberIds);
                }
            }
            #endregion

            // Map list of domain models back to list of view models.
            var selectedMembersVM = Mapper.Map <IList <ListMembersViewModel> >(members);

            // For dropdown list
            var contactTypes = unitOfWork.ContactTypeRepository.GetContactTypesSorted();

            // Deafult selected contact type: 'District Newsletter'
            var defaultSelected = contactTypes
                                  .SingleOrDefault(ct => ct.Name.Equals("District Newsletter", StringComparison.CurrentCultureIgnoreCase) ||
                                                   ct.Name.Contains("Newsletter"));

            var bulkContactMembers = new List <BulkContactMember>();

            _service.AddToBulkContactMembers(selectedMembersVM, bulkContactMembers);

            #region Create view model
            var bulkContactViewModel = new BulkContactViewModel
            {
                Members         = bulkContactMembers,
                ContactTypes    = new SelectList(contactTypes, "Id", "Name", defaultSelected?.Id),
                CreateContactVM = new CreateContactRecordViewModel {
                    ContactDate = DateTime.Now
                },
                NoMembersSelected = selectedMembersVM.Count == 0
            };
            #endregion

            return(View("ContactSelected", bulkContactViewModel));
        }
        // GET: CcgMembers
        public ActionResult Index(int?ccgId, int?page = 1, int?itemsPerPage  = 10,
                                  bool selectAll      = false, bool listAll  = false, bool getAll = false,
                                  string query        = null, bool allAccess = false,
                                  int?memberFilter    = (int)MemberFilter.None)
        {
            IList <MultiSelectList> items = new List <MultiSelectList>();

            var filter = memberFilter != null ? (MemberFilter)memberFilter : MemberFilter.None;

            #region Set query string params to pass back to view
            // Pass params to view for features such as pagination
            ViewBag.ItemsPerPage = itemsPerPage;
            ViewBag.Page         = page;
            ViewBag.CCGId        = ccgId;
            ViewBag.GetAll       = getAll;
            ViewBag.AllAccess    = allAccess;
            ViewBag.IsSelectAll  = selectAll;
            ViewBag.MemberFilter = filter;
            ViewBag.Query        = query;
            #endregion

            if (ccgId != null)
            {
                var ccg = unitOfWork.CCGRepository.Find(g => g.Id == ccgId);
                ViewBag.CCGName = _ccgService.SetCCGViewName(ccg);
            }

            ActionResult actionResult;
            var          members = _service.GetMembersList(ccgId, getAll, query, allAccess, User.Identity.Name, out actionResult).ToList();

            // User may not get authorized and redirected
            if (actionResult != null)
            {
                return(actionResult);
            }

            // Filter members
            _service.FilterMembers(ref members, filter, unitOfWork.AppUserRepository.FindUserByEmail(User.Identity.Name));

            // Map to view model and return view.
            var memberList = Mapper.Map <IList <ListMembersViewModel> >(members);

            // Validate phone and cell numbers; assign empty string if invalid
            _service.ValidatePhoneNumbers(memberList);

            // Set img src and member-has-photo flag
            _service.SetImgSrcAndHasPhotoFlag(memberList);

            // Set the IsMemberDeacon flag for each member. If user is not member's
            // deacon, also sets the href links for the phone numbers.
            _service.SetIsMemberDeaconFlag(memberList, unitOfWork.AppUserRepository.FindUserByEmail(User.Identity.Name));

            // List all records in the view on one page
            if (listAll)
            {
                itemsPerPage = memberList.Count();
            }

            // Select all if 'select all' is selected.
            if (selectAll)
            {
                _service.SelectAll(memberList);
            }

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

            // Set CCG name with deacon name(s). eg., CCG10 ===> CCG10_Bolden
            _ccgService.SetCCGViewName(ccgs);

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


            // Convert view model list to PagedList for pagination.
            return(View(memberList.ToPagedList(page ?? 1, itemsPerPage ?? 10)));
        }