Exemplo n.º 1
0
        public void SAR()
        {
            SAR sar = new SAR();

            sar.Load(Directory.GetCurrentDirectory() + "\\table.csv");
            SingleDoubleSerie serie = sar.Calculate();

            Assert.IsNotNull(serie);
            Assert.IsTrue(serie.Values.Count > 0);
        }
Exemplo n.º 2
0
        public void SAR()
        {
            SAR sar = new SAR();

            sar.Load(OhlcList);
            SingleDoubleSerie serie = sar.Calculate();

            Assert.IsNotNull(serie);
            Assert.IsTrue(serie.Values.Count > 0);
        }
Exemplo n.º 3
0
        public void SAR()
        {
            SAR sar = new SAR();

            sar.Load(csvPath);
            SingleDoubleSerie serie = sar.Calculate();

            Assert.NotNull(serie);
            Assert.True(serie.Values.Count > 0);
        }
    private void SimulateGame(State currentState)
    {
        bool  gameOver = false;
        int   security = 0;
        State tmpState = currentState;

        do
        {
            ++security;
            SAR    newSar = new SAR();
            Intent chosenIntent;

            if (Random.Range(0.0f, 1.0f) < epsilon)
            {
                chosenIntent = GetRandomValidIntent(tmpState.currentGrid);
            }
            else
            {
                chosenIntent = GetBestIntent(tmpState);
            }

            if (ticTacToeController.GridIsEmpty(ticTacToeController.GetPositionFromIntent(chosenIntent), tmpState.currentGrid))
            {
                newSar.state = GetNextState(tmpState, chosenIntent);
            }
            else
            {
                tmpState.ticTacToePolicy = GetRandomValidIntent(tmpState.currentGrid);
                newSar.state             = GetNextState(tmpState, tmpState.ticTacToePolicy);
            }

            newSar.intent = newSar.state.ticTacToePolicy;
            if (ticTacToeController.CheckDiagonal(CellType.Circle, currentState.currentGrid) ||
                ticTacToeController.CheckVerticalRows(CellType.Circle, currentState.currentGrid) ||
                ticTacToeController.CheckHorizontalRows(CellType.Circle, currentState.currentGrid))
            {
                newSar.reward = 1;
                gameOver      = true;
            }
            else if (ticTacToeController.CheckDiagonal(CellType.Cross, currentState.currentGrid) ||
                     ticTacToeController.CheckVerticalRows(CellType.Cross, currentState.currentGrid) ||
                     ticTacToeController.CheckHorizontalRows(CellType.Cross, currentState.currentGrid))
            {
                newSar.reward = 0;
                gameOver      = true;
            }

            int count = 0;
            for (int i = 0; i < 3; ++i)
            {
                for (int j = 0; j < 3; ++j)
                {
                    if (!ticTacToeController.GridIsEmpty(new Vector3(i, .5f, j), currentState.currentGrid))
                    {
                        ++count;
                    }
                }
            }

            if (count == 9)
            {
                gameOver      = true;
                newSar.reward = 0;
            }

            _simulatedSARs.Add(newSar);

            /*if (newSar.reward >= 1000 || newSar.reward <= -500)
             * {
             *  gameOver = true;
             * }*/

            tmpState = newSar.state;
        } while (!gameOver && security < 100);
    }
