public static void ValidateModelForNew(OnlineRegPersonModel model, ModelStateDictionary modelState, int i) { var dobname = model.Parent.GetNameFor(mm => mm.List[i].DateOfBirth); var foundname = model.Parent.GetNameFor(mm => mm.List[i].Found); ValidBasic(model, modelState, i); DateTime dt; if (model.RequiredDOB() && model.DateOfBirth.HasValue() && !Util.BirthDateValid(model.bmon, model.bday, model.byear, out dt)) { modelState.AddModelError(dobname, "birthday invalid"); } else if (!model.birthday.HasValue && model.RequiredDOB()) { modelState.AddModelError(dobname, "birthday required"); } if (model.birthday.HasValue && model.NoReqBirthYear() == false && model.birthday.Value.Year == Util.SignalNoYear) { modelState.AddModelError(dobname, "BirthYear is required"); model.IsValidForNew = false; return; } var minage = DbUtil.Db.Setting("MinimumUserAge", "16").ToInt(); if (model.orgid == Util.CreateAccountCode && model.age < minage) { modelState.AddModelError(dobname, "must be {0} to create account".Fmt(minage)); } if (model.ComputesOrganizationByAge() && model.GetAppropriateOrg() == null) { modelState.AddModelError(dobname, model.NoAppropriateOrgError); } ValidateBirthdayRange(model, modelState, i); var n = 0; if (model.Phone.HasValue() && model.Phone.GetDigits().Length >= 10) { n++; } if (model.ShowAddress && model.HomePhone.HasValue() && model.HomePhone.GetDigits().Length >= 10) { n++; } if (model.RequiredPhone() && n == 0) { modelState.AddModelError(model.Parent.GetNameFor(mm => mm.List[i].Phone), "cell or home phone required"); } if (model.HomePhone.HasValue() && model.HomePhone.GetDigits().Length > 20) { modelState.AddModelError(model.Parent.GetNameFor(mm => mm.List[i].HomePhone), "homephone too long"); } if (model.EmailAddress.HasValue()) { model.EmailAddress = model.EmailAddress.Trim(); } if (!model.EmailAddress.HasValue() || !Util.ValidEmail(model.EmailAddress)) { modelState.AddModelError(model.Parent.GetNameFor(mm => mm.List[i].person.EmailAddress), "Please specify a valid email address."); } var isnewfamily = model.whatfamily == 3; if (isnewfamily) { if (!model.AddressLineOne.HasValue() && model.RequiredAddr()) { modelState.AddModelError(model.Parent.GetNameFor(mm => mm.List[i].AddressLineOne), "address required."); } if (model.RequiredZip() && model.AddressLineOne.HasValue()) { var addrok = model.City.HasValue() && model.State.HasValue(); if (model.ZipCode.HasValue()) { addrok = true; } if (!addrok) { modelState.AddModelError(model.Parent.GetNameFor(mm => mm.List[i].ZipCode), "zip required (or \"na\")"); } if (modelState.IsValid && model.AddressLineOne.HasValue() && (model.Country == "United States" || !model.Country.HasValue())) { var r = AddressVerify.LookupAddress(model.AddressLineOne, model.AddressLineTwo, model.City, model.State, model.ZipCode); if (r.Line1 != "error") { if (r.found == false) { modelState.AddModelError(model.Parent.GetNameFor(mm => mm.List[i].ZipCode), r.address + ", to skip address check, Change the country to USA, Not Validated"); model.ShowCountry = true; return; } if (r.Line1 != model.AddressLineOne) { model.AddressLineOne = r.Line1; } if (r.Line2 != (model.AddressLineTwo ?? "")) { model.AddressLineTwo = r.Line2; } if (r.City != (model.City ?? "")) { model.City = r.City; } if (r.State != (model.State ?? "")) { model.State = r.State; } if (r.Zip != (model.ZipCode ?? "")) { model.ZipCode = r.Zip; } } } } } if (!model.gender.HasValue && model.RequiredGender()) { modelState.AddModelError(model.Parent.GetNameFor(mm => mm.List[i].gender), "Please specify gender"); } if (!model.married.HasValue && model.RequiredMarital()) { modelState.AddModelError(model.Parent.GetNameFor(mm => mm.List[i].married), "Please specify marital status"); } if (model.MemberOnly()) { modelState.AddModelError(foundname, "Sorry, must be a member of church"); } else if (model.org != null && model.setting.ValidateOrgIds.Count > 0 && !model.Parent.SupportMissionTrip) { modelState.AddModelError(foundname, "Must be member of specified organization"); } model.IsValidForNew = modelState.IsValid; model.IsValidForContinue = modelState.IsValid; }