Exemplo n.º 1
0
        // Main page
        public ActionResult Index(int? id, bool? testing, int? o, int? d, string email, bool? nologin, bool? login, string registertag, bool? showfamily)
        {
            #if DEBUG
            var om = DbUtil.Db.OrganizationMembers.SingleOrDefault(mm => mm.OrganizationId == 89469 && mm.PeopleId == 828612);
            if (om != null)
            {
                om.Drop(DbUtil.Db, false);
                DbUtil.Db.SubmitChanges();
            }
            #endif
            if (DbUtil.Db.Roles.Any(rr => rr.RoleName == "disabled"))
                return Content("Site is disabled for maintenance, check back later");
            Util.NoCache(Response);
            if (!id.HasValue)
                return Content("no organization");
            var m = new OnlineRegModel { orgid = id };
            if (m.org == null && m.masterorg == null)
                return Content("invalid registration");

            if (m.masterorg != null)
            {
                if (!OnlineRegModel.UserSelectClasses(m.masterorg).Any())
                    return Content("no classes available on this org");
            }
            else if (m.org != null)
            {
                if ((m.org.RegistrationTypeId ?? 0) == RegistrationTypeCode.None)
                    return Content("no registration allowed on this org");
            }
            m.URL = Request.Url.OriginalString;

            SetHeaders(m);

            #if DEBUG
            m.username = "******";
            m.testing = true;
            #else
            m.testing = testing;
            #endif
            if (Util.ValidEmail(email) || login != true)
                m.nologin = true;

            if (m.nologin)
                m.CreateList();
            else
                m.List = new List<OnlineRegPersonModel>();

            if (Util.ValidEmail(email))
                m.List[0].email = email;

            var pid = 0;
            if (registertag.HasValue())
            {
                var guid = registertag.ToGuid();
                if (guid == null)
                    return Content("invalid link");
                var ot = DbUtil.Db.OneTimeLinks.SingleOrDefault(oo => oo.Id == guid.Value);
                if (ot == null)
                    return Content("invalid link");
            #if DEBUG
            #else
                if (ot.Used)
                    return Content("link used");
            #endif
                if (ot.Expires.HasValue && ot.Expires < DateTime.Now)
                    return Content("link expired");
                var a = ot.Querystring.Split(',');
                pid = a[1].ToInt();
                m.registertag = registertag;
            }
            else if (User.Identity.IsAuthenticated)
            {
                pid = Util.UserPeopleId ?? 0;
            }

            if (pid > 0)
            {
                //m.List = new List<OnlineRegPersonModel>();
                m.UserPeopleId = pid;
                OnlineRegPersonModel p = null;
                if (showfamily != true)
                {
                    p = m.LoadExistingPerson(pid, 0);
                    p.ValidateModelForFind(ModelState, m);
                    p.LoggedIn = true;
                    if (m.masterorg == null)
                    {
                        if (m.List.Count == 0)
                            m.List.Add(p);
                        else
                            m.List[0] = p;
                    }
                }
                if (!ModelState.IsValid)
                    return View(m);

                if (m.masterorg != null && m.masterorg.RegistrationTypeId == RegistrationTypeCode.ManageSubscriptions2)
                {
                    TempData["ms"] = m.UserPeopleId;
                    return Redirect("/OnlineReg/ManageSubscriptions/{0}".Fmt(m.masterorgid));
                }
                if (m.org != null && m.org.RegistrationTypeId == RegistrationTypeCode.ManageGiving)
                {
                    TempData["mg"] = m.UserPeopleId;
                    return Redirect("/OnlineReg/ManageGiving/{0}".Fmt(m.orgid));
                }
                if (m.org != null && m.org.RegistrationTypeId == RegistrationTypeCode.OnlinePledge)
                {
                    TempData["mp"] = m.UserPeopleId;
                    return Redirect("/OnlineReg/ManagePledge/{0}".Fmt(m.orgid));
                }
                if (m.org != null && m.org.RegistrationTypeId == RegistrationTypeCode.ChooseVolunteerTimes)
                {
                    TempData["ps"] = m.UserPeopleId;
                    return Redirect("/OnlineReg/ManageVolunteer/{0}".Fmt(m.orgid));
                }
                if (showfamily != true && p.org != null && p.Found == true)
                {
                    p.IsFilled = p.org.OrganizationMembers.Count() >= p.org.Limit;
                    if (p.IsFilled)
                        ModelState.AddModelError(m.GetNameFor(mm => mm.List[0].Found), "Sorry, but registration is closed.");
                    if (p.Found == true)
                        p.FillPriorInfo();
                    CheckSetFee(m, p);
                    m.History.Add("index, pid={0}, !showfamily, p.org, found=true".Fmt(pid));
                    return View(m);
                }
                m.History.Add("index, pid=" + pid);
                return View(m);
            }
            m.History.Add("index");
            return View(m);
        }
