Diplom_B/StatForm.cs

135 lines
4.0 KiB
C#
Raw Permalink Normal View History

2021-07-17 22:32:53 +05:00
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());
}
}
}