public TeachersForm(Root root)
 {
     InitializeComponent();
     _root = root;
     // содаем панель с таблицей автоматически по классу и списку
     panel1.Controls.Add(GridPanelBuilder.BuildPropertyPanel(root, new Teacher(), root.Teachers));
 }
Beispiel #2
0
        // Обработчик события первой загрузки главной формы
        private void MainForm_Load(object sender, EventArgs e)
        {
            string fileName;

            fileName = Path.ChangeExtension(System.Windows.Forms.Application.ExecutablePath, ".mdb");
            if (File.Exists(fileName))
            {
                Helper.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=AccountingPerformanceView.mdb;";
                _root = SaverLoader.LoadFromBase(Helper.ConnectionString);
                if (!string.IsNullOrWhiteSpace(SaverLoader.OperationResult))
                {
                    Console.WriteLine("Ошибка загрузки: " + SaverLoader.OperationResult);
                }
                // при загрузке из файла корневой объект вновь создается, поэтому снова передаем ссылку на него
                Helper.DefineRoot(_root);
                // регистрируем таблицы сущностей после загрузки из файла
                _root.RegistryTables();
            }

            UpdateInterface();

            panel2.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_root, new StudyGroup(),
                                                                    _root.StudyGroups.FilteredBySpecialityAndSpecialization(Guid.Empty, Guid.Empty)));
            panel2.Enabled = false;
            var panel = GridPanelBuilder.BuildPropertyPanel(_root, new Student(),
                                                            _root.Students.FilteredBySpecialityAndSpecialization(Guid.Empty, Guid.Empty));

            GridPanelBuilder.HideButtonsPanel(panel);
            panel3.Controls.Add(panel);
        }
Beispiel #3
0
 public PassMattersForm(Root root)
 {
     InitializeComponent();
     _root = root;
     // создаем панель с таблицей автоматически по классу и списку из модели
     _gridPanel = GridPanelBuilder.BuildPropertyPanel(root, new PassMatter(), root.PassMatters);
     panel1.Controls.Add(_gridPanel);
 }
Beispiel #4
0
        // При выборе специализации заполняем таблицу курсов, применяя два фильтра-селектора
        private void cbSpecializations_SelectionChangeCommitted(object sender, EventArgs e)
        {
            // получаем выбранную специальность
            var speciality = (Speciality)cbSpecialities.SelectedItem;
            // получаем выбранную специализацию
            var specialization = (Specialization)cbSpecializations.SelectedItem;

            // если один из фильтров не выбран, выходим
            if (speciality == null || specialization == null)
            {
                return;
            }

            // заполняем таблицу фильтрованными значениями
            var panel = GridPanelBuilder.BuildPropertyPanel(_root, new StudyGroup(), _root.StudyGroups,
                                                            _root.StudyGroups.FilteredBySpecialityAndSpecialization(speciality.IdSpeciality, specialization.IdSpecialization),
                                                            new[] { "IdSpeciality", "IdSpecialization" },
                                                            new[] { speciality.IdSpeciality, specialization.IdSpecialization });

            panel.GridSelectedChanged += Panel_GroupSelectedChanged;
            panel2.Controls.Add(panel);
            // предыдущую панель убираем
            if (panel2.Controls.Count > 1)
            {
                panel2.Controls.RemoveAt(0);
            }
            panel2.Enabled = true;

            // заполняем таблицу фильтрованными значениями
            if (_group == null)
            {
                panel = GridPanelBuilder.BuildPropertyPanel(_root, new Student(), _root.Students,
                                                            _root.Students.FilteredBySpecialityAndSpecialization(speciality.IdSpeciality, specialization.IdSpecialization),
                                                            new[] { "IdSpeciality", "IdSpecialization" },
                                                            new[] { speciality.IdSpeciality, specialization.IdSpecialization });
            }
            else
            {
                panel = GridPanelBuilder.BuildPropertyPanel(_root, new Student(), _root.Students,
                                                            _root.Students.FilteredBySpecialityAndSpecialization(speciality.IdSpeciality, specialization.IdSpecialization, _group.IdStudyGroup),
                                                            new[] { "IdSpeciality", "IdSpecialization", "IdStudyGroup" },
                                                            new[] { speciality.IdSpeciality, specialization.IdSpecialization, _group.IdStudyGroup });
            }

            panel.GridSelectedChanged += Panel_GridSelectedChanged;
            panel3.Controls.Add(panel);
            // предыдущую панель убираем
            if (panel3.Controls.Count > 1)
            {
                panel3.Controls.RemoveAt(0);
            }
            GridPanelBuilder.HideButtonsPanel(panel);
            panel3.Enabled     = true;
            btnStudent.Enabled = btnMoveToGroup.Enabled = false;
            _student           = null;
            _group             = null;
        }
 private void EmptyPanel()
 {
     panel1.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_root, new MattersCourse(),
                                                             _root.MattersCourses.FilteredBySpecialityAndSpecialization(Guid.Empty, Guid.Empty)));
     if (panel1.Controls.Count > 1)
     {
         panel1.Controls.RemoveAt(0);
     }
     panel1.Enabled = false;
 }