Exemplo n.º 2
0
 public ActionResult Register(int id, OnlineRegModel m)
 {
     m.History.Add("Register");
     int index = m.List.Count - 1;
     if (m.List[index].classid.HasValue)
         m.classid = m.List[index].classid;
     var p = m.LoadExistingPerson(id, index);
     p.ValidateModelForFind(ModelState, m, selectfromfamily: true);
     if (!ModelState.IsValid)
         return FlowList(m, "Register");
     m.List[index] = p;
     if (p.ManageSubscriptions() && p.Found == true)
     {
         //p.OtherOK = true;
         return FlowList(m, "Register");
     }
     if (p.org != null && p.Found == true)
     {
         p.IsFilled = p.org.OrganizationMembers.Count() >= p.org.Limit;
         if (p.IsFilled)
             ModelState.AddModelError(m.GetNameFor(mm => mm.List[m.List.IndexOf(p)].Found), "Sorry, but registration is closed.");
         if (p.Found == true)
             p.FillPriorInfo();
         //if (!p.AnyOtherInfo())
         //p.OtherOK = true;
         return FlowList(m, "Register");
     }
     if (p.ShowDisplay() && p.org != null && p.ComputesOrganizationByAge())
         p.classid = p.org.OrganizationId;
     return FlowList(m, "Register");
 }
