247 lines
8.9 KiB
C#
247 lines
8.9 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text.RegularExpressions;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Cheongbuk_MegaPark_Key_Management
|
|
{
|
|
public partial class MainForm : Form
|
|
{
|
|
// 기본 Database
|
|
private readonly DB _database = new DB();
|
|
|
|
public MainForm()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void ClockTimer_Tick(object sender, EventArgs e)
|
|
{
|
|
ClockChanger();
|
|
}
|
|
|
|
private void ClockChanger()
|
|
{
|
|
Clock.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
|
|
}
|
|
|
|
private void MainForm_Load(object sender, EventArgs e)
|
|
{
|
|
// Check DBFile
|
|
if (!File.Exists(Setting.DbLocation))
|
|
{
|
|
MessageBox.Show("DATABASE 파일을 찾을수 없습니다.\r\n프로그램을 종료합니다.", "프로그램 에러", MessageBoxButtons.OK,
|
|
MessageBoxIcon.Error);
|
|
Application.Exit();
|
|
}
|
|
|
|
// Clock Init Setting
|
|
Clock.Font = new Font(FontLibrary.Families[0], 30, FontStyle.Bold);
|
|
//button_RentKey.Font = new Font(FontLibrary.Families[1], 10);
|
|
ClockChanger();
|
|
|
|
//Database Load
|
|
_database.LoadData();
|
|
|
|
//MainScreen Init Change
|
|
ChangeMainScreenData();
|
|
|
|
//ListView Init Setting
|
|
listView_Profit.Items.Clear();
|
|
listView_Rent.Items.Clear();
|
|
foreach (var rentData in Setting.RentDatas) ListViewRentDataAdd(rentData);
|
|
foreach (var profitData in Setting.ProfitDatas) ListViewProfitDataAdd(profitData);
|
|
}
|
|
|
|
private void ListViewRentDataAdd(RentData rentData)
|
|
{
|
|
var data = new string[3];
|
|
data[0] = rentData.KeyCode.ToString();
|
|
data[1] = Setting.CategoryDictionary[rentData.Category].CategoryName;
|
|
data[2] = rentData.StartDateTime.ToString("yyyy/MM/dd HH:mm:ss");
|
|
listView_Rent.Items.Add(new ListViewItem(data));
|
|
}
|
|
|
|
private void ListViewProfitDataAdd(ProfitData profitData)
|
|
{
|
|
var data = new string[5];
|
|
data[0] = profitData.Id.ToString();
|
|
data[1] = profitData.KeyCode.ToString();
|
|
data[2] = Setting.CategoryDictionary[profitData.Category].CategoryName;
|
|
data[3] = profitData.UseTime / 60 + "시간 " + profitData.UseTime % 60 + "분";
|
|
data[4] = $"{profitData.ProfitAdd - profitData.ProfitDiscount:#,##0원}";
|
|
listView_Profit.Items.Add(new ListViewItem(data));
|
|
}
|
|
|
|
// 메인 스크린 데이터 갱신
|
|
private void ChangeMainScreenData()
|
|
{
|
|
int sumProfitAdd = Setting.ProfitDatas.Sum(x => x.ProfitAdd);
|
|
int sumProfitDiscount = Setting.ProfitDatas.Sum(x => x.ProfitDiscount);
|
|
|
|
label_AllKeyCount.Text = $"{Setting.RentDatas.Count + Setting.ProfitDatas.Count:#,##0}";
|
|
label_NowKeyCount.Text = $"{Setting.RentDatas.Count:#,##0}";
|
|
label_Profit.Text = (sumProfitAdd - sumProfitDiscount).ToMoney();
|
|
}
|
|
|
|
private void TextBox_KeyNumber_TextChanged(object sender, EventArgs e)
|
|
{
|
|
var value = Regex.Replace(textBox_KeyNumber.Text, "[^0-9]", "");
|
|
if (value != textBox_KeyNumber.Text)
|
|
{
|
|
textBox_KeyNumber.Text = value;
|
|
textBox_KeyNumber.SelectionStart = textBox_KeyNumber.Text.Length;
|
|
}
|
|
}
|
|
|
|
private void TextBox_KeyNumber_Changer(object sender, EventArgs e)
|
|
{
|
|
int.TryParse(((Button)sender).Tag.ToString(), out var key);
|
|
if (key > -1)
|
|
{
|
|
if (key != 0 || textBox_KeyNumber.Text != string.Empty) textBox_KeyNumber.Text += key.ToString();
|
|
}
|
|
else
|
|
{
|
|
switch (key)
|
|
{
|
|
case -1:
|
|
{
|
|
if (textBox_KeyNumber.Text.Length != 0)
|
|
textBox_KeyNumber.Text =
|
|
textBox_KeyNumber.Text.Substring(0, textBox_KeyNumber.Text.Length - 1);
|
|
break;
|
|
}
|
|
|
|
case -2:
|
|
textBox_KeyNumber.Text = string.Empty;
|
|
break;
|
|
}
|
|
}
|
|
|
|
textBox_KeyNumber.Focus();
|
|
textBox_KeyNumber.SelectionStart = textBox_KeyNumber.Text.Length;
|
|
}
|
|
|
|
private void Button_RentKey_Click(object sender, EventArgs e)
|
|
{
|
|
RentReturnProcess();
|
|
textBox_KeyNumber.Focus();
|
|
}
|
|
|
|
private void TextBox_KeyNumber_KeyPress(object sender, KeyPressEventArgs e)
|
|
{
|
|
if (e.KeyChar != 13) return;
|
|
RentReturnProcess();
|
|
textBox_KeyNumber.Focus();
|
|
}
|
|
|
|
private void RentReturnProcess()
|
|
{
|
|
int.TryParse(textBox_KeyNumber.Text, out var key);
|
|
if (key == 0) return;
|
|
|
|
var tempRentData = (from rentData in Setting.RentDatas where rentData.KeyCode == key select rentData)
|
|
.FirstOrDefault();
|
|
|
|
// 대여 프로세스
|
|
if (tempRentData.KeyCode == 0)
|
|
{
|
|
var rentKey = new RentKey { KeyCode = key };
|
|
if (DialogResult.Yes == rentKey.ShowDialog())
|
|
{
|
|
var returnData = rentKey.ReturnData;
|
|
|
|
Setting.RentDatas.Add(returnData);
|
|
ListViewRentDataAdd(returnData);
|
|
_database.InsertRent(returnData);
|
|
textBox_KeyNumber.Text = string.Empty;
|
|
}
|
|
}
|
|
// 반납프로세스
|
|
else
|
|
{
|
|
var returnKey = new ReturnKey { Data = tempRentData };
|
|
|
|
if (DialogResult.Yes == returnKey.ShowDialog())
|
|
{
|
|
var returnData = returnKey.ReturnData;
|
|
|
|
var rD = new RentData();
|
|
foreach (var rentData in Setting.RentDatas)
|
|
if (rentData.KeyCode == returnData.KeyCode)
|
|
rD = rentData;
|
|
|
|
Setting.RentDatas.Remove(rD);
|
|
|
|
foreach (ListViewItem listViewItem in listView_Rent.Items)
|
|
if (listViewItem.SubItems[0].Text == returnData.KeyCode.ToString())
|
|
listView_Rent.Items.Remove(listViewItem);
|
|
|
|
returnData.Id = _database.ReturnRent(returnData);
|
|
Setting.ProfitDatas.Add(returnData);
|
|
ListViewProfitDataAdd(returnData);
|
|
}
|
|
|
|
textBox_KeyNumber.Text = string.Empty;
|
|
}
|
|
|
|
ChangeMainScreenData();
|
|
}
|
|
|
|
private void ListView_Profit_MouseClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (e.Button.Equals(MouseButtons.Right))
|
|
{
|
|
int.TryParse(listView_Profit.SelectedItems[0].Text, out int value);
|
|
|
|
if (DialogResult.Yes == MessageBox.Show("정말 선택된 데이터를 삭제하시겠습니까?", "삭제 확인",
|
|
MessageBoxButtons.YesNo,
|
|
MessageBoxIcon.Question))
|
|
{
|
|
ProfitData pf = new ProfitData();
|
|
foreach (var profitData in Setting.ProfitDatas.Where(profitData => profitData.Id == value))
|
|
{
|
|
pf = profitData;
|
|
}
|
|
Setting.ProfitDatas.Remove(pf);
|
|
_database.DeleteProfitData(value);
|
|
listView_Profit.Items.RemoveAt(listView_Profit.SelectedItems[0].Index);
|
|
ChangeMainScreenData();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ListView_Rent_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
int.TryParse(listView_Rent.SelectedItems[0].Text, out int value);
|
|
RentData rD = new RentData();
|
|
foreach (var rentData in Setting.RentDatas.Where(x => x.KeyCode == value))
|
|
{
|
|
rD = rentData;
|
|
}
|
|
RentKeyInfo rentKeyInfo = new RentKeyInfo();
|
|
rentKeyInfo.RentKeyData = rD;
|
|
rentKeyInfo.ShowDialog();
|
|
|
|
textBox_KeyNumber.Focus();
|
|
}
|
|
|
|
private void ListView_Profit_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
int.TryParse(listView_Profit.SelectedItems[0].Text, out int value);
|
|
ProfitData pD = new ProfitData();
|
|
foreach (var profitData in Setting.ProfitDatas.Where(x => x.Id == value))
|
|
{
|
|
pD = profitData;
|
|
}
|
|
ReturnKeyInfo returnKeyInfo = new ReturnKeyInfo();
|
|
returnKeyInfo.ProfitDataInfo = pD;
|
|
returnKeyInfo.ShowDialog();
|
|
|
|
textBox_KeyNumber.Focus();
|
|
}
|
|
}
|
|
} |