public ActionResult New() { NewFamilyViewModel viewModel = new NewFamilyViewModel(); NewFamilyModel model = new NewFamilyModel(); model.NewFamilyMembers = new List <Member>(); model.NewFamilyMembers.Add(new Member()); //starting address Address address = new Address(); address.State = "KY"; model.Address = address; viewModel.States = GetStates(); viewModel.Campuses = GetCampuses(); viewModel.NewFamilyModel = model; return(View(viewModel)); }
public async Task <ActionResult> New(NewFamilyModel NewFamilyModel) { //we need to validate the data server side if (NewFamilyModel.NewFamilyMembers.Any(x => !x.AdultIsValid)) { ModelState.AddModelError("", "Every family member requires a valid first name, last name, email and phone number."); } //ensure at least 1 person is being added if (NewFamilyModel.NewFamilyMembers.Count == 0) { ModelState.AddModelError("", "At least 1 family member is required to register a family."); } //check the email addresses and phone numbers foreach (var member in NewFamilyModel.NewFamilyMembers) { Boolean isValid = true; if (!ValidationHelper.IsValidEmail(member.Email)) { ModelState.AddModelError("", String.Format("{0} is not a valid email address", member.Email)); isValid = false; } if (!ValidationHelper.IsValidPhone(ValidationHelper.CleanPhoneNumber(member.PhoneNumber))) { ModelState.AddModelError("", String.Format("{0} is not a valid phone number", member.PhoneNumber)); isValid = false; } if (isValid) { //lets just verify this email doesn't already exist in the system, if it does, we should redirect List <Person> personsFound = await ArenaAPIHelper.GetPersons(new PersonListOptions { Email = member.Email }); if (personsFound.Count > 0) { return(RedirectToAction("Find", new { email = member.Email })); } } } if (!ModelState.IsValid) { NewFamilyViewModel viewModel = new NewFamilyViewModel(); viewModel.Campuses = GetCampuses(); viewModel.States = GetStates(); viewModel.NewFamilyModel = NewFamilyModel; return(View(viewModel)); } //add the first person Person requiredAdult = MemberHelper.GetAdultPersonFromMember(NewFamilyModel.NewFamilyMembers.First(), (Campus)NewFamilyModel.CampusId); requiredAdult.Addresses = new List <Address> { NewFamilyModel.Address }; ArenaPostResult result = await ArenaAPIHelper.AddPerson(requiredAdult); if (result.WasSuccessful) { //we need the familyId requiredAdult = await ArenaAPIHelper.GetPerson(result.ObjectId); for (int i = 1; i < NewFamilyModel.NewFamilyMembers.Count; i++) { Person additonalAdult = MemberHelper.GetAdultPersonFromMember(NewFamilyModel.NewFamilyMembers[i], (Campus)NewFamilyModel.CampusId); additonalAdult.FamilyId = requiredAdult.FamilyId; additonalAdult.Addresses = requiredAdult.Addresses; result = await ArenaAPIHelper.AddPerson(additonalAdult); } return(RedirectToAction("AddChildren", new { id = requiredAdult.PersonId })); } return(RedirectToAction("Index")); }