Beispiel #6
0
 public SpecialitiesForm(Root root)
 {
     InitializeComponent();
     _root = root;
     // создаем панели с таблицами автоматически по классу и списку из модели
     _gridPanel = GridPanelBuilder.BuildPropertyPanel(root, new Speciality(), root.Specialities);
     _gridPanel.GridSelectedChanged += Panel_GridSelectedChanged;
     panel1.Controls.Add(_gridPanel);
     panel2.Controls.Add(GridPanelBuilder.BuildPropertyPanel(root, new Specialization(),
                                                             _root.Specializations.FilteredBySpeciality(Guid.Empty)));
     panel2.Enabled = false;
 }
 /// <summary>
 /// Подключение таблицы успеваемости
 /// </summary>
 /// <param name="student"></param>
 private void UpdatePerformanceTable(Student student)
 {
     if (_student != null && _semester != null)
     {
         var panel = GridPanelBuilder.BuildPropertyPanel(_root, new Performance(), _root.Performances,
                                                         _root.Performances.FilteredByStudentSemester(student.IdStudent, _semester.IdSemester),
                                                         new[] { "IdStudent", "IdSemester" },
                                                         new[] { student.IdStudent, _semester.IdSemester });
         panel1.Controls.Add(panel);
         // предыдущую панель убираем
         if (panel1.Controls.Count > 1)
         {
             panel1.Controls.RemoveAt(0);
         }
     }
 }
Beispiel #8
0
 private void FingGroupText(string text)
 {
     if (panel2.Controls.Count > 0)
     {
         var panel = (GridPanel)panel2.Controls[0];
         panel.GridSelectedChanged -= Panel_GroupSelectedChanged;
         try
         {
             GridPanelBuilder.FindText(panel, text);
         }
         finally
         {
             panel.GridSelectedChanged += Panel_GroupSelectedChanged;
         }
     }
 }
        /// <summary>
        /// Номер семестра выбран
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cbSemester_SelectionChangeCommitted(object sender, EventArgs e)
        {
            _semester = (Semester)cbSemester.SelectedItem;
            // обновляем таблицу успеваемости студента по номеру семестра
            var panel = GridPanelBuilder.BuildPropertyPanel(_root, new Performance(), _root.Performances,
                                                            _root.Performances.FilteredByStudentSemester(_student.IdStudent, _semester.IdSemester),
                                                            new[] { "IdStudent", "IdSemester" },
                                                            new[] { _student.IdStudent, _semester.IdSemester });

            panel1.Controls.Add(panel);
            // предыдущую панель убираем
            if (panel1.Controls.Count > 1)
            {
                panel1.Controls.RemoveAt(0);
            }
            panel1.Enabled = true;
        }
