Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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()));
                }
            }
        }
Esempio n. 7
0
        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()));
                }
            }
        }
Esempio n. 8
0
        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");
            }
        }
Esempio n. 9
0
        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;
        }
Esempio n. 11
0
        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));
            }
        }
Esempio n. 12
0
        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;
        }
Esempio n. 13
0
        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;
                        }
                    }
                }
            }
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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>");
                }
            }
        }
Esempio n. 17
0
        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;
                        }
                    }
                }
            }
        }