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_O.DataBase; namespace Diplom_O { public partial class OtpForm : Form { private readonly ColumnConf[] tableMainColumns = { new ColumnConf(name: "№"), new ColumnConf(name: "Тип", size: 140, warp: true), new ColumnConf(name: "Дата начала", size: 80), new ColumnConf(name: "Дата конца", size: 80), new ColumnConf(name: "Общее кол-во дней", size: 100) }; private Rabotnik rabotnik = null; private void linkRabLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { var form = new RabForm(true); form.ShowDialog(); if (form.isCanceled) rabotnik = null; else rabotnik = form.formResult; ResetLinkRabotnik(); resetFreeTable(); resetFreeDays(); } private void ResetLinkRabotnik() { if (rabotnik == null) { linkRabLabel.Text = "Выбрать сотрудника..."; return; } var chel = FuncDB.ChelGetById(rabotnik.ChelId); if (chel == null) { linkRabLabel.Text = "Выбрать сотрудника..."; return; } var res = chel.FName.ToString() + " " + chel.SName[0].ToString() + "." + ((!string.IsNullOrEmpty(chel.TName)) ? chel.TName[0].ToString() + "." : ""); linkRabLabel.Text = res; } private void resetFreeTable() { try { var res = rabotnik == null ? Array.Empty() : FuncDB.FreeListTable(rabotnik.ChelId, dateTimePicker1.Value, dateTimePicker2.Value); this.ResetTable( freeGridView, tableMainColumns, res ); } catch (Exception e) { this.ShowError(errorLabel, e.Message); } } private void resetFreeDays() { try { var res = rabotnik == null ? new Dictionary() : FuncDB.FreeListDays(rabotnik.ChelId, dateTimePicker1.Value, dateTimePicker2.Value); if (res.ContainsKey("Общее")) totalDaysLabel.Text = res["Общее"].ToString(); else totalDaysLabel.Text = "0"; if (res.ContainsKey("Отпуск")) otpDaysLabel.Text = res["Отпуск"].ToString(); else otpDaysLabel.Text = "0"; if (res.ContainsKey("Больничный")) bolDaysLabel.Text = res["Больничный"].ToString(); else bolDaysLabel.Text = "0"; if (res.ContainsKey("Иное")) otherDaysLabel.Text = res["Иное"].ToString(); else otherDaysLabel.Text = "0"; } catch (Exception e) { this.ShowError(errorLabel, e.Message); } } private Free selectedFreeTable() { try { if (freeGridView.SelectedRows.Count != 1) throw new Exception("Отстранение не выбрано."); if (int.TryParse((string)freeGridView.SelectedRows[0].Cells[0].Value, out int value)) return FuncDB.FreeGetById(value); else throw new Exception("Ошибка в таблице."); } catch (Exception e) { this.ShowError(errorLabel, e.Message); return null; } } public OtpForm() { InitializeComponent(); this.correctUpperMenu(menuStrip, 5); DateTime d = DateTime.Now; dateTimePicker1.Value = new DateTime(d.Year, 1, 1, 0, 0, 0); dateTimePicker2.Value = new DateTime(d.Year + 1, 1, 1, 0, 0, 0); ResetLinkRabotnik(); resetFreeTable(); resetFreeDays(); linkRabLabel.Enabled = addButton.Enabled = changeButton.Enabled = delButton.Enabled = false; var user = this.GetUser(); if (user == null) return; linkRabLabel.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 0) != null; delButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 1) != null; changeButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 2) != null; addButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 3) != null; } private void addButton_Click(object sender, EventArgs e) { try { if (rabotnik == null) throw new Exception("Не выбран сотрудник."); var form = new SupportForms.OptForm(chelId: rabotnik.ChelId); form.ShowDialog(); if (!form.isCanceled) { resetFreeTable(); resetFreeDays(); } } catch (Exception ex) { this.ShowError(errorLabel, ex.Message); } } private void changeButton_Click(object sender, EventArgs e) { try { var form = new SupportForms.OptForm(selectedFreeTable()); form.ShowDialog(); if (!form.isCanceled) { resetFreeTable(); resetFreeDays(); } } catch (Exception ex) { this.ShowError(errorLabel, ex.Message); } } private void delButton_Click(object sender, EventArgs e) { try { FuncDB.FreeDelete(selectedFreeTable()); resetFreeTable(); resetFreeDays(); } catch (Exception ex) { this.ShowError(errorLabel, ex.Message); } } private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e) { this.upperMenuClicked((MenuStrip)sender); if (this.GetNextForm() != -1) Close(); } private void updateButton_Click(object sender, EventArgs e) { resetFreeTable(); resetFreeDays(); } } }