Beispiel #10
0
        private void Panel_GridSelectedChanged(object obj)
        {
            var speciality = (Speciality)obj;

            if (speciality != null)
            {
                panel2.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_root, new Specialization(), _root.Specializations,
                                                                        _root.Specializations.FilteredBySpeciality(speciality.IdSpeciality),
                                                                        new[] { "IdSpeciality" }, new[] { speciality.IdSpeciality }));
                panel2.Enabled = true;
            }
            else
            {
                panel2.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_root, new Specialization(),
                                                                        _root.Specializations.FilteredBySpeciality(Guid.Empty)));
                panel2.Enabled = false;
            }
            panel2.Controls.RemoveAt(0);
        }
Beispiel #11
0
 public EnrolleesForm(Root root)
 {
     InitializeComponent();
     _root = root;
     // панель с таблицей создается автоматичекси по типу класса и используя список из модели
     _panel = GridPanelBuilder.BuildPropertyPanel(root, new Enrollee(), root.Enrollees);
     panel1.Controls.Add(_panel);
     // заполняем список для фильтра специальностей
     tscbSpeciality.Items.Add(new SpecialityItem {
         IdSpeciality = Guid.Empty, Name = "Все специальности"
     });
     foreach (var item in root.Specialities)
     {
         tscbSpeciality.Items.Add(new SpecialityItem {
             IdSpeciality = item.IdSpeciality, Name = item.ToString()
         });
     }
     tscbSpeciality.SelectedItem = tscbSpeciality.Items[0];
 }
Beispiel #12
0
        /// <summary>
        /// Обработчик выбора фильтра специалности
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tscbSpeciality_SelectedIndexChanged(object sender, EventArgs e)
        {
            var item = (SpecialityItem)tscbSpeciality.SelectedItem;

            // выбран фильтр для всех специальностей
            if (item.IdSpeciality == Guid.Empty)
            {
                _panel = GridPanelBuilder.BuildPropertyPanel(_root, new Enrollee(), _root.Enrollees);
                panel1.Controls.Add(_panel);
            }
            else // выбрана одна из специальностей
            {
                // таблица строится с учетом выбранной специальности
                _panel = GridPanelBuilder.BuildPropertyPanel(_root, new Enrollee(), _root.Enrollees,
                                                             _root.Enrollees.FilteredBySpeciality(item.IdSpeciality), "IdSpeciality", item.IdSpeciality);
                panel1.Controls.Add(_panel);
            }
            // прежняя панель удаляется
            panel1.Controls.RemoveAt(0);
        }
Beispiel #13
0
 private void tsmiDictionaries_DropDownOpening(object sender, EventArgs e)
 {
     tsmiDictionaries.DropDownItems.Clear();
     foreach (var tableName in _school.GetTableNames())
     {
         var tsmi = new ToolStripMenuItem {
             Text = tableName
         };
         tsmi.Click += (o, arg) =>
         {
             pnlContainer.Controls.Clear();
             var tableItem = _school.GetTableInfo(tableName);
             if (tableItem != null)
             {
                 pnlContainer.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_school, tableItem.Item, tableItem.Table));
             }
         };
         tsmiDictionaries.DropDownItems.Add(tsmi);
     }
 }
