private async void dataGrid_CellEditEnded(object sender, Microsoft.Toolkit.Uwp.UI.Controls.DataGridCellEditEndedEventArgs e)//Проверка ячеек после изменения { usersclone = await De_Serialization.Deserialisation <List <UserData> >("UserData.xml", CreationCollisionOption.OpenIfExists, users); if (e.Column.Header.ToString() == "DisciplineType") { var item = (UserData)dataGrid.SelectedItem; bool confirm = false; if (item.AccountType == 0) { foreach (string group in groups) { if (group == item.DisciplineType) { confirm = true; break; } } } if (!confirm) { users[dataGrid.SelectedIndex].DisciplineType = usersclone[dataGrid.SelectedIndex].DisciplineType; dataGrid.ItemsSource = new List <UserData>(); dataGrid.ItemsSource = users; } } if (e.Column.Header.ToString() == "AccountType") { if (users[dataGrid.SelectedIndex].AccountType > 2 || users[dataGrid.SelectedIndex].AccountType < 0) { users[dataGrid.SelectedIndex].AccountType = usersclone[dataGrid.SelectedIndex].AccountType; } } }
private async void Page_Loading(FrameworkElement sender, object args) //Начало работы { listBoxes = new List <ListBox>(); users = await De_Serialization.Deserialisation <List <UserData> >("UserData.xml", CreationCollisionOption.OpenIfExists, users); dataGrid.ItemsSource = users; usersclone = users; disciplines = await De_Serialization.Deserialisation <List <string> >("Disciplines.xml", CreationCollisionOption.OpenIfExists, disciplines); AddingItems(disciplines, DisciplinesListBox); ExcelDiscComboBox.ItemsSource = disciplines; groups = await De_Serialization.Deserialisation <List <string> >("Groups.xml", CreationCollisionOption.OpenIfExists, groups); AddingItems(groups, GroupListBox); RaspComboBox.ItemsSource = groups; ExcelGroupComboBox.ItemsSource = groups; listBoxes.Add(RaspMonListBox); listBoxes.Add(RaspTueListBox); listBoxes.Add(RaspWenListBox); listBoxes.Add(RaspThuListBox); listBoxes.Add(RaspFriListBox); listBoxes.Add(RaspSatListBox); }
private async void Page_Loaded(object sender, RoutedEventArgs e) { List <UserData> users = new List <UserData>(); users = await De_Serialization.Deserialisation <List <UserData> >("UserData.xml", CreationCollisionOption.OpenIfExists, users); foreach (UserData user in users) { if (user.AccountType == 0) { students.Add(user); } } disciplines = await De_Serialization.Deserialisation <List <string> >("Disciplines.xml", CreationCollisionOption.OpenIfExists, disciplines); groups = await De_Serialization.Deserialisation <List <string> >("Groups.xml", CreationCollisionOption.OpenIfExists, groups); AddingItems(groups, groupsListBox); RaspComboBox.ItemsSource = groups; listBoxes = new List <ListBox>(); listBoxes.Add(RaspMonListBox); listBoxes.Add(RaspTueListBox); listBoxes.Add(RaspWenListBox); listBoxes.Add(RaspThuListBox); listBoxes.Add(RaspFriListBox); listBoxes.Add(RaspSatListBox); for (int i = 0; i < biglist.Count; i++) { listBoxes[i].ItemsSource = biglist[i]; } }
//----------------------------------------------------------------------------------------------------------------Общее private async void Page_Loading(FrameworkElement sender, object args) { users = await De_Serialization.Deserialisation <List <UserData> >("UserData.xml", CreationCollisionOption.OpenIfExists, users); groups = await De_Serialization.Deserialisation <List <string> >("Groups.xml", CreationCollisionOption.OpenIfExists, groups); RegDiscBox.ItemsSource = groups; }
//---------------------------------------------------------------------------------------------------------------------------------------------Кнопки для генерации private async void CreateExcelButton_Click(object sender, RoutedEventArgs e) { if (ExcelGroupComboBox.SelectedIndex != -1 && ExcelDiscComboBox.SelectedIndex != -1) { FileInfo fileex = new FileInfo(ApplicationData.Current.LocalFolder.Path + $@"\{groups[ExcelGroupComboBox.SelectedIndex]}.xlsx"); ExcelPackage.LicenseContext = LicenseContext.NonCommercial; ToastNotifier toastNote = ToastNotificationManager.CreateToastNotifier(); Windows.Data.Xml.Dom.XmlDocument xml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02); Windows.Data.Xml.Dom.XmlNodeList nodes = xml.GetElementsByTagName("text"); nodes.Item(0).AppendChild(xml.CreateTextNode("Генерация Excel файла")); using (ExcelPackage excelPackage = new ExcelPackage(fileex)) { try { ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add($"{disciplines[ExcelDiscComboBox.SelectedIndex]}"); List <List <string> > marks = new List <List <string> >(); marks = await De_Serialization.Deserialisation <List <List <string> > >($"{disciplines[ExcelDiscComboBox.SelectedIndex]}-{groups[ExcelGroupComboBox.SelectedIndex]}.xml", CreationCollisionOption.OpenIfExists, marks); for (int i = 1; i < marks.Count + 1; i++) { List <string> day = marks[i - 1]; for (int g = 1; g < day.Count + 1; g++) { string[] splitted = day[g - 1].Split('|'); if (i == 1 && g != day.Count) { worksheet.Cells[g + 1, i].Value = splitted[1]; worksheet.Cells[g + 1, i + 1].Value = splitted[0]; } else if (g == day.Count) { worksheet.Cells[1, i + 1].Value = day[g - 1]; } else { worksheet.Cells[g + 1, i + 1].Value = splitted[0]; } } } excelPackage.Save(); nodes.Item(1).AppendChild(xml.CreateTextNode("Excel файл успешно сохранен!")); } catch { nodes.Item(1).AppendChild(xml.CreateTextNode("Произошла ошибка в сохранении. Такое бывает, если в Excel уже есть лист с таким именем")); } ToastNotification toast = new ToastNotification(xml); toast.ExpirationTime = DateTime.Now.AddSeconds(4); toastNote.Show(toast); } } }
} //Автосохранение private async void RaspComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) //Загрузка расписания группы { biglist = new List <List <string> >(new List <string> [6]); biglist = await De_Serialization.Deserialisation <List <List <string> > >($"{RaspComboBox.SelectedItem.ToString()}.xml", CreationCollisionOption.OpenIfExists, biglist); for (int i = 0; i < biglist.Count; i++) { listBoxes[i].ItemsSource = biglist[i]; } }
private async void AddingDiscItems() //Добавление дисциплин { if ((date != "Sunday" && date != "") && groupstring != "") { if (date == "Monday") { dateint = 0; } if (date == "Tuesday") { dateint = 1; } if (date == "Wednesday") { dateint = 2; } if (date == "Thursday") { dateint = 3; } if (date == "Friday") { dateint = 4; } if (date == "Saturday") { dateint = 5; } login = new List <string>(); login = await De_Serialization.Deserialisation <List <string> >("LoginData.xml", CreationCollisionOption.OpenIfExists, login); biglist = new List <List <string> >(new List <string> [6]); biglist = await De_Serialization.Deserialisation <List <List <string> > >($"{groupstring}.xml", CreationCollisionOption.OpenIfExists, biglist); for (int i = 0; i < biglist.Count; i++) { List <string> smollist = biglist[i]; List <string> cleanlist = new List <string>(); for (int g = 0; g < smollist.Count; g++) { if (smollist[g].Contains(login[3])) { cleanlist.Add(smollist[g]); } } biglist[i] = cleanlist; } disciplinesListBox.ItemsSource = new List <string>(); disciplinesListBox.ItemsSource = biglist[dateint]; } }
private async void LoadUserButton_Click(object sender, RoutedEventArgs e)//Загрузка старых данных { usersclone = await De_Serialization.Deserialisation <List <UserData> >("UserData.xml", CreationCollisionOption.OpenIfExists, users); string confirm = await YesNoDialog("Подтвердите действие", $"Вы уверены, что хотите загрузить последние сохраненные данные, не сохранив нынешние? Последнее сохранение было в {date}"); if (confirm == "yes") { users = usersclone; dataGrid.ItemsSource = new List <UserData>(); dataGrid.ItemsSource = users; } }
private void AddUserButton_Click(object sender, RoutedEventArgs e)//Добавление { UserData us = new UserData("", "", "", "", 0, ""); users.Add(us); De_Serialization.Serialization <List <UserData> >("UserData.xml", CreationCollisionOption.ReplaceExisting, users); date = DateTime.Now; SaveTextBlock.Text = $"Последнее сохранение: {date}"; dataGrid.ItemsSource = new List <UserData>(); dataGrid.ItemsSource = users; }
//---------------------------------------------------------------------------------------------------------------------------------------------Кнопки для пользователей private async void SaveUserButton_Click(object sender, RoutedEventArgs e) //Сохранение пользователей { usersclone = await De_Serialization.Deserialisation <List <UserData> >("UserData.xml", CreationCollisionOption.OpenIfExists, users); for (int i = 0; i < users.Count; i++) { if (users[i].Password != usersclone[i].Password) { users[i].Password = Cypher.GetMd5Hash(users[i].Password); } } De_Serialization.Serialization <List <UserData> >("UserData.xml", CreationCollisionOption.ReplaceExisting, users); dataGrid.ItemsSource = new List <UserData>(); dataGrid.ItemsSource = users; date = DateTime.Now; SaveTextBlock.Text = $"Последнее сохранение: {date}"; }
private async void AppBarButton_Click_1(object sender, RoutedEventArgs e) //Сохранение оценок { bool confirm = true; foreach (var mark in savingmarks) { if (mark == null) { confirm = false; break; } } if (JournalDispTextBox.Text != "" && JournalGroupTextBox.Text != "" && confirm) { savingmarks.Add(JournalDatePicker.Date.ToString("dd.MM.yyyy")); bool checkdate = false; for (int i = 0; i < marks.Count; i++) { List <string> data = marks[i]; if (data[data.Count - 1] == savingmarks[savingmarks.Count - 1]) { checkdate = true; marks[i] = savingmarks; break; } } if (!checkdate) { marks.Add(savingmarks); } De_Serialization.Serialization <List <List <string> > >($"{JournalDispTextBox.Text}-{JournalGroupTextBox.Text}.xml", CreationCollisionOption.ReplaceExisting, marks); } else { ContentDialog prog = new ContentDialog() { Title = "Ошибка", Content = "Повторите заполнение оценок. Правильное заполнение: нажимаете на студента, затем в списке справа выбираете его оценку.", PrimaryButtonText = "OK" }; await prog.ShowAsync(); } }
public async void Refreshing(ListBox listBox)//Обновить список { if (listBox.Name == "DisciplinesListBox") { De_Serialization.Serialization <List <string> >("Disciplines.xml", CreationCollisionOption.ReplaceExisting, disciplines); DisciplinesListBox.Items.Clear(); disciplines = await De_Serialization.Deserialisation <List <string> >("Disciplines.xml", CreationCollisionOption.OpenIfExists, disciplines); AddingItems(disciplines, DisciplinesListBox); } else { De_Serialization.Serialization <List <string> >("Groups.xml", CreationCollisionOption.ReplaceExisting, groups); GroupListBox.Items.Clear(); groups = await De_Serialization.Deserialisation <List <string> >("Groups.xml", CreationCollisionOption.OpenIfExists, groups); AddingItems(groups, GroupListBox); } }
private void SavingRasp() //Сохранить расписание { if (RaspComboBox.SelectedItem != null) { List <string> smollist; biglist = new List <List <string> >(new List <string> [6]); for (int i = 0; i < listBoxes.Count; i++) { smollist = new List <string>(); for (int g = 0; g < listBoxes[i].Items.Count; g++) { string str = listBoxes[i].Items[g].ToString(); smollist.Add(str); } biglist[i] = smollist; } De_Serialization.Serialization <List <List <string> > >($"{RaspComboBox.SelectedItem.ToString()}.xml", CreationCollisionOption.ReplaceExisting, biglist); } }
//---------------------------------------------------------------------------------------------------------------------------------------------Кнопки для групп private async void RaspListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (RaspDatePicker.Date.ToString() != "" && (sender as ListBox).SelectedIndex != -1) { string[] para = dayrasp[(sender as ListBox).SelectedIndex].Split(" | "); FinalDispTextBlock.Text = para[1]; List <List <string> > marks = new List <List <string> >(); marks = await De_Serialization.Deserialisation <List <List <string> > >($"{para[1]}-{login[5]}.xml", CreationCollisionOption.OpenIfExists, marks); List <string> desiredday = new List <string>(); foreach (List <string> day in marks) { if (day[day.Count - 1] == RaspDatePicker.Date.ToString("dd.MM.yyyy")) { desiredday = day; } } if (desiredday.Count != 0) { foreach (string student in desiredday) { if (student.Contains(login[3])) { string[] getgrade = student.Split('|'); FinalGradeTextBlock.Text = getgrade[0]; break; } else { FinalGradeTextBlock.Text = "Не выставлено"; } } } else { FinalGradeTextBlock.Text = "Не выставлено"; } } }
//---------------------------------------------------------------------------------------------------------------------------------------------Кнопки для расписания private async void RaspComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) //Выбор группы { login = new List <string>(); login = await De_Serialization.Deserialisation <List <string> >("LoginData.xml", CreationCollisionOption.OpenIfExists, login); biglist = new List <List <string> >(new List <string> [6]); biglist = await De_Serialization.Deserialisation <List <List <string> > >($"{RaspComboBox.SelectedItem.ToString()}.xml", CreationCollisionOption.OpenIfExists, biglist); for (int i = 0; i < biglist.Count; i++) { List <string> smollist = biglist[i]; List <string> cleanlist = new List <string>(); for (int g = 0; g < smollist.Count; g++) { if (smollist[g].Contains(login[3])) { cleanlist.Add(smollist[g]); } } biglist[i] = cleanlist; listBoxes[i].ItemsSource = biglist[i]; } }
private async void Page_Loaded(object sender, RoutedEventArgs e) { login = await De_Serialization.Deserialisation <List <string> >("LoginData.xml", CreationCollisionOption.OpenIfExists, login); biglist = await De_Serialization.Deserialisation <List <List <string> > >($"{login[5]}.xml", CreationCollisionOption.OpenIfExists, biglist); }
//---------------------------------------------------------------------------------------------------------------------------------------------Кнопки для журнала private async void ListBoxItems() //Лист айтемы студентов + оценки { listbox.Items.Clear(); List <UserData> groupstudent = new List <UserData>(); foreach (UserData groupguy in students) { if (groupguy.DisciplineType == groupstring) { groupstudent.Add(groupguy); } } savingmarks = new List <string>(new string[groupstudent.Count]); //Десериализация - начало if (discipstring != "" && groupstring != "") { marks = await De_Serialization.Deserialisation <List <List <string> > >($"{discipstring}-{groupstring}.xml", CreationCollisionOption.OpenIfExists, marks); } bool confirm = false; List <string> data = new List <string>(); for (int i = 0; i < marks.Count; i++) { data = marks[i]; if (data[data.Count - 1] == JournalDatePicker.Date.ToString("dd.MM.yyyy")) { confirm = true; break; } } //Десериализация - конец for (int i = 0; i < groupstudent.Count; i++) { ListBoxItem boxItem = new ListBoxItem(); Grid grid = new Grid(); boxItem.SizeChanged += (s, e) => { grid.Width = boxItem.ActualWidth - 25; }; ColumnDefinition c1 = new ColumnDefinition(); c1.Width = new GridLength(1, GridUnitType.Star); grid.ColumnDefinitions.Add(c1); ColumnDefinition c2 = new ColumnDefinition(); c2.Width = new GridLength(1, GridUnitType.Auto); grid.ColumnDefinitions.Add(c2); TextBlock disciptextBox = new TextBlock(); disciptextBox.FontSize = 18; disciptextBox.Text = $"{groupstudent[i].Surname} {groupstudent[i].Name}"; disciptextBox.HorizontalAlignment = HorizontalAlignment.Stretch; Grid.SetColumn(disciptextBox, 0); grid.Children.Add(disciptextBox); ComboBox box = new ComboBox(); box.Items.Add("5"); box.Items.Add("4"); box.Items.Add("3"); box.Items.Add("2"); box.Items.Add("НБ"); if (confirm) { string[] dapasplit = data[i].Split('|'); if (dapasplit[0] == "5") { box.SelectedIndex = 0; } if (dapasplit[0] == "4") { box.SelectedIndex = 1; } if (dapasplit[0] == "3") { box.SelectedIndex = 2; } if (dapasplit[0] == "2") { box.SelectedIndex = 3; } if (dapasplit[0] == "НБ") { box.SelectedIndex = 4; } } box.HorizontalAlignment = HorizontalAlignment.Right; box.SelectionChanged += (s, e) => { if (box.SelectedIndex != -1 && listbox.SelectedIndex != -1) { savingmarks[listbox.SelectedIndex] = $"{box.SelectedItem.ToString()}|{groupstudent[listbox.SelectedIndex].Surname}"; } }; Grid.SetColumn(box, 1); grid.Children.Add(box); boxItem.Content = grid; listbox.Items.Add(boxItem); } }
private async void RegLogButton_Click(object sender, RoutedEventArgs e) //Кнопка входа/регистрации { if (RegGrid.Visibility == Visibility.Visible) //Действия для регистрации { if (RegTextBox.Text != "") { if (RegPasswordbx.Password != "") { string passw = Cypher.GetMd5Hash(RegPasswordbx.Password); if (RegNameBox.Text != "") { if (RegSurNameBox.Text != "") { if (RegTypeBox.SelectedIndex != -1) { UserData us = new UserData(RegTextBox.Text, passw, RegNameBox.Text, RegSurNameBox.Text, RegTypeBox.SelectedIndex, RegTextBlock.Text); users.Add(us); De_Serialization.Serialization <List <UserData> >("UserData.xml", CreationCollisionOption.OpenIfExists, users); RegGrid.Visibility = Visibility.Collapsed; LoginGrid.Visibility = Visibility.Visible; RegLogButton.Content = "Войти"; } } } } } //Ошибки if (RegTextBox.Text == "" || RegPasswordbx.Password == "" || RegNameBox.Text == "" || RegSurNameBox.Text == "" || RegTypeBox.SelectedIndex == -1) { ContentDialog prog = new ContentDialog() { Title = "Ошибка", Content = "Одно или несколько полей пустые", PrimaryButtonText = "OK" }; await prog.ShowAsync(); } } else //Действия для входа { if (users.Count != 0 && LoginTextBox.Text != "" && Passwordbx.Password != "") { string passw = Cypher.GetMd5Hash(Passwordbx.Password); bool confirmed = true; for (int i = 0; i < users.Count; i++) { if (LoginTextBox.Text == users[i].Login && passw == users[i].Password) { List <string> us = new List <string>() { users[i].Login, passw, users[i].Name, users[i].Surname, users[i].AccountType.ToString(), users[i].DisciplineType }; De_Serialization.Serialization <List <string> >("LoginData.xml", CreationCollisionOption.ReplaceExisting, us); confirmed = true; if (users[i].AccountType == 0) { this.Frame.Navigate(typeof(StudentPage)); } if (users[i].AccountType == 1) { this.Frame.Navigate(typeof(TeacherPage)); } if (users[i].AccountType == 2) { this.Frame.Navigate(typeof(AdminPage)); } break; } else { confirmed = false; } } if (!confirmed) { ContentDialog prog = new ContentDialog() { Title = "Ошибка", Content = "Неверный логин или пароль", PrimaryButtonText = "OK" }; await prog.ShowAsync(); } } } }