Example #1
0
 /// <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 = "Опции";
     }
 }
Example #2
0
        /// <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);
        }
Example #8
0
        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;
     }
 }
Example #15
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));
        }
Example #17
0
        /// <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);
     }
 }
Example #20
0
        /// <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);
        }
Example #23
0
        /// <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);
        }
Example #24
0
        /// <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);
        }
Example #25
0
        /// <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);
        }
Example #26
0
        /// <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);
        }
Example #27
0
        /// <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);
        }
Example #28
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>
        /// Метод удаления зала
        /// </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;
			}
		}