Beispiel #14
0
        private void ListOfDebtorsForm_Activated(object sender, EventArgs e)
        {
            _debtors.Clear();

            // проходим по всем семестрам, начиная с меньшего номера
            foreach (var semester in _root.Semesters.OrderBy(x => x.Number))
            {
                // смотрим в списке успеваемости для данного семестра
                foreach (var performances in _root.Performances.Where(x => x.IdSemester == semester.IdSemester)
                         .GroupBy(x => x.IdStudent).OrderBy(x => x.Key.ToString()))
                {
                    foreach (var item in performances.Where(x => x.Grade == Grade.Незачёт))
                    {
                        if (_root.Students.FirstOrDefault(x => x.IdStudent == item.IdStudent) == null)
                        {
                            continue;
                        }
                        // заполняем список должников
                        _debtors.Add(new Debtor
                        {
                            IdStudent    = item.IdStudent,
                            IdStudyGroup = Helper.GetStudentGroupId(item.IdStudent),
                            IdSemester   = item.IdSemester,
                            IdMatter     = item.IdMatter
                        });
                    }
                }
            }
            // заполняем таблицу фильтрованными значениями
            var panel = GridPanelBuilder.BuildPropertyPanel(_root, new Debtor(), _debtors);

            GridPanelBuilder.HideButtonsPanel(panel);
            panel.GridSelectedChanged += Panel_GridSelectedChanged;
            panel1.Controls.Add(panel);
            // предыдущую панель убираем
            if (panel1.Controls.Count > 1)
            {
                panel1.Controls.RemoveAt(0);
            }
            panel1.Enabled = true;
        }
        /// <summary>
        /// При выборе специализации заполняем таблицу курсов, применяя два фильтра-селектора
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cbSpecializations_SelectionChangeCommitted(object sender, System.EventArgs e)
        {
            // получаем выбранную специальность
            var speciality = (Speciality)cbSpecialities.SelectedItem;
            // получаем выбранную специализацию
            var specialization = (Specialization)cbSpecializations.SelectedItem;

            // если один из фильтров не выбран, выходим
            if (speciality == null || specialization == null)
            {
                return;
            }
            // заполняем таблицу фильтрованными значениями
            panel1.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_root, new MattersCourse(), _root.MattersCourses,
                                                                    _root.MattersCourses.FilteredBySpecialityAndSpecialization(speciality.IdSpeciality, specialization.IdSpecialization),
                                                                    new[] { "IdSpeciality", "IdSpecialization" },
                                                                    new[] { speciality.IdSpeciality, specialization.IdSpecialization }));
            // предыдущую панель убираем
            panel1.Controls.RemoveAt(0);
            panel1.Enabled = true;
        }
Beispiel #16
0
 private void tbFind_TextChanged(object sender, EventArgs e)
 {
     foreach (var student in _root.Students.Where(x => x.FullName.StartsWith(tbFind.Text,
                                                                             StringComparison.CurrentCultureIgnoreCase)))
     {
         var speciality = _root.Specialities.FirstOrDefault(x => x.IdSpeciality == student.IdSpeciality);
         cbSpecialities.Items.Clear();
         foreach (var item in _root.Specialities)
         {
             cbSpecialities.Items.Add(item);
         }
         cbSpecialities.SelectedItem = speciality;
         // получаем выбранную специальность
         speciality = (Speciality)cbSpecialities.SelectedItem;
         // получаем выбранную специализацию
         var specialization = _root.Specializations.FirstOrDefault(x => x.IdSpecialization == student.IdSpecialization);
         // очищаем список специализаций
         cbSpecializations.Items.Clear();
         if (speciality == null)
         {
             return;
         }
         // заполняем список специализаций только для выбранной специальности
         foreach (var item in _root.Specializations.Where(x => x.IdSpeciality == speciality.IdSpeciality))
         {
             cbSpecializations.Items.Add(item);
         }
         cbSpecializations.SelectedItem = specialization;
         cbSpecializations_SelectionChangeCommitted(cbSpecializations, new EventArgs());
         if (panel3.Controls.Count > 0)
         {
             GridPanelBuilder.FindText((GridPanel)panel3.Controls[0], tbFind.Text);
         }
         break;
     }
 }
Beispiel #17
0
 /// <summary>
 /// Обработчик изменения текста в строке поиска по фамилии
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void tstbFind_TextChanged(object sender, EventArgs e)
 {
     // вызываем метод поиска по фамилии
     GridPanelBuilder.FindText(_panel, tstbFind.Text);
 }