/// <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("Группа удалена!");
		}
Пример #3
0
        /// <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);
        }
Пример #8
0
        /// <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;
			}
		}