예제 #1
0
        public async Task <IActionResult> Detail(ParticipantsDetailViewModel model)
        {
            var site = await GetCurrentSiteAsync();

            var program = await _siteService.GetProgramByIdAsync(model.User.ProgramId);

            if (site.RequirePostalCode && string.IsNullOrWhiteSpace(model.User.PostalCode))
            {
                ModelState.AddModelError("User.PostalCode", "The Zip Code field is required.");
            }
            if (program.AgeRequired && !model.User.Age.HasValue)
            {
                ModelState.AddModelError("User.Age", "The Age field is required.");
            }
            if (program.SchoolRequired && !model.User.EnteredSchoolId.HasValue)
            {
                if (!model.NewEnteredSchool && !model.User.SchoolId.HasValue)
                {
                    ModelState.AddModelError("User.SchoolId", "The School field is required.");
                }
                else if (model.NewEnteredSchool &&
                         string.IsNullOrWhiteSpace(model.User.EnteredSchoolName))
                {
                    ModelState.AddModelError("User.EnteredSchoolName", "The School Name field is required.");
                }
            }
            if (model.NewEnteredSchool && !model.SchoolDistrictId.HasValue &&
                ((program.AskSchool && !string.IsNullOrWhiteSpace(model.User.EnteredSchoolName)) ||
                 program.SchoolRequired))
            {
                ModelState.AddModelError("SchoolDistrictId", "The School District field is required.");
            }

            if (ModelState.IsValid)
            {
                try
                {
                    bool hasSchool = false;
                    if (!program.AskAge)
                    {
                        model.User.Age = null;
                    }
                    if (program.AskSchool)
                    {
                        hasSchool = true;
                        if (model.NewEnteredSchool || model.User.EnteredSchoolId.HasValue)
                        {
                            model.User.SchoolId = null;
                        }
                        else
                        {
                            model.User.EnteredSchoolId   = null;
                            model.User.EnteredSchoolName = null;
                        }
                    }

                    await _userService.MCUpdate(model.User, hasSchool, model.SchoolDistrictId);

                    AlertSuccess = "Participant infomation updated";
                    return(RedirectToAction("Detail", new { id = model.User.Id }));
                }
                catch (GraException gex)
                {
                    ShowAlertWarning("Unable to update participant: ", gex);
                }
            }
            SetPageTitle(model.User);

            var branchList = await _siteService.GetBranches(model.User.SystemId);

            if (model.User.BranchId < 1)
            {
                branchList = branchList.Prepend(new Branch()
                {
                    Id = -1
                });
            }

            var systemList = await _siteService.GetSystemList();

            var programList = await _siteService.GetProgramList();

            var programViewObject = _mapper.Map <List <ProgramViewModel> >(programList);

            model.BranchList        = new SelectList(branchList.ToList(), "Id", "Name");
            model.SystemList        = new SelectList(systemList.ToList(), "Id", "Name");
            model.ProgramList       = new SelectList(programList.ToList(), "Id", "Name");
            model.ProgramJson       = Newtonsoft.Json.JsonConvert.SerializeObject(programViewObject);
            model.RequirePostalCode = site.RequirePostalCode;
            model.ShowAge           = program.AskAge;
            model.ShowSchool        = program.AskSchool;

            var districtList = await _schoolService.GetDistrictsAsync();

            if (model.User.SchoolId.HasValue)
            {
                var schoolDetails = await _schoolService.GetSchoolDetailsAsync(model.User.SchoolId.Value);

                var typeList = await _schoolService.GetTypesAsync(schoolDetails.SchoolDisctrictId);

                model.SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name",
                                                          schoolDetails.SchoolDisctrictId);
                model.SchoolTypeList = new SelectList(typeList.ToList(), "Id", "Name",
                                                      schoolDetails.SchoolTypeId);
                model.SchoolList = new SelectList(schoolDetails.Schools.ToList(), "Id", "Name");
            }
            else
            {
                model.SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name");
                if (model.SchoolDistrictId.HasValue)
                {
                    var typeList = await _schoolService.GetTypesAsync(model.SchoolDistrictId);

                    model.SchoolTypeList = new SelectList(typeList.ToList(), "Id", "Name",
                                                          model.SchoolTypeId);
                    var schoolList = await _schoolService.GetSchoolsAsync(model.SchoolDistrictId,
                                                                          model.SchoolTypeId);

                    model.SchoolList = new SelectList(schoolList.ToList(), "Id", "Name");
                }
            }

            return(View(model));
        }
예제 #2
0
        public async Task <IActionResult> Detail(int id)
        {
            try
            {
                var user = await _userService.GetDetails(id);

                SetPageTitle(user);
                var branchList = await _siteService.GetBranches(user.SystemId);

                var systemList = await _siteService.GetSystemList();

                var programList = await _siteService.GetProgramList();

                var userProgram       = programList.Where(_ => _.Id == user.ProgramId).SingleOrDefault();
                var programViewObject = _mapper.Map <List <ProgramViewModel> >(programList);

                ParticipantsDetailViewModel viewModel = new ParticipantsDetailViewModel()
                {
                    User           = user,
                    Id             = user.Id,
                    HouseholdCount = await _userService
                                     .FamilyMemberCountAsync(user.HouseholdHeadUserId ?? id),
                    HeadOfHouseholdId = user.HouseholdHeadUserId,
                    HasAccount        = !string.IsNullOrWhiteSpace(user.Username),
                    CanEditDetails    = UserHasPermission(Permission.EditParticipants),
                    RequirePostalCode = (await GetCurrentSiteAsync()).RequirePostalCode,
                    ShowAge           = userProgram.AskAge,
                    ShowSchool        = userProgram.AskSchool,
                    HasSchoolId       = user.SchoolId.HasValue,
                    ProgramJson       = Newtonsoft.Json.JsonConvert.SerializeObject(programViewObject),
                    BranchList        = new SelectList(branchList.ToList(), "Id", "Name"),
                    ProgramList       = new SelectList(programList.ToList(), "Id", "Name"),
                    SystemList        = new SelectList(systemList.ToList(), "Id", "Name")
                };

                var districtList = await _schoolService.GetDistrictsAsync();

                if (user.SchoolId.HasValue)
                {
                    var schoolDetails = await _schoolService.GetSchoolDetailsAsync(user.SchoolId.Value);

                    var typeList = await _schoolService.GetTypesAsync(schoolDetails.SchoolDisctrictId);

                    viewModel.SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name",
                                                                  schoolDetails.SchoolDisctrictId);
                    viewModel.SchoolTypeList = new SelectList(typeList.ToList(), "Id", "Name",
                                                              schoolDetails.SchoolTypeId);
                    viewModel.SchoolList = new SelectList(schoolDetails.Schools.ToList(), "Id", "Name");
                }
                else
                {
                    viewModel.SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name");
                }

                return(View(viewModel));
            }
            catch (GraException gex)
            {
                ShowAlertWarning("Unable to view participant: ", gex);
                return(RedirectToAction("Index"));
            }
        }