public static List <GoalVersionOfferedCoursesRow> Reduce(List <Course> courses, string goalVersionOfferedCoursesRowsFileName, Gender studGender) { List <GoalVersionOfferedCoursesRow> lst; FileServiceProvider.DeserializeFromXmlFile(goalVersionOfferedCoursesRowsFileName, out lst); return(Reduce(courses, lst, studGender)); }
private void btnNext_Click(object sender, RoutedEventArgs e) { try { CreditDeterminer creditDeterminer; FileServiceProvider.DeserializeFromXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CreditDeterminerSavedName, out creditDeterminer); LoadData(stateLevel2, ServiceProviderForWpfClientCurriculums.ValidateAndReturnListLevel2(creditDeterminer.Level1), Level2Button_Click, Visibility.Collapsed, Visibility.Visible); } catch { } }
private void LoadData(string titleBar, Tuple <string, int>[] arr, RoutedEventHandler method, Visibility btnNextVisibility, Visibility btnPrevVisibility) { try { CreditDeterminer creditDeterminer = null; if (File.Exists(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CreditDeterminerSavedName)) { FileServiceProvider.DeserializeFromXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CreditDeterminerSavedName, out creditDeterminer); } else { creditDeterminer = new CreditDeterminer { Level1 = CurriculumWpfClientMiddleware.DefaultLevel1Value, Level2 = CurriculumWpfClientMiddleware.DefaultLevel2Value, }; FileServiceProvider.SerializeToXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CreditDeterminerSavedName, creditDeterminer); } wrapPanelList.Children.Clear(); txtblockTitleBar.Text = titleBar; for (int i = 0; i < arr.Length; i++) { Badged badged = new Badged(); badged.Badge = (i + 1).ToString(); badged.Margin = new Thickness(15); badged.Name = "bdg" + arr[i].Item2; Button button = new Button(); button.Content = arr[i].Item1; button.Name = "btn" + arr[i].Item2; if (creditDeterminer.Level1 == arr[i].Item2 || creditDeterminer.Level2 == arr[i].Item2) { button.SetResourceReference(Button.BackgroundProperty, "PrimaryHueMidBrush"); } else { button.Background = Brushes.Transparent; } button.Click += method; badged.Content = button; wrapPanelList.Children.Add(badged); } btnNext.Visibility = btnNextVisibility; btnPrev.Visibility = btnPrevVisibility; } catch { } }
public static List <Course> Reduce(string creditDeterminerFileName, string courseInfoLstFileName, int currentTermNumber) { CreditDeterminer creditDeterminer; FileServiceProvider.DeserializeFromXmlFile(creditDeterminerFileName, out creditDeterminer); List <CourseInformation> courseInfoLst; FileServiceProvider.DeserializeFromXmlFile(courseInfoLstFileName, out courseInfoLst); return(Reduce(creditDeterminer, courseInfoLst, currentTermNumber)); }
private async void btnOk_Click(object sender, RoutedEventArgs e) { btnOk.IsEnabled = false; await Task.Run(() => { CourseInformation[] cfs; try { FileServiceProvider.DeserializeFromXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CourseInformationSavedName, out cfs); for (int i = 0; i < collection.Count; i++) { var c = cfs[collection[i].Id]; if (collection[i].StatusColor == WpfApplicationUtilityClasses.Enums.StudentHistoryGridRowColors.WHITE) { c.IsPassed = false; c.NumberOfFailed = 0; } else if (collection[i].StatusColor == WpfApplicationUtilityClasses.Enums.StudentHistoryGridRowColors.GREEN) { c.IsPassed = true; } else if (collection[i].StatusColor == WpfApplicationUtilityClasses.Enums.StudentHistoryGridRowColors.YELLOW) { c.IsPassed = false; c.NumberOfFailed = 2; } else { throw new Exception(); } } FileServiceProvider.SerializeToXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CourseInformationSavedName, cfs); Properties.Settings.Default.ReductionStep2MustBeLoad = false; Properties.Settings.Default.Save(); Dispatcher.Invoke(() => { MessageBox.Show("تغییرات با موفقیت اعمال شد"); }); } catch { Dispatcher.Invoke(() => { MessageBox.Show("عدم موفقیت"); }); } }); btnOk.IsEnabled = true; }
public static bool TryReduce(List <Course> courses, string goalVersionOfferedCoursesRowsFileName, Gender studGender, out List <GoalVersionOfferedCoursesRow> resultLst) { bool succ = true; try { List <GoalVersionOfferedCoursesRow> lst; FileServiceProvider.DeserializeFromXmlFile(goalVersionOfferedCoursesRowsFileName, out lst); resultLst = Reduce(courses, lst, studGender); } catch { resultLst = null; succ = false; } return(succ); }
public async Task RunAfterCreateAsync() { try { await Task.Run(() => { CourseInformation[] cfs = null; if (!File.Exists(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CourseInformationSavedName)) { CreateCourseInformationArrayAndFillItWithAppropriateData(out cfs); FileServiceProvider.SerializeToXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CourseInformationSavedName, cfs); } else { FileServiceProvider.DeserializeFromXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CourseInformationSavedName, out cfs); } RiFillDataGrid(cfs); }); } catch { } }
public static MainCurriculum CreateNewCurriculmWithSpecificCreditAndFilledBySpecificCourseInforamtion(string creditFileName, string courseInforamtionFileName) { CreditDeterminer creditDeterminer; FileServiceProvider.DeserializeFromXmlFile(creditFileName, out creditDeterminer); List <CourseInformation> courseInfoLst = null; FileServiceProvider.DeserializeFromXmlFile(courseInforamtionFileName, out courseInfoLst); //create a curriculum object with specific credit MainCurriculum curriculum = new MainCurriculum(MainCurriculum.CreateStudentCredit(creditDeterminer.Level1, creditDeterminer.Level2)); //update curriculm's courses properties considering student history information for (int i = 0; i < courseInfoLst.Count; i++) { var currentCourseInfo = courseInfoLst[i]; var currentCourse = curriculum.Courses[i]; if (currentCourseInfo.Id != currentCourse.Id) { throw new ArgumentException(); } currentCourse.CodeInDesUni = currentCourseInfo.CodeInDesUni; currentCourse.CorrespondingTitleInDesUni = currentCourseInfo.CorrespondingTitleInDesUni; if (currentCourseInfo.IsPassed) { currentCourse.IsPassed = true; } else if (currentCourseInfo.NumberOfFailed > 1) { currentCourse.NumberOfFailed = 2; } } return(curriculum); }
private void btnOk_Click(object sender, RoutedEventArgs e) { try { CourseInformation[] cfs; if (File.Exists(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CourseInformationSavedName)) { FileServiceProvider.DeserializeFromXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CourseInformationSavedName, out cfs); } else { CreateCourseInformationArrayAndFillItWithAppropriateData(out cfs); } for (int i = 0; i < cfs.Length; i++) { var current = cfs[i]; if (current.CorrespondingTitleInDesUni != collection[current.Id].TitleInDesUni) { current.CorrespondingTitleInDesUni = collection[current.Id].TitleInDesUni; } if (current.CodeInDesUni != collection[current.Id].CodeInDesUni) { current.CodeInDesUni = collection[current.Id].CodeInDesUni.ChangeFarsiNumberInStringToEnglishNumber(); } } FileServiceProvider.SerializeToXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CourseInformationSavedName, cfs); Properties.Settings.Default.ReductionStep2MustBeLoad = false; Properties.Settings.Default.Save(); MessageBox.Show("تغییرات با موفقیت اعمال شد"); } catch { } }
private void UpdateCreditDeterminerFile(Button sender) { try { if (File.Exists(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CreditDeterminerSavedName)) { CreditDeterminer creditDeterminer; FileServiceProvider.DeserializeFromXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CreditDeterminerSavedName, out creditDeterminer); if (stateLevel1 == txtblockTitleBar.Text) { int x = int.Parse(sender.Name.Substring(3)); if (creditDeterminer.Level1 != x) { creditDeterminer.Level1 = x; creditDeterminer.Level2 = CurriculumWpfClientMiddleware.DefaultLevel2Value; } } else if (stateLevel2 == txtblockTitleBar.Text) { creditDeterminer.Level2 = int.Parse(sender.Name.Substring(3)); } else { throw new Exception(); } FileServiceProvider.SerializeToXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CreditDeterminerSavedName, creditDeterminer); Properties.Settings.Default.ReductionStep2MustBeLoad = false; Properties.Settings.Default.Save(); } } catch { } }
public async Task RunAfterCreatedAsync() { try { await Task.Run(async () => { await Dispatcher.InvokeAsync(() => { InitializeComponent(); }); //settings if (Properties.Settings.Default.CurrentTermNumber > 0) termNumber = Properties.Settings.Default.CurrentTermNumber; gender = Properties.Settings.Default.Gender == 'm' ? Tataiee.Harif.Infrastructures.GeneralEnums.Gender.MALE : Tataiee.Harif.Infrastructures.GeneralEnums.Gender.FEMALE; if (Properties.Settings.Default.MinUnits > 0) minUnits = Properties.Settings.Default.MinUnits; if (Properties.Settings.Default.MinUnits <= Properties.Settings.Default.MaxUnits && Properties.Settings.Default.MaxUnits > 0) maxUnits = Properties.Settings.Default.MaxUnits; if (Properties.Settings.Default.TimeoutForReductionStep2ms >= 120) timeoutMs = Properties.Settings.Default.TimeoutForReductionStep2ms; if (Properties.Settings.Default.MaxNumberOfSuggestedWeeklyProgram >= 1 && Properties.Settings.Default.MaxNumberOfSuggestedWeeklyProgram <= 50) maxCntSuggestion = Properties.Settings.Default.MaxNumberOfSuggestedWeeklyProgram; capacityFiltering = Properties.Settings.Default.CapacityFiltering; exampCollideChecking = Properties.Settings.Default.ExamCollideChecking; //end settings mainCurriculum = StudentHistoryServiceProvider.CreateNewCurriculmWithSpecificCreditAndFilledBySpecificCourseInforamtion(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CreditDeterminerSavedName, DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CourseInformationSavedName); int CODE_LEN = 7; //load offered course row in memory FileServiceProvider.DeserializeFromXmlFile(DirectoryManager.GoalVersionOfferedCoursesRowDirectory + DirectoryManager.GoalVersionOfferedCoursesRowSavedName, out List<GoalVersionOfferedCoursesRow> goalVersionOfferedCourseRows); //perform reduction step 1 and get courses list after reduced var coursesListAfterReductionStep1 = ReductionStep1.Reduce(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CreditDeterminerSavedName, DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CourseInformationSavedName , termNumber); //assign offeredCourseRows to the output of ReductionStep2 courses List if (capacityFiltering) { goalVersionOfferedCourseRows = ReductionStep2.Reduce(coursesListAfterReductionStep1, goalVersionOfferedCourseRows, gender) .Where(r => r.Capacity - r.Registered > 0).ToList(); } else { goalVersionOfferedCourseRows = ReductionStep2.Reduce(coursesListAfterReductionStep1, goalVersionOfferedCourseRows, gender); } CODE_LEN = coursesListAfterReductionStep1[0].CodeInDesUni.Length; //again group reduced offered course rows var coursesGroups = (from c in goalVersionOfferedCourseRows group c by c.Id.Substring(0, CODE_LEN)).ToList(); //-------- //we can add another reduction step to reduce more if possible but not now. //--------- //fill main offeredCourses and offeredCourseRows lists int i = 0; int j = 0; foreach (var course in coursesGroups) { var c = coursesListAfterReductionStep1.FirstOrDefault(c1 => c1.CodeInDesUni == course.Key); if (c != null) { OfferedCourse oc = new OfferedCourse(c, i++, ReductionStep2ColorStatus.WHITE); foreach (var row in course) { OfferedCourseRow ocr = new OfferedCourseRow(row, ReductionStep2ColorStatus.WHITE, j++, oc); oc.OfferedCourseRows.Add(ocr); cards.Add(null); offeredCourseRows.Add(ocr); } offeredCourses.Add(oc); } } if (Properties.Settings.Default.ReductionStep2MustBeLoad) { FileServiceProvider.DeserializeFromXmlFile(DirectoryManager.ReductionStep2SavedStatus + DirectoryManager.SaveColorOfferedCourses, out List<SaveColorObjectModel> saveColorOfferedCourses); FileServiceProvider.DeserializeFromXmlFile(DirectoryManager.ReductionStep2SavedStatus + DirectoryManager.SaveColorOfferedCourseRows, out List<SaveColorObjectModel> saveColorOfferedCourseRows); saveColorOfferedCourses.ForEach(scoc => { offeredCourses[scoc.CorrespondingIdInSourceList].Color = scoc.Color; }); saveColorOfferedCourseRows.ForEach(scocr => { offeredCourseRows[scocr.CorrespondingIdInSourceList].Color = scocr.Color; }); } //create and fill courses navigation buttons in the right side await Dispatcher.InvokeAsync(() => { stackPanelRightSide.Children.Clear(); Button button1 = null; for (int m = 0; m < offeredCourses.Count; m++) { Badged badged = new Badged { Badge = offeredCourses[m].OfferedCourseCode, Margin = new Thickness(5), Name = "bdg" + offeredCourses[m].CourseId }; Button button = new Button { Content = new TextBlock() { Text = offeredCourses[m].OfferedCourseName, TextAlignment = TextAlignment.Center, TextWrapping = TextWrapping.Wrap }, Name = "btn" + m.ToString(), Width = 250, Height = Double.NaN, Padding = new Thickness(5), Background = Brushes.Transparent }; button.Click += btnCourseNavigation_Click; badged.Content = button; if (m == 0) { button1 = button; } stackPanelRightSide.Children.Add(badged); } selectedButton = button1; allowUserInteraction = true; btnCourseNavigation_Click(button1, null); }); }); } catch { } }
public async Task RunAfterCreateAsync() { try { await Task.Run(async() => { await Dispatcher.InvokeAsync(() => { mainPanel.Children.Clear(); }); CourseInformation[] cfs; FileServiceProvider.DeserializeFromXmlFile(DirectoryManager.EssentialInforamtion1Directory + DirectoryManager.CourseInformationSavedName, out cfs); for (int i = 0; i < cfs.Length; i++) { var item = cfs[i]; if (item.CodeInDesUni == "-") { continue; } StudentHistoryGridRow shdr = new StudentHistoryGridRow { Id = item.Id, CodeInDesUni = item.CodeInDesUni, TitleInDesUni = item.CorrespondingTitleInDesUni, StatusColor = item.IsPassed ? WpfApplication.WpfApplicationUtilityClasses.Enums.StudentHistoryGridRowColors.GREEN : item.NumberOfFailed > 1 ? WpfApplication.WpfApplicationUtilityClasses.Enums.StudentHistoryGridRowColors.YELLOW : WpfApplication.WpfApplicationUtilityClasses.Enums.StudentHistoryGridRowColors.WHITE, }; Dispatcher.Invoke(() => { collection.Add(shdr); }); } await Dispatcher.InvokeAsync(() => { for (int i = 0; i < collection.Count; i++) { Badged badged = new Badged(); badged.Badge = collection[i].CodeInDesUni; badged.Margin = new Thickness(15); badged.Name = "bdg" + collection[i].Id; Button button = new Button(); button.Content = new TextBlock() { Text = collection[i].TitleInDesUni, TextAlignment = TextAlignment.Center, TextWrapping = TextWrapping.Wrap }; button.Name = "btn" + i.ToString(); button.Width = 250; button.Height = Double.NaN; button.Padding = new Thickness(8); SetButtonBackgroundColor(button, collection[i].StatusColor); button.Click += Button_Click; badged.Content = button; mainPanel.Children.Add(badged); } }); }); } catch { } }