コード例 #1
0
        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 }";
                }
            }
        }
コード例 #2
0
        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 }";
                }
            }
        }
コード例 #3
0
        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", "僅日間部四技學生可使用此功能");
            }
        }
コード例 #4
0
ファイル: Select.cshtml.cs プロジェクト: ychsieh95/MoKUAS
        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 }));
                    }
                }
            }
        }
コード例 #5
0
        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", "尚未填寫任何學生教學評量");
            }
        }
コード例 #6
0
        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", "查無期中預警資料");
            }
        }
コード例 #7
0
ファイル: CourseList.cshtml.cs プロジェクト: ychsieh95/MoKUAS
        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 } 之課程資訊");
            }
        }
コード例 #8
0
        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 } 之學期缺曠");
            }
        }
コード例 #9
0
        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;
        }
コード例 #10
0
        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;
        }
コード例 #11
0
ファイル: Receipts.cshtml.cs プロジェクト: ychsieh95/MoKUAS
        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 }";
                        }
                    }
                }
            }
        }
コード例 #12
0
ファイル: Select.cshtml.cs プロジェクト: ychsieh95/MoKUAS
        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)));
                }
            }
        }
コード例 #13
0
ファイル: Content.cshtml.cs プロジェクト: ychsieh95/MoKUAS
        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());
                        }
                    }
                }
            }
        }
コード例 #14
0
ファイル: Credits.cshtml.cs プロジェクト: ychsieh95/MoKUAS
        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));
        }