Exemplo n.º 5
0
        public async Task <object> getSectionSaveDataForSAR()
        {
            DBConnector d = new DBConnector();

            if (!d.SQLConnect())
            {
                return(WebApiApplication.CONNECTDBERRSTRING);
            }
            SAR    result          = new SAR();
            string selectindicator = string.Format("select {0}, {1}, {2} " +
                                                   "from {3} " +
                                                   "where {4} = (select max({4}) from {3} where {4} <= {5}) order by {0} ",
                                                   Indicator.FieldName.INDICATOR_NUM, Indicator.FieldName.INDICATOR_NAME_T, Indicator.FieldName.INDICATOR_NAME_E,
                                                   Indicator.FieldName.TABLE_NAME,
                                                   Indicator.FieldName.ACA_YEAR, aca_year);

            string selectsubindicator = string.Format("select {0},{1},{2} " +
                                                      "from {3} " +
                                                      "where {4} = (select max({4}) from {3} where {4} <= {5}) order by {0},{1} ",
                                                      Sub_indicator.FieldName.INDICATOR_NUM, Sub_indicator.FieldName.SUB_INDICATOR_NUM, Sub_indicator.FieldName.SUB_INDICATOR_NAME,
                                                      Sub_indicator.FieldName.TABLE_NAME, Sub_indicator.FieldName.ACA_YEAR, aca_year);

            string selectsectionsave = string.Format("select {0},{1},{2},{3},{4},{5} " +
                                                     "from {6} " +
                                                     "where {7} = '{8}' and {9} = {10} order by {0},{1} ",
                                                     FieldName.INDICATOR_NUM, FieldName.SUB_INDICATOR_NUM, FieldName.DETAIL, FieldName.STRENGTH, FieldName.IMPROVE, FieldName.WEAKNESS,
                                                     FieldName.TABLE_NAME, FieldName.CURRI_ID, curri_id,
                                                     FieldName.ACA_YEAR, aca_year);

            string selectevidence = string.Format("select {0},{1},{2} " +
                                                  "from {3} " +
                                                  "where {4} = '{5}' and {6} = {7} order by {0},{1} ",
                                                  Evidence.FieldName.INDICATOR_NUM, Evidence.FieldName.EVIDENCE_REAL_CODE, Evidence.FieldName.EVIDENCE_NAME,
                                                  Evidence.FieldName.TABLE_NAME, Evidence.FieldName.CURRI_ID, curri_id,
                                                  Evidence.FieldName.ACA_YEAR, aca_year);

            string selectselfevaluation = string.Format("select {0},{1},{2} " +
                                                        "from {3} " +
                                                        "where {4} = '{5}' and {6} = {7} order by {0},{1} ",
                                                        Self_evaluation.FieldName.INDICATOR_NUM, Self_evaluation.FieldName.SUB_INDICATOR_NUM,
                                                        Self_evaluation.FieldName.EVALUATION_SCORE, Self_evaluation.FieldName.TABLE_NAME,
                                                        Self_evaluation.FieldName.CURRI_ID, curri_id, Self_evaluation.FieldName.ACA_YEAR, aca_year);


            d.iCommand.CommandText = string.Format("BEGIN {0} {1} {2} {3} {4} END", selectindicator, selectsubindicator, selectsectionsave, selectevidence, selectselfevaluation);
            try
            {
                System.Data.Common.DbDataReader res = await d.iCommand.ExecuteReaderAsync();

                do
                {
                    if (res.HasRows)
                    {
                        DataTable data = new DataTable();
                        data.Load(res);

                        //Case current resultset is indicator table
                        if (data.Columns.Contains("indicator_name_t"))
                        {
                            foreach (DataRow item in data.Rows)
                            {
                                string indicator_namet = item.ItemArray[data.Columns[Indicator.FieldName.INDICATOR_NAME_T].Ordinal].ToString();

                                //Use thai indicator name if it exists
                                if (indicator_namet != "")
                                {
                                    result.indicator_section_save_list.Add(new Indicator_with_section_save_list
                                    {
                                        indicator_num  = Convert.ToInt32(item.ItemArray[data.Columns[Indicator.FieldName.INDICATOR_NUM].Ordinal]),
                                        indicator_name = item.ItemArray[data.Columns[Indicator.FieldName.INDICATOR_NAME_T].Ordinal].ToString()
                                    });
                                }

                                //Otherwise use engish normally
                                else
                                {
                                    result.indicator_section_save_list.Add(new Indicator_with_section_save_list
                                    {
                                        indicator_num  = Convert.ToInt32(item.ItemArray[data.Columns[Indicator.FieldName.INDICATOR_NUM].Ordinal]),
                                        indicator_name = item.ItemArray[data.Columns[Indicator.FieldName.INDICATOR_NAME_E].Ordinal].ToString()
                                    });
                                }

                                result.indicator_self_evaluation_list.Add(new Indicator_with_self_evaluation_tiny_obj_list
                                {
                                    indicator_num = Convert.ToInt32(item.ItemArray[data.Columns[Indicator.FieldName.INDICATOR_NUM].Ordinal])
                                });

                                //Force to add self_evaluation with sub_indicator_num = 0 (overall result for each indicator)
                                result.indicator_self_evaluation_list.Last().self_evaluation_list.Add(new Self_evaluation_tiny_detail
                                {
                                    sub_indicator_num = 0,
                                    evaluation_score  = 0 //Default score
                                });
                            }
                        }

                        //Case current resultset is sub_indicator table
                        else if (data.Columns.Contains("sub_indicator_name"))
                        {
                            foreach (DataRow item in data.Rows)
                            {
                                int indnum = Convert.ToInt32(item.ItemArray[data.Columns[Sub_indicator.FieldName.INDICATOR_NUM].Ordinal]);
                                result.indicator_section_save_list.First(t => t.indicator_num == indnum).section_save_list.Add(new Section_save_with_sub_indicator_detail
                                {
                                    detail             = "--ไม่พบข้อมูล--",
                                    strength           = "--ไม่พบข้อมูล--",
                                    weakness           = "--ไม่พบข้อมูล--",
                                    improve            = "--ไม่พบข้อมูล--",
                                    sub_indicator_num  = Convert.ToInt32(item.ItemArray[data.Columns[Sub_indicator.FieldName.SUB_INDICATOR_NUM].Ordinal]),
                                    indicator_num      = indnum,
                                    sub_indicator_name = item.ItemArray[data.Columns[Sub_indicator.FieldName.SUB_INDICATOR_NAME].Ordinal].ToString()
                                });

                                //Force to add self_evaluation with sub_indicator_num equal to => current read value
                                result.indicator_self_evaluation_list.First(t => t.indicator_num == indnum).self_evaluation_list.Add(new Self_evaluation_tiny_detail
                                {
                                    sub_indicator_num = Convert.ToInt32(item.ItemArray[data.Columns[Sub_indicator.FieldName.SUB_INDICATOR_NUM].Ordinal]),
                                    evaluation_score  = 0 //Default score
                                });
                            }
                        }

                        //Case current resultset is section_save table
                        else if (data.Columns.Contains("detail"))
                        {
                            foreach (DataRow item in data.Rows)
                            {
                                int indnum    = Convert.ToInt32(item.ItemArray[data.Columns[FieldName.INDICATOR_NUM].Ordinal]);
                                int subindnum = Convert.ToInt32(item.ItemArray[data.Columns[FieldName.SUB_INDICATOR_NUM].Ordinal]);
                                Section_save_with_sub_indicator_detail target = result.indicator_section_save_list.First(t => t.indicator_num == indnum).
                                                                                section_save_list.First(u => u.sub_indicator_num == subindnum);

                                string readdetail = item.ItemArray[data.Columns[FieldName.DETAIL].Ordinal].ToString();
                                if (readdetail != "")
                                {
                                    target.detail = readdetail;
                                }

                                string readstrength = item.ItemArray[data.Columns[FieldName.STRENGTH].Ordinal].ToString();
                                if (readstrength != "")
                                {
                                    target.strength = readstrength;
                                }

                                string readweak = item.ItemArray[data.Columns[FieldName.WEAKNESS].Ordinal].ToString();
                                if (readweak != "")
                                {
                                    target.weakness = readweak;
                                }

                                string readimprove = item.ItemArray[data.Columns[FieldName.IMPROVE].Ordinal].ToString();
                                if (readimprove != "")
                                {
                                    target.improve = readimprove;
                                }
                            }
                        }
                        //Case current resultset is evidence table
                        else if (data.Columns.Contains(Evidence.FieldName.EVIDENCE_NAME))
                        {
                            foreach (DataRow item in data.Rows)
                            {
                                int indnum = Convert.ToInt32(item.ItemArray[data.Columns[Evidence.FieldName.INDICATOR_NUM].Ordinal]);
                                result.indicator_section_save_list.First(t => t.indicator_num == indnum).evidence_list.Add(new Evidence_detail_for_SAR
                                {
                                    indicator_num      = indnum.ToString(),
                                    evidence_real_code = item.ItemArray[data.Columns[Evidence.FieldName.EVIDENCE_REAL_CODE].Ordinal].ToString(),
                                    evidence_name      = item.ItemArray[data.Columns[Evidence.FieldName.EVIDENCE_NAME].Ordinal].ToString()
                                });
                            }
                        }

                        //Case current resultset is self_evaluation
                        else
                        {
                            foreach (DataRow item in data.Rows)
                            {
                                int indnum    = Convert.ToInt32(item.ItemArray[data.Columns[Self_evaluation.FieldName.INDICATOR_NUM].Ordinal]);
                                int subindnum = Convert.ToInt32(item.ItemArray[data.Columns[Self_evaluation.FieldName.SUB_INDICATOR_NUM].Ordinal]);
                                result.indicator_self_evaluation_list.First(t => t.indicator_num == indnum).
                                self_evaluation_list.First(u => u.sub_indicator_num == subindnum).
                                evaluation_score = Convert.ToInt32(item.ItemArray[data.Columns[Self_evaluation.FieldName.EVALUATION_SCORE].Ordinal]);
                            }
                        }
                        data.Dispose();
                    }
                    else if (!res.IsClosed)
                    {
                        if (!res.NextResult())
                        {
                            break;
                        }
                    }
                } while (!res.IsClosed);
                res.Close();
            }
            catch (Exception ex)
            {
                //Handle error from sql execution
                return(ex.Message);
            }
            finally
            {
                //Whether it success or not it must close connection in order to end block
                d.SQLDisconnect();
            }
            return(result);
        }
Exemplo n.º 6
0
        public async Task <IHttpActionResult> PostForGenAunSAR(oCurriculum_academic data)
        {
            if (data == null)
            {
                return(BadRequest("กรุณาระบุหลักสูตรและปีการศึกษาที่ต้องการดาวน์โหลดร่างรายงาน"));
            }

            datacontext.curri_id = data.curri_id;
            datacontext.aca_year = data.aca_year;
            object res = await datacontext.getSectionSaveDataForSAR();

            if (res.GetType().ToString() != "System.String")
            {
                //Start to generate SAR doc
                SAR reportobject = (SAR)res;

                var strBody = new System.Text.StringBuilder("");

                strBody.Append("<html " +
                               "xmlns:o=\"urn:schemas-microsoft-com:office:office\" " +
                               "xmlns:w=\"urn:schemas-microsoft-com:office:word\" " +
                               "xmlns=\"http://www.w3.org/TR/REC-html40\">" +
                               "<head><title></title>\n");
                //strBody.Append("<meta name=ProgId content=Word.Document>");

                strBody.Append(
                    "<!--[if gte mso 9]>\n" +
                    "<xml>\n" +
                    "<w:WordDocument>\n" +
                    "<w:View>Print</w:View>\n" +
                    "<w:Zoom>90</w:Zoom>\n" +
                    "<w:DoNotOptimizeForBrowser/>\n" +
                    "</w:WordDocument>\n" +
                    "</xml>\n" +
                    "<!--[endif]>\n\n"
                    );


                strBody.Append("<style>" +
                               "<!-- /* Style Definitions */" +
                               "@page Section1" +
                               "   {size: 21cm 29.7cm; " +
                               "   margin:1.0in 1.25in 1.0in 1.25in ; " +
                               "   mso-header-margin:.5in; " +
                               "   mso-page-orientation: portrait; " +
                               "   mso-footer-margin:.5in; mso-paper-source:0; " +
                               "   mso-footer: f1; } " +
                               " div.Section1" +
                               "   {page:Section1;}" +
                               "-->" +
                               "table{" +
                               "font-family:'Th Sarabun New';font-size:16pt; " +
                               "} \n" +
                               "h1 {\n" +
                               "font-size:36pt " +
                               "}\n" +
                               "h2 {\n" +
                               "font-size:24pt " +
                               "}\n" +
                               "h3 {\n" +
                               "font-size:21pt " +
                               "}\n" +
                               "h4 {\n" +
                               "font-size:18pt " +
                               "}\n" +
                               "h5 {\n" +
                               "font-size:16pt " +
                               "}\n" +
                               "h6 {\n " +
                               "font-size:14pt " +
                               "}\n" +
                               "p { margin:0 } \n " +

                               "table.evidence,table.selfevalres {" +
                               "border:1px solid black; " +
                               "border-collapse:collapse; " +
                               "} " +

                               "table.evidence th,table.evidence td, " +
                               "table.selfevalres th,table.selfevalres td { border:1px solid black; } " +

                               "ol.sar-ol li { margin:0 auto 0 auto } " +
                               "</style></head>");

                strBody.Append("<body style=\"tab-interval:.5in;font-family:'Th Sarabun New';font-size:16pt\">" +
                               "<div class=Section1>");
                //BODY SECTION => read SAR object to gather data


                foreach (Indicator_with_section_save_list i in reportobject.indicator_section_save_list)
                {
                    strBody.Append(string.Format("<b>AUN.{0} {1} </b><br>", i.indicator_num, i.indicator_name));

                    foreach (Section_save_with_sub_indicator_detail s in i.section_save_list)
                    {
                        strBody.Append(string.Format("<b>{0}.{1} {2}</b><br>", i.indicator_num, s.sub_indicator_num, s.sub_indicator_name));

                        strBody.Append(string.Format(s.detail + "<br><br>"));
                    }

                    strBody.Append("<b>รายการเอกสารหลักฐาน</b><br>");
                    if (i.evidence_list.Count == 0)
                    {
                        strBody.Append("--ไม่พบข้อมูล--<br><br clear=all style='mso-special-character:line-break;page-break-before:always'>");
                    }
                    else
                    {
                        strBody.Append("<table class=\"evidence\"><tr><th width=100>รหัสเอกสาร</th><th>รายการ</th></tr>");
                        foreach (Evidence_detail_for_SAR e in i.evidence_list)
                        {
                            strBody.Append(string.Format("<tr><td align=\"center\">{0}-{1}</td><td>{2}</td></tr>", e.indicator_num, e.evidence_real_code, e.evidence_name));
                        }
                        strBody.Append("</table><br><br clear=all style='mso-special-character:line-break;page-break-before:always'>");
                    }
                }

                strBody.Append("<b>วิเคราะห์จุดแข็งและจุดอ่อน</b><br><br>");
                foreach (Indicator_with_section_save_list i in reportobject.indicator_section_save_list)
                {
                    strBody.Append(string.Format("<b>AUN.{0} {1} </b><br>", i.indicator_num, i.indicator_name));

                    strBody.Append(string.Format("<b>จุดแข็ง</b><br>"));
                    string strtoinsert = "";

                    //INSERT STRENGTH
                    foreach (Section_save_with_sub_indicator_detail s in i.section_save_list)
                    {
                        if (s.strength != "--ไม่พบข้อมูล--")
                        {
                            strtoinsert += string.Format("<li>{0}</li>", s.strength);
                        }
                    }
                    if (strtoinsert != "")
                    {
                        strBody.Append(string.Format("<ol class=\"sar-ol\">{0}</ol>", strtoinsert));
                    }
                    else
                    {
                        strBody.Append("--ไม่พบข้อมูล--<br>");
                    }


                    strtoinsert = "";

                    strBody.Append(string.Format("<b>จุดอ่อน</b><br>"));
                    //INSERT WEAKNESS
                    foreach (Section_save_with_sub_indicator_detail s in i.section_save_list)
                    {
                        if (s.weakness != "--ไม่พบข้อมูล--")
                        {
                            strtoinsert += string.Format("<li>{0}</li>", s.weakness);
                        }
                    }
                    if (strtoinsert != "")
                    {
                        strBody.Append(string.Format("<ol class=\"sar-ol\">{0}</ol>", strtoinsert));
                    }
                    else
                    {
                        strBody.Append("--ไม่พบข้อมูล--<br>");
                    }


                    strtoinsert = "";

                    strBody.Append(string.Format("<b>จุดที่ควรพัฒนา</b><br>"));
                    //INSERT AREA OF IMPROVEMENT
                    foreach (Section_save_with_sub_indicator_detail s in i.section_save_list)
                    {
                        if (s.improve != "--ไม่พบข้อมูล--")
                        {
                            strtoinsert += string.Format("<li>{0}</li>", s.improve);
                        }
                    }
                    if (strtoinsert != "")
                    {
                        strBody.Append(string.Format("<ol class=\"sar-ol\">{0}</ol>", strtoinsert));
                    }
                    else
                    {
                        strBody.Append("--ไม่พบข้อมูล--<br>");
                    }
                    if (i != reportobject.indicator_section_save_list.Last())
                    {
                        strBody.Append("<br>");
                    }
                    else
                    {
                        strBody.Append("<br clear=all style='mso-special-character:line-break;page-break-before:always'>");
                    }
                }

                int overallscoresum = 0;
                int overalldivisor  = 0;
                strBody.Append("<b>สรุปผลการประเมินตนเอง</b><br>");
                strBody.Append("<table class=\"selfevalres\">");

                foreach (Indicator_with_section_save_list i in reportobject.indicator_section_save_list)
                {
                    //Header row for each indicator
                    strBody.Append(string.Format("<tr><th>{0}</th> <td><b>{1}</b></td> <th style=\"width:0.85cm\">1</th><th style=\"width:0.85cm\">2</th><th style=\"width:0.85cm\">3</th><th style=\"width:0.85cm\">4</th><th style=\"width:0.85cm\">5</th><th style=\"width:0.85cm\">6</th><th style=\"width:0.85cm\">7</th></tr>", i.indicator_num, i.indicator_name));

                    foreach (Section_save_with_sub_indicator_detail s in i.section_save_list)
                    {
                        Self_evaluation_tiny_detail target = reportobject.indicator_self_evaluation_list.First(t => t.indicator_num == i.indicator_num).self_evaluation_list.First(u => u.sub_indicator_num == s.sub_indicator_num);
                        strBody.Append(string.Format("<tr><td align=\"center\">{0}.{1}</td> <td>{2}</td>", i.indicator_num, s.sub_indicator_num, s.sub_indicator_name));
                        for (int score = 1; score <= 7; score++)
                        {
                            if (score == target.evaluation_score)
                            {
                                strBody.Append(string.Format("<td align=\"center\">&#x2713;</td>"));
                            }
                            else
                            {
                                strBody.Append(string.Format("<td></td>"));
                            }
                        }
                        strBody.Append("</tr>");
                    }

                    //Overall result for each indicator
                    strBody.Append(string.Format("<tr><td></td><td align=\"right\"><b>สรุปความคิดเห็นรวม</b></td>"));
                    Self_evaluation_tiny_detail overallforcurrindicator = reportobject.indicator_self_evaluation_list.First(t => t.indicator_num == i.indicator_num).self_evaluation_list.First(u => u.sub_indicator_num == 0);

                    //Add overall score for all indicator's sum if evaluation_score is not 0
                    if (overallforcurrindicator.evaluation_score != 0)
                    {
                        overallscoresum += overallforcurrindicator.evaluation_score;
                        overalldivisor++;
                    }

                    for (int overallscore = 1; overallscore <= 7; overallscore++)
                    {
                        if (overallscore == overallforcurrindicator.evaluation_score)
                        {
                            strBody.Append(string.Format("<td align=\"center\">&#x2713</td>"));
                        }
                        else
                        {
                            strBody.Append(string.Format("<td></td>"));
                        }
                    }
                    strBody.Append("</tr>");
                }

                strBody.Append("<tr><td></td><td align=\"center\"><b>สรุปผลการพิจารณาโดยรวมทั้งหมด</b></td><td colspan=\"7\" align=\"center\">");
                if (overalldivisor != 0)
                {
                    strBody.Append(string.Format("{0:N1}", (overallscoresum * 1.0 / overalldivisor)));
                }
                else
                {
                    strBody.Append("--ไม่พบข้อมูล--");
                }
                strBody.Append("</td></tr></table>");
                //END BODY SECTION
                strBody.Append("</div></body></html>");

                /*Force this content to be downloaded as a Word document*/

                HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
                MemoryStream        stream = new MemoryStream();
                StreamWriter        writer = new StreamWriter(stream);
                writer.Write(strBody);
                writer.Flush();
                stream.Position = 0;

                result.Content = new StreamContent(stream);
                result.Content.Headers.ContentType                 = new MediaTypeHeaderValue("application/msword");
                result.Content.Headers.ContentDisposition          = new ContentDispositionHeaderValue("attachment");
                result.Content.Headers.ContentDisposition.FileName = "AUN-QA SAR.doc";
                //return result;

                return(ResponseMessage(result));
            }
            else
            {
                return(InternalServerError(new Exception(res.ToString())));
            }
        }