Diplom_B/StatForm.cs
2021-07-17 22:32:53 +05:00

135 lines
4.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 StatForm : Form
{
public StatForm()
{
InitializeComponent();
Init();
UpdateTable(WorkDB.ListStatus());
}
private void Init()
{
if (Program.user == null) this.Close();
{
deleteButton.Enabled = Program.user.Usr.Set > 2;
createButton.Enabled = Program.user.Usr.Set > 2;
changeButton.Enabled = Program.user.Usr.Set > 1;
}
}
private void UpdateTable(Status[] arr, bool reset_cursor = false)
{
var selected = (!reset_cursor && statGridView.SelectedRows.Count > 0) ? statGridView.SelectedRows[0].Index : -1;
{
var r = statGridView.Rows;
while (r.Count > 0)
r.Remove(r[0]);
var c = statGridView.Columns;
while (c.Count > 0)
c.Remove(c[0]);
}
{
var c = statGridView.Columns;
c.Add("Id", "№");
c["Id"].Width = 40;
c.Add("Name", "Наим.");
c["Name"].Width = 100;
}
{
var r = statGridView.Rows;
foreach (var stat in arr)
r.Add(new object[] {
stat.Id,
stat.Stat,
});
}
if (statGridView.Rows.Count > 0)
statGridView.Rows[0].Selected = true;
if (selected != -1 && selected < statGridView.Rows.Count)
for (var i = 0; i < statGridView.Rows.Count; i++)
statGridView.Rows[i].Selected = (i == selected);
statGridView_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 void statGridView_CurrentCellChanged(object sender, EventArgs e)
{
if (statGridView.SelectedRows.Count != 1)
return;
{
var stat = WorkDB.GetStatus((int)statGridView.SelectedRows[0].Cells[0].Value);
if (stat == null)
return;
nameBox.Text = stat.Stat;
}
}
private void createButton_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(nameBox.Text)) { ShowError("Статус пустой."); return; }
if (WorkDB.GetStatusList().Contains(nameBox.Text)) { ShowError("Статус существует."); return; }
try
{
var r = new Status() { Stat = nameBox.Text };
WorkDB.AddStatus(r);
UpdateTable(WorkDB.ListStatus());
}
catch { ShowError(); }
}
private void changeButton_Click(object sender, EventArgs e)
{
try
{
if (statGridView.SelectedRows.Count != 1) { ShowError("Статус не выбран."); return; }
if (string.IsNullOrEmpty(nameBox.Text)) { ShowError("Название пустое."); return; }
var stat = WorkDB.GetStatus((int)statGridView.SelectedRows[0].Cells[0].Value);
if (stat.Stat != nameBox.Text && WorkDB.GetStatusList().Contains(nameBox.Text)) { ShowError("Статус существует."); return; }
stat.Stat = nameBox.Text;
WorkDB.ChangeStatus(stat);
UpdateTable(WorkDB.ListStatus());
}
catch { ShowError(); }
}
private void deleteButton_Click(object sender, EventArgs e)
{
if (statGridView.SelectedRows.Count != 1) { ShowError("Статус не выбран."); return; }
if (WorkDB.ListStatus().Length <= 1) { ShowError("Нельзя удалить."); return; }
if (WorkDB.GetPostavkyFromStatus((int)statGridView.SelectedRows[0].Cells[0].Value).Length > 0) { ShowError("Есть связи с поставками."); return; }
var stat = WorkDB.GetStatus((int)statGridView.SelectedRows[0].Cells[0].Value);
if (stat == null) { ShowError("Статуса нет."); return; }
try { WorkDB.DeleteStatus(stat); }
catch { ShowError(); }
UpdateTable(WorkDB.ListStatus());
}
}
}