Beispiel #1
0
        public string HandleRequest(string sPostData, SystemObject Sys)
        {
            // Deserialize the strongly typed javascript object back to c# object
            WebObj g = new WebObj();

            g = JsonConvert.DeserializeObject <WebObj>(sPostData);
            if (g.action == "postdiv" || g.action == "formload")
            {
                // Now we store the uploaded values on the business objects
                string[] vRows = g.body.Split(new string[] { "[ROW]" }, StringSplitOptions.None);
                for (int i = 0; i < vRows.Length - 1; i++)
                {
                    string[] vCols      = vRows[i].Split(new string[] { "[COL]" }, StringSplitOptions.None);
                    string   sName      = vCols[0];
                    string   sValue     = vCols[1];
                    string   sUSGDID    = vCols[2];
                    string   sUSGDVALUE = vCols[3];
                    string   sChecked   = vCols[4];
                    WebObj   fnew       = new WebObj();
                    fnew.value   = sValue;
                    fnew.name    = sName;
                    fnew.usgdid  = sUSGDID;
                    fnew.Checked = sChecked;
                    //Verify divname == sectioname
                    Sys.UpdateObject(g.divname, ref fnew);
                }
                // and we reply with a replacement div for this section only
                if (g.eventname == "sortevent" || g.eventname == "dropevent")
                {
                    string sPost = g.guid;
                    if (sPost.Contains("[SORTABLE]"))
                    {
                        sPost = sPost.Replace("[SORTABLE]", "");
                        string[] vRows2   = sPost.Split(new string[] { "[ROWSET]" }, StringSplitOptions.None);
                        string   sSection = vRows2[0];
                        string   sName    = vRows2[1];
                        string   sLeft    = vRows2[2];
                        string   sRight   = vRows2[3];
                        // Reconstitute the Lists

                        string[] vLookups      = sLeft.Split(new string[] { "[ROW]" }, StringSplitOptions.None);
                        string[] vLookupsRight = sRight.Split(new string[] { "[ROW]" }, StringSplitOptions.None);

                        List <SystemObject.LookupValue> lLVLeft  = new List <SystemObject.LookupValue>();
                        List <SystemObject.LookupValue> lLVRight = new List <SystemObject.LookupValue>();
                        lLVLeft  = SortableListToLookupValueList(vLookups);
                        lLVRight = SortableListToLookupValueList(vLookupsRight);
                        WebObj oLeft = new WebObj();
                        oLeft.name         = sName;
                        oLeft.divname      = sSection;
                        oLeft.LookupValues = lLVLeft;
                        WebObj oRight = new WebObj();
                        oRight.name         = sName + "_2";
                        oRight.divname      = sSection;
                        oRight.LookupValues = lLVRight;

                        Sys.UpdateObject(sSection, ref oLeft);
                        Sys.UpdateObject(sSection, ref oRight);
                    }
                }

                if (g.eventname == "buttonevent" || true)
                {
                    //Raise the event in the class, then return with some data.
                    Sys.LastWebObject = g;
                    var type1 = Type.GetType(g.classname);
                    if (type1 == null)
                    {
                        // Give the user the Nice Dialog showing that the object is null
                        WebReply wr1 = GenericException(Sys, "Web Class Not Found: " + g.classname, "Web Class Not Found");
                        g.divname    = "divErrors";
                        g.body       = wr1.Packages[0].HTML;
                        g.javascript = wr1.Packages[0].Javascript;
                        string myJason = JsonConvert.SerializeObject(g);
                        return(myJason);
                    }
                    if (g.guid == "")
                    {
                        string[] vCol = g.body.Split(new string[] { "[COL]" }, StringSplitOptions.None);
                        if (vCol.Length > 0)
                        {
                            //g.guid = vCol[0];
                        }
                        g.guid = "0";
                    }
                    if (g.eventname == "expand")
                    {
                        bool Expanded = !(Sys.GetObjectValue(g.divname, "ExpandableSection" + g.classname + g.methodname) == "UNEXPANDED" ? false : true);
                        Sys.SetObjectValue(g.divname, "ExpandableSection" + g.classname + g.methodname, Expanded ? "EXPANDED" : "UNEXPANDED");
                    }
                    else if (g.eventname.ToLower() == "orderbyclick")
                    {
                        //Toggle the Order by
                        string sOrderByClass = Sys.GetObjectValue(g.divname, "OrderByClass" + Sys.LastWebObject.guid);
                        string desc          = "";
                        if (sOrderByClass == "up")
                        {
                            sOrderByClass = "down";
                        }
                        else
                        {
                            sOrderByClass = "up";
                            desc          = " desc";
                        }
                        Sys.SetObjectValue(g.divname, "OrderByClass" + Sys.LastWebObject.guid, sOrderByClass);
                        g.orderby = Sys.LastWebObject.guid + " " + desc;
                    }
                    try
                    {
                        // RAISE EVENT INTO PROGRAM

                        type1 = Type.GetType(g.classname);
                        object     myObject1   = Activator.CreateInstance(type1, Sys);
                        MethodInfo methodInfo1 = type1.GetMethod(g.methodname);
                        WebRequest wRequest    = new WebRequest();
                        wRequest.eventName = g.eventname;
                        wRequest.action    = g.action;
                        object[]      parametersArray = new object[] { wRequest };
                        WebReply      wr           = (WebReply)methodInfo1.Invoke(myObject1, null);
                        List <WebObj> woReplies    = new List <WebObj>();
                        bool          bClearScreen = false;
                        if (g.eventname.ToLower() == "formevent")
                        {
                            bClearScreen = true;
                        }
                        int iInstanceCount = 0;
                        int iPackageCount  = wr.Packages.Count;
                        foreach (WebReplyPackage wrp in wr.Packages)
                        {
                            WebObj woInstance = new WebObj();
                            woInstance.ClearScreen = wrp.ClearScreen;
                            woInstance.SingleTable = wrp.SingleUITable;
                            iInstanceCount++;
                            if (iInstanceCount == 1 && bClearScreen)
                            {
                                woInstance.ClearScreen = true;
                            }
                            woInstance.body       = wrp.HTML;
                            woInstance.javascript = wrp.Javascript;
                            woInstance.doappend   = wrp.doappend;
                            // If we are clearing the screen, add a breadcrumb
                            if (woInstance.ClearScreen)
                            {
                                Sys.AddBreadcrumb(wrp.SectionName, g.classname, g.methodname, true);
                                Sys.SetObjectValue("", "ApplicationMessage", wrp.SectionName);
                            }
                            woInstance.breadcrumb         = Sys.GetBreadcrumbTrailHTML();
                            woInstance.breadcrumbdiv      = "divbreadcrumb";
                            woInstance.ApplicationMessage = Sys.GetObjectValue("", "ApplicationMessage");
                            woInstance.divname            = wrp.SectionName;
                            woInstance.action             = "refresh";
                            woReplies.Add(woInstance);
                        }
                        string myJason1 = JsonConvert.SerializeObject(woReplies);
                        return(myJason1);
                    }
                    catch (Exception ex)
                    {
                        WebReply wr1 = GenericException(Sys, "Web Class Not Found: " + g.classname, "Web Class Not Found");
                        g.divname    = "divErrors";
                        g.body       = wr1.Packages[0].HTML;
                        g.javascript = wr1.Packages[0].Javascript;
                        string myJason = JsonConvert.SerializeObject(g);
                        return(myJason);
                    }
                }
            }
            return("UNKNOWN_REQUEST");
        }
