/// <summary> /// Метод, обрабатывающий изменение выбранной группы в комбобоксе. /// </summary> /// <param name="window">Объект окна для получения данных из комбобокса</param> public void GroupControlComboBox_SelectionChanged(Window1 window) { if (window.groupControlComboBox.SelectedItem == null) { return; } currentGroup = MTSystem.findGroupById(((Teacher)window.currentUser).getGroupId(window.groupControlComboBox.SelectedIndex)); RefreshData(window); }
/// <summary> /// Метод, инициализирующий комбобокс групп /// </summary> /// <param name="w">Объект главного окна для вывода результата</param> public void InitializeComboBox(Window1 w) { Teacher t = (Teacher)w.currentUser; if (t.GroupIdsCount == 0) { currentGroup = null; return; } w.groupControlComboBox.Items.Clear(); for (int i = 0; i < t.GroupIdsCount; i++) { w.groupControlComboBox.Items.Add(MTSystem.findGroupById(t.getGroupId(i)).Name); } w.groupControlComboBox.SelectedIndex = 0; }
/// <summary> /// Метод, просчитывающий текучку и отработанные часы по данному периоду времени. /// </summary> /// <param name="w">Объект главного окна для отображения данных</param> void CountDataFields(Window1 w) { int fulltime = 0, startStudentsCount = 0, endStudentsCount = 0; List <Session> l = MTSystem.LoadSessionsByGroupIdByTime(currentGroup.Id, currentDateRange.Start, currentDateRange.End); if (l[0] != null) { for (int i = 0; i < l.Count; i++) { fulltime += l[i].Duration; } startStudentsCount = l[0].StudentsCount; endStudentsCount = l[l.Count - 1].StudentsCount; w.loseBlock.Text = ((startStudentsCount - endStudentsCount) * (-100) / startStudentsCount).ToString() + "%"; } else { w.loseBlock.Text = "Отсутствуют данные"; } w.hoursBlock.Text = (fulltime / 60) + " час."; return; }
/// <summary> /// Метод обновления данных в окне. Вызывается при выборе группы в комбобоксе. /// </summary> /// <param name="window">Объект окна для отображения.</param> public void RefreshData(Window1 window) { if (currentGroup == null) { return; } window.idBlock.Text = currentGroup.Id.ToString(); window.nameBlock.Text = currentGroup.Name; window.groupColorPicker.SelectedColor = currentGroup.Color.Color; window.typeBlock.Text = currentGroup.Type.Name; window.levelBlock.Text = currentGroup.Level.Name; window.planHoursBlock.Text = currentGroup.PlanHours.ToString(); CountDataFields(window); window.infoBigGrid.Items.Clear(); window.infoSmallGrid.Items.Clear(); if (currentGroup.StudentsCount > 0) { List <int> studentIds = new List <int>(); for (int i = 0; i < currentGroup.StudentsCount; i++) { studentIds.Add(currentGroup.getStudentId(i)); } List <Student> students = MTSystem.LoadStudents(studentIds); for (int i = 0; i < students.Count; i++) { SampleGrid sg = students[i].toSample(); sg.P5 = (students[i].checkGroupId(currentGroup.Id))?"Ходит":"Выбыл"; window.infoBigGrid.Items.Add(sg); } } for (int i = 0; i < currentGroup.TeachersCount; i++) { window.infoSmallGrid.Items.Add(MTSystem.findTeacherById(currentGroup.getTeacherId(i)).toSample()); } }
/// <summary> /// Метод сохранения группы. /// </summary> /// <param name="infoBigGrid">Сетка для сохранения учеников группы</param> public void SaveGroup(DataGrid infoBigGrid) { if (currentGroup == null) { MessageBox.Show("Группа не выбрана!"); return; } List <int> students = new List <int>(); for (int i = 0; i < currentGroup.TeachersCount; i++) { students.Add(currentGroup.getTeacherId(i)); } currentGroup.ClearStudentIds(); for (int i = 0; i < infoBigGrid.Items.Count; i++) { SampleGrid sg = (SampleGrid)infoBigGrid.Items[i]; Student s = sg.toStudent(); if (sg.P5 == "Ходит") { if (!s.checkGroupId(currentGroup.Id)) { s.addGroupId(currentGroup.Id); MTSystem.SaveStudent(s); } } else { if (s.checkGroupId(currentGroup.Id)) { s.deleteGroupId(currentGroup.Id); MTSystem.SaveStudent(s); } } currentGroup.addStudentId(s.Id); } int count = 0; for (int i = 0; i < students.Count; i++) { for (int j = 0; j < currentGroup.StudentsCount; j++) { if (students[i] == currentGroup.getStudentId(j)) { count = 1; break; } } if (count == 0) { Student s = MTSystem.LoadStudent(students[i]); if (s != null) { if (s.checkGroupId(currentGroup.Id)) { s.deleteGroupId(currentGroup.Id); MTSystem.SaveStudent(s); } } } count = 0; } if (MTSystem.SaveGroup(currentGroup)) { MessageBox.Show("Сохранение прошло успешно!"); } }