/// <summary> /// Метод, конвертирующая текущий объект в класс SampleGrid /// </summary> /// <returns>Возвращает объект SampleGrid</returns> public new SampleGrid toSample() { SampleGrid s = base.toSample(); s.P5 = MTSystem.GetStringFromIds(groupIds); return(s); }
/// <summary> /// Метод-callback, отвечающий за кнопку удаления более важных данных из таблиц /// (удаление учеников для группы, групп для ученика). /// </summary> void deleteButtonBig_Click(object sender, RoutedEventArgs e) { if(currentObject is Admin) return; if(currentObject is Group) { if(infoBigGrid.SelectedItem == null) { MessageBox.Show("Ученик не выбран!"); return; } SampleGrid sg = (SampleGrid)infoBigGrid.SelectedItem; if(sg.P5 == "Ходит") { infoBigGrid.Items.RemoveAt(infoBigGrid.SelectedIndex); sg.P5 = "Выбыл"; infoBigGrid.Items.Add(sg); MessageBox.Show("Ученик выбыл!"); } else if(sg.P5 == "Выбыл") { infoBigGrid.Items.RemoveAt(infoBigGrid.SelectedIndex); MessageBox.Show("Ученик удален!"); } return; } if(infoBigGrid.SelectedItem == null) { MessageBox.Show("Группа не выбрана!"); return; } infoBigGrid.Items.RemoveAt(infoBigGrid.SelectedIndex); MessageBox.Show("Группа удалена!"); }
/// <summary> /// Метод, конвертирующая объект EventType в объект смежного класса SampleGrid /// </summary> /// <returns>Возвращает объект SampleGrid</returns> public SampleGrid toSample() { SampleGrid sg = new SampleGrid(); sg.P1 = Id.ToString(); sg.P2 = Name; return(sg); }
/// <summary> /// Метод, конвертирующая текущий объект в класс SampleGrid /// </summary> /// <returns>Возвращает объект SampleGrid</returns> public SampleGrid toSample() { SampleGrid sg = new SampleGrid(); sg.P1 = Id.ToString(); sg.P2 = FullName; sg.P3 = Age.ToString(); sg.P4 = Status.Name; return(sg); }
/// <summary> /// Метод преобразует объект Achievement в объект смежного класса SampleGrid /// </summary> /// <returns>Объект класса SampleGrid</returns> public SampleGrid toSample() { SampleGrid sp = new SampleGrid(); EventType et = MTSystem.findEventTypeById(Type); sp.P1 = et.Id.ToString(); sp.P2 = et.Name; sp.P3 = (Place == 0)?"Участвовал":Place.ToString(); return(sp); }
/// <summary> /// Метод, конвертирующая текущий объект в класс SampleGrid /// </summary> /// <returns>Возвращает объект SampleGrid</returns> public virtual SampleGrid toSample() { SampleGrid sg = new SampleGrid(); sg.P1 = Id.ToString(); sg.P2 = Name; sg.P3 = Login; sg.P4 = Pass; return(sg); }
/// <summary> /// Метод, преобразующий текущий класс в объект класса SampleGrid /// </summary> /// <returns>Объект класса SampleGrid с данными текущего класса</returns> public SampleGrid toSample() { SampleGrid sg = new SampleGrid(); sg.P1 = Id.ToString(); sg.P2 = Name; sg.P3 = Type.Name; sg.P4 = Level.Name; DateTime start = new DateTime(); start.AddYears(DateTime.Today.Year); start.AddMonths(DateTime.Today.Month); List <Session> sessions = MTSystem.LoadSessionsByGroupIdByTime(Id, start, DateTime.Today.Add(new TimeSpan(23, 59, 59))); if (sessions[0] != null) { int count = 0; for (int i = 0; i < sessions.Count; i++) { count += sessions[i].Duration; } RealHours = count / 60; } else { RealHours = 0; } sg.P5 = RealHours.ToString(); sg.P6 = PlanHours.ToString(); List <Student> st = MTSystem.LoadStudents(StudentIds); if (st != null) { int count = 0; for (int i = 0; i < st.Count; i++) { if (st[i].checkGroupId(Id)) { count++; } } sg.P7 = count.ToString(); } else { sg.P7 = "0"; } return(sg); }
/// <summary> /// Метод, конвертирующая текущий объект в класс SampleGrid /// </summary> /// <returns>Возвращает объект SampleGrid</returns> public SampleGrid toSample() { SampleGrid sg = new SampleGrid(); sg.P1 = Id.ToString(); sg.P2 = Time.Date.ToString("dd.MM.yyyy"); sg.P3 = Duration.ToString(); Group g = MTSystem.findGroupById(GroupId); sg.P4 = (g == null)?"Error":g.Name; User u = MTSystem.LoadClient(UserId, PermType.All); sg.P5 = (u == null)?"Error":u.Name; sg.P6 = StudentsCount.ToString(); sg.P7 = present.Count.ToString(); sg.P8 = absent.Count.ToString(); return(sg); }
/// <summary> /// Метод-callback для кнопки сохранения/создания объекта. /// </summary> void saveButton_Click(object sender, RoutedEventArgs e) { if(currentObject is Teacher) { if(CheckDataBoxes(ObjectType.Teacher)) { int flag = 0; Teacher t = (Teacher) currentObject; t.Login = infoBlock3.Text; t.Pass = infoBlock5.Text; t.Name = infoBlock2.Text; if(!t.IsValid()) { if(MTSystem.CheckLogin(infoBlock3.Text)) { MessageBox.Show("Логин уже зарегистрирован!"); return; } MTSystem.CreateClient((User)t); t.Id = MTSystem.GetLastInsertId("users"); MTSystem.addTeacher(t); flag = 1; } // Алгоритмы сохранения данных без дублирования int count = 0; List<int> groups = new List<int>(); for(int i = 0; i<t.GroupIdsCount; i++) groups.Add(t.getGroupId(i)); t.ClearGroupIds(); for(int i = 0; i<infoBigGrid.Items.Count; i++) t.addGroupId(Convert.ToInt32(((SampleGrid)infoBigGrid.Items[i]).P1)); for(int i = 0; i<groups.Count; i++) { for(int j = 0; j<t.GroupIdsCount; j++) { if(groups[i] == t.getGroupId(j)) { count++; break; } } if(count == 0) // Если старая группа не найдена в новых, то ее удалили { Group g = MTSystem.findGroupById(groups[i]); g.deleteTeacherId(t.Id); MTSystem.SaveGroup(g); } count = 0; } for(int i = 0; i<t.GroupIdsCount; i++) { for(int j = 0; i<groups.Count; j++) { if(t.getGroupId(i) == groups[j]) { count++; break; } } if(count == 0) // Если новая группа не найдена в старых, то ее добавили { Group g = MTSystem.findGroupById(t.getGroupId(i)); g.addTeacherId(t.Id); MTSystem.SaveGroup(g); } count = 0; } if(MTSystem.SaveClient((User)t)) { if(flag == 1) MessageBox.Show("Преподаватель создан успешно!"); else MessageBox.Show("Преподаватель сохранен!"); } else { if(flag == 1) MessageBox.Show("Ошибка при создании!"); else MessageBox.Show("Ошибка при сохранении!"); } SaveWindowDataEvent(ObjectType.Teacher); Close(); } } else if(currentObject is Admin) { if(CheckDataBoxes(ObjectType.Admin)) { Admin t = (Admin) currentObject; t.Login = infoBlock3.Text; t.Pass = infoBlock5.Text; t.Name = infoBlock2.Text; if(t.IsValid()) { if(MTSystem.SaveClient((User)t)) MessageBox.Show("Администратор сохранен!"); else MessageBox.Show("Ошибка сохранения!"); } else { MTSystem.CreateClient((User)t); MessageBox.Show("Администратор создан успешно!"); } SaveWindowDataEvent(ObjectType.Admin); Close(); } } else if(currentObject is Group) { if(CheckDataBoxes(ObjectType.Group)) { Group t = (Group) currentObject; t.Name = infoBlock2.Text; t.PlanHours = Convert.ToInt32(infoBlock3.Text); int flag = 0; if(cbBlock4.SelectedItem.ToString() == "Не выбрано") { GroupType grouptype = new GroupType(); grouptype.Id = 0; grouptype.Name = "Не выбрано"; t.Type = grouptype; } else t.Type = MTSystem.findGroupTypeByName(cbBlock4.SelectedItem.ToString()); t.Color.Color = groupColorPicker.SelectedColor; if(cbBlock7.SelectedItem.ToString() == "Не выбрано") { GroupLevel grouplevel = new GroupLevel(); grouplevel.Id = 0; grouplevel.Name = "Не выбрано"; t.Level = grouplevel; } else t.Level = MTSystem.findGroupLevelByName(cbBlock7.SelectedItem.ToString()); if(!t.IsValid()) { MTSystem.CreateGroup(t); t.Id = MTSystem.GetLastInsertId("groups"); MTSystem.addGroup(t); flag = 1; } // Алгоритмы сохранения данных без дублирования List<int> teachers = new List<int>(); for(int i = 0; i<t.TeachersCount; i++) teachers.Add(t.getTeacherId(i)); int count = 0; List<int> students = new List<int>(); for(int i = 0; i<t.StudentsCount; i++) students.Add(t.getStudentId(i)); t.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(t.Id)) { s.addGroupId(t.Id); MTSystem.SaveStudent(s); } } else { if(s.checkGroupId(t.Id)) { s.deleteGroupId(t.Id); MTSystem.SaveStudent(s); } } t.addStudentId(s.Id); } for(int i = 0; i<students.Count; i++) { for(int j = 0; j<t.StudentsCount; j++) { if(students[i] == t.getStudentId(j)) { count = 1; break; } } if(count == 0) { Student s = MTSystem.LoadStudent(students[i]); if(s != null) { if(s.checkGroupId(t.Id)) { s.deleteGroupId(t.Id); MTSystem.SaveStudent(s); } } } count = 0; } t.ClearTeacherIds(); for(int i = 0; i<infoSmallGrid.Items.Count; i++) t.addTeacherId(Convert.ToInt32(((SampleGrid)infoSmallGrid.Items[i]).P1)); for(int i = 0; i<teachers.Count; i++) { for(int j = 0; j<t.TeachersCount; j++) { if(teachers[i] == t.getTeacherId(j)) { count++; break; } } if(count == 0) // Если старый препод не найден в новых, то его удалили { MTSystem.findTeacherById(teachers[i]).deleteGroupId(t.Id); } count = 0; } for(int i = 0; i<t.TeachersCount; i++) { for(int j = 0; j<teachers.Count; j++) { if(t.getTeacherId(i) == teachers[j]) { count++; break; } } if(count == 0) // Если новый препод не найден в старых, то его добавили { MTSystem.findTeacherById(t.getTeacherId(i)).addGroupId(t.Id); } count = 0; } if(MTSystem.SaveGroup(t)) { if(flag == 1) MessageBox.Show("Группа создана успешно!"); else MessageBox.Show("Группа сохранена!"); } else { if(flag == 1) MessageBox.Show("Ошибка при создании!"); else MessageBox.Show("Ошибка при сохранении!"); } SaveWindowDataEvent(ObjectType.Group); Close(); } } else if(currentObject is Student) { if(CheckDataBoxes(ObjectType.Student)) { Student t = (Student) currentObject; t.FullName = infoBlock2.Text; t.Age = Convert.ToInt32(infoBlock3.Text); if(cbBlock4.SelectedItem.ToString() == "Не выбрано") { StudentStatus status = new StudentStatus(); status.Id = 0; status.Name = "Не выбрано"; t.Status = status; } else t.Status = MTSystem.findStudentStatusByName(cbBlock4.SelectedItem.ToString()); int flag = 0; if(!t.IsValid()) { MTSystem.CreateStudent(t); t.Id = MTSystem.GetLastInsertId("students"); flag = 1; } // Алгоритмы сохранения данных без дублирования List<int> groups = new List<int>(); for(int i = 0; i<t.GroupIdsCount; i++) groups.Add(t.getGroupId(i)); t.ClearGroupIds(); for(int i = 0; i<infoBigGrid.Items.Count; i++) { t.addGroupId(Convert.ToInt32(((SampleGrid)infoBigGrid.Items[i]).P1)); } int count = 0; for(int i = 0; i<t.GroupIdsCount; i++) { for(int j = 0; i<groups.Count; j++) { if(t.getGroupId(i) == groups[j]) { count++; break; } } if(count == 0) // Если новая группа не найдена в старых, то ее добавили { Group g = MTSystem.findGroupById(t.getGroupId(i)); if(!g.checkStudentId(t.Id)) { g.addStudentId(t.Id); MTSystem.SaveGroup(g); } } count = 0; } t.ClearAchievements(); for(int i = 0; i<infoSmallGrid.Items.Count; i++) { Achievement a = new Achievement(); a.Type = Convert.ToInt32(((SampleGrid)infoSmallGrid.Items[i]).P1); if(((SampleGrid)infoSmallGrid.Items[i]).P3 == "Участвовал") a.Place = 0; else a.Place = Convert.ToInt32(((SampleGrid)infoSmallGrid.Items[i]).P3); t.addAchievement(a); } if(MTSystem.SaveStudent(t)) { if(flag == 1) MessageBox.Show("Ученик создан успешно!"); else MessageBox.Show("Ученик сохранен!"); } else { if(flag == 1) MessageBox.Show("Ошибка при создании!"); else MessageBox.Show("Ошибка при сохранении!"); } SaveWindowDataEvent(ObjectType.Student); Close(); } } }
/// <summary> /// Метод-callback, отвечающий за кнопку добавления более важных данных в таблицы /// (ученики для группы, группы для ученика). /// Осуществляет поиск данных по введенному значению. /// </summary> void addButtonBig_Click(object sender, RoutedEventArgs e) { if(findBoxBig.Text == "") { MessageBox.Show("Пустой поисковой запрос!"); return; } if(addButtonBig.Content.ToString() == "Добавить ученика") { List<Student> students = Finder.FindStudents(findBoxBig.Text); if(students[0] == null) { MessageBox.Show("Ученики не найдены!"); return; } if(students.Count == 1) { int count = 0; for(int i = 0; i<infoBigGrid.Items.Count; i++) { SampleGrid sg = (SampleGrid)infoBigGrid.Items[i]; if(sg.P1 == students[0].Id.ToString()) { if(sg.P5 == "Выбыл") { infoBigGrid.Items.RemoveAt(i); break; } count = 1; break; } } if(count == 0) { SampleGrid ns = students[0].toSample(); ns.P5 = "Ходит"; infoBigGrid.Items.Add(ns); MessageBox.Show("Ученик добавлен!"); } else MessageBox.Show("Ученик уже присутствует!"); return; } SearchResultWindow srw = new SearchResultWindow(infoBigGrid, students); //Если поиск дал больше одного результата srw.SearchWindowResultEvent += SearchResult_CallBack; srw.ShowDialog(); } if(addButtonBig.Content.ToString() == "Добавить группу") { List<Group> gr = Finder.FindGroups(findBoxBig.Text); if(gr[0] == null) { MessageBox.Show("Группа не найдена!"); return; } if(gr.Count == 1) { int count = 0; for(int i = 0; i<infoBigGrid.Items.Count; i++) { SampleGrid sg = (SampleGrid)infoBigGrid.Items[i]; if(gr[0].Id.ToString() == ((SampleGrid)infoBigGrid.Items[i]).P1) { count = 1; break; } } if(count == 0) infoBigGrid.Items.Add(gr[0].toSample()); MessageBox.Show("Группа добавлена!"); return; } SearchResultWindow srw = new SearchResultWindow(infoBigGrid, gr);//Если поиск дал больше одного результата srw.SearchWindowResultEvent += SearchResult_CallBack; srw.ShowDialog(); } }
private CalendarDateRange currentDateRange = null; //Период для вычисления некоторых данных. public EditWindow(Object obj) { currentObject = obj; InitializeComponent(); // Конструктор окна в случае редактирования deleteButton.IsEnabled = true; if(obj is Admin) { Title = "Редактировать администратора"; Admin adm = (Admin)obj; SetConfiguration(ObjectType.Admin); ClearInfoBlocks(); infoBlock1.Text = adm.Id.ToString(); infoBlock2.Text = adm.Name; infoBlock3.Text = adm.Login; infoBlock5.Text = adm.Pass; } else if(obj is Group) { Title = "Редактировать группу"; Group gr = (Group)obj; SetConfiguration(ObjectType.Group); ClearInfoBlocks(); infoBlock1.Text = gr.Id.ToString(); infoBlock2.Text = gr.Name; infoBlock3.Text = gr.PlanHours.ToString(); CountDataFields(); groupColorPicker.SelectedColor = gr.Color.Color; for(int i = 0; i<gr.TeachersCount; i++) { infoSmallGrid.Items.Add(MTSystem.findTeacherById(gr.getTeacherId(i)).toSample()); } List<int> studentIds = new List<int>(); for(int i = 0; i<gr.StudentsCount; i++) { studentIds.Add(gr.getStudentId(i)); } List<Student> students = MTSystem.LoadStudents(studentIds); for(int i = 0; i<studentIds.Count; i++) { SampleGrid sg = students[i].toSample(); sg.P5 = (students[i].checkGroupId(gr.Id))?"Ходит":"Выбыл"; infoBigGrid.Items.Add(sg); } } else if(obj is Student) { Title = "Редактировать ученика"; Student st = (Student)obj; SetConfiguration(ObjectType.Student); ClearInfoBlocks(); infoBlock1.Text = st.Id.ToString(); infoBlock2.Text = st.FullName; infoBlock3.Text = st.Age.ToString(); CountDataFields(); for(int i = 0; i<st.AchievementsCount; i++) { infoSmallGrid.Items.Add(st.getAchievement(i).toSample()); } for(int i = 0; i<st.GroupIdsCount; i++) { infoBigGrid.Items.Add(MTSystem.findGroupById(st.getGroupId(i)).toSample()); } } else if(obj is Teacher) { Title = "Редактировать преподавателя"; Teacher tc = (Teacher)obj; SetConfiguration(ObjectType.Teacher); ClearInfoBlocks(); infoBlock1.Text = tc.Id.ToString(); infoBlock2.Text = tc.Name; infoBlock3.Text = tc.Login; infoBlock5.Text = tc.Pass; for(int i = 0; i<tc.GroupIdsCount; i++) { infoBigGrid.Items.Add(MTSystem.findGroupById(tc.getGroupId(i)).toSample()); } } }
/// <summary> /// Метод-callback для окна поиска (если наидено больше одного результата). /// Осуществляет перемещение выбранных позиций из таблицы результатов поиска в нужную таблицу /// </summary> /// <param name="outputGrid">Таблица, куда будут помещаться данные</param> /// <param name="list">Лист объектов-результатов поиска</param> /// <param name="ot">Тип объекта поиска</param> public void SearchResult_CallBack(DataGrid outputGrid, List<Object> list, ObjectType ot) { if(ot == ObjectType.Student) { if(list.Count == 0) { MessageBox.Show("Вы не выбрали ни одного ученика!"); return; } List<Student> students = new List<Student>(); for(int i = 0; i<list.Count; i++) students.Add((Student)list[i]); int count = 0; for(int i = 0; i<students.Count; i++) { for(int j = 0; j<outputGrid.Items.Count; j++) { SampleGrid sg = (SampleGrid)outputGrid.Items[j]; if(students[i].Id.ToString() == sg.P1) { if(sg.P5 == "Выбыл") { outputGrid.Items.RemoveAt(j); break; } count = 1; break; } } if(count == 0) { SampleGrid ns = students[i].toSample(); ns.P5 = "Ходит"; outputGrid.Items.Add(ns); } count = 0; } MessageBox.Show("Ученики добавлены!"); return; } if(ot == ObjectType.Group) { if(list.Count == 0) { MessageBox.Show("Вы не выбрали ни одну группу!"); return; } List<Group> gr = new List<Group>(); for(int i = 0; i<list.Count; i++) gr.Add((Group)list[i]); int count = 0; for(int i = 0; i<gr.Count; i++) { for(int j = 0; j<infoBigGrid.Items.Count; j++) { if(gr[i].Id.ToString() == ((SampleGrid)infoBigGrid.Items[j]).P1) { count = 1; break; } } if(count == 0) //Если группы еще не было у ученика, добавляем ему эту группу { infoBigGrid.Items.Add(gr[i].toSample()); } count = 0; } MessageBox.Show("Группы добавлены!"); return; } }