Beispiel #2
0
        public override void HandleRequest(System.Web.HttpContext context)
        {
            // Deserialize the strongly typed javascript object back to c# object
            WebObj g = new WebObj();

            g = JsonConvert.DeserializeObject <WebObj>(sPostData);
            SystemObject Sys = (SystemObject)HttpContext.Current.Session["Sys"];

            if (g.action == "postdiv" || g.action == "formload")
            {
                // Now we store the uploaded values on the business objects
                string[] vRows = g.body.Split(new string[] { "[ROW]" }, StringSplitOptions.None);
                for (int i = 0; i < vRows.Length - 1; i++)
                {
                    string[] vCols      = vRows[i].Split(new string[] { "[COL]" }, StringSplitOptions.None);
                    string   sName      = vCols[0];
                    string   sValue     = vCols[1];
                    string   sUSGDID    = vCols[2];
                    string   sUSGDVALUE = vCols[3];
                    WebObj   fnew       = new WebObj();
                    fnew.value  = sValue;
                    fnew.name   = sName;
                    fnew.usgdid = sUSGDID;
                    //Verify divname == sectioname
                    Sys.UpdateObject(g.divname, ref fnew);
                }
                // and we reply with a replacement div for this section only
                if (g.eventname == "sortevent" || g.eventname == "dropevent")
                {
                    string sPost = g.guid;
                    if (g.eventname == "dropevent")
                    {
                        // Get the guid of the section
                        string    sSection      = Sys.ExtractXML(sPost, "[DROPPABLE]", "[/DROPPABLE]");
                        string    sLastCoord    = "";
                        string    sCurrCoord    = "";
                        string    sql           = "Select * FROM SECTION WHERE Name='" + sSection + "' and deleted=0";
                        DataTable dt2           = Sys._data.GetDataTable(sql);
                        string    sSectionGuid  = dt2.Rows[0]["id"].ToString();
                        string    sCurrFields   = dt2.Rows[0]["Fields"].ToString();
                        string    sData         = Sys.ExtractXML(sPost, "[DATA]", "[/DATA]");
                        string[]  vRows2        = sData.Split(new string[] { "[ROW]" }, StringSplitOptions.None);
                        string    sCols         = "";
                        int       iCoordCounter = 0;

                        for (int i = 0; i < vRows2.Length - 1; i++)
                        {
                            string   sRow  = vRows2[i];
                            string[] vCols = sRow.Split(new string[] { "[COL]" }, StringSplitOptions.None);

                            string sName    = vCols[4];
                            string sCaption = vCols[3];
                            bool   bIsCoord = false;

                            if (sName.Contains("coords"))
                            {
                                bIsCoord   = true;
                                sCurrCoord = sName;
                                if (sCurrCoord != sLastCoord)
                                {
                                    sLastCoord = sName;
                                }
                                iCoordCounter++;
                            }

                            if (sName.Length > 0 && !bIsCoord)
                            {
                                sCols        += sName + ",";
                                iCoordCounter = 0;
                            }

                            if (iCoordCounter > 1)
                            {
                                sCols += ",";
                            }
                        }
                        string[] vF            = sCurrFields.Split(new string[] { "," }, StringSplitOptions.None);
                        string[] vTargetFields = sCols.Split(new string[] { "," }, StringSplitOptions.None);
                        bool     bFail         = false;
                        for (int iSource = 0; iSource < vF.Length; iSource++)
                        {
                            if (vF[iSource].Length > 0)
                            {
                                bool bFound = false;
                                for (int iTarget = 0; iTarget < vTargetFields.Length; iTarget++)
                                {
                                    if (vTargetFields[iTarget].Length > 0)
                                    {
                                        if (vTargetFields[iTarget].ToLower() == vF[iSource].ToLower())
                                        {
                                            bFound = true;
                                            break;
                                        }
                                    }
                                }
                                if (!bFound)
                                {
                                    bFail = true;
                                }
                            }
                        }

                        if (!bFail)
                        {
                            sCols = sCols.Substring(0, sCols.Length - 1);
                            string sSql = "Update Section set Fields='" + sCols + "' where id = '" + sSectionGuid + "'";
                            Sys._data.Exec(sSql);
                        }
                    }
                    else if (sPost.Contains("[SORTABLE]"))
                    {
                        sPost = sPost.Replace("[SORTABLE]", "");

                        string[] vRows2   = sPost.Split(new string[] { "[ROWSET]" }, StringSplitOptions.None);
                        string   sSection = vRows2[0];
                        string   sName    = vRows2[1];
                        string   sLeft    = vRows2[2];
                        string   sRight   = vRows2[3];
                        // Reconstitute the Lists

                        string[] vLookups      = sLeft.Split(new string[] { "[ROW]" }, StringSplitOptions.None);
                        string[] vLookupsRight = sRight.Split(new string[] { "[ROW]" }, StringSplitOptions.None);

                        List <SystemObject.LookupValue> lLVLeft  = new List <SystemObject.LookupValue>();
                        List <SystemObject.LookupValue> lLVRight = new List <SystemObject.LookupValue>();
                        lLVLeft  = SortableListToLookupValueList(vLookups);
                        lLVRight = SortableListToLookupValueList(vLookupsRight);

                        WebObj oLeft = new WebObj();
                        oLeft.name         = sName;
                        oLeft.divname      = sSection;
                        oLeft.LookupValues = lLVLeft;

                        WebObj oRight = new WebObj();
                        oRight.name         = sName + "_2";
                        oRight.divname      = sSection;
                        oRight.LookupValues = lLVRight;

                        Sys.UpdateObject(sSection, ref oLeft);
                        Sys.UpdateObject(sSection, ref oRight);
                    }
                }

                if (g.eventname == "buttonevent" || true)
                {
                    //Raise the event in the class, then return with some data.
                    Sys.LastWebObject = g;
                    var type1 = Type.GetType(g.classname);
                    if (type1 == null)
                    {
                        // Give the user the Nice Dialog showing that the object is null
                        WebReply wr1 = GenericException(Sys, "Web Class Not Found: " + g.classname, "Web Class Not Found");
                        g.divname    = "divErrors";
                        g.body       = wr1.Packages[0].HTML;
                        g.javascript = wr1.Packages[0].Javascript;
                        string myJason = JsonConvert.SerializeObject(g);
                        context.Response.Write(myJason);
                        return;
                    }
                    if (Sys.Organization.ToString() == "00000000-0000-0000-0000-000000000000")
                    {
                        //Session has expired
                        //throw new Exception("Session has expired."); (Deprecated)
                    }
                    if (g.eventname == "expand")
                    {
                        bool Expanded = !(Sys.GetObjectValue(g.divname, "ExpandableSection" + g.classname + g.methodname) == "UNEXPANDED" ? false : true);
                        Sys.SetObjectValue(g.divname, "ExpandableSection" + g.classname + g.methodname, Expanded ? "EXPANDED" : "UNEXPANDED");
                    }
                    else if (g.eventname.ToLower() == "orderbyclick")
                    {
                        //Toggle the Order by
                        string sOrderByClass = Sys.GetObjectValue(g.divname, "OrderByClass" + Sys.LastWebObject.guid);
                        string desc          = "";
                        if (sOrderByClass == "up")
                        {
                            sOrderByClass = "down";
                        }
                        else
                        {
                            sOrderByClass = "up";
                            desc          = " desc";
                        }
                        Sys.SetObjectValue(g.divname, "OrderByClass" + Sys.LastWebObject.guid, sOrderByClass);
                        g.orderby = Sys.LastWebObject.guid + " " + desc;
                    }
                    try
                    {
                        if (Sys.Organization.ToString() == "00000000-0000-0000-0000-000000000000")
                        {
                            // User is not logged in ( If the user has a valid session, use it first ):
                            string sTheUser = clsStaticHelper.GetCookie("username");
                            string sThePass = clsStaticHelper.GetCookie("password");
                            if (sTheUser != "" && sThePass != "")
                            {
                                Login l            = new Login(Sys);
                                bool  bMyDepersist = l.VerifyUser(sTheUser, sThePass, ref Sys, false);
                                if (bMyDepersist)
                                {
                                    //g.classname = "BiblePayPool2018.Home";
                                    //g.methodname = "Announce";
                                    //goto redirect2;
                                }
                            }
                        }
                    }
                    catch (Exception ex5)
                    {
                    }
                    try
                    {
                        //Store the event information in Sys, so the receiver can access it (before invoking):
                        if (Sys.Organization.ToString() == "00000000-0000-0000-0000-000000000000" && g.classname != "BiblePayPool2018.Login")
                        {
                            if (System.Diagnostics.Debugger.IsAttached && false)
                            {
                                // instantiate the user based on the debug user guid.
                                Login l = new Login(Sys);
                            }
                            if (HttpContext.Current.Request.Url.ToString().ToUpper().Contains("ACCOUNTABILITY"))
                            {
                                Login l     = new Login(Sys);
                                bool  bAuth = l.VerifyUser("guest", "guest", ref Sys, false);
                                // Start at the expense View Page when coming in from the Wallet accountability button
                                g.classname  = "BiblePayPool2018.Home";
                                g.methodname = "ExpenseList";
                            }

                            g.classname  = "BiblePayPool2018.Login";
                            g.methodname = "LoginSection";
                        }

                        if (Sys.Username == "" && g.classname != "BiblePayPool2018.Login")
                        {
                            // Redirect to Login Page
                            g.classname  = "BiblePayPool2018.Login";
                            g.methodname = "LoginSection";
                        }

                        type1 = Type.GetType(g.classname);
                        object     myObject1   = Activator.CreateInstance(type1, Sys);
                        MethodInfo methodInfo1 = type1.GetMethod(g.methodname);
                        WebRequest wRequest    = new WebRequest();
                        wRequest.eventName = g.eventname;
                        wRequest.action    = g.action;
                        object[]      parametersArray = new object[] { wRequest };
                        WebReply      wr           = (WebReply)methodInfo1.Invoke(myObject1, null);
                        List <WebObj> woReplies    = new List <WebObj>();
                        bool          bClearScreen = false;
                        if (g.eventname.ToLower() == "formevent")
                        {
                            bClearScreen = true;
                        }
                        int iInstanceCount = 0;
                        int iPackageCount  = wr.Packages.Count;
                        foreach (WebReplyPackage wrp in wr.Packages)
                        {
                            WebObj woInstance = new WebObj();
                            woInstance.ClearScreen = wrp.ClearScreen;
                            woInstance.SingleTable = wrp.SingleUITable;
                            iInstanceCount++;
                            if (iInstanceCount == 1 && bClearScreen)
                            {
                                woInstance.ClearScreen = true;
                            }
                            woInstance.body       = wrp.HTML;
                            woInstance.javascript = wrp.Javascript;
                            woInstance.doappend   = wrp.doappend;
                            // If we are clearing the screen, add a breadcrumb
                            if (woInstance.ClearScreen)
                            {
                                Sys.AddBreadcrumb(wrp.SectionName, g.classname, g.methodname, true);
                                Sys.SetObjectValue("", "ApplicationMessage", wrp.SectionName);
                            }
                            woInstance.breadcrumb         = Sys.GetBreadcrumbTrailHTML();
                            woInstance.breadcrumbdiv      = "divbreadcrumb";
                            woInstance.ApplicationMessage = Sys.GetObjectValue("", "ApplicationMessage");
                            woInstance.divname            = wrp.SectionName;
                            woInstance.action             = "refresh";
                            woReplies.Add(woInstance);
                        }
                        string myJason1 = JsonConvert.SerializeObject(woReplies);
                        context.Response.Write(myJason1);
                    }
                    catch (Exception ex)
                    {
                        WebReply wr1 = GenericException(Sys, "Web Class Not Found: " + g.classname, "Web Class Not Found");
                        g.divname    = "divErrors";
                        g.body       = wr1.Packages[0].HTML;
                        g.javascript = wr1.Packages[0].Javascript;
                        string myJason = JsonConvert.SerializeObject(g);
                        context.Response.Write(myJason);
                    }
                }
            }
        }