using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Diplom_B.DB; namespace Diplom_B { public partial class SetForm : Form { public SetForm() { InitializeComponent(); Init(); defaultBox.Items.Clear(); defaultBox.Items.AddRange(Program.user.FormsName); UpdateTable(WorkDB.ListUser(searchBox.Text)); } private void Init() { if (Program.user == null) this.Close(); { mainMenuStrip.Items[0].Enabled = Program.user.Usr.Dog > 0; mainMenuStrip.Items[1].Enabled = Program.user.Usr.Doc > 0; mainMenuStrip.Items[2].Enabled = Program.user.Usr.Izv > 0; mainMenuStrip.Items[3].Enabled = Program.user.Usr.Post > 0; mainMenuStrip.Items[4].Enabled = Program.user.Usr.Izd > 0; mainMenuStrip.Items[5].Enabled = Program.user.Usr.Zak > 0; mainMenuStrip.Items[6].Enabled = Program.user.Usr.Set > 0; mainMenuStrip.Items[6].Enabled = false; } { deleteButton.Enabled = Program.user.Usr.Set > 2; createButton.Enabled = Program.user.Usr.Set > 2; changeButton.Enabled = Program.user.Usr.Set > 1; } } private void ClearBoxes() { idLable.Text = ""; nameBox.Text = ""; passBox.Text = ""; defaultBox.SelectedIndex = 0; chkDog1.Checked = chkDog2.Checked = chkDog3.Checked = false; chkDoc1.Checked = chkDoc2.Checked = chkDoc3.Checked = false; chkIzv1.Checked = chkIzv2.Checked = chkIzv3.Checked = false; chkPost1.Checked = chkPost2.Checked = chkPost3.Checked = false; chkIzd1.Checked = chkIzd2.Checked = chkIzd3.Checked = false; chkZak1.Checked = chkZak2.Checked = chkZak3.Checked = false; chkSet1.Checked = chkSet2.Checked = chkSet3.Checked = false; } private void clearButton_Click(object sender, EventArgs e) { ClearBoxes(); } private void UpdateTable(DB.User[] arr, bool reset_cursor = false) { var selected = (!reset_cursor && usrGridView.SelectedRows.Count > 0) ? usrGridView.SelectedRows[0].Index : -1; { var r = usrGridView.Rows; while (r.Count > 0) r.Remove(r[0]); var c = usrGridView.Columns; while (c.Count > 0) c.Remove(c[0]); } { var c = usrGridView.Columns; c.Add("Id", "№"); c["Id"].Width = 40; c.Add("Name", "Наим."); c["Name"].Width = 60; c.Add("DefaultForm", "Окно"); c["DefaultForm"].Width = 100; } { var r = usrGridView.Rows; foreach (var usr in arr) r.Add(new object[] { usr.Id, usr.Name, Program.user.FormsName[usr.Default] }); } if (usrGridView.Rows.Count > 0) usrGridView.Rows[0].Selected = true; if (selected != -1 && selected < usrGridView.Rows.Count) for (var i = 0; i < usrGridView.Rows.Count; i++) usrGridView.Rows[i].Selected = (i == selected); usrGridView_CurrentCellChanged(this, new EventArgs()); } private Task errDrop; private void ShowError(string msg = null) { errorLable.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg; errorLable.Visible = true; errDrop = new Task(() => { var fd = errDrop.Id; Task.Delay(5000).Wait(); if (errDrop.Id == fd) if (InvokeRequired) Invoke((Action)(() => { errorLable.Visible = false; })); else errorLable.Visible = false; }); errDrop.Start(); } private Task filterDrop; private void searchBox_TextChanged(object sender, EventArgs e) { filterDrop = new Task(() => { var fd = filterDrop.Id; Task.Delay(1000).Wait(); if (filterDrop.Id == fd) if (InvokeRequired) Invoke((Action)(() => { UpdateTable(WorkDB.ListUser(searchBox.Text)); })); else UpdateTable(WorkDB. ListUser(searchBox.Text)); }); filterDrop.Start(); } private void usrGridView_CurrentCellChanged(object sender, EventArgs e) { ClearBoxes(); if (usrGridView.SelectedRows.Count != 1) return; { var usr = WorkDB.GetUser((int)usrGridView.SelectedRows[0].Cells[0].Value); if (usr == null) return; idLable.Text = usr.Id.ToString(); nameBox.Text = usr.Name; passBox.Text = usr.Pass; defaultBox.SelectedIndex = usr.Default; chkDog1.Checked = usr.Dog > 0; chkDog2.Checked = usr.Dog > 1; chkDog3.Checked = usr.Dog > 2; chkDoc1.Checked = usr.Doc > 0; chkDoc2.Checked = usr.Doc > 1; chkDoc3.Checked = usr.Doc > 2; chkIzv1.Checked = usr.Izv > 0; chkIzv2.Checked = usr.Izv > 1; chkIzv3.Checked = usr.Izv > 2; chkPost1.Checked = usr.Post > 0; chkPost2.Checked = usr.Post > 1; chkPost3.Checked = usr.Post > 2; chkIzd1.Checked = usr.Izd > 0; chkIzd2.Checked = usr.Izd > 1; chkIzd3.Checked = usr.Izd > 2; chkZak1.Checked = usr.Zak > 0; chkZak2.Checked = usr.Zak > 1; chkZak3.Checked = usr.Zak > 2; chkSet1.Checked = usr.Set > 0; chkSet2.Checked = usr.Set > 1; chkSet3.Checked = usr.Set > 2; } } private void resetSearchButton_Click(object sender, EventArgs e) { searchBox.Text = ""; filterDrop = new Task(() => { return; }); UpdateTable(WorkDB.ListUser(searchBox.Text)); } private void createButton_Click(object sender, EventArgs e) { if(WorkDB.GetUserList().Contains(nameBox.Text)) { ShowError("Пользователь существует."); return; } if(string.IsNullOrEmpty(passBox.Text)) { ShowError("Пароль пустой."); return; } try { var r = new DB.User() { Name = nameBox.Text, Pass = passBox.Text, Dog = (chkDog3.Checked) ? 3 : (chkDog2.Checked) ? 2 : (chkDog1.Checked) ? 1 : 0, Doc = (chkDoc3.Checked) ? 3 : (chkDoc2.Checked) ? 2 : (chkDoc1.Checked) ? 1 : 0, Izv = (chkIzv3.Checked) ? 3 : (chkIzv2.Checked) ? 2 : (chkIzv1.Checked) ? 1 : 0, Post = (chkPost3.Checked) ? 3 : (chkPost2.Checked) ? 2 : (chkPost1.Checked) ? 1 : 0, Izd = (chkIzd3.Checked) ? 3 : (chkIzd2.Checked) ? 2 : (chkIzd1.Checked) ? 1 : 0, Zak = (chkZak3.Checked) ? 3 : (chkZak2.Checked) ? 2 : (chkZak1.Checked) ? 1 : 0, Set = (chkSet3.Checked) ? 3 : (chkSet2.Checked) ? 2 : (chkSet1.Checked) ? 1 : 0, }; var flag = false; switch (defaultBox.SelectedIndex) { case 0: flag = r.Dog > 0; break; case 1: flag = r.Doc > 0; break; case 2: flag = r.Izv > 0; break; case 3: flag = r.Post > 0; break; case 4: flag = r.Izd > 0; break; case 5: flag = r.Zak > 0; break; case 6: flag = r.Set > 0; break; } if (!flag) { ShowError("Форма недоступна."); return; } r.Default = defaultBox.SelectedIndex; WorkDB.AddUser(r); UpdateTable(WorkDB.ListUser(searchBox.Text)); } catch { ShowError(); } } private void changeButton_Click(object sender, EventArgs e) { try { if (!int.TryParse(idLable.Text, out int idRes)) { ShowError("Польз. не выбран."); return; } var usr = WorkDB.GetUser(idRes); if (usr == null) { ShowError("Нет польз. в БД."); return; } if (string.IsNullOrEmpty(passBox.Text)) { ShowError("Пароль пустой."); return; } if (usr.Name != nameBox.Text && WorkDB.GetUserList().Contains(nameBox.Text)) { ShowError("Польз. есть в БД."); return; } usr.Name = (usr.Name == "admin") ? "admin" : nameBox.Text; usr.Pass = passBox.Text; usr.Dog = (chkDog3.Checked || usr.Name == "admin") ? 3 : (chkDog2.Checked) ? 2 : (chkDog1.Checked) ? 1 : 0; usr.Doc = (chkDoc3.Checked || usr.Name == "admin") ? 3 : (chkDoc2.Checked) ? 2 : (chkDoc1.Checked) ? 1 : 0; usr.Izv = (chkIzv3.Checked || usr.Name == "admin") ? 3 : (chkIzv2.Checked) ? 2 : (chkIzv1.Checked) ? 1 : 0; usr.Post = (chkPost3.Checked || usr.Name == "admin") ? 3 : (chkPost2.Checked) ? 2 : (chkPost1.Checked) ? 1 : 0; usr.Izd = (chkIzd3.Checked || usr.Name == "admin") ? 3 : (chkIzd2.Checked) ? 2 : (chkIzd1.Checked) ? 1 : 0; usr.Zak = (chkZak3.Checked || usr.Name == "admin") ? 3 : (chkZak2.Checked) ? 2 : (chkZak1.Checked) ? 1 : 0; usr.Set = (chkSet3.Checked || usr.Name == "admin") ? 3 : (chkSet2.Checked) ? 2 : (chkSet1.Checked) ? 1 : 0; var flag = false; switch (defaultBox.SelectedIndex) { case 0: flag = usr.Dog > 0; break; case 1: flag = usr.Doc > 0; break; case 2: flag = usr.Izv > 0; break; case 3: flag = usr.Post > 0; break; case 4: flag = usr.Izd > 0; break; case 5: flag = usr.Zak > 0; break; case 6: flag = usr.Set > 0; break; } if (!flag) { ShowError("Форма недоступна."); return; } usr.Default = defaultBox.SelectedIndex; WorkDB.ChangeUser(usr); UpdateTable(WorkDB.ListUser(searchBox.Text)); } catch { ShowError(); } } private void deleteButton_Click(object sender, EventArgs e) { if (!int.TryParse(idLable.Text, out int idRes)) { ShowError("Польз. не выбран."); return; } var usr = WorkDB.GetUser(idRes); if (usr == null) { ShowError("Польз. не существует."); return; } if (usr.Name == "admin") { ShowError("Нельзя улвить польз."); return; } try { WorkDB.DeleteUser(usr); } catch { ShowError(); } UpdateTable(WorkDB.ListUser(searchBox.Text)); } private void MenuItem_Click(object sender, EventArgs e) { object form = null; if ((ToolStripMenuItem)sender == mainMenuStrip.Items[0]) { form = new DogForm(); } if ((ToolStripMenuItem)sender == mainMenuStrip.Items[1]) { form = new DocForm(); } if ((ToolStripMenuItem)sender == mainMenuStrip.Items[2]) { form = new IzvForm(); } if ((ToolStripMenuItem)sender == mainMenuStrip.Items[3]) { form = new PostForm(); } if ((ToolStripMenuItem)sender == mainMenuStrip.Items[4]) { form = new IzdForm(); } if ((ToolStripMenuItem)sender == mainMenuStrip.Items[5]) { form = new ZakForm(); } if ((ToolStripMenuItem)sender == mainMenuStrip.Items[6]) { form = new SetForm(); } if (form != null) { this.Hide(); ((Form)form).Closed += (s, args) => this.Close(); ((Form)form).Show(); } } private void StatusButton_Click(object sender, EventArgs e) { var form = new StatForm(); form.ShowDialog(); } } }