public void OnGet() { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); SysYear = student.SysYear; SysSemester = student.SysSemester; Profile = kuasAp.GetProfile(student: student); if (Profile == null) { Profile = new Models.Profile(); } else { PersonalPictureUrl = Profile.PersonalPicture.ToArray().SaveToFile( filename: $"{ student.Username }_{ DateTime.Now.ToString("HHmmss") }.jpg", saveDir: @"files/", trueDir: $@"{ hostingEnvironment.WebRootPath }\", deleteKey: student.Username); if (string.IsNullOrEmpty(PersonalPictureUrl)) { ModelState.AddModelError("Error", "圖片不存在或下載失敗"); } else { PersonalPictureUrl = $"{ Request.Scheme }://{ Request.Host }/{ PersonalPictureUrl }"; } } }
public void OnGet() { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); var stream = kuasAp.GetScoreReport(student: student); if (stream == null) { ModelState.AddModelError("Error", "尚無歷年成績單供查詢"); } else { FileUrl = stream.ToArray().SaveToFile( filename: $"{ student.Username }_{ DateTime.Now.ToString("HHmmss") }_ScoreReport.pdf", saveDir: @"files/", trueDir: $@"{ hostingEnvironment.WebRootPath }\", deleteKey: student.Username); if (string.IsNullOrEmpty(FileUrl)) { ModelState.AddModelError("Error", "檔案不存在(逾期)或下載失敗"); } else { FileUrl = $"{ Request.Scheme }://{ Request.Host }/{ FileUrl }"; } } }
public void OnGet() { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); if (student.ChtClass.Length > 0 && student.ChtClass.Substring(0, 1) == "四") { GraduationThreshold = kuasAp.GetGraduationThreshold(student: student); IsEngEngGradPass = GraduationThreshold.EngEngGradPass.IndexOfAny(new char[] { '不', '未' }) < 0; IsEngTrainSta = GraduationThreshold.EngTrainSta.IndexOfAny(new char[] { '不', '未' }) < 0; IsOcpClassList = GraduationThreshold.OcpClassList.Count > 0; } else { GraduationThreshold = new Models.GraduationThreshold() { StdBasicInfo = new Models.StdBasicInfo() { ClassName = student.ChtClass, StdId = student.Username, StdName = student.ChtName } }; IsEngEngGradPass = false; IsEngTrainSta = false; IsOcpClassList = false; ModelState.AddModelError("Error", "僅日間部四技學生可使用此功能"); } }
public async Task <IActionResult> OnPostAsync() { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); kuasAp.GetCourseListAndSchedule(student: student, year: SysValue.Split(',')[0], semester: SysValue.Split(',')[1]); if (Class.SubjectChineseName.Contains("跨外校")) { TempData["Error"] = "跨校選課不得撰寫課程評論"; return(RedirectToPage($"/Courses/Create/Select", new { SysValue = SysValue })); } else if (!kuasAp.CourseList.Any(course => course.SubjectChineseName == Class.SubjectChineseName && course.Teachers == Class.Teachers && course.ClassShortName == Class.ClassShortName)) { TempData["Error"] = $"學期中並未包含 { Class.SubjectChineseName } 課程"; return(RedirectToPage($"/Courses/Create/Select", new { SysValue = SysValue })); } else { var classRepository = new Repositorys.ClassRepository(appSettings.ConnectionStrings.DefaultConnection); var @class = (await classRepository.Select(@class: new Models.Class() { SubjectChineseName = Class.SubjectChineseName, Teachers = Class.Teachers, ClassShortName = Class.ClassShortName })).FirstOrDefault(); if (@class != null) { return(RedirectToPage("/Courses/Create/Content", new { ClassGuid = @class.Guid })); } else { Class.Guid = Guid.NewGuid().ToString(); if (await classRepository.Insert(@class: Class) > 0) { return(RedirectToPage("/Courses/Create/Content", new { ClassGuid = Class.Guid })); } else { TempData["Error"] = "課程加入失敗"; return(RedirectToPage($"/Courses/Create/Select", new { SysValue = SysValue })); } } } }
public async Task OnGetAsync() { // Message by redirect if (TempData.ContainsKey("Success")) { ModelState.AddModelError("Success", TempData["Success"].ToString()); } if (TempData.ContainsKey("Error")) { ModelState.AddModelError("Error", TempData["Success"].ToString()); } var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); // Repositorys var classRepository = new Repositorys.ClassRepository(appSettings.ConnectionStrings.DefaultConnection); var commentRepository = new Repositorys.CommentRepository(appSettings.ConnectionStrings.DefaultConnection); Comments = (await commentRepository.Select(comment: new Models.Comment() { Creator = student.Username })).ToList(); foreach (var comment in Comments) { var classes = (await classRepository.Select(@class: new Models.Class() { Guid = comment.ClassGuid })).ToList(); if (classes.Count > 0) { comment.SubjectChineseName = classes.First().SubjectChineseName; comment.Teachers = classes.First().Teachers; comment.ClassShortName = classes.First().ClassShortName; } } // If empty, display alert if (Comments.Count <= 0) { ModelState.AddModelError("Warning", "尚未填寫任何學生教學評量"); } }
public void OnGet() { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); // Get midterm alerts MidtermAlerts = kuasAp.GetMidtermAlerts(student: student); // Remove item without alert MidtermAlerts.RemoveAll(midtermAlert => !midtermAlert.IsAlert); // Reset index int index = 1; MidtermAlerts.ForEach(midtermAlert => midtermAlert.Index = (index++).ToString()); // If empty, display alert if (MidtermAlerts.Count <= 0) { ModelState.AddModelError("Warning", "查無期中預警資料"); } }
public void OnGet() { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); // Set SysValue default value if (string.IsNullOrEmpty(SysValue)) { SysValue = $"{ student.SysYear },{ student.SysSemester }"; } // DropDownList items SysValues = new List <SelectListItem>(); kuasAp.GetOptionValueList(student: student).ForEach(sysItem => SysValues.Add(new SelectListItem() { Text = sysItem.SysText, Value = $"{ sysItem.SysYear },{ sysItem.SysSemester }", Selected = string.IsNullOrEmpty(SysValue) ? (sysItem.SysYear == student.SysYear && sysItem.SysSemester == student.SysSemester) : (sysItem.SysYear == SysValue.Split(',')[0] && sysItem.SysSemester == SysValue.Split(',')[1]) })); // Course list kuasAp.GetCourseListAndSchedule( student: student, year: SysValue.Split(',')[0], semester: SysValue.Split(',')[1]); CourseList = new List <Models.Class>(kuasAp.CourseList); Schedule = new List <List <Models.Class> >(kuasAp.Schedule); // If empty, display alert if (CourseList.Count <= 0) { ModelState.AddModelError("Warning", $"查無 { SysValues.First(item => item.Selected).Text } 之課程資訊"); } }
public void OnGet() { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); // Set SysValue default value if (string.IsNullOrEmpty(SysValue)) { SysValue = $"{ student.SysYear },{ student.SysSemester }"; } // DropDownList items DropDownList = new List <SelectListItem>(); kuasAp.GetOptionValueList(student: student).ForEach(sysItem => DropDownList.Add(new SelectListItem() { Text = sysItem.SysText, Value = $"{ sysItem.SysYear },{ sysItem.SysSemester }", Selected = string.IsNullOrEmpty(SysValue) ? (sysItem.SysYear == student.SysYear && sysItem.SysSemester == student.SysSemester) : (sysItem.SysYear == SysValue.Split(',')[0] && sysItem.SysSemester == SysValue.Split(',')[1]) })); // Miss classes MissClasses = kuasAp.GetMissClasses( student: student, year: SysValue.Split(',')[0], semester: SysValue.Split(',')[1], fillFullSapce: true); // If empty, display alert if (MissClasses.Count <= 0) { ModelState.AddModelError("Warning", $"查無 { DropDownList.First(item => item.Selected).Text } 之學期缺曠"); } }
public void OnGet() { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); var evaluation = new Models.Evaluation(); EvaluationItems = kuasAp.ListEvaluationForm(username: student.Username, password: student.Password); if (EvaluationItems == null) { ModelState.AddModelError("Error", "教學評量尚未開放填寫"); EvaluationItems = new List <Models.EvaluationItem>(); } // Evaliation types EvaliationTypes = new List <SelectListItem>(); Enum.GetValues(typeof(Models.EvaliationType)) .OfType <Models.EvaliationType>() .ToList() .ForEach(evaliationType => EvaliationTypes.Add(new SelectListItem() { Text = evaliationType.ToString(), Value = ((int)evaliationType).ToString() })); EvaliationTypes.Find(evaliationType => evaliationType.Text.Equals(( ((3 <= DateTime.Now.Month && DateTime.Now.Month <= 5) || (9 <= DateTime.Now.Month && DateTime.Now.Month <= 12)) ? Models.EvaliationType.期中評量 : Models.EvaliationType.期末評量).ToString())).Selected = true; // Evaliation subjects EvaliationSubjects = new List <SelectListItem>(); if (EvaluationItems.Count > 0) { EvaluationItems .FindAll(evaluationItem => !evaluationItem.Done) .ForEach(evaluationItem => EvaliationSubjects.Add(new SelectListItem() { Text = $"{evaluationItem.SubjectChineseName}({evaluationItem.Teachers})", Value = evaluationItem.Title })); EvaliationSubjects.First().Selected = true; } // Favorite ranks FavoriteRanks = new List <SelectListItem>(); Enum.GetValues(typeof(Models.FavoriteRank)) .OfType <Models.FavoriteRank>() .ToList() .ForEach(favoriteRank => FavoriteRanks.Add(new SelectListItem() { Text = favoriteRank.ToString(), Value = ((int)favoriteRank).ToString() })); FavoriteRanks.Find(favoriteRank => favoriteRank.Text == evaluation.FavoriteRank.ToString()).Selected = true; // Genders Genders = new List <SelectListItem>(); Enum.GetValues(typeof(Models.Gender)) .OfType <Models.Gender>() .ToList() .ForEach(gender => Genders.Add(new SelectListItem() { Text = gender.ToString(), Value = ((int)gender).ToString() })); Genders.Find(gender => gender.Text == evaluation.Gender.ToString()).Selected = true; // Colleges Colleges = new List <SelectListItem>(); Enum.GetValues(typeof(Models.College)) .OfType <Models.College>() .ToList() .ForEach(college => Colleges.Add(new SelectListItem() { Text = college.ToString(), Value = ((int)college).ToString() })); Colleges.Find(college => college.Text == evaluation.College.ToString()).Selected = true; // Eductional Systems EductionalSystems = new List <SelectListItem>(); Enum.GetValues(typeof(Models.EductionalSystem)) .OfType <Models.EductionalSystem>() .ToList() .ForEach(eductionalSystem => EductionalSystems.Add(new SelectListItem() { Text = eductionalSystem.ToString(), Value = ((int)eductionalSystem).ToString() })); EductionalSystems.Find(eductionalSystem => eductionalSystem.Text == evaluation.EductionalSystem.ToString()).Selected = true; // Grades Grades = new List <SelectListItem>(); Enum.GetValues(typeof(Models.Grade)) .OfType <Models.Grade>() .ToList() .ForEach(grade => Grades.Add(new SelectListItem() { Text = grade.ToString(), Value = ((int)grade).ToString() })); Grades.Find(grade => grade.Text == evaluation.Grade.ToString()).Selected = true; }
public void OnPost() { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); // Fill in evaliation form var doneList = new List <Models.EvaluationItem>(); switch (Evaluation.EvaliationType) { case Models.EvaliationType.期中評量: doneList = kuasAp.FillInMidtermEvaluationForm( username: student.Username, password: student.Password, evaluation: Evaluation); break; case Models.EvaliationType.期末評量: doneList = kuasAp.FillInFinalEvaluationForm( username: student.Username, password: student.Password, evaluation: Evaluation); break; } // List evaliation item EvaluationItems = kuasAp.ListEvaluationForm(username: student.Username, password: student.Password); if (EvaluationItems == null) { ModelState.AddModelError("Error", "教學評量尚未開放填寫"); EvaluationItems = new List <Models.EvaluationItem>(); } if (doneList == null) { ModelState.AddModelError("Error", "教學評量尚未開放填寫"); } else if (doneList.Count == 0) { ModelState.AddModelError("Error", "未填寫任何教學評量"); } else if (Evaluation.EvaliationType == Models.EvaliationType.期中評量) { ModelState.AddModelError("Error", $"已自動填寫 { doneList.Count(x => x.EvaliationType == Models.EvaliationType.期中評量) } 個期中教學評量"); } else if (Evaluation.EvaliationType == Models.EvaliationType.期末評量) { ModelState.AddModelError("Error", $"已自動填寫 { doneList.Count(x => x.EvaliationType == Models.EvaliationType.期末評量) } 個期末教學評量"); } // Evaliation types EvaliationTypes = new List <SelectListItem>(); Enum.GetValues(typeof(Models.EvaliationType)) .OfType <Models.EvaliationType>() .ToList() .ForEach(evaliationType => EvaliationTypes.Add(new SelectListItem() { Text = evaliationType.ToString(), Value = ((int)evaliationType).ToString() })); EvaliationTypes.Find(evaliationType => evaliationType.Text == Evaluation.EvaliationType.ToString()).Selected = true; // Evaliation subjects EvaliationSubjects = new List <SelectListItem>(); EvaluationItems .FindAll(evaluationItem => !evaluationItem.Done) .ForEach(evaluationItem => EvaliationSubjects.Add(new SelectListItem() { Text = $"{ evaluationItem.SubjectChineseName }( {evaluationItem.Teachers })", Value = evaluationItem.Title })); EvaliationSubjects.Insert(0, new SelectListItem() { Text = $"所有評量 ({ EvaluationItems.Count(x => !x.Done) })", Value = "AllEvaluation" }); EvaliationSubjects.First().Selected = true; // Favorite ranks FavoriteRanks = new List <SelectListItem>(); Enum.GetValues(typeof(Models.FavoriteRank)) .OfType <Models.FavoriteRank>() .ToList() .ForEach(favoriteRank => FavoriteRanks.Add(new SelectListItem() { Text = favoriteRank.ToString(), Value = ((int)favoriteRank).ToString() })); FavoriteRanks.Find(favoriteRank => favoriteRank.Text == Evaluation.FavoriteRank.ToString()).Selected = true; // Genders Genders = new List <SelectListItem>(); Enum.GetValues(typeof(Models.Gender)) .OfType <Models.Gender>() .ToList() .ForEach(gender => Genders.Add(new SelectListItem() { Text = gender.ToString(), Value = ((int)gender).ToString() })); Genders.Find(gender => gender.Text == Evaluation.Gender.ToString()).Selected = true; // Colleges Colleges = new List <SelectListItem>(); Enum.GetValues(typeof(Models.College)) .OfType <Models.College>() .ToList() .ForEach(college => Colleges.Add(new SelectListItem() { Text = college.ToString(), Value = ((int)college).ToString() })); Colleges.Find(college => college.Text == Evaluation.College.ToString()).Selected = true; // Eductional Systems EductionalSystems = new List <SelectListItem>(); Enum.GetValues(typeof(Models.EductionalSystem)) .OfType <Models.EductionalSystem>() .ToList() .ForEach(eductionalSystem => EductionalSystems.Add(new SelectListItem() { Text = eductionalSystem.ToString(), Value = ((int)eductionalSystem).ToString() })); EductionalSystems.Find(eductionalSystem => eductionalSystem.Text == Evaluation.EductionalSystem.ToString()).Selected = true; // Grades Grades = new List <SelectListItem>(); Enum.GetValues(typeof(Models.Grade)) .OfType <Models.Grade>() .ToList() .ForEach(grade => Grades.Add(new SelectListItem() { Text = grade.ToString(), Value = ((int)grade).ToString() })); Grades.Find(grade => grade.Text == Evaluation.Grade.ToString()).Selected = true; }
public void OnGet() { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); // DropDownList items DropDownList = new List <SelectListItem>(); foreach (string[] receipt in kuasAp.GetRecepits(student: student)) { DropDownList.Add(new SelectListItem() { Text = receipt[0], Value = $"{ receipt[0] },{ receipt[1] }" }); } if (DropDownList.Count <= 0) { ModelState.AddModelError("Warning", "目前無任何可檢視的繳費單收據"); } else { if (string.IsNullOrEmpty(ReceiptParams)) { DropDownList.Insert(0, new SelectListItem() { Text = "--- 請選擇繳費單收據 ---", Value = "", Disabled = true, Selected = true }); } else { // Download first item receipt bytes List <string> urlParams = ReceiptParams.Split(',').Skip(1).ToList(); MemoryStream stream = kuasAp.DownloadRecepit(student: student, urlParams: urlParams); if (stream == null) { ModelState.AddModelError("Error", "檔案不存在(逾期)或下載失敗"); } else { FileUrl = stream.ToArray().SaveToFile( filename: $"{ student.Username }_{ DateTime.Now.ToString("HHmmss") }_{ ReceiptParams.Split(',').First() }.pdf", saveDir: @"files/", trueDir: $@"{ hostingEnvironment.WebRootPath }\", deleteKey: student.Username); if (string.IsNullOrEmpty(FileUrl)) { ModelState.AddModelError("Error", "檔案不存在(逾期)或下載失敗"); } else { FileUrl = $"{ Request.Scheme }://{ Request.Host }/{ FileUrl }"; } } } } }
public async Task OnGetAsync() { // Message by redirect if (TempData.ContainsKey("Error")) { ModelState.AddModelError("Error", TempData["Error"].ToString()); } var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); // Set SysValue default value if (string.IsNullOrEmpty(SysValue)) { SysValue = $"{ student.SysYear },{ student.SysSemester }"; } // DropDownList items SysValues = new List <SelectListItem>(); kuasAp.GetOptionValueList(student: student).ForEach(sysItem => SysValues.Add(new SelectListItem() { Text = sysItem.SysText, Value = $"{ sysItem.SysYear },{ sysItem.SysSemester }", Selected = string.IsNullOrEmpty(SysValue) ? (sysItem.SysYear == student.SysYear && sysItem.SysSemester == student.SysSemester) : (sysItem.SysYear == SysValue.Split(',')[0] && sysItem.SysSemester == SysValue.Split(',')[1]) })); // Course list kuasAp.GetCourseListAndSchedule( student: student, year: SysValue.Split(',')[0], semester: SysValue.Split(',')[1]); CourseList = new List <Models.Class>(kuasAp.CourseList); Schedule = new List <List <Models.Class> >(kuasAp.Schedule); // If empty, display alert if (CourseList.Count <= 0) { ModelState.AddModelError("Warning", $"查無 { SysValues.First(item => item.Selected).Text } 之課程資訊"); } else { // 跨校選課不得撰寫評論 CourseList.ForEach(course => course.DoneComment = course.ClassShortName.Contains("跨外校")); Schedule.ForEach(courses => courses.ForEach(course => course.DoneComment = string.IsNullOrEmpty(course.ClassShortName) ? course.DoneComment : course.ClassShortName.Contains("跨外校"))); // 尋找是否存在已經寫過的評論 // Repositorys var classRepository = new Repositorys.ClassRepository(appSettings.ConnectionStrings.DefaultConnection); var commentRepository = new Repositorys.CommentRepository(appSettings.ConnectionStrings.DefaultConnection); // // 搜尋使用者的評論 var comments = (await commentRepository.Select(comment: new Models.Comment() { Creator = student.Username })).ToList(); // // 巡迴所有評論 foreach (var comment in comments) { // 取得評論之課程資料 Models.Class @class = (await classRepository.Select(@class: new Models.Class() { Guid = comment.ClassGuid })).ToList().First(); // 選課清單 CourseList.ForEach(course => course.DoneComment = course.DoneComment || (course.SubjectChineseName == @class.SubjectChineseName && course.Teachers == @class.Teachers && course.ClassShortName == @class.ClassShortName)); // 課表 Schedule.ForEach(courses => courses.ForEach(course => course.DoneComment = course.DoneComment || (course.SubjectChineseName == @class.SubjectChineseName && course.Teachers == @class.Teachers && course.ClassShortName == @class.ClassShortName))); } } }
public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { return(Page()); } else { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); // Repositorys var classRepository = new Repositorys.ClassRepository(appSettings.ConnectionStrings.DefaultConnection); var commentRepository = new Repositorys.CommentRepository(appSettings.ConnectionStrings.DefaultConnection); // Check Guid var classes = (await classRepository.Select(@class: new Models.Class() { Guid = ClassGuid })).ToList(); if (classes.Count <= 0) { ModelState.AddModelError("Error", "查無此課程資料,請依照流程填寫"); return(Page()); } else if (classes.First().SubjectChineseName != Comment.SubjectChineseName || classes.First().Teachers != Comment.Teachers || classes.First().ClassShortName != Comment.ClassShortName) { ModelState.AddModelError("Error", "不符合的課程資訊,請依照流程填寫"); return(Page()); } else { if ((await commentRepository.Select(comment: new Models.Comment() { ClassGuid = ClassGuid })) .Any(comment => comment.Creator == student.Username)) { ModelState.AddModelError("Error", "已填寫過此課程之評論"); return(Page()); } else { Comment.ClassGuid = ClassGuid; Comment.Remark = string.IsNullOrEmpty(Comment.Remark) ? "" : (Comment.Remark); Comment.Creator = student.Username; Comment.RecordTime = DateTime.Now; Comment.Guid = Guid.NewGuid().ToString(); if (await commentRepository.Insert(comment: Comment) > 0) { TempData["Success"] = "撰寫評論成功"; return(RedirectToPage("/Courses/Details", new { CommentGuid = Comment.Guid })); } else { ModelState.AddModelError("Error", "撰寫評論失敗"); return(Page()); } } } } }
public void OnGet() { var student = JsonConvert.DeserializeObject <Models.Student>( User.Claims.First(claim => claim.Type == "Information").Value); var kuasAp = new Services.KUASAPService(); var sysValueList = kuasAp.GetOptionValueList(student: student); var scores = new List <Models.Score>(); var subject = new Dictionary <string, List <Models.Score> >() { { "Get", new List <Models.Score>() }, { "Miss", new List <Models.Score>() } }; var generalEducation = new Dictionary <string, List <Models.Score> >() { { "Core", new List <Models.Score>() }, { "Extend", new List <Models.Score>() } }; for (int i = 0, countOfEmpty = 0; countOfEmpty < 10; i++) { var tmpScores = kuasAp.GetScores(student: student, year: sysValueList[i].SysYear, semester: sysValueList[i].SysSemester).Scores; if (tmpScores.Count <= 0) { countOfEmpty++; } else { scores.AddRange(tmpScores); countOfEmpty = 0; } } if (scores.Count > 0) { foreach (Models.Score score in scores) { if (!string.IsNullOrEmpty(score.SemesterScore)) { if (score.SemesterScore == "合格") { subject["Get"].Add(score); } else if (score.SemesterScore.Contains("*") && score.IsRequired) { subject["Miss"].Add(score); } else if (score.SemesterScore.Contains("不合格") && score.IsRequired) { subject["Miss"].Add(score); } else if (float.Parse(score.SemesterScore) < 60) { subject["Miss"].Add(score); } else { subject["Get"].Add(score); if (score.SubjectChineseName.Contains("核心通識")) { generalEducation["Core"].Add(score); } else if (score.SubjectChineseName.Contains("延伸通識")) { generalEducation["Extend"].Add(score); } } } } } // 刪除課程中的通識課程 subject["Get"].RemoveAll(x => x.SubjectChineseName.Contains("通識")); subject["Miss"].RemoveAll(x => x.SubjectChineseName.Contains("通識")); // 刪除重複已失去課程 foreach (Models.Score score in subject["Miss"].ToArray()) { // 建立暫存課程 Models.Score temp = score; // 尋找是否有重複 (2 個以上) 項目 if (subject["Miss"].FindAll(x => x.SubjectChineseName == temp.SubjectChineseName && x.PropertiesCredit == temp.PropertiesCredit && x.PropertiesRequiredOrElective == temp.PropertiesRequiredOrElective).Count > 1) { // 若有則全數移除並重新加入 subject["Miss"].RemoveAll(x => x.SubjectChineseName == temp.SubjectChineseName && x.PropertiesCredit == temp.PropertiesCredit && x.PropertiesRequiredOrElective == temp.PropertiesRequiredOrElective); subject["Miss"].Add(temp); } } // 重修已及格修正 foreach (Models.Score score in subject["Get"].ToArray()) { if (subject["Miss"].FindAll(x => x.SubjectChineseName == score.SubjectChineseName && x.PropertiesCredit == score.PropertiesCredit && x.PropertiesRequiredOrElective == score.PropertiesRequiredOrElective).Count > 0) { subject["Miss"].RemoveAll(x => x.SubjectChineseName == score.SubjectChineseName && x.PropertiesCredit == score.PropertiesCredit && x.PropertiesRequiredOrElective == score.PropertiesRequiredOrElective); } } // 對 subject 做排序 foreach (string key in subject.Keys.ToArray()) { subject[key] = subject[key].OrderBy(x => float.Parse(x.PropertiesCredit)) .ThenBy(x => x.SubjectChineseName) .ThenBy(x => float.Parse(x.TeachTime)) .ThenBy(x => x.PropertiesRequiredOrElective) .ThenBy(x => x.ClassType) .ThenBy(x => x.MidtermScore) .ThenBy(x => x.SemesterScore) .ThenBy(x => x.Remark).ToList(); } // 對 generalEducation 以自定義做排序 foreach (string key in generalEducation.Keys.ToArray()) { generalEducation[key].Sort((x, y) => new OrderBySubjectChtName().Compare(x.SubjectChineseName, y.SubjectChineseName)); } Credits = new Models.Credits() { Subject = subject, GeneralEducation = generalEducation }; // 已取得所有學分 GetCredits = (int)subject["Get"].Sum(x => float.Parse(x.PropertiesCredit)); // 已取得必修學分 GetRequiredCredits = (int)subject["Get"].FindAll(x => x.IsRequired).Sum(x => float.Parse(x.PropertiesCredit)); // 已取得選修學分 GetNotRequiredCredits = (int)subject["Get"].FindAll(x => !x.IsRequired).Sum(x => float.Parse(x.PropertiesCredit)); // 已失去必修學分 MissRequiredCredits = (int)subject["Miss"].Sum(x => float.Parse(x.PropertiesCredit)); }