Esempio n. 1
0
    public static string RunAll(string username, string path, string sessionID)
    {
        string resultMessage = "";
        var    resultArray   = new List <string[]>();

        if (isCalculating(path))
        {
            resultMessage = "Calculations are still in process from the previous run, please wait";
        }
        else
        {
            int ret;

            DbUse.CreateRunFile(path, username);
            ClassF classE1_1 = new ClassF(path);
            classE1_1.Open();

            try
            {
                int totalCalc   = 0;
                int currentCalc = -1;
                classE1_1.username = username;
                classE1_1.SetBasicModelInfo();
                classE1_1.calc_return = 0;     //0 - none, 1 labor, 2 eq over util, 4 warnings 8 errors
                ADODB.Recordset recNeedCalc = new ADODB.Recordset();
                //check if basecase needs recalc and add to totalCalc
                DbUse.open_ado_rec(classE1_1.globaldb, ref recNeedCalc, "SELECT * FROM zs0tblWhatIf WHERE zs0tblWhatIf.WID=0;");

                totalCalc++;
                bool recOpened = DbUse.OpenAdoRec(classE1_1.globaldb, recNeedCalc, "SELECT * FROM tblWhatIf WHERE FamilyID = 0 AND display = -1;");
                //bool recOpened = DbUse.OpenAdoRec(classE1_1.globaldb, recNeedCalc, "SELECT * FROM tblWhatIf;");

                while (!recNeedCalc.EOF)
                {
                    totalCalc++;
                    recNeedCalc.MoveNext();
                }
                DbUse.CloseAdoRec(recNeedCalc);



                DbUse.RunMysql("INSERT INTO usercalc (id) SELECT userlist.id FROM userlist WHERE userlist.sessionid = '" + sessionID + "';");
                DbUse.RunMysql("UPDATE usercalc INNER JOIN userlist ON usercalc.id = userlist.id SET total = " + totalCalc + ", calc = " + currentCalc + ", lastCheck = " + DateTime.Now.Ticks + ", cancel = 0, timePerCalc = 100000000 WHERE userlist.sessionid = '" + sessionID + "';");


                classE1_1.global_runalldone  = false;
                classE1_1.global_initwid     = classE1_1.glngwid;
                classE1_1.errorMessageGlobal = "";
                while (classE1_1.global_runalldone == false)
                {
                    classE1_1.calc_return = 0;
                    //classE1_1.Run_All_ReCalc(1);
                    resultArray = classE1_1.CalculateResults(1, sessionID);
                }

                if (classE1_1.global_initwid != classE1_1.glngwid)
                {
                    if (classE1_1.global_initwid != 0)
                    {
                        classE1_1.LoadBaseCase();
                        ret = classE1_1.LoadWhatIf(classE1_1.global_initwid);
                    }
                    else
                    {
                        classE1_1.LoadBaseCase();
                    }
                }
                ;

                resultMessage = CalcClass.GetErrorMessage(classE1_1);

                if (resultMessage.Trim().Equals(String.Empty))
                {
                    foreach (var result in resultArray)
                    {
                        if (result[4].Equals("true"))
                        {
                            resultMessage += "<span style='color:#27ae60;'>";
                        }
                        else
                        {
                            resultMessage += "<span style='color:#c0392b;'>";
                        }
                        resultMessage += result[0] + ": ";
                        if (!String.IsNullOrEmpty(result[1]))
                        {
                            resultMessage += result[1];
                        }
                        if (!String.IsNullOrEmpty(result[2]))
                        {
                            resultMessage += result[2];
                        }
                        if (!String.IsNullOrEmpty(result[3]))
                        {
                            resultMessage += result[3];
                        }

                        resultMessage += "</span>";
                    }
                }


                //if (resultMessage.Trim().Equals(String.Empty))
                //{
                //    if ((classE1_1.calc_return & CalcClass.ERR_FLAG) > 0)
                //    {
                //        resultMessage = CalcClass.do_calc_msg(classE1_1.calc_return, 0);
                //    }
                //    else
                //    {
                //        resultMessage = CalcClass.do_calc_msg(classE1_1.calc_return, 1);
                //    }
                //}

                classE1_1.runsqlado("UPDATE zs0tblWhatif SET display = -1 WHERE WID = " + classE1_1.glngwid + ";");
            }
            catch (Exception)
            {
                resultMessage = "MPX internal error has occured";
            }
            classE1_1.Close();
            DbUse.RunMysql("DELETE usercalc.* FROM usercalc INNER JOIN userlist ON usercalc.id = userlist.id WHERE userlist.sessionid = '" + sessionID + "';");
            DbUse.DeleteRunFile(path, username);
        }



        return(resultMessage);
    }