public bool ValidateAddress(ModelStateDictionary modelState) { Addrok = modelState.IsValid; if (Addrok == false) { return(false); } if ((Country.Value == "United States")) { Result = AddressVerify.LookupAddress(AddressLineOne, AddressLineTwo, CityName, StateCode.Value, ZipCode); const string alertdiv = @" <div class=""alert {0}"">{1}</div>"; if (Result.Line1 == "error") { Error = string.Format(alertdiv, "alert-danger", "<h4>Network Error</h4>"); } else if (ResultNotFound) { Error = string.Format(alertdiv, "alert-danger", $"<h4>Address Not Validated</h4><h6>{Result.error}</h6>"); } else if (Result.Changed(AddressLineOne, AddressLineTwo, CityName, StateCode.Value, ZipCode)) { var msg = @"<h4>Address Found and Adjusted by USPS</h4><h6>What you entered</h6>" + AddrCityStateZip().Replace("\n", "<br/>\n"); ResultChanged = true; var rc = DbUtil.Db.FindResCode(Result.Zip, Country.Value); ResCode = new CodeInfo(rc, "ResCode"); SetAddressInfo(); Error = string.Format(alertdiv, "alert-success", msg); } } return(!Error.HasValue()); }
public static void DoWork(ValidateAddress model) { Thread.CurrentThread.Priority = ThreadPriority.BelowNormal; var db = DbUtil.Create(model.host); var cul = db.Setting("Culture", "en-US"); Thread.CurrentThread.CurrentUICulture = new CultureInfo(cul); Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cul); LongRunningOp lop = null; foreach (var pid in model.pids) { db.Dispose(); var fsb = new List <ChangeDetail>(); db = DbUtil.Create(model.host); var f = db.LoadFamilyByPersonId(pid); var ret = AddressVerify.LookupAddress(f.AddressLineOne, f.AddressLineTwo, f.CityName, f.StateCode, f.ZipCode); if (ret.found != false && !ret.error.HasValue() && ret.Line1 != "error") { f.UpdateValue(fsb, "AddressLineOne", ret.Line1); f.UpdateValue(fsb, "AddressLineTwo", ret.Line2); f.UpdateValue(fsb, "CityName", ret.City); f.UpdateValue(fsb, "StateCode", ret.State); f.UpdateValue(fsb, "ZipCode", ret.Zip.GetDigits()); var rc = db.FindResCode(ret.Zip, null); f.UpdateValue(fsb, "ResCodeId", rc.ToString()); } else { f.UpdateValue(fsb, "ZipCode", f.ZipCode.Zip5()); } lop = FetchLongRunningOp(db, model.Id, Op); Debug.Assert(lop != null, "r != null"); lop.Processed++; f.LogChanges(db, fsb, pid, Util.UserPeopleId ?? 0); db.SubmitChanges(); //Thread.Sleep(1000); } // finished lop = FetchLongRunningOp(db, model.Id, Op); lop.Completed = DateTime.Now; db.SubmitChanges(); }
private bool CheckAddress(PaymentForm pf) { if (!pf.IsUs) { pf.NeedsCityState = true; return(pf.City.HasValue() && pf.State.HasValue()); } var r = AddressVerify.LookupAddress(pf.Address, null, pf.City, pf.State, pf.Zip); if (r.Line1 == "error" || r.found == false) { if (pf.City.HasValue() && pf.State.HasValue() && pf.Zip.HasValue() && pf.Address.HasValue()) { return(true); // not found but complete } pf.NeedsCityState = true; return(false); } // populate Address corrections if (r.Line1 != pf.Address) { pf.Address = r.Line1; } if (r.City != (pf.City ?? "")) { pf.City = r.City; } if (r.State != (pf.State ?? "")) { pf.State = r.State; } if (r.Zip != (pf.Zip ?? "")) { pf.Zip = r.Zip; } return(true); }
public bool ValidateAddress(ModelStateDictionary modelState) { // if (!Address1.HasValue()) // modelState.AddModelError(this.GetNameFor(m => m.Address1), "Street Address Required"); // if ((!City.HasValue() || !State.Value.HasValue()) && !Zip.HasValue()) // modelState.AddModelError(this.GetNameFor(m => m.Zip), "Require either Zip Code or City/State"); Addrok = modelState.IsValid; if (Addrok == false) { return(false); } if ((Country.Value == "United States")) { Result = AddressVerify.LookupAddress(AddressLineOne, AddressLineTwo, CityName, StateCode.Value, ZipCode); const string alertdiv = @" <div class=""alert"">{0}</div>"; if (Result.Line1 == "error") { Error = alertdiv.Fmt("<h4>Network Error</h4>"); } else if (ResultNotFound) { Error = alertdiv.Fmt("<h4>Address Not Validated</h4><h6>{0}</h6>".Fmt(Result.error)); } else if (Result.Changed(AddressLineOne, AddressLineTwo, CityName, StateCode.Value, ZipCode)) { var msg = @"<h4>Address Found and Adjusted by USPS</h4><h6>What you entered</h6>" + AddrCityStateZip().Replace("\n", "<br/>\n"); ResultChanged = true; var rc = DbUtil.Db.FindResCode(Result.Zip, Country.Value); ResCode = new CodeInfo(rc, "ResCode"); SetAddressInfo(); Error = alertdiv.Fmt(msg); } } return(!Error.HasValue()); }
private Address2 ValidateAddress(Address2 a) { var sw = new StringWriter(); bool addrok = a.CityName.Text.HasValue() && a.StateCode.Text.HasValue(); if (!addrok && a.ZipCode.Text.HasValue()) { addrok = true; } if (!addrok && !a.CityName.Text.HasValue() && !a.StateCode.Text.HasValue() && !a.ZipCode.Text.HasValue()) { addrok = true; } if (!addrok) { a.Error = "city/state required or zip required (or \"na\" in all)"; return(a); } if (a.AddressLineOne.Text.HasValue() && (a.CityName.Text.HasValue() || a.StateCode.Text.HasValue() || a.ZipCode.Text.HasValue()) && (a.CountryName == "United States" || !a.CountryName.HasValue())) { var r = AddressVerify.LookupAddress(a.AddressLineOne.Text, a.AddressLineTwo.Text, a.CityName.Text, a.StateCode.Text, a.ZipCode.Text); if (r.Line1 == "error") { a.Error = r.address; return(a); } if (r.found == false) { a.Error = r.address + ", if your address will not validate, change the country to 'USA, Not Validated'"; return(a); } if (r.Line1 != a.AddressLineOne.Text) { a.AddressLineOne.Error = $"address changed from '{a.AddressLineOne.Text}'"; a.Error = "changes"; a.AddressLineOne.Text = r.Line1; } if (r.Line2 != (a.AddressLineTwo.Text ?? "")) { a.AddressLineTwo.Error = $"address2 changed from '{a.AddressLineTwo.Text}'"; a.Error = "changes"; a.AddressLineTwo.Text = r.Line2; } if (r.City != (a.CityName.Text ?? "")) { a.CityName.Error = $"city changed from '{a.CityName.Text}'"; a.Error = "changes"; a.CityName.Text = r.City; } if (r.State != (a.StateCode.Text ?? "")) { a.StateCode.Error = $"state changed from '{a.StateCode.Text}'"; a.Error = "changes"; a.StateCode.Text = r.State; } if (r.Zip != (a.ZipCode.Text ?? "")) { a.ZipCode.Error = $"zip changed from '{a.ZipCode.Text}'"; a.Error = "changes"; a.ZipCode.Text = r.Zip; } } return(a); }
public void UpdateAddress(ModelStateDictionary ModelState) { if (ResCodeId == 0) { ResCodeId = null; } var p = DbUtil.Db.LoadPersonById(PeopleId); var f = p.Family; var addrok = false; if (City.HasValue() && State.HasValue()) { addrok = true; } if (Zip.HasValue()) { addrok = true; } if (!City.HasValue() && !State.HasValue() && !Zip.HasValue()) { addrok = true; } if (!addrok) { ModelState.AddModelError("zip", "city/state required or zip required (or \"na\" in all)"); } if (Address1.HasValue() && (City.HasValue() || State.HasValue() || Zip.HasValue()) && (Country == "United States" || !Country.HasValue())) { var r = AddressVerify.LookupAddress(Address1, Address2, City, State, Zip); if (r.Line1 != "error") { if (!r.found) { ModelState.AddModelError("zip", r.address + ", if your address will not validate, change the country to 'USA, Not Validated'"); return; } if (r.Line1 != Address1) { ModelState.AddModelError("address1", "address changed from '{0}'".Fmt(Address1)); Address1 = r.Line1; } if (r.Line2 != (Address2 ?? "")) { ModelState.AddModelError("address2", "address2 changed from '{0}'".Fmt(Address2)); Address2 = r.Line2; } if (r.City != (City ?? "")) { ModelState.AddModelError("city", "city changed from '{0}'".Fmt(City)); City = r.City; } if (r.State != (State ?? "")) { ModelState.AddModelError("state", "state changed from '{0}'".Fmt(State)); State = r.State; } if (r.Zip != (Zip ?? "")) { ModelState.AddModelError("zip", "zip changed from '{0}'".Fmt(Zip)); Zip = r.Zip; } if (!ModelState.IsValid) { return; } } } switch (Name) { case "FamilyAddr": UpdateValue(f, "AddressLineOne", Address1); UpdateValue(f, "AddressLineTwo", Address2); UpdateValue(f, "AddressToDate", ToDt); UpdateValue(f, "CityName", City); UpdateValue(f, "StateCode", State); UpdateValue(f, "ResCodeId", ResCodeId); UpdateValue(f, "ZipCode", Zip ?? ""); UpdateValue(f, "CountryName", Country); if (Preferred) { UpdateValue(p, "AddressTypeId", 10); } if (fsb.Length > 0) { BadAddress = false; } UpdateValue(f, "BadAddressFlag", BadAddress); break; case "PersonalAddr": UpdateValue(p, "AddressLineOne", Address1); UpdateValue(p, "AddressLineTwo", Address2); UpdateValue(p, "AddressToDate", ToDt); UpdateValue(p, "CityName", City); UpdateValue(p, "StateCode", State); UpdateValue(p, "ResCodeId", ResCodeId); UpdateValue(p, "ZipCode", Zip ?? ""); UpdateValue(p, "CountryName", Country); if (Preferred) { UpdateValue(p, "AddressTypeId", 30); } if (psb.Length > 0) { BadAddress = false; } UpdateValue(p, "BadAddressFlag", BadAddress); break; } if (psb.Length > 0) { var c = new ChangeLog { UserPeopleId = Util.UserPeopleId.Value, PeopleId = PeopleId, Field = Name, Data = "<table>\n" + psb + "</table>", Created = Util.Now }; DbUtil.Db.ChangeLogs.InsertOnSubmit(c); } if (fsb.Length > 0) { var c = new ChangeLog { FamilyId = p.FamilyId, UserPeopleId = Util.UserPeopleId.Value, PeopleId = PeopleId, Field = Name, Data = "<table>\n" + fsb + "</table>", Created = Util.Now }; DbUtil.Db.ChangeLogs.InsertOnSubmit(c); } try { DbUtil.Db.SubmitChanges(); } catch (InvalidOperationException ex) { ModelState.AddModelError("error", ex.Message); } if (!HttpContext.Current.User.IsInRole("Access")) { if (psb.Length > 0 || fsb.Length > 0) { DbUtil.Db.EmailRedacted(p.FromEmail, DbUtil.Db.GetNewPeopleManagers(), "Address Info Changed", "{0} changed the following information:<br />\n<table>{1}{2}</table>" .Fmt(Util.UserName, psb.ToString(), fsb.ToString())); } } }
public void UpdateAddress(bool forceSave = false) { var p = DbUtil.Db.LoadPersonById(PeopleId); var f = p.Family; if (!forceSave) { if (!addrok) { return; } if (Address1.HasValue() && (City.HasValue() || State.Value.HasValue() || Zip.HasValue()) && (Country.Value == "United States" || !Country.Value.HasValue())) { Result = AddressVerify.LookupAddress(Address1, Address2, City, State.Value, Zip); if (Result.Line1 == "error") { error = "network error"; Result.address = AddrCityStateZip(); return; } if (resultnotfound) { return; } if (Result.Changed(Address1, Address2, City, State.Value, Zip)) { resultchanged = true; SetAddressInfo(PeopleId, Name); return; } } // at this point the address validated just fine. } int?ResCodeId = ResCode.Value.ToInt(); if (ResCodeId == 0) { ResCodeId = null; } switch (Name) { case "FamilyAddr": UpdateValue(f, "AddressLineOne", Address1); UpdateValue(f, "AddressLineTwo", Address2); UpdateValue(f, "AddressToDate", ToDt); UpdateValue(f, "CityName", City); UpdateValue(f, "StateCode", State.Value); UpdateValue(f, "ResCodeId", ResCodeId); UpdateValue(f, "ZipCode", Zip ?? ""); UpdateValue(f, "CountryName", Country.Value); if (Preferred) { UpdateValue(p, "AddressTypeId", 10); } if (fsb.Length > 0) { BadAddress = false; } UpdateValue(f, "BadAddressFlag", BadAddress); break; case "PersonalAddr": UpdateValue(p, "AddressLineOne", Address1); UpdateValue(p, "AddressLineTwo", Address2); UpdateValue(p, "AddressToDate", ToDt); UpdateValue(p, "CityName", City); UpdateValue(p, "StateCode", State.Value); UpdateValue(p, "ResCodeId", ResCodeId); UpdateValue(p, "ZipCode", Zip ?? ""); UpdateValue(p, "CountryName", Country.Value); if (Preferred) { UpdateValue(p, "AddressTypeId", 30); } if (psb.Length > 0) { BadAddress = false; } UpdateValue(p, "BadAddressFlag", BadAddress); break; } if (psb.Length > 0) { var c = new ChangeLog { UserPeopleId = Util.UserPeopleId.Value, PeopleId = PeopleId, Field = Name, Data = "<table>\n" + psb + "</table>", Created = Util.Now }; DbUtil.Db.ChangeLogs.InsertOnSubmit(c); } if (fsb.Length > 0) { var c = new ChangeLog { FamilyId = p.FamilyId, UserPeopleId = Util.UserPeopleId.Value, PeopleId = PeopleId, Field = Name, Data = "<table>\n" + fsb + "</table>", Created = Util.Now }; DbUtil.Db.ChangeLogs.InsertOnSubmit(c); } try { DbUtil.Db.SubmitChanges(); DbUtil.LogActivity("Update Address for: {0}".Fmt(person.Name)); } catch (InvalidOperationException ex) { error = ex.Message; return; } saved = true; if (!HttpContext.Current.User.IsInRole("Access")) { if (psb.Length > 0 || fsb.Length > 0) { DbUtil.Db.EmailRedacted(p.FromEmail, DbUtil.Db.GetNewPeopleManagers(), "Address Info Changed", "{0} changed the following information:<br />\n<table>{1}{2}</table>" .Fmt(Util.UserName, psb.ToString(), fsb.ToString())); } } }
public void ValidateModel(ModelStateDictionary ModelState) { if (UseBootstrap) { var r = AddressVerify.LookupAddress(Address, "", "", "", Zip); if (r.Line1 != "error") { if (r.found == false) { ModelState.AddModelError("Zip", r.address + ", to skip address check, Change the country to USA, Not Validated"); } if (r.Line1 != Address) { Address = r.Line1; } if (r.City != (City ?? "")) { City = r.City; } if (r.State != (State ?? "")) { State = r.State; } if (r.Zip != (Zip ?? "")) { Zip = r.Zip; } } } bool dorouting = false; bool doaccount = Account.HasValue() && !Account.StartsWith("X"); if (Routing.HasValue() && !Routing.StartsWith("X")) { dorouting = true; } if (doaccount || dorouting) { if (doaccount) { Account = Account.GetDigits(); } if (dorouting) { Routing = Routing.GetDigits(); } } if (Type == "C") { Payments.ValidateCreditCardInfo(ModelState, new PaymentForm { CreditCard = Cardnumber, Expires = Expires, CCV = Cardcode, SavePayInfo = true }); } else if (Type == "B") { Payments.ValidateBankAccountInfo(ModelState, Routing, Account); } else { ModelState.AddModelError("Type", "Must select Bank Account or Credit Card"); } if (SemiEvery == "S") { if (!Day1.HasValue || !Day2.HasValue) { ModelState.AddModelError("Day2", "Both Days must have values"); } else if (Day2 > 31) { ModelState.AddModelError("Day2", "Day2 must be 31 or less"); } else if (Day1 >= Day2) { ModelState.AddModelError("Day1", "Day1 must be less than Day2"); } } else if (SemiEvery == "E") { if (!EveryN.HasValue || EveryN < 1) { ModelState.AddModelError("EveryN", "Days must be > 0"); } } else { ModelState.AddModelError("SemiEvery", "Must Choose Payment Frequency"); } if (!StartWhen.HasValue) { ModelState.AddModelError("StartWhen", "StartDate must have a value"); } else if (StartWhen <= DateTime.Today) { ModelState.AddModelError("StartWhen", "StartDate must occur after today"); } // else if (StopWhen.HasValue && StopWhen <= StartWhen) // ModelState.AddModelError("StopWhen", "StopDate must occur after StartDate"); if (!FirstName.HasValue()) { ModelState.AddModelError("FirstName", "needs name"); } if (!LastName.HasValue()) { ModelState.AddModelError("LastName", "needs name"); } if (!Address.HasValue()) { ModelState.AddModelError("Address", "Needs address"); } if (!UseBootstrap) { if (!City.HasValue()) { ModelState.AddModelError("City", "Needs city"); } if (!State.HasValue()) { ModelState.AddModelError("State", "Needs state"); } } if (!Zip.HasValue()) { ModelState.AddModelError("Zip", "Needs zip"); } if (!Phone.HasValue()) { ModelState.AddModelError("Phone", "Needs phone"); } }
public void ValidateModelForNew(ModelStateDictionary ModelState, int i) { var dobname = Parent.GetNameFor(mm => mm.List[i].DateOfBirth); var foundname = Parent.GetNameFor(mm => mm.List[i].Found); var isnewfamily = whatfamily == 3; ValidBasic(ModelState, i); DateTime dt; if (RequiredDOB() && DateOfBirth.HasValue() && !Util.BirthDateValid(bmon, bday, byear, out dt)) { ModelState.AddModelError(dobname, "birthday invalid"); } else if (!birthday.HasValue && RequiredDOB()) { ModelState.AddModelError(dobname, "birthday required"); } if (birthday.HasValue && NoReqBirthYear() == false && birthday.Value.Year == Util.SignalNoYear) { ModelState.AddModelError(dobname, "BirthYear is required"); IsValidForNew = false; return; } var minage = DbUtil.Db.Setting("MinimumUserAge", "16").ToInt(); if (orgid == Util.CreateAccountCode && age < minage) { ModelState.AddModelError(dobname, "must be {0} to create account".Fmt(minage)); } if (ComputesOrganizationByAge() && GetAppropriateOrg() == null) { ModelState.AddModelError(dobname, NoAppropriateOrgError); } ValidateBirthdayRange(ModelState, i); int n = 0; if (Phone.HasValue() && Phone.GetDigits().Length >= 10) { n++; } if (ShowAddress && HomePhone.HasValue() && HomePhone.GetDigits().Length >= 10) { n++; } if (RequiredPhone() && n == 0) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].Phone), "cell or home phone required"); } if (HomePhone.HasValue() && HomePhone.GetDigits().Length > 20) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].HomePhone), "homephone too long"); } if (EmailAddress.HasValue()) { EmailAddress = EmailAddress.Trim(); } if (!EmailAddress.HasValue() || !Util.ValidEmail(EmailAddress)) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].EmailAddress), "Please specify a valid email address."); } if (isnewfamily) { if (!AddressLineOne.HasValue() && RequiredAddr()) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].AddressLineOne), "address required."); } if (RequiredZip() && AddressLineOne.HasValue()) { var addrok = City.HasValue() && State.HasValue(); if (ZipCode.HasValue()) { addrok = true; } if (!addrok) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].ZipCode), "zip required (or \"na\")"); } if (ModelState.IsValid && AddressLineOne.HasValue() && (Country == "United States" || !Country.HasValue())) { var r = AddressVerify.LookupAddress(AddressLineOne, AddressLineTwo, City, State, ZipCode); if (r.Line1 != "error") { if (r.found == false) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].ZipCode), r.address + ", to skip address check, Change the country to USA, Not Validated"); ShowCountry = true; return; } if (r.Line1 != AddressLineOne) { AddressLineOne = r.Line1; } if (r.Line2 != (AddressLineTwo ?? "")) { AddressLineTwo = r.Line2; } if (r.City != (City ?? "")) { City = r.City; } if (r.State != (State ?? "")) { State = r.State; } if (r.Zip != (ZipCode ?? "")) { ZipCode = r.Zip; } } } } } if (!gender.HasValue && RequiredGender()) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].gender), "Please specify gender"); } if (!married.HasValue && RequiredMarital()) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].married), "Please specify marital status"); } if (MemberOnly()) { ModelState.AddModelError(foundname, "Sorry, must be a member of church"); } else if (org != null && setting.ValidateOrgIds.Count > 0) { ModelState.AddModelError(foundname, "Must be member of specified organization"); } IsValidForNew = ModelState.IsValid; IsValidForContinue = ModelState.IsValid; }
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; }
public ActionResult ProcessPayment(PaymentForm pf) { #if DEBUG #else if (Session["FormId"] != null) { if ((Guid)Session["FormId"] == pf.FormId) { return(Content("Already submitted")); } } #endif OnlineRegModel m = null; var ed = DbUtil.Db.RegistrationDatas.SingleOrDefault(e => e.Id == pf.DatumId); if (ed != null) { m = Util.DeSerialize <OnlineRegModel>(ed.Data); } #if DEBUG #else if (m != null && m.History.Contains("ProcessPayment") && !pf.PayBalance) { return(Content("Already submitted")); } #endif if (pf.AmtToPay < 0) { pf.AmtToPay = 0; } if (pf.Donate < 0) { pf.Donate = 0; } pf.AllowCoupon = false; SetHeaders(pf.OrgId ?? 0); if ((pf.AmtToPay ?? 0) <= 0 && (pf.Donate ?? 0) <= 0) { DbUtil.Db.SubmitChanges(); ModelState.AddModelError("form", "amount zero"); return(View("Payment/Process", pf)); } try { if (pf.Type == "B") { Payments.ValidateBankAccountInfo(ModelState, pf.Routing, pf.Account); } if (pf.Type == "C") { Payments.ValidateCreditCardInfo(ModelState, pf); } if (!ModelState.IsValid) { return(View("Payment/Process", pf)); } if (pf.IsLoggedIn == true && pf.SavePayInfo) { var gateway = OnlineRegModel.GetTransactionGateway(); if (gateway == "authorizenet") { var au = new AuthorizeNet(DbUtil.Db, m.testing ?? false); if ((pf.Type == "B" && !pf.Routing.StartsWith("X") && !pf.Account.StartsWith("X")) || (pf.Type == "C" && !pf.CreditCard.StartsWith("X"))) { au.AddUpdateCustomerProfile(m.UserPeopleId.Value, pf.Type, pf.CreditCard, DbUtil.NormalizeExpires(pf.Expires).ToString2("MMyy"), pf.MaskedCCV != null && pf.MaskedCCV.StartsWith("X") ? pf.CCV : pf.MaskedCCV, pf.Routing, pf.Account); } } else if (gateway == "sage") { var sg = new CmsData.SagePayments(DbUtil.Db, m.testing ?? false); if ((pf.Type == "B" && !pf.Routing.StartsWith("X") && !pf.Account.StartsWith("X")) || (pf.Type == "C" && !pf.CreditCard.StartsWith("X"))) { sg.storeVault(m.UserPeopleId.Value, pf.Type, pf.CreditCard, DbUtil.NormalizeExpires(pf.Expires).ToString2("MMyy"), pf.MaskedCCV != null && pf.MaskedCCV.StartsWith("X") ? pf.CCV : pf.MaskedCCV, pf.Routing, pf.Account, pf.IsGiving == true); } } else { throw new Exception("ServiceU not supported"); } } if (pf.UseBootstrap) { var r = AddressVerify.LookupAddress(pf.Address, "", "", "", pf.Zip); var z = DbUtil.Db.ZipCodes.SingleOrDefault(zc => zc.Zip == pf.Zip.Zip5()); if (z != null && !z.State.HasValue()) { pf.State = r.State = z.State; pf.City = r.City = z.City; } if (r.Line1 != "error" && r.Line1.HasValue()) { if (r.found == false) { ModelState.AddModelError("Zip", r.address + ", to skip address check, Change the country to USA, Not Validated"); return(View("Payment/Process", pf)); } if (r.Line1 != pf.Address) { pf.Address = r.Line1; } if (r.City != (pf.City ?? "")) { pf.City = r.City; } if (r.State != (pf.State ?? "")) { pf.State = r.State; } if (r.Zip != (pf.Zip ?? "")) { pf.Zip = r.Zip; } } } var ti = ProcessPaymentTransaction(m, pf); if (ti.Approved == false) { ModelState.AddModelError("form", ti.Message); return(View("Payment/Process", pf)); } if (m != null) { m.TranId = ti.Id; m.History.Add("ProcessPayment"); ed.Data = Util.Serialize <OnlineRegModel>(m); ed.Completed = true; DbUtil.Db.SubmitChanges(); } Session["FormId"] = pf.FormId; if (pf.DatumId > 0) { try { var view = ConfirmTransaction(m, ti.TransactionId); switch (view) { case ConfirmEnum.Confirm: return(View("Confirm", m)); case ConfirmEnum.ConfirmAccount: return(View("ConfirmAccount")); } } catch (Exception ex) { TempData["error"] = ex.Message; return(Redirect("/Error")); } } ConfirmDuePaidTransaction(ti, ti.TransactionId, sendmail: true); ViewBag.amtdue = PaymentForm.AmountDueTrans(DbUtil.Db, ti).ToString("C"); return(View("PayAmtDue/Confirm", ti)); } catch (Exception ex) { ModelState.AddModelError("form", ex.Message); return(View("Payment/Process", pf)); } }
internal void ValidateModelForNew(ModelStateDictionary ModelState) { var i = Index(); var dobname = Parent.GetNameFor(mm => mm.List[i].dob); var foundname = Parent.GetNameFor(mm => mm.List[i].Found); var isnewfamily = whatfamily == 3; ValidBasic(ModelState); DateTime dt; if (RequiredDOB() && dob.HasValue() && !Util.BirthDateValid(dob, out dt)) { ModelState.AddModelError(dobname, "birthday invalid"); } else if (!birthday.HasValue && RequiredDOB()) { ModelState.AddModelError(dobname, "birthday required"); } var minage = DbUtil.Db.Setting("MinimumUserAge", "16").ToInt(); if (orgid == Util.CreateAccountCode && age < minage) { ModelState.AddModelError(dobname, "must be {0} to create account".Fmt(minage)); } if (ComputesOrganizationByAge() && GetAppropriateOrg() == null) { ModelState.AddModelError(dobname, "Sorry, cannot find an appropriate age group"); } ValidateBirthdayRange(ModelState); int n = 0; if (phone.HasValue() && phone.GetDigits().Length >= 10) { n++; } if (ShowAddress && homephone.HasValue() && homephone.GetDigits().Length >= 10) { n++; } if (RequiredPhone() && n == 0) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].phone), "cell or home phone required"); } if (homephone.HasValue() && homephone.GetDigits().Length > 20) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].homephone), "homephone too long"); } if (email.HasValue()) { email = email.Trim(); } if (!email.HasValue() || !Util.ValidEmail(email)) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].email), "Please specify a valid email address."); } if (isnewfamily) { if (!address.HasValue() && RequiredAddr()) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].address), "address required."); } if (RequiredZip() && address.HasValue()) { var addrok = city.HasValue() && state.HasValue(); if (zip.HasValue()) { addrok = true; } if (!addrok) { ModelState.AddModelError("zip", "city/state required or zip required (or \"na\" in all)"); } if (ModelState.IsValid && address.HasValue() && (country == "United States" || !country.HasValue())) { var r = AddressVerify.LookupAddress(address, address2, city, state, zip); if (r.Line1 != "error") { if (!r.found) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].zip), r.address + ", if your address will not validate, change the country to 'USA, Not Validated'"); return; } if (r.Line1 != address) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].address), "address changed from '{0}'".Fmt(address)); address = r.Line1; } if (r.Line2 != (address2 ?? "")) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].address2), "address2 changed from '{0}'".Fmt(address2)); address2 = r.Line2; } if (r.City != (city ?? "")) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].city), "city changed from '{0}'".Fmt(city)); city = r.City; } if (r.State != (state ?? "")) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].state), "state changed from '{0}'".Fmt(state)); state = r.State; } if (r.Zip != (zip ?? "")) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].zip), "zip changed from '{0}'".Fmt(zip)); zip = r.Zip; } } } } } if (!gender.HasValue && RequiredGender()) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].gender), "Please specify gender"); } if (!married.HasValue && RequiredMarital()) { ModelState.AddModelError(Parent.GetNameFor(mm => mm.List[i].married), "Please specify marital status"); } if (MemberOnly()) { ModelState.AddModelError(foundname, "Sorry, must be a member of church"); } else if (org != null && setting.ValidateOrgIds.Count > 0) { ModelState.AddModelError(foundname, "Must be member of specified organization"); } IsValidForNew = ModelState.IsValid; }
internal void ValidateModelForNew(ModelStateDictionary ModelState, bool checkaddress) { if (!First.HasValue()) { ModelState.AddModelError("name", "first name required"); } if (!Last.HasValue()) { ModelState.AddModelError("name", "last name required"); } if (!birthday.HasValue && dob.NotEqual("na")) { ModelState.AddModelError("dob", "valid birthday (or \"na\")"); } var d = Phone.GetDigits().Length; if (d != 7 && d < 10 && Phone.NotEqual("na")) { ModelState.AddModelError("phone", "7 or 10+ digits (or \"na\")"); } int count = 0; var pids = DbUtil.Db.FindPerson(First, Last, birthday, Email, Phone.GetDigits()); if (pids.Any()) { ModelState.AddModelError("name", "name/dob already exists in db"); } if (!Util.ValidEmail(Email) && Email.NotEqual("na")) { ModelState.AddModelError("email", "valid email address (or \"na\")"); } if (Gender.Value == "99") { ModelState.AddModelError("gender", "specify gender"); } if (Marital.Value == "99") { ModelState.AddModelError("marital", "specify marital status"); } if (checkaddress) { if (!Address.HasValue()) { ModelState.AddModelError("address", "address required (or \"na\")"); } bool addrok = (City.HasValue() && State.Value.HasValue()) || Zip.HasValue() || (City.Equal("na") && State.Value.Equal("na") && Zip.Equal("na")); if (!addrok) { ModelState.AddModelError("zip", "city/state required or zip required (or \"na\" in all)"); } if (ModelState.IsValid && Address.NotEqual("na") && City.NotEqual("na") && State.Value.NotEqual("na") && (Country.Value.Equal("United States") || !Country.Value.HasValue())) { var r = AddressVerify.LookupAddress(Address, Address2, City, State.Value, Zip); if (r.Line1 != "error") { if (!r.found) { ModelState.AddModelError("zip", r.address + ", if your address will not validate, change the country to 'USA, Not Validated'"); return; } if (r.Line1 != Address) { ModelState.AddModelError("address", "address changed from '{0}'".Fmt(Address)); Address = r.Line1; } if (r.Line2 != (Address2 ?? "")) { ModelState.AddModelError("address2", "address2 changed from '{0}'".Fmt(Address2)); Address2 = r.Line2; } if (r.City != (City ?? "")) { ModelState.AddModelError("city", "city changed from '{0}'".Fmt(City)); City = r.City; } if (r.State != (State.Value ?? "")) { ModelState.AddModelError("state", "state changed from '{0}'".Fmt(State)); State.Value = r.State; } if (r.Zip != (Zip ?? "")) { ModelState.AddModelError("zip", "zip changed from '{0}'".Fmt(Zip)); Zip = r.Zip; } } } } }
public Result Add(CMSDataContext db) { if (!Util.ValidEmail(Email)) { throw new Exception("Need a valid email address"); } if (Amount <= 0) { throw new Exception("Amount must be > 0"); } Person person = null; var list = db.FindPerson(First, Last, null, Email, Phone.GetDigits()).ToList(); var count = list.Count; if (count > 0) { person = db.LoadPersonById(list[0].PeopleId ?? 0); } var result = new Result(); if (count > 1) { result.MultipleMatches = true; } if (person == null) { result.NewPerson = true; var f = new Family { AddressLineOne = Address, ZipCode = Zip, HomePhone = Phone.GetDigits().Truncate(20), }; var amsresult = AddressVerify.LookupAddress(Address, null, null, null, Zip); if (amsresult.found != false && !amsresult.error.HasValue() && amsresult.Line1 != "error") { f.CityName = amsresult.City; f.StateCode = amsresult.State; f.ZipCode = amsresult.Zip.GetDigits().Truncate(10); } DbUtil.Db.SubmitChanges(); var position = 10; person = Person.Add(db, true, f, position, null, First.Trim(), null, Last.Trim(), "", 0, 0, OriginCode.Contribution, null); person.EmailAddress = Email.Trim(); person.SendEmailAddress1 = true; if (count == 0) { person.Comments = "Added during api postcontribution because record was not found"; } } var c = person.PostUnattendedContribution(db, Amount, Fundid, Notes); c.ContributionDate = Date ?? DateTime.Now; c.MetaInfo = Source; db.SubmitChanges(); result.PeopleId = person.PeopleId; result.ContributionId = c.ContributionId; result.Source = Source; DbUtil.LogActivity($"ApiPostContribution {result}", person.PeopleId); return(result); }
public bool CanProceedWithThisAddress() { if (!AddressLineOne.HasValue() && RequiredAddr()) { modelState.AddModelError(Parent.GetNameFor(mm => mm.List[Index].AddressLineOne), "address required."); } if (RequiredZip() && !ZipCode.HasValue() && !RequiredAddr()) { modelState.AddModelError(Parent.GetNameFor(mm => mm.List[Index].ZipCode), "zip required."); } if (!RequiredZip() || !AddressLineOne.HasValue()) { return(true); } var hasCityStateOrZip = (City.HasValue() && State.HasValue()) || ZipCode.HasValue(); if (!hasCityStateOrZip) { modelState.AddModelError(Parent.GetNameFor(mm => mm.List[Index].ZipCode), "zip required (or \"na\")"); } if (!modelState.IsValid) { Log("AddressNotValid"); return(false); } var countryIsOK = modelState.IsValid && AddressLineOne.HasValue() && (Country == "United States" || !Country.HasValue()); if (!countryIsOK) { return(true); // not going to validate address } var r = AddressVerify.LookupAddress(AddressLineOne, AddressLineTwo, City, State, ZipCode); if (r.Line1 == "error") { return(true); // Address Validator is not available, skip check } if (r.found == false) { return(true); // not going to bother them to ask for better address } // populate Address corrections if (r.Line1 != AddressLineOne) { AddressLineOne = r.Line1; } if (r.Line2 != (AddressLineTwo ?? "")) { AddressLineTwo = r.Line2; } if (r.City != (City ?? "")) { City = r.City; } if (r.State != (State ?? "")) { State = r.State; } if (r.Zip != (ZipCode ?? "")) { ZipCode = r.Zip; } return(true); }
private void UpdatePerson(Person p, PersonInfo m, bool isNew) { var psb = new List <ChangeDetail>(); var fsb = new List <ChangeDetail>(); var keys = Request.Form.AllKeys.ToList(); if (!m.home.HasValue() && m.cell.HasValue()) { m.home = m.cell; } if (keys.Contains("zip") || keys.Contains("addr")) { var result = AddressVerify.LookupAddress(m.addr, p.PrimaryAddress2, null, null, m.zip.Zip5()); if (result.found != false && !result.error.HasValue() && result.Line1 != "error") { UpdateField(fsb, p.Family, "AddressLineOne", result.Line1); UpdateField(fsb, p.Family, "AddressLineTwo", result.Line2); UpdateField(fsb, p.Family, "CityName", result.City); UpdateField(fsb, p.Family, "StateCode", result.State); UpdateField(fsb, p.Family, "ZipCode", result.Zip.GetDigits().Truncate(10)); var rc = DbUtil.Db.FindResCode(result.Zip, null); UpdateField(fsb, p.Family, "ResCodeId", rc.ToString()); } else { if (keys.Contains("addr")) { UpdateField(fsb, p.Family, "AddressLineOne", m.addr); } UpdateField(fsb, p.Family, "ZipCode", m.zip.Zip5()); UpdateField(fsb, p.Family, "CityName", null); UpdateField(fsb, p.Family, "StateCode", null); } } if (keys.Contains("home")) { UpdateField(fsb, p.Family, "HomePhone", m.home.GetDigits()); } if (keys.Contains("goesby")) { UpdateField(psb, p, "NickName", Trim(m.goesby)); } if (keys.Contains("first")) { UpdateField(psb, p, "FirstName", Trim(m.first)); } if (keys.Contains("last")) { UpdateField(psb, p, "LastName", Trim(m.last)); } if (keys.Contains("dob")) { DateTime dt; DateTime.TryParse(m.dob, out dt); if (p.BirthDate != dt) { UpdateField(psb, p, "DOB", m.dob); } } if (keys.Contains("email")) { UpdateField(psb, p, "EmailAddress", Trim(m.email)); } if (keys.Contains("cell")) { UpdateField(psb, p, "CellPhone", m.cell.GetDigits()); } if (keys.Contains("marital")) { UpdateField(psb, p, "MaritalStatusId", m.marital); } if (keys.Contains("gender")) { UpdateField(psb, p, "GenderId", m.gender); } var rr = p.GetRecReg(); if (keys.Contains("allergies")) { if (m.allergies != rr.MedicalDescription) { p.SetRecReg().MedicalDescription = m.allergies; } } if (keys.Contains("grade")) { if (m.AskGrade) { if (m.grade.ToInt2() != p.Grade) { p.Grade = m.grade.ToInt2(); } } } if (m.AskEmFriend) { if (keys.Contains("parent")) { if (m.parent != rr.Mname) { p.SetRecReg().Mname = m.parent; } } if (keys.Contains("emfriend")) { if (m.emfriend != rr.Emcontact) { p.SetRecReg().Emcontact = m.emfriend; } } if (keys.Contains("emphone")) { if (m.emphone != rr.Emphone) { p.SetRecReg().Emphone = m.emphone.Truncate(50); } } } if (isNew) { if (keys.Contains("campusid")) { if (m.campusid > 0) { UpdateField(psb, p, "CampusId", m.campusid); } } } if (m.AskChurch) { if (keys.Contains("activeother")) { if (m.activeother.ToBool() != rr.ActiveInAnotherChurch) { p.SetRecReg().ActiveInAnotherChurch = m.activeother.ToBool(); } } } if (m.AskChurchName) { if (keys.Contains("churchname")) { UpdateField(psb, p, "OtherPreviousChurch", Trim(m.churchname)); } } p.LogChanges(DbUtil.Db, psb); p.Family.LogChanges(DbUtil.Db, fsb, p.PeopleId, Util.UserPeopleId ?? 0); DbUtil.Db.SubmitChanges(); if (DbUtil.Db.Setting("NotifyCheckinChanges", "true").ToBool() && (psb.Count > 0 || fsb.Count > 0)) { var sb = new StringBuilder(); foreach (var c in psb) { sb.AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>\n", c.Field, c.Before, c.After); } foreach (var c in fsb) { sb.AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>\n", c.Field, c.Before, c.After); } var np = DbUtil.Db.GetNewPeopleManagers(); if (np != null) { DbUtil.Db.EmailRedacted(p.FromEmail, np, "Basic Person Info Changed during checkin on " + Util.Host, $@" <p><a href=""{DbUtil.Db.ServerLink("/Person2/" + p.PeopleId)}"">{Util.UserName} ({p.PeopleId})</a> changed the following information for {p.PreferredName} ({p.LastName}):</p> <table>{sb}</table>"); } } }
internal void ValidateModelForNew(ModelStateDictionary ModelState, bool checkaddress) { if (!first.HasValue()) { ModelState.AddModelError("name", "first name required"); } if (!last.HasValue()) { ModelState.AddModelError("name", "last name required"); } if (!birthday.HasValue && dob.NotEqual("na")) { ModelState.AddModelError("dob", "valid birthday (or \"na\")"); } var d = phone.GetDigits().Length; if (d != 7 && d < 10 && phone.NotEqual("na")) { ModelState.AddModelError("phone", "7 or 10+ digits (or \"na\")"); } int count = 0; PeopleSearchModel.FindPerson(first, last, birthday ?? DateTime.MinValue, string.Empty, phone.GetDigits(), out count); if (count > 0) { ModelState.AddModelError("name", "name/dob already exists in db"); } if (!Util.ValidEmail(email) && email.NotEqual("na")) { ModelState.AddModelError("email", "valid email address (or \"na\")"); } if (gender == 99) { ModelState.AddModelError("gender", "specify gender"); } if (marital == 99) { ModelState.AddModelError("marital", "specify marital status"); } if (checkaddress) { if (!address.HasValue()) { ModelState.AddModelError("address", "address required (or \"na\")"); } var addrok = false; if (city.HasValue() && state.HasValue()) { addrok = true; } if (zip.HasValue()) { addrok = true; } if (city.Equal("na") && state.Equal("na") && zip.Equal("na")) { addrok = true; } if (!addrok) { ModelState.AddModelError("zip", "city/state required or zip required (or \"na\" in all)"); } if (ModelState.IsValid && address.NotEqual("na") && city.NotEqual("na") && state.NotEqual("na") && (country.Equal("United States") || !country.HasValue())) { var r = AddressVerify.LookupAddress(address, address2, city, state, zip); if (r.Line1 != "error") { if (!r.found) { ModelState.AddModelError("zip", r.address + ", if your address will not validate, change the country to 'USA, Not Validated'"); return; } if (r.Line1 != address) { ModelState.AddModelError("address", "address changed from '{0}'".Fmt(address)); address = r.Line1; } if (r.Line2 != (address2 ?? "")) { ModelState.AddModelError("address2", "address2 changed from '{0}'".Fmt(address2)); address2 = r.Line2; } if (r.City != (city ?? "")) { ModelState.AddModelError("city", "city changed from '{0}'".Fmt(city)); city = r.City; } if (r.State != (state ?? "")) { ModelState.AddModelError("state", "state changed from '{0}'".Fmt(state)); state = r.State; } if (r.Zip != (zip ?? "")) { ModelState.AddModelError("zip", "zip changed from '{0}'".Fmt(zip)); zip = r.Zip; } } } } }