Exemplo n.º 3
0
        public ActionResult Index(int? id, bool? testing, string email, bool? nologin, bool? login, string registertag, bool? showfamily, int? goerid, int? gsid)
        {
            //            if (Util.IsDebug())
            //            {
            //                var q = from om in DbUtil.Db.OrganizationMembers
            //                    where om.OrganizationId == 89924
            //                    select om;
            //                foreach (var om in q)
            //                    om.Drop(DbUtil.Db, addToHistory: false);
            //                    //        DbUtil.Db.PurgePerson(om.PeopleId);
            //                var dr = DbUtil.Db.People.SingleOrDefault(mm => mm.Name == "David Roll");
            //                if(dr != null)
            //                    foreach(var mm in dr.Family.People)
            //                        if(mm.PeopleId != dr.PeopleId)
            //                            DbUtil.Db.PurgePerson(mm.PeopleId);
            //                DbUtil.Db.SubmitChanges();
            //            }
            if (DbUtil.Db.Roles.Any(rr => rr.RoleName == "disabled"))
                return Content("Site is disabled for maintenance, check back later");
            Util.NoCache(Response);
            if (!id.HasValue)
                return Content("no organization");
            var m = new OnlineRegModel { Orgid = id };
            if (m.org == null && m.masterorg == null)
                return Content("invalid registration");

            if (m.masterorg != null)
            {
                if (!OnlineRegModel.UserSelectClasses(m.masterorg).Any())
                    return Content("no classes available on this org");
            }
            else if (m.org != null)
            {
                if ((m.org.RegistrationTypeId ?? 0) == RegistrationTypeCode.None)
                    return Content("no registration allowed on this org");
                if (m.org.IsMissionTrip == true)
                {
                    if (gsid.HasValue)
                    {
                        var gs = DbUtil.Db.GoerSupporters.Single(gg => gg.Id == gsid);
                        m.GoerId = gs.GoerId;
                        m.GoerSupporterId = gsid;
                    }
                    else if (goerid.HasValue)
                    {
                        m.GoerId = goerid;
                    }
                }
            }
            m.URL = Request.Url.OriginalString;

            SetHeaders(m);

            m.testing = testing == true || DbUtil.Db.Setting("OnlineRegTesting", Util.IsDebug() ? "true" : "false").ToBool();

            if (Util.ValidEmail(email) || login != true)
                m.nologin = true;

            if (m.nologin)
                m.CreateList();
            else
                m.List = new List<OnlineRegPersonModel>();

            if (Util.ValidEmail(email))
                m.List[0].EmailAddress = email;

            var pid = 0;
            if (registertag.HasValue())
            {
                var guid = registertag.ToGuid();
                if (guid == null)
                    return Content("invalid link");
                var ot = DbUtil.Db.OneTimeLinks.SingleOrDefault(oo => oo.Id == guid.Value);
                if (ot == null)
                    return Content("invalid link");
            #if DEBUG
            #else
                if (ot.Used)
                    return Content("link used");
            #endif
                if (ot.Expires.HasValue && ot.Expires < DateTime.Now)
                    return Content("link expired");
                var a = ot.Querystring.Split(',');
                pid = a[1].ToInt();
                m.registertag = registertag;
            }
            else if (User.Identity.IsAuthenticated)
            {
                pid = Util.UserPeopleId ?? 0;
            }

            if (pid > 0)
            {
                //m.List = new List<OnlineRegPersonModel>();
                m.UserPeopleId = pid;
                OnlineRegPersonModel p = null;
                if (showfamily != true)
                {
                    p = m.LoadExistingPerson(pid, 0);
                    p.ValidateModelForFind(ModelState, m);
                    p.LoggedIn = true;
                    if (m.masterorg == null)
                    {
                        if (m.List.Count == 0)
                            m.List.Add(p);
                        else
                            m.List[0] = p;
                    }
                }
                if (!ModelState.IsValid)
                    return View(m);

                if (m.masterorg != null && m.masterorg.RegistrationTypeId == RegistrationTypeCode.ManageSubscriptions2)
                {
                    TempData["ms"] = m.UserPeopleId;
                    return Redirect("/OnlineReg/ManageSubscriptions/{0}".Fmt(m.masterorgid));
                }
                if (m.org != null && m.org.RegistrationTypeId == RegistrationTypeCode.ManageGiving)
                {
                    TempData["mg"] = m.UserPeopleId;
                    return ManageGiving(m.Orgid.ToString(), m.testing);
                    //return Redirect("/OnlineReg/ManageGiving/{0}".Fmt(m.Orgid));
                }
                if (m.org != null && m.org.RegistrationTypeId == RegistrationTypeCode.OnlinePledge)
                {
                    TempData["mp"] = m.UserPeopleId;
                    return Redirect("/OnlineReg/ManagePledge/{0}".Fmt(m.Orgid));
                }
                if (m.org != null && m.org.RegistrationTypeId == RegistrationTypeCode.ChooseVolunteerTimes)
                {
                    TempData["ps"] = m.UserPeopleId;
                    return Redirect("/OnlineReg/ManageVolunteer/{0}".Fmt(m.Orgid));
                }
                if (showfamily != true && p.org != null && p.Found == true)
                {
                    p.IsFilled = p.org.RegLimitCount(DbUtil.Db) >= p.org.Limit;
                    if (p.IsFilled)
                        ModelState.AddModelError(m.GetNameFor(mm => mm.List[0].Found), "Sorry, but registration is closed.");
                    if (p.Found == true)
                        p.FillPriorInfo();
                    CheckSetFee(m, p);
                    m.History.Add("index, pid={0}, !showfamily, p.org, found=true".Fmt(pid));
                    return View(m);
                }
                m.History.Add("index, pid=" + pid);
                return View(m);
            }
            m.History.Add("index");
            return View(m);
        }