/// <summary> /// Метод-callback для кнопки "опции" /// </summary> void OptionsButton_Click(object sender, RoutedEventArgs e) { if (ButtonFlag == ButtonFlags.LogIn) { ButtonFlag = ButtonFlags.Options; String[] str = MTSystem.LoadConnectionData(); spRememberMe.Visibility = Visibility.Hidden; LogBox.Text = str[0]; PassBox.Text = str[1]; loginLabel.Text = "Название БД"; passLabel.Text = "IP-адрес"; LogButton.Content = "Принять"; OptionsButton.Content = "Закрыть"; } else { spRememberMe.Visibility = Visibility.Visible; ButtonFlag = ButtonFlags.LogIn; LogBox.Text = ""; PassBox.Text = ""; loginLabel.Text = "Логин"; passLabel.Text = "Пароль"; LogButton.Content = "Войти"; OptionsButton.Content = "Опции"; } }
/// <summary> /// Метод, осуществляющая поиск администраторов в системе по вводимым данным /// </summary> /// <param name="data">Строка с вводимыми данными. Данные могут означать как имя (часть имени) админа, так и его id в БД</param> /// <returns>Лист администраторов. Если их нет, то первый элемент листа будет равен null</returns> public static List <Admin> FindAdmins(String data) { int res = 0; List <Admin> t = new List <Admin>(); if (Int32.TryParse(data, out res)) { User u = MTSystem.LoadClient(res, PermType.Admin); if (u != null) { t.Add(u.toAdmin()); } else { t.Add(null); } return(t); } List <User> users = MTSystem.LoadClients(data, PermType.Admin); for (int i = 0; i < users.Count; i++) { if (users[i] != null) { t.Add(users[i].toAdmin()); } else { t.Add(null); } } return(t); }
/// <summary> /// Метод, конвертирующая текущий объект в класс SampleGrid /// </summary> /// <returns>Возвращает объект SampleGrid</returns> public new SampleGrid toSample() { SampleGrid s = base.toSample(); s.P5 = MTSystem.GetStringFromIds(groupIds); return(s); }
/// <summary> /// Метод, рассчитывающая данные (текучка, посещение) относительно выбранного периода. /// </summary> void CountDataFields() { if(currentObject is Student) { Student st = (Student) currentObject; int fulltime = 0; List<Session> l = MTSystem.LoadPresentSessionsByStudentId(st.Id); if(l[0] != null) { for(int i = 0; i<l.Count; i++) fulltime += l[i].Duration; } infoBlock5.Text = (fulltime/60) + " час."; return; } if(currentObject is Group) { Group gr = (Group) currentObject; int fulltime = 0, startStudentsCount = 0, endStudentsCount = 0; List<Session> l = MTSystem.LoadSessionsByGroupIdByTime(gr.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; infoBlock6.Text = ((startStudentsCount - endStudentsCount)*(-100)/startStudentsCount).ToString() + "%"; } else infoBlock6.Text = "Отсутствуют данные"; infoBlock5.Text = (fulltime/60) + " час."; return; } }
/// <summary> /// Метод удаления строки расписания /// </summary> /// <param name="row">Удаляемая строка расписания</param> /// <param name="sch">Объект расписания, которому принадлежит строка</param> /// <returns>Успешность операции (true - успех, иначе false)</returns> public bool DeleteRow(ScheduleRow row, Schedule sch) { int id = row.Id; sch.deleteRow(row); return(MTSystem.DeleteScheduleRow(id)); }
/// <summary> /// Метод создания зала /// </summary> /// <param name="tb">Название нового зала</param> /// <returns>Успешность операции (true - успех, иначе false)</returns> public bool CreateHall(String tb) { if (tb == "") { return(false); } Hall t = new Hall(); t.Name = tb; MTSystem.CreateHall(t); t.Id = MTSystem.GetLastInsertId("halls"); MTSystem.addHall(t); for (int i = 0; i < MTSystem.SchedulesCount; i++) { for (int j = 0; j < MTSystem.getSchedule(i).RowCount; j++) { for (int k = 1; k <= 7; k++) { MTSystem.getSchedule(i).getRow(j).GroupIds.Insert(MTSystem.HallsCount * k - 1, 0); } } } return(true); }
/// <summary> /// Метод создания строки расписания /// </summary> /// <param name="text">Название новой строки расписания</param> /// <param name="sch">Объект расписания, которому принадлежит строка</param> /// <returns>Успешность операции (true - успех, иначе false)</returns> public bool CreateRow(String text, Schedule sch) { if (!text.Contains(":")) { return(false); } TimeSpan sp = new TimeSpan(); if (!TimeSpan.TryParse(text, out sp)) { return(false); } ScheduleRow row = new ScheduleRow(); row.ScheduleId = sch.Id; row.Time = sp; for (int i = 0; i < 7 * MTSystem.HallsCount; i++) { row.GroupIds.Add(0); } MTSystem.CreateScheduleRow(row); row.Id = MTSystem.GetLastInsertId("rows"); sch.addRow(row); return(true); }
private ButtonFlags ButtonFlag = ButtonFlags.LogIn; //Текущее состояние кнопки авторизации public LogWindow() { InitializeComponent(); if (File.Exists("mydata.bin")) // Вытаскиваем данные "rememberMe" { using (BinaryReader reader = new BinaryReader(File.Open("mydata.bin", FileMode.Open))) { bool isRemember = reader.ReadBoolean(); if (isRemember) { rememberMeBox.IsChecked = true; LogBox.Text = reader.ReadString(); //login PassBox.Text = reader.ReadString(); //pass reader.Close(); if (TryToLogIn() == 2) //Попытка авторизации { User r = MTSystem.LoadClient(LogBox.Text, PermType.All); var main = new Window1(r); main.Show(); this.Close(); } } else { reader.Close(); } } } else { WriteToRemeberDataFile(false, "NULL", "NULL"); } }
/// <summary> /// Метод, конвертирующая текущий объект в класс Teacher /// Используется только после проверки на соответствие классу Teacher /// </summary> /// <returns>Возвращает объект Teacher</returns> public Teacher toTeacher() { if (!IsValid()) { return(null); } return(MTSystem.findTeacherById(Id)); }
/// <summary> /// Метод сохранения расписания (сохраняется название). /// </summary> /// <param name="tb">Новое название расписания</param> /// <param name="current">Объект текущего расписания</param> /// <returns>Успешность операции (true - успех, иначе false)</returns> public bool SaveSchedule(String tb, Schedule current) { if (tb == "") { return(false); } current.ScheduleName = tb; return(MTSystem.SaveSchedule(current)); }
/// <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); }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if ((int)value == 0) { return(Brushes.White); } Group g = MTSystem.findGroupById((int)value); return(g.Color); //возвращает значение цвета группы }
/// <summary> /// Метод сохранения зала (сохраняется название). /// </summary> /// <param name="index">индекс текущего зала в массиве залов</param> /// <param name="tb">Новое название зала</param> /// <returns>Успешность операции (true - успех, иначе false)</returns> public bool SaveHall(int index, String tb) { Hall t = MTSystem.getHall(index); if (tb == "") { return(false); } t.Name = tb; return(MTSystem.SaveHall(t)); }
/// <summary> /// Метод, инициализирующий комбобокс с залами. /// </summary> /// <param name="cb">Комбобокс с залами.</param> public void InitNameComboBox(ComboBox cb) { for (int i = 0; i < MTSystem.HallsCount; i++) { cb.Items.Add(MTSystem.getHall(i).Name); } if (MTSystem.HallsCount != 0) { cb.SelectedIndex = 0; } }
/// <summary> /// Callback-Метод для входа игрока в систему /// </summary> void LogButton_Click(object sender, RoutedEventArgs e) { if (ButtonFlag == ButtonFlags.LogIn) { if (TryToLogIn() == 2) //Если в режиме авторизации, пробуем залогиниться { if (rememberMeBox.IsChecked == true) { WriteToRemeberDataFile(true, LogBox.Text, PassBox.Text); } else { WriteToRemeberDataFile(false, "NULL", "NULL"); } User r = MTSystem.LoadClient(LogBox.Text, PermType.All); var main = new Window1(r); main.Show(); Close(); } } else //Если в режиме опций, то сохраняем данные { ButtonFlag = ButtonFlags.LogIn; spRememberMe.Visibility = Visibility.Visible; String[] str = new string[2]; if (LogBox.Text == "") { str[0] = "NULL"; } else { str[0] = LogBox.Text; } if (PassBox.Text == "") { str[1] = "NULL"; } else { str[1] = PassBox.Text; } MTSystem.SaveConnectionData(str); LogBox.Text = ""; PassBox.Text = ""; loginLabel.Text = "Логин"; passLabel.Text = "Пароль"; LogButton.Content = "Войти"; OptionsButton.Content = "Опции"; } }
/// <summary> /// Метод сохранения строки расписания (сохраняется название). /// </summary> /// <param name="text">Новое название строки расписания</param> /// <param name="row">Объект текущей строки расписания</param> /// <returns>Успешность операции (true - успех, иначе false)</returns> public bool SaveRow(String text, ScheduleRow row) { TimeSpan sp = new TimeSpan(); if (!TimeSpan.TryParse(text, out sp)) { return(false); } row.Time = sp; return(MTSystem.SaveScheduleRow(row)); }
/// <summary> /// Метод-callback для кнопки удаления зала. /// Вызывает окно подтверждения. /// </summary> void deleteButton_Click(object sender, RoutedEventArgs e) { if (nameComboBox.SelectedItem == null) { return; } ConfirmWindow cw = new ConfirmWindow("Вы точно хотите удалить зал " + MTSystem.getHall(nameComboBox.SelectedIndex).Name + "?"); cw.ConfirmEvent += DeleteHall_CallBack; cw.ShowDialog(); }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if ((int)value == 0) { return("Пусто"); } Group g = MTSystem.findGroupById((int)value); StringBuilder sb = new StringBuilder(); sb.AppendFormat("{0}{1}{2}{1}{3}{1}{4}", g.Name, Environment.NewLine, g.Type.Name, g.Level.Name, (g.TeachersCount == 0)?"":MTSystem.findTeacherById(g.getTeacherId(0)).Name); return(sb.ToString()); //возвращает форматированную строку в ячейке расписания (название группы, тип группы, уровень, имя препода) }
/// <summary> /// Метод удаления расписания /// </summary> /// <param name="t">Удаляемое расписание</param> /// <returns>Успешность операции (true - успех, иначе false)</returns> public bool DeleteSchedule(Schedule t) { if (MTSystem.DeleteSchedule(t)) { MTSystem.deleteSchedule(t); return(true); } else { return(false); } }
/// <summary> /// Метод, осуществляющая поиск учеников в системе по вводимым данным /// </summary> /// <param name="data">Строка с вводимыми данными. Данные могут означать как имя (часть имени) ученика, так и его id в БД</param> /// <returns>Лист учеников. Если их нет, то первый элемент листа будет равен null</returns> public static List <Student> FindStudents(String data) { int res = 0; if (Int32.TryParse(data, out res)) { List <Student> st = new List <Student>(); st.Add(MTSystem.LoadStudent(res)); return(st); } return(MTSystem.LoadStudents(data)); }
/// <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> /// Метод создания расписания /// </summary> /// <param name="tb">Название нового расписания</param> /// <returns>Успешность операции (true - успех, иначе false)</returns> public bool CreateSchedule(String tb) { if (tb == "") { return(false); } Schedule t = new Schedule(); t.ScheduleName = tb; MTSystem.CreateSchedule(t); t.Id = MTSystem.GetLastInsertId("schedules"); MTSystem.addSchedule(t); return(true); }
/// <summary> /// Метод, осуществляющая поиск преподавателей в системе по вводимым данным /// </summary> /// <param name="data">Строка с вводимыми данными. Данные могут означать как имя (часть имени) преподавателя, так и его id в БД</param> /// <returns>Лист преподавателей. Если их нет, то первый элемент листа будет равен null</returns> public static List <Teacher> FindTeachers(String data) { int res = 0; List <Teacher> t = new List <Teacher>(); if (Int32.TryParse(data, out res)) { t.Add(MTSystem.findTeacherById(res)); return(t); } t = MTSystem.findTeachersByName(data); if (t.Count == 0) { t.Add(null); } return(t); }
/// <summary> /// Метод, осуществляющая поиск статусов учеников в системе по вводимым данным /// </summary> /// <param name="data">Строка с вводимыми данными (название или часть названия статуса ученика).</param> /// <returns>Лист статусов учеников. Если их нет, то первый элемент листа будет равен null</returns> public static List <StudentStatus> FindStudentStatuses(String data) { List <StudentStatus> lg = new List <StudentStatus>(); for (int i = 0; i < MTSystem.StudentStatusesCount; i++) { if (MTSystem.getStudentStatus(i).Name.Contains(data)) { lg.Add(MTSystem.getStudentStatus(i)); } } if (lg.Count == 0) { lg.Add(null); } return(lg); }
/// <summary> /// Метод, осуществляющая поиск уровней групп в системе по вводимым данным /// </summary> /// <param name="data">Строка с вводимыми данными (название или часть названия уровня группы).</param> /// <returns>Лист уровней групп. Если их нет, то первый элемент листа будет равен null</returns> public static List <GroupLevel> FindGroupLevels(String data) { List <GroupLevel> lg = new List <GroupLevel>(); for (int i = 0; i < MTSystem.GroupLevelCount; i++) { if (MTSystem.getGroupLevel(i).Name.Contains(data)) { lg.Add(MTSystem.getGroupLevel(i)); } } if (lg.Count == 0) { lg.Add(null); } return(lg); }
/// <summary> /// Метод, осуществляющая поиск типов достижений в системе по вводимым данным /// </summary> /// <param name="data">Строка с вводимыми данными (название или часть названия достижения).</param> /// <returns>Лист типов достижений. Если их нет, то первый элемент листа будет равен null</returns> public static List <EventType> FindEventTypes(String data) { List <EventType> lg = new List <EventType>(); for (int i = 0; i < MTSystem.EventTypesCount; i++) { if (MTSystem.getEventType(i).Name.Contains(data)) { lg.Add(MTSystem.getEventType(i)); } } if (lg.Count == 0) { lg.Add(null); } return(lg); }
/// <summary> /// Метод, осуществляющая поиск групп в системе по вводимым данным /// </summary> /// <param name="data">Строка с вводимыми данными. Данные могут означать как имя (часть имени) группы, так и ее id в БД</param> /// <returns>Лист групп. Если их нет, то первый элемент листа будет равен null</returns> public static List <Group> FindGroups(String data) { int res = 0; List <Group> lg = new List <Group>(); if (Int32.TryParse(data, out res)) { lg.Add(MTSystem.findGroupById(res)); return(lg); } lg = MTSystem.findGroupsByName(data); if (lg.Count == 0) { lg.Add(null); } return(lg); }
/// <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> /// Метод удаления зала /// </summary> /// <param name="index">Индекс удаляемого зала</param> /// <returns>Успешность операции (true - успех, иначе false)</returns> public bool DeleteHall(int index) { currentHall = index; Hall t = MTSystem.getHall(currentHall); int id = t.Id; for (int i = 0; i < MTSystem.SchedulesCount; i++) { for (int j = 0; j < MTSystem.getSchedule(i).RowCount; j++) { for (int k = 0; k < 7; k++) { MTSystem.getSchedule(i).getRow(j).GroupIds.RemoveAt(currentHall + (MTSystem.HallsCount - 1) * k); } } } MTSystem.deleteHall(t); return(MTSystem.DeleteHall(id)); }
/// <summary> /// Метод-callback для кнопки добавления данных меньшей важности (препод для группы, достижение для ученика). /// </summary> void addButtonSmall_Click(object sender, RoutedEventArgs e) { if(addButtonSmall.Content.ToString() == "Добавить преподавателя") { if(cbSmall.Items.Count == 0) return; infoSmallGrid.Items.Add(MTSystem.findTeachersByName(cbSmall.SelectedItem.ToString())[0].toSample()); cbSmall.Items.Remove(cbSmall.SelectedItem); if(cbSmall.Items.Count != 0) cbSmall.SelectedIndex = 0; } else if(addButtonSmall.Content.ToString() == "Добавить достижение") { if(cbSmall.Items.Count == 0) return; Achievement a = new Achievement(); a.Type = MTSystem.findEventTypeByName(cbSmall.SelectedItem.ToString()).Id; a.Place = cbPlace.SelectedIndex; infoSmallGrid.Items.Add(a.toSample()); cbSmall.Items.Remove(cbSmall.SelectedItem); if(cbSmall.Items.Count != 0) cbSmall.SelectedIndex = 0; } }