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); }
public void SAR() { SAR sar = new SAR(); sar.Load(OhlcList); SingleDoubleSerie serie = sar.Calculate(); Assert.IsNotNull(serie); Assert.IsTrue(serie.Values.Count > 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); }
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); }
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\">✓</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\">✓</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()))); } }