Diplom_O/MainForms/OtpForm.cs
2024-09-20 06:53:52 +03:00

208 lines
5.2 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_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<string[]>() : 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<string, int>() : 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();
}
}
}