diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomForm/InsertResult.Designer.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/InsertResult.Designer.cs
new file mode 100644
index 0000000..6c55453
--- /dev/null
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/InsertResult.Designer.cs
@@ -0,0 +1,108 @@
+namespace HSUCO_Cargo_Garage_Operation_Program.CustomForm
+{
+ partial class InsertResult
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
+ this.dataGridView_List = new System.Windows.Forms.DataGridView();
+ this.metroButton_ExportExcel = new MetroFramework.Controls.MetroButton();
+ this.metroButton_Close = new MetroFramework.Controls.MetroButton();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView_List)).BeginInit();
+ this.SuspendLayout();
+ //
+ // dataGridView_List
+ //
+ this.dataGridView_List.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.dataGridView_List.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
+ this.dataGridView_List.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
+ dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+ dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control;
+ dataGridViewCellStyle2.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText;
+ dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
+ this.dataGridView_List.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.dataGridView_List.Location = new System.Drawing.Point(23, 63);
+ this.dataGridView_List.Name = "dataGridView_List";
+ this.dataGridView_List.ReadOnly = true;
+ this.dataGridView_List.RowTemplate.Height = 23;
+ this.dataGridView_List.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.dataGridView_List.Size = new System.Drawing.Size(636, 370);
+ this.dataGridView_List.TabIndex = 7;
+ //
+ // metroButton_ExportExcel
+ //
+ this.metroButton_ExportExcel.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.metroButton_ExportExcel.BackgroundImage = global::HSUCO_Cargo_Garage_Operation_Program.Properties.Resources.file_type_excel_icon_130611;
+ this.metroButton_ExportExcel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+ this.metroButton_ExportExcel.FontSize = MetroFramework.MetroButtonSize.Tall;
+ this.metroButton_ExportExcel.Location = new System.Drawing.Point(665, 318);
+ this.metroButton_ExportExcel.Name = "metroButton_ExportExcel";
+ this.metroButton_ExportExcel.Size = new System.Drawing.Size(121, 115);
+ this.metroButton_ExportExcel.TabIndex = 11;
+ this.metroButton_ExportExcel.UseSelectable = true;
+ this.metroButton_ExportExcel.Click += new System.EventHandler(this.metroButton_ExportExcel_Click);
+ //
+ // metroButton_Close
+ //
+ this.metroButton_Close.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.metroButton_Close.FontSize = MetroFramework.MetroButtonSize.Tall;
+ this.metroButton_Close.Location = new System.Drawing.Point(665, 63);
+ this.metroButton_Close.Name = "metroButton_Close";
+ this.metroButton_Close.Size = new System.Drawing.Size(121, 40);
+ this.metroButton_Close.TabIndex = 12;
+ this.metroButton_Close.Text = "닫기";
+ this.metroButton_Close.UseSelectable = true;
+ this.metroButton_Close.Click += new System.EventHandler(this.metroButton_Close_Click);
+ //
+ // InsertResult
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(809, 456);
+ this.Controls.Add(this.metroButton_Close);
+ this.Controls.Add(this.metroButton_ExportExcel);
+ this.Controls.Add(this.dataGridView_List);
+ this.Name = "InsertResult";
+ this.Text = "결과";
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView_List)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.DataGridView dataGridView_List;
+ private MetroFramework.Controls.MetroButton metroButton_ExportExcel;
+ private MetroFramework.Controls.MetroButton metroButton_Close;
+ }
+}
\ No newline at end of file
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomForm/InsertResult.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/InsertResult.cs
new file mode 100644
index 0000000..9ac5726
--- /dev/null
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/InsertResult.cs
@@ -0,0 +1,71 @@
+using MetroFramework;
+using MetroFramework.Forms;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Windows.Forms;
+
+namespace HSUCO_Cargo_Garage_Operation_Program.CustomForm
+{
+ public partial class InsertResult : MetroForm
+ {
+ List _resultSetUserListInformation;
+ public InsertResult(List ResultSetUserListInformation)
+ {
+ _resultSetUserListInformation = ResultSetUserListInformation;
+ InitializeComponent();
+ DataChange();
+
+ }
+
+ private void DataChange()
+ {
+ var dataTable = new DataTable();
+ dataTable.Columns.Add("주차구역");
+
+
+ dataTable.Columns.Add("이용자번호");
+ dataTable.Columns.Add("접 수번호");
+
+
+ for (int i = 0; i < _resultSetUserListInformation.Count; i++)
+ {
+ dataTable.Rows
+ .Add(
+ _resultSetUserListInformation[i].Area,
+ _resultSetUserListInformation[i].No,
+ _resultSetUserListInformation[i].ApplicantNo
+ );
+ }
+
+ dataGridView_List.DataSource = dataTable;
+ dataGridView_List.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+ }
+ private void metroButton_ExportExcel_Click(object sender, System.EventArgs e)
+ {
+ var excelWrapper = new ExcelWrapper();
+
+ var saveFileDialog = new SaveFileDialog();
+ saveFileDialog.Filter = "XLSX files (*.xlsx)|*.xlsx";
+
+ if (saveFileDialog.ShowDialog() == DialogResult.OK)
+ {
+ var result = excelWrapper.WriteDataTableToExcel((DataTable)dataGridView_List.DataSource, "UserList", saveFileDialog.FileName, "대기자 등록 리스트", Environment.MachineName, DateTime.Now);
+ if (result)
+ {
+ MetroMessageBox.Show(this, "엑셀 파일 저장에 성공하였습니다.", "Excel Export", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ DataChange();
+ }
+ else
+ {
+ MetroMessageBox.Show(this, "엑셀 파일 저장에 실패하였습니다.", "Excel Export", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ }
+
+ private void metroButton_Close_Click(object sender, System.EventArgs e)
+ {
+ this.Close();
+ }
+ }
+}
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomForm/InsertResult.resx b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/InsertResult.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/InsertResult.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.Designer.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.Designer.cs
new file mode 100644
index 0000000..a122d1d
--- /dev/null
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.Designer.cs
@@ -0,0 +1,90 @@
+namespace HSUCO_Cargo_Garage_Operation_Program.CustomForm
+{
+ partial class LotsScreen
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.metroLabel1 = new MetroFramework.Controls.MetroLabel();
+ this.metroButton_Close = new MetroFramework.Controls.MetroButton();
+ this.flowLayoutPanel_Lots = new System.Windows.Forms.FlowLayoutPanel();
+ this.SuspendLayout();
+ //
+ // metroLabel1
+ //
+ this.metroLabel1.AutoSize = true;
+ this.metroLabel1.Location = new System.Drawing.Point(93, 12);
+ this.metroLabel1.Name = "metroLabel1";
+ this.metroLabel1.Size = new System.Drawing.Size(24, 19);
+ this.metroLabel1.TabIndex = 0;
+ this.metroLabel1.Text = "1/1";
+ //
+ // metroButton_Close
+ //
+ this.metroButton_Close.Location = new System.Drawing.Point(12, 12);
+ this.metroButton_Close.Name = "metroButton_Close";
+ this.metroButton_Close.Size = new System.Drawing.Size(75, 23);
+ this.metroButton_Close.TabIndex = 1;
+ this.metroButton_Close.Text = "닫기";
+ this.metroButton_Close.UseSelectable = true;
+ this.metroButton_Close.Click += new System.EventHandler(this.metroButton_Close_Click);
+ //
+ // flowLayoutPanel_Lots
+ //
+ this.flowLayoutPanel_Lots.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.flowLayoutPanel_Lots.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.flowLayoutPanel_Lots.Location = new System.Drawing.Point(9, 54);
+ this.flowLayoutPanel_Lots.Margin = new System.Windows.Forms.Padding(0);
+ this.flowLayoutPanel_Lots.Name = "flowLayoutPanel_Lots";
+ this.flowLayoutPanel_Lots.Size = new System.Drawing.Size(782, 437);
+ this.flowLayoutPanel_Lots.TabIndex = 2;
+ //
+ // LotsScreen
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
+ this.ClientSize = new System.Drawing.Size(800, 500);
+ this.Controls.Add(this.flowLayoutPanel_Lots);
+ this.Controls.Add(this.metroButton_Close);
+ this.Controls.Add(this.metroLabel1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.Name = "LotsScreen";
+ this.Text = "LotsScreen";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private MetroFramework.Controls.MetroLabel metroLabel1;
+ private MetroFramework.Controls.MetroButton metroButton_Close;
+ private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel_Lots;
+ }
+}
\ No newline at end of file
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.cs
new file mode 100644
index 0000000..cfb7f5a
--- /dev/null
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace HSUCO_Cargo_Garage_Operation_Program.CustomForm
+{
+ public partial class LotsScreen : Form
+ {
+ public LotsScreen()
+ {
+ InitializeComponent();
+ this.StartPosition = FormStartPosition.Manual;
+ var fullScrenn_bounds = Rectangle.Empty;
+
+ foreach (var screen in Screen.AllScreens)
+ {
+ fullScrenn_bounds = Rectangle.Union(fullScrenn_bounds, screen.Bounds);
+ }
+ this.ClientSize = new Size(fullScrenn_bounds.Width, fullScrenn_bounds.Height);
+ this.Location = new Point(fullScrenn_bounds.Left, fullScrenn_bounds.Top);
+ this.TopMost = true;
+
+ CustomUserControl.Lot a = new CustomUserControl.Lot("특대형-999", "2023-A1234");
+ CustomUserControl.Lot b = new CustomUserControl.Lot("특대형-998", "2023-A1232");
+ CustomUserControl.Lot c = new CustomUserControl.Lot("특대형-996", "2023-A1231");
+ flowLayoutPanel_Lots.Controls.Add(a); flowLayoutPanel_Lots.Controls.Add(b); flowLayoutPanel_Lots.Controls.Add(c);
+
+ }
+
+ private void metroButton_Close_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+ }
+}
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.resx b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomForm/Refund.Designer.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/Refund.Designer.cs
index beb9b63..b9c8b78 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomForm/Refund.Designer.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/Refund.Designer.cs
@@ -49,7 +49,7 @@
//
// metroDateTime_Refund
//
- this.metroDateTime_Refund.Location = new System.Drawing.Point(183, 159);
+ this.metroDateTime_Refund.Location = new System.Drawing.Point(147, 146);
this.metroDateTime_Refund.MinimumSize = new System.Drawing.Size(0, 29);
this.metroDateTime_Refund.Name = "metroDateTime_Refund";
this.metroDateTime_Refund.Size = new System.Drawing.Size(200, 29);
@@ -58,7 +58,7 @@
// metroButton_Refund
//
this.metroButton_Refund.FontSize = MetroFramework.MetroButtonSize.Tall;
- this.metroButton_Refund.Location = new System.Drawing.Point(44, 212);
+ this.metroButton_Refund.Location = new System.Drawing.Point(23, 181);
this.metroButton_Refund.Name = "metroButton_Refund";
this.metroButton_Refund.Size = new System.Drawing.Size(170, 50);
this.metroButton_Refund.TabIndex = 37;
@@ -69,7 +69,7 @@
// metroButton_Cancel
//
this.metroButton_Cancel.FontSize = MetroFramework.MetroButtonSize.Tall;
- this.metroButton_Cancel.Location = new System.Drawing.Point(258, 221);
+ this.metroButton_Cancel.Location = new System.Drawing.Point(207, 181);
this.metroButton_Cancel.Name = "metroButton_Cancel";
this.metroButton_Cancel.Size = new System.Drawing.Size(170, 50);
this.metroButton_Cancel.TabIndex = 38;
@@ -117,7 +117,7 @@
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(466, 304);
+ this.ClientSize = new System.Drawing.Size(400, 250);
this.Controls.Add(this.metroLabel5);
this.Controls.Add(this.metroLabel4);
this.Controls.Add(this.metroLabel_DateEnd);
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantControl.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantControl.cs
index ef599b8..e973f87 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantControl.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantControl.cs
@@ -93,7 +93,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
return;
}
var applicant = new ApplicantInformation();
- applicant.ApplicantType = metroRadioButton_Draw.Checked; // 추첨이 true, 대기가 false
+ applicant.ApplicantType = metroRadioButton_Draw.Checked ? EApplicantType.Lots : EApplicantType.Wait; // 추첨이 true, 대기가 false
applicant.CargoVehicleNumber = metroTextBox_CargoVehicleNumber.Text.Trim();
applicant.CargoVehicleName = metroTextBox_CargoVehicleName.Text.Trim();
applicant.PassengerVehicleNumber = metroTextBox_PassengerVehicleNumber.Text.Trim();
@@ -104,7 +104,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
applicant.PersonalNumber = metroTextBox_PersonalNumber.Text.Trim();
applicant.Phone = maskedTextBox_Phone.Text.Trim();
applicant.Address = metroTextBox_Address.Text.Trim();
- applicant.DateOfApplication = DateTime.Now;
+ applicant.Date = DateTime.Now;
var resultInsert = Database.SetApplicant(applicant);
@@ -120,7 +120,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
printFilingReceiptInformation.Address = applicant.Address;
printFilingReceiptInformation.CargoVehicleNumber = applicant.CargoVehicleNumber;
printFilingReceiptInformation.PassengerVehicleNumber = applicant.PassengerVehicleNumber;
- printFilingReceiptInformation.DateReception = applicant.DateOfApplication;
+ printFilingReceiptInformation.DateReception = applicant.Date;
PrintFilingReceipt printFilingReceipt = new PrintFilingReceipt(new List() { printFilingReceiptInformation });
var printPreviewDialog = new PrintPreviewDialog();
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.Designer.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.Designer.cs
index 78dbe36..7eae59e 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.Designer.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.Designer.cs
@@ -28,7 +28,7 @@
///
private void InitializeComponent()
{
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
this.metroPanel1 = new MetroFramework.Controls.MetroPanel();
this.metroButton_UpdateUserData = new MetroFramework.Controls.MetroButton();
this.metroButton_ExportExcel = new MetroFramework.Controls.MetroButton();
@@ -209,19 +209,21 @@
//
// dataGridView_List
//
+ this.dataGridView_List.AllowUserToAddRows = false;
+ this.dataGridView_List.AllowUserToDeleteRows = false;
this.dataGridView_List.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView_List.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dataGridView_List.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
- dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
- dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control;
- dataGridViewCellStyle2.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
- dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText;
- dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
- dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
- dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
- this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
+ dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+ dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
+ dataGridViewCellStyle1.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
+ dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dataGridView_List.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView_List.Location = new System.Drawing.Point(20, 120);
this.dataGridView_List.Name = "dataGridView_List";
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.cs
index f01be79..365948b 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.cs
@@ -71,7 +71,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
applicants[i].PassengerVehicleNumber,
applicants[i].PassengerVehicleName,
applicants[i].VehicleType == 0 ? "대형(4.5톤 미만)" : "특대형(4.5톤 이상)",
- applicants[i].DateOfApplication
+ applicants[i].Date.DateTimeDatabase()
);
}
@@ -121,37 +121,32 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
void metroButton_UpdateUser_Click(object sender, EventArgs e)
{
- var allCount = dataGridView_List.SelectedRows.Count;
- if (allCount == 0) return;
+ var count = dataGridView_List.Rows.Count - 1;
+ if (count == 0) return;
- var CargoVehicleNumber = new List();
-
- for (int i = 0; i < dataGridView_List.SelectedRows.Count; i++)
+ Promotion promotion = new Promotion("추첨자 이용기간");
+ DialogResult dialogResult = promotion.ShowDialog();
+ if (dialogResult != DialogResult.OK)
{
- if (dataGridView_List.SelectedRows[i].Cells[6].Value.ToString() == "Y")
- {
- CargoVehicleNumber.Add(dataGridView_List.SelectedRows[i].Cells[0].Value.ToString());
- }
- }
-
- if (CargoVehicleNumber.Count == 0)
- {
- MetroMessageBox.Show(this, "선택하신 건수 중에 당첨 처리 할수 있는 건이 없습니다.", "당첨 처리", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
-
- var message = "선태하신 " + allCount + "건을 당첨 하시겠습니까?";
-
- if (MetroMessageBox.Show(this, message, "이용자로 변경", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
+ DateTime startDate = promotion.StartDate;
+ LeftAreaInformation leftAreaInformation = Database.GetLeftArea(startDate, Global.GlobalSettings.CargoLargeMaxCount, Global.GlobalSettings.CargoOversizedMaxCount);
+ if (leftAreaInformation.Large.Count + leftAreaInformation.OverSized.Count == 0)
{
- //var promotion = new -Promotion();
-
- //if (promotion.ShowDialog() == DialogResult.OK)
- //{
- //Database.AddUserList(CargoVehicleNumber, promotion.StartDate, promotion.EndDate, promotion.TotalCost);
- // DataChange();
- //}
+ MetroMessageBox.Show(this, "남은 자리가 없습니다", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
}
+ List result = Database.SetUserListForApplicant(leftAreaInformation, promotion.EndDate);
+ //TODO: 당첨 화면 출력 필요함
+ LotsScreen lotsScreen = new LotsScreen();
+ lotsScreen.ShowDialog();
+
+ InsertResult insertResult = new InsertResult(result);
+ insertResult.ShowDialog();
+
+ DataChange();
+
}
private void metroButton_ExportExcel_Click(object sender, EventArgs e)
@@ -184,8 +179,8 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
UpdateUserInformation updateUserInformation = Database.GetUserData(EUserInformationType.ApplicantList, no);
UpdateUserData updateUserData = new UpdateUserData(updateUserInformation);
- DialogResult dialogResult = updateUserData.ShowDialog();
- if(dialogResult ==DialogResult.OK)
+ DialogResult dialogResult = updateUserData.ShowDialog();
+ if (dialogResult == DialogResult.OK)
{
DataChange();
}
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListCertificate.Designer.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListCertificate.Designer.cs
index dd3cfab..84883c7 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListCertificate.Designer.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListCertificate.Designer.cs
@@ -44,6 +44,8 @@
//
// dataGridView_List
//
+ this.dataGridView_List.AllowUserToAddRows = false;
+ this.dataGridView_List.AllowUserToDeleteRows = false;
this.dataGridView_List.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListCertificate.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListCertificate.cs
index 0e2fc0d..17a0d2c 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListCertificate.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListCertificate.cs
@@ -57,13 +57,13 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
.Add(
certificateInformation[i].IssueNumber,
- certificateInformation[i].IssueDate,
+ certificateInformation[i].IssueDate.DateTimeDatabase(),
certificateInformation[i].Name,
certificateInformation[i].PersonalNumber,
certificateInformation[i].Address,
certificateInformation[i].CargoVehicleNumber,
- certificateInformation[i].StartDate,
- certificateInformation[i].EndDate,
+ certificateInformation[i].StartDate.ToString("yyyy-MM-dd"),
+ certificateInformation[i].EndDate.ToString("yyyy-MM-dd"),
certificateInformation[i].Amount
);
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListProceeds.Designer.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListProceeds.Designer.cs
index 9706917..0f02e69 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListProceeds.Designer.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListProceeds.Designer.cs
@@ -103,6 +103,8 @@
//
// dataGridView_List
//
+ this.dataGridView_List.AllowUserToAddRows = false;
+ this.dataGridView_List.AllowUserToDeleteRows = false;
this.dataGridView_List.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListProceeds.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListProceeds.cs
index 17da927..67aff7b 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListProceeds.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ListProceeds.cs
@@ -78,7 +78,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
proceedsDatas[i].Name,
typeString,
String.Format("{0:n0}", proceedsDatas[i].Amount),
- proceedsDatas[i].Date
+ proceedsDatas[i].Date.DateTimeDatabase()
);
}
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/Lot.Designer.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/Lot.Designer.cs
new file mode 100644
index 0000000..a50c2e1
--- /dev/null
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/Lot.Designer.cs
@@ -0,0 +1,106 @@
+namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
+{
+ partial class Lot
+ {
+ ///
+ /// 필수 디자이너 변수입니다.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 사용 중인 모든 리소스를 정리합니다.
+ ///
+ /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region 구성 요소 디자이너에서 생성한 코드
+
+ ///
+ /// 디자이너 지원에 필요한 메서드입니다.
+ /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
+ ///
+ private void InitializeComponent()
+ {
+ this.metroPanel1 = new MetroFramework.Controls.MetroPanel();
+ this.label_No = new System.Windows.Forms.Label();
+ this.label_Area = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.metroPanel1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // metroPanel1
+ //
+ this.metroPanel1.Controls.Add(this.label_No);
+ this.metroPanel1.Controls.Add(this.label2);
+ this.metroPanel1.Controls.Add(this.label_Area);
+ this.metroPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.metroPanel1.HorizontalScrollbarBarColor = true;
+ this.metroPanel1.HorizontalScrollbarHighlightOnWheel = false;
+ this.metroPanel1.HorizontalScrollbarSize = 10;
+ this.metroPanel1.Location = new System.Drawing.Point(0, 0);
+ this.metroPanel1.Name = "metroPanel1";
+ this.metroPanel1.Size = new System.Drawing.Size(340, 90);
+ this.metroPanel1.TabIndex = 3;
+ this.metroPanel1.VerticalScrollbarBarColor = true;
+ this.metroPanel1.VerticalScrollbarHighlightOnWheel = false;
+ this.metroPanel1.VerticalScrollbarSize = 10;
+ //
+ // label_No
+ //
+ this.label_No.AutoSize = true;
+ this.label_No.Font = new System.Drawing.Font("맑은 고딕", 20.25F, System.Drawing.FontStyle.Bold);
+ this.label_No.Location = new System.Drawing.Point(167, 50);
+ this.label_No.Name = "label_No";
+ this.label_No.Size = new System.Drawing.Size(170, 37);
+ this.label_No.TabIndex = 5;
+ this.label_No.Text = "2023-L9999";
+ //
+ // label_Area
+ //
+ this.label_Area.AutoSize = true;
+ this.label_Area.Font = new System.Drawing.Font("맑은 고딕", 30F, System.Drawing.FontStyle.Bold);
+ this.label_Area.Location = new System.Drawing.Point(3, 0);
+ this.label_Area.Name = "label_Area";
+ this.label_Area.Size = new System.Drawing.Size(229, 54);
+ this.label_Area.TabIndex = 2;
+ this.label_Area.Text = "특대형-999";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Font = new System.Drawing.Font("맑은 고딕", 20.25F, System.Drawing.FontStyle.Bold);
+ this.label2.Location = new System.Drawing.Point(30, 50);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(141, 37);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "접수번호 :";
+ //
+ // Lot
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.Transparent;
+ this.Controls.Add(this.metroPanel1);
+ this.Name = "Lot";
+ this.Size = new System.Drawing.Size(340, 90);
+ this.metroPanel1.ResumeLayout(false);
+ this.metroPanel1.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private MetroFramework.Controls.MetroPanel metroPanel1;
+ private System.Windows.Forms.Label label_Area;
+ private System.Windows.Forms.Label label_No;
+ private System.Windows.Forms.Label label2;
+ }
+}
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/Lot.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/Lot.cs
new file mode 100644
index 0000000..99e1c19
--- /dev/null
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/Lot.cs
@@ -0,0 +1,14 @@
+using System.Windows.Forms;
+
+namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
+{
+ public partial class Lot : UserControl
+ {
+ public Lot(string area, string no)
+ {
+ InitializeComponent();
+ label_Area.Text = area;
+ label_No.Text = no;
+ }
+ }
+}
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/Lot.resx b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/Lot.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/Lot.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.Designer.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.Designer.cs
index 0c9a406..ef888ca 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.Designer.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.Designer.cs
@@ -54,6 +54,7 @@
this.metroLabel20 = new MetroFramework.Controls.MetroLabel();
this.metroLabel21 = new MetroFramework.Controls.MetroLabel();
this.metroButton_init = new MetroFramework.Controls.MetroButton();
+ this.metroButton_Test = new MetroFramework.Controls.MetroButton();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout();
@@ -468,11 +469,22 @@
this.metroButton_init.UseSelectable = true;
this.metroButton_init.Click += new System.EventHandler(this.metroButton_init_Click);
//
+ // metroButton_Test
+ //
+ this.metroButton_Test.Location = new System.Drawing.Point(184, 466);
+ this.metroButton_Test.Name = "metroButton_Test";
+ this.metroButton_Test.Size = new System.Drawing.Size(140, 23);
+ this.metroButton_Test.TabIndex = 23;
+ this.metroButton_Test.Text = "당첨창 테스트";
+ this.metroButton_Test.UseSelectable = true;
+ this.metroButton_Test.Click += new System.EventHandler(this.metroButton_Test_Click);
+ //
// SettingControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
+ this.Controls.Add(this.metroButton_Test);
this.Controls.Add(this.metroButton_init);
this.Controls.Add(this.groupBox3);
this.Controls.Add(this.groupBox2);
@@ -482,7 +494,7 @@
this.Controls.Add(this.metroLabel9);
this.Controls.Add(this.metroButton_Save);
this.Name = "SettingControl";
- this.Size = new System.Drawing.Size(346, 492);
+ this.Size = new System.Drawing.Size(346, 505);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.Settings_Paint);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
@@ -522,5 +534,6 @@
private MetroFramework.Controls.MetroLabel metroLabel20;
private MetroFramework.Controls.MetroLabel metroLabel21;
private MetroFramework.Controls.MetroButton metroButton_init;
+ private MetroFramework.Controls.MetroButton metroButton_Test;
}
}
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.cs
index 86379bc..5416206 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.cs
@@ -1,4 +1,5 @@
-using System;
+using HSUCO_Cargo_Garage_Operation_Program.CustomForm;
+using System;
using System.Windows.Forms;
namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
@@ -60,5 +61,11 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
{
SettingReset();
}
+
+ private void metroButton_Test_Click(object sender, EventArgs e)
+ {
+ LotsScreen lotsScreen = new LotsScreen();
+ lotsScreen.Show();
+ }
}
}
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/UserList.Designer.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/UserList.Designer.cs
index 4705b88..8fb2edd 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/UserList.Designer.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/UserList.Designer.cs
@@ -28,14 +28,19 @@
///
private void InitializeComponent()
{
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.metroRadioButton_EndUser = new MetroFramework.Controls.MetroRadioButton();
this.metroRadioButton_UseUser = new MetroFramework.Controls.MetroRadioButton();
this.metroRadioButton_InspectionAll = new MetroFramework.Controls.MetroRadioButton();
this.metroPanel1 = new MetroFramework.Controls.MetroPanel();
- this.metroButton2 = new MetroFramework.Controls.MetroButton();
- this.metroButton1 = new MetroFramework.Controls.MetroButton();
+ this.groupBox3 = new System.Windows.Forms.GroupBox();
+ this.metroRadioButton_Refund = new MetroFramework.Controls.MetroRadioButton();
+ this.metroRadioButton_Use = new MetroFramework.Controls.MetroRadioButton();
+ this.metroRadioButton_StandBy = new MetroFramework.Controls.MetroRadioButton();
+ this.metroRadioButton_PayAll = new MetroFramework.Controls.MetroRadioButton();
+ this.metroButton_DeleteStandBy = new MetroFramework.Controls.MetroButton();
+ this.metroButton_PaymentOk = new MetroFramework.Controls.MetroButton();
this.metroButton_UpdateUserData = new MetroFramework.Controls.MetroButton();
this.metroButton_Certificate = new MetroFramework.Controls.MetroButton();
this.metroButton_ExportExcel = new MetroFramework.Controls.MetroButton();
@@ -49,16 +54,11 @@
this.metroComboBox_SearchType = new MetroFramework.Controls.MetroComboBox();
this.dataGridView_List = new System.Windows.Forms.DataGridView();
this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
- this.groupBox3 = new System.Windows.Forms.GroupBox();
- this.metroRadioButton_Use = new MetroFramework.Controls.MetroRadioButton();
- this.metroRadioButton_StandBy = new MetroFramework.Controls.MetroRadioButton();
- this.metroRadioButton_PayAll = new MetroFramework.Controls.MetroRadioButton();
- this.metroRadioButton_Refund = new MetroFramework.Controls.MetroRadioButton();
this.groupBox1.SuspendLayout();
this.metroPanel1.SuspendLayout();
+ this.groupBox3.SuspendLayout();
this.groupBox2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView_List)).BeginInit();
- this.groupBox3.SuspendLayout();
this.SuspendLayout();
//
// groupBox1
@@ -109,8 +109,8 @@
// metroPanel1
//
this.metroPanel1.Controls.Add(this.groupBox3);
- this.metroPanel1.Controls.Add(this.metroButton2);
- this.metroPanel1.Controls.Add(this.metroButton1);
+ this.metroPanel1.Controls.Add(this.metroButton_DeleteStandBy);
+ this.metroPanel1.Controls.Add(this.metroButton_PaymentOk);
this.metroPanel1.Controls.Add(this.metroButton_UpdateUserData);
this.metroPanel1.Controls.Add(this.metroButton_Certificate);
this.metroPanel1.Controls.Add(this.metroButton_ExportExcel);
@@ -132,27 +132,85 @@
this.metroPanel1.VerticalScrollbarHighlightOnWheel = false;
this.metroPanel1.VerticalScrollbarSize = 10;
//
- // metroButton2
+ // groupBox3
//
- this.metroButton2.Anchor = System.Windows.Forms.AnchorStyles.Right;
- this.metroButton2.FontSize = MetroFramework.MetroButtonSize.Tall;
- this.metroButton2.Location = new System.Drawing.Point(776, 279);
- this.metroButton2.Name = "metroButton2";
- this.metroButton2.Size = new System.Drawing.Size(121, 40);
- this.metroButton2.TabIndex = 15;
- this.metroButton2.Text = "결재대기 삭제";
- this.metroButton2.UseSelectable = true;
+ this.groupBox3.BackColor = System.Drawing.Color.Transparent;
+ this.groupBox3.Controls.Add(this.metroRadioButton_Refund);
+ this.groupBox3.Controls.Add(this.metroRadioButton_Use);
+ this.groupBox3.Controls.Add(this.metroRadioButton_StandBy);
+ this.groupBox3.Controls.Add(this.metroRadioButton_PayAll);
+ this.groupBox3.Location = new System.Drawing.Point(176, 20);
+ this.groupBox3.Name = "groupBox3";
+ this.groupBox3.Size = new System.Drawing.Size(181, 90);
+ this.groupBox3.TabIndex = 5;
+ this.groupBox3.TabStop = false;
+ this.groupBox3.Text = "결재 필터";
//
- // metroButton1
+ // metroRadioButton_Refund
//
- this.metroButton1.Anchor = System.Windows.Forms.AnchorStyles.Right;
- this.metroButton1.FontSize = MetroFramework.MetroButtonSize.Tall;
- this.metroButton1.Location = new System.Drawing.Point(776, 233);
- this.metroButton1.Name = "metroButton1";
- this.metroButton1.Size = new System.Drawing.Size(121, 40);
- this.metroButton1.TabIndex = 14;
- this.metroButton1.Text = "결재 확인";
- this.metroButton1.UseSelectable = true;
+ this.metroRadioButton_Refund.AutoSize = true;
+ this.metroRadioButton_Refund.Location = new System.Drawing.Point(41, 56);
+ this.metroRadioButton_Refund.Name = "metroRadioButton_Refund";
+ this.metroRadioButton_Refund.Size = new System.Drawing.Size(47, 15);
+ this.metroRadioButton_Refund.TabIndex = 3;
+ this.metroRadioButton_Refund.Text = "환불";
+ this.metroRadioButton_Refund.UseSelectable = true;
+ //
+ // metroRadioButton_Use
+ //
+ this.metroRadioButton_Use.AutoSize = true;
+ this.metroRadioButton_Use.Location = new System.Drawing.Point(106, 35);
+ this.metroRadioButton_Use.Name = "metroRadioButton_Use";
+ this.metroRadioButton_Use.Size = new System.Drawing.Size(71, 15);
+ this.metroRadioButton_Use.TabIndex = 2;
+ this.metroRadioButton_Use.Text = "결재완료";
+ this.metroRadioButton_Use.UseSelectable = true;
+ //
+ // metroRadioButton_StandBy
+ //
+ this.metroRadioButton_StandBy.AutoSize = true;
+ this.metroRadioButton_StandBy.Location = new System.Drawing.Point(41, 35);
+ this.metroRadioButton_StandBy.Name = "metroRadioButton_StandBy";
+ this.metroRadioButton_StandBy.Size = new System.Drawing.Size(59, 15);
+ this.metroRadioButton_StandBy.TabIndex = 1;
+ this.metroRadioButton_StandBy.Text = "미결재";
+ this.metroRadioButton_StandBy.UseSelectable = true;
+ //
+ // metroRadioButton_PayAll
+ //
+ this.metroRadioButton_PayAll.AutoSize = true;
+ this.metroRadioButton_PayAll.Checked = true;
+ this.metroRadioButton_PayAll.Location = new System.Drawing.Point(30, 15);
+ this.metroRadioButton_PayAll.Name = "metroRadioButton_PayAll";
+ this.metroRadioButton_PayAll.Size = new System.Drawing.Size(47, 15);
+ this.metroRadioButton_PayAll.TabIndex = 0;
+ this.metroRadioButton_PayAll.TabStop = true;
+ this.metroRadioButton_PayAll.Text = "전체";
+ this.metroRadioButton_PayAll.UseSelectable = true;
+ //
+ // metroButton_DeleteStandBy
+ //
+ this.metroButton_DeleteStandBy.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.metroButton_DeleteStandBy.FontSize = MetroFramework.MetroButtonSize.Tall;
+ this.metroButton_DeleteStandBy.Location = new System.Drawing.Point(776, 279);
+ this.metroButton_DeleteStandBy.Name = "metroButton_DeleteStandBy";
+ this.metroButton_DeleteStandBy.Size = new System.Drawing.Size(121, 40);
+ this.metroButton_DeleteStandBy.TabIndex = 15;
+ this.metroButton_DeleteStandBy.Text = "결재대기 삭제";
+ this.metroButton_DeleteStandBy.UseSelectable = true;
+ this.metroButton_DeleteStandBy.Click += new System.EventHandler(this.metroButton_DeleteStandBy_Click);
+ //
+ // metroButton_PaymentOk
+ //
+ this.metroButton_PaymentOk.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.metroButton_PaymentOk.FontSize = MetroFramework.MetroButtonSize.Tall;
+ this.metroButton_PaymentOk.Location = new System.Drawing.Point(776, 233);
+ this.metroButton_PaymentOk.Name = "metroButton_PaymentOk";
+ this.metroButton_PaymentOk.Size = new System.Drawing.Size(121, 40);
+ this.metroButton_PaymentOk.TabIndex = 14;
+ this.metroButton_PaymentOk.Text = "결재 확인";
+ this.metroButton_PaymentOk.UseSelectable = true;
+ this.metroButton_PaymentOk.Click += new System.EventHandler(this.metroButton_PaymentOk_Click);
//
// metroButton_UpdateUserData
//
@@ -307,19 +365,21 @@
//
// dataGridView_List
//
+ this.dataGridView_List.AllowUserToAddRows = false;
+ this.dataGridView_List.AllowUserToDeleteRows = false;
this.dataGridView_List.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView_List.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dataGridView_List.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells;
- dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
- dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
- dataGridViewCellStyle1.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
- dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
- dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
- dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
- dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
- this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
+ dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+ dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control;
+ dataGridViewCellStyle3.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText;
+ dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3;
this.dataGridView_List.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView_List.Location = new System.Drawing.Point(20, 120);
this.dataGridView_List.MultiSelect = false;
@@ -330,62 +390,6 @@
this.dataGridView_List.Size = new System.Drawing.Size(750, 460);
this.dataGridView_List.TabIndex = 6;
//
- // groupBox3
- //
- this.groupBox3.BackColor = System.Drawing.Color.Transparent;
- this.groupBox3.Controls.Add(this.metroRadioButton_Refund);
- this.groupBox3.Controls.Add(this.metroRadioButton_Use);
- this.groupBox3.Controls.Add(this.metroRadioButton_StandBy);
- this.groupBox3.Controls.Add(this.metroRadioButton_PayAll);
- this.groupBox3.Location = new System.Drawing.Point(176, 20);
- this.groupBox3.Name = "groupBox3";
- this.groupBox3.Size = new System.Drawing.Size(181, 90);
- this.groupBox3.TabIndex = 5;
- this.groupBox3.TabStop = false;
- this.groupBox3.Text = "결재 필터";
- //
- // metroRadioButton_Use
- //
- this.metroRadioButton_Use.AutoSize = true;
- this.metroRadioButton_Use.Location = new System.Drawing.Point(106, 35);
- this.metroRadioButton_Use.Name = "metroRadioButton_Use";
- this.metroRadioButton_Use.Size = new System.Drawing.Size(71, 15);
- this.metroRadioButton_Use.TabIndex = 2;
- this.metroRadioButton_Use.Text = "결재완료";
- this.metroRadioButton_Use.UseSelectable = true;
- //
- // metroRadioButton_StandBy
- //
- this.metroRadioButton_StandBy.AutoSize = true;
- this.metroRadioButton_StandBy.Location = new System.Drawing.Point(41, 35);
- this.metroRadioButton_StandBy.Name = "metroRadioButton_StandBy";
- this.metroRadioButton_StandBy.Size = new System.Drawing.Size(59, 15);
- this.metroRadioButton_StandBy.TabIndex = 1;
- this.metroRadioButton_StandBy.Text = "미결재";
- this.metroRadioButton_StandBy.UseSelectable = true;
- //
- // metroRadioButton_PayAll
- //
- this.metroRadioButton_PayAll.AutoSize = true;
- this.metroRadioButton_PayAll.Checked = true;
- this.metroRadioButton_PayAll.Location = new System.Drawing.Point(30, 15);
- this.metroRadioButton_PayAll.Name = "metroRadioButton_PayAll";
- this.metroRadioButton_PayAll.Size = new System.Drawing.Size(47, 15);
- this.metroRadioButton_PayAll.TabIndex = 0;
- this.metroRadioButton_PayAll.TabStop = true;
- this.metroRadioButton_PayAll.Text = "전체";
- this.metroRadioButton_PayAll.UseSelectable = true;
- //
- // metroRadioButton_Refund
- //
- this.metroRadioButton_Refund.AutoSize = true;
- this.metroRadioButton_Refund.Location = new System.Drawing.Point(41, 56);
- this.metroRadioButton_Refund.Name = "metroRadioButton_Refund";
- this.metroRadioButton_Refund.Size = new System.Drawing.Size(47, 15);
- this.metroRadioButton_Refund.TabIndex = 3;
- this.metroRadioButton_Refund.Text = "환불";
- this.metroRadioButton_Refund.UseSelectable = true;
- //
// UserList
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
@@ -397,11 +401,11 @@
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.metroPanel1.ResumeLayout(false);
+ this.groupBox3.ResumeLayout(false);
+ this.groupBox3.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView_List)).EndInit();
- this.groupBox3.ResumeLayout(false);
- this.groupBox3.PerformLayout();
this.ResumeLayout(false);
}
@@ -426,8 +430,8 @@
private MetroFramework.Controls.MetroButton metroButton_ExportExcel;
private MetroFramework.Controls.MetroButton metroButton_Certificate;
private MetroFramework.Controls.MetroButton metroButton_UpdateUserData;
- private MetroFramework.Controls.MetroButton metroButton2;
- private MetroFramework.Controls.MetroButton metroButton1;
+ private MetroFramework.Controls.MetroButton metroButton_DeleteStandBy;
+ private MetroFramework.Controls.MetroButton metroButton_PaymentOk;
private System.Windows.Forms.GroupBox groupBox3;
private MetroFramework.Controls.MetroRadioButton metroRadioButton_Use;
private MetroFramework.Controls.MetroRadioButton metroRadioButton_StandBy;
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/UserList.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/UserList.cs
index 4785b15..7223452 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/UserList.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/UserList.cs
@@ -4,7 +4,6 @@ using MetroFramework;
using System;
using System.Collections.Generic;
using System.Data;
-using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Text;
using System.Windows.Forms;
@@ -29,7 +28,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
List nowUserList;
if (metroRadioButton_UseUser.Checked)
- nowUserList = userList.Where(x => x.DateEnd >= DateTime.Now && x.PaymentStatus != EPaymentStatus.Refund ).ToList();
+ nowUserList = userList.Where(x => x.DateEnd >= DateTime.Now && x.PaymentStatus != EPaymentStatus.Refund).ToList();
else if (metroRadioButton_EndUser.Checked)
nowUserList = userList.Where(x => x.DateEnd <= DateTime.Now || x.PaymentStatus == EPaymentStatus.Refund).ToList();
else
@@ -40,9 +39,9 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
private List PaymentType(List beforUserInfromation)
{
List userList = beforUserInfromation;
- if(metroRadioButton_StandBy.Checked)
+ if (metroRadioButton_StandBy.Checked)
{
- userList = beforUserInfromation.Where(x=> x.PaymentStatus == EPaymentStatus.StandBy).ToList();
+ userList = beforUserInfromation.Where(x => x.PaymentStatus == EPaymentStatus.StandBy).ToList();
}
else if (metroRadioButton_Use.Checked)
@@ -53,7 +52,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
{
userList = beforUserInfromation.Where(x => x.PaymentStatus == EPaymentStatus.Refund).ToList();
}
-
+
return userList;
@@ -104,6 +103,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
dataTable.Columns.Add("차종(승용)");
dataTable.Columns.Add("이용시작일");
dataTable.Columns.Add("이용종료일");
+ dataTable.Columns.Add("결재여부");
dataTable.Columns.Add("변경사항");
for (var i = 0; i < nowUserList.Count; i++)
{
@@ -114,12 +114,31 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
history.Append(" ");
history.AppendLine(nowUserList[i].HistoryInformations[j].HistoryCode == EHistoryCode.Extension ? "연장" : "환불");
}
+ string payment = string.Empty;
+ switch (nowUserList[i].PaymentStatus)
+ {
+ case EPaymentStatus.StandBy:
+ payment = "결재 대기";
+ break;
+ case EPaymentStatus.Use:
+ payment = "결재 완료";
+ break;
+ case EPaymentStatus.Refund:
+ payment = "환불";
+ break;
+ case EPaymentStatus.Delete:
+ payment = "삭제";
+ break;
+
+ }
+
dataTable.Rows
.Add(
nowUserList[i].No,
- nowUserList[i].DateOfApplicant,
+
+ nowUserList[i].Date.DateTimeDatabase(),
nowUserList[i].ApplicantNo,
- nowUserList[i].ApplicantDate,
+ nowUserList[i].ApplicantDate.DateTimeDatabase(),
nowUserList[i].Name,
nowUserList[i].PersonalNumber,
nowUserList[i].Phone,
@@ -129,23 +148,16 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
nowUserList[i].CargoVehicleName,
nowUserList[i].PassengerVehicleNumber,
nowUserList[i].PassengerVehicleName,
- nowUserList[i].DateStart,
- nowUserList[i].DateEnd,
+ nowUserList[i].DateStart.ToString("yyyy-MM-dd"),
+ nowUserList[i].DateEnd.ToString("yyyy-MM-dd"),
+ payment,
history
);
}
dataGridView_List.DataSource = dataTable;
dataGridView_List.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
- dataGridView_List.Columns[0].MinimumWidth = 20;
- dataGridView_List.Columns[0].FillWeight = 20;
- dataGridView_List.Columns[1].MinimumWidth = 100;
- dataGridView_List.Columns[1].FillWeight = 100;
- dataGridView_List.Columns[2].MinimumWidth = 60;
- dataGridView_List.Columns[2].FillWeight = 60;
- dataGridView_List.Columns[15].DefaultCellStyle.WrapMode =
- DataGridViewTriState.True;
}
private void metroButton_Search_Click(object sender, EventArgs e)
@@ -171,7 +183,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
}
else
{
- MetroMessageBox.Show(this, "엑셀 파일 저장에 실패하였습니다.", "Excel Export", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ MetroMessageBox.Show(this, "엑셀 파일 저장에 실패하였습니다.", "Excel Export", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
@@ -184,7 +196,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
// 연장 했는가?
string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
bool result = Database.CheckExtensionStatus(no);
- if(result)
+ if (result)
{
MetroMessageBox.Show(this, "이미 연장된 사용자 입니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
@@ -194,16 +206,16 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
EVehicleType eVehicleType = Database.GetVehicleType(no);
int amount = eVehicleType == EVehicleType.Large ? Global.GlobalSettings.CargoLargeFee : Global.GlobalSettings.CargoOversizedFee;
string cargoNumber = dataGridView_List.SelectedRows[0].Cells[9].Value.ToString();
- var message = $"선태하신 차량 {cargoNumber}을 연장하시겠습니까?\r\n연장금액 : {String.Format("{0:n0}", amount)}원";
+ var message = $"선태하신 차량 {cargoNumber}을 연장하시겠습니까?\r\n연장금액 : {String.Format("{0:n0}", amount)}원";
if (MetroMessageBox.Show(this, message, "1년 연장", MessageBoxButtons.OKCancel,
MessageBoxIcon.Information) == DialogResult.OK)
{
- Database.UpdateExtended(no,amount);
+ Database.UpdateExtended(no, amount);
DataChange();
}
-
+
}
private void metroButton_Refund_Click(object sender, EventArgs e)
@@ -212,35 +224,41 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
if (count == 0) return;
string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
GetRefundInformation getRefundInformation = Database.GetRefundData(no);
- if (getRefundInformation.RefundStatus)
+ if (getRefundInformation.PaymentStatus == EPaymentStatus.Refund)
{
MetroMessageBox.Show(this, "이미 환불된 사용자 입니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Refund refund = new Refund(getRefundInformation);
refund.ShowDialog();
- if(refund.DialogResult != DialogResult.OK)
+ if (refund.DialogResult != DialogResult.OK)
{
return;
-
+
}
DateTime refundDateTime = refund.RefundDateTime;
int totalAmount = 0;
-
+
+ if (getRefundInformation.DateEnd < refundDateTime)
+ {
+ MetroMessageBox.Show(this, "이용종료일이 환불일 보다 이전입니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+
// 연장여부
// 이용 전 이면
- if(getRefundInformation.DateStart > refundDateTime)
+ if (getRefundInformation.DateStart > refundDateTime)
{
refundDateTime = getRefundInformation.DateStart;
totalAmount += getRefundInformation.BaseFee;
- if(getRefundInformation.ExtensionStatus)
+ if (getRefundInformation.ExtensionStatus)
{
totalAmount += getRefundInformation.ExtensionFee;
}
}
- else if(getRefundInformation.ExtensionStatus)
+ else if (getRefundInformation.ExtensionStatus)
{
//연장일 보다 환불일이 늦는경우(연장에 부분만 일자 계산후 정산)
if (getRefundInformation.ExtensionStart < refundDateTime)
@@ -291,7 +309,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
int totalMonth = Extends.GetProgressMonth(getRefundInformation.DateStart.Year, getRefundInformation.DateStart.Month, getRefundInformation.DateEnd.Year, getRefundInformation.DateEnd.Month);
int monthAmount = getRefundInformation.BaseFee / totalMonth;
int leftAmount = progressDays.Month * monthAmount;
- if(progressDays.StartDay != 0)
+ if (progressDays.StartDay != 0)
{
leftAmount += (monthAmount / progressDays.StartTotalDay) * (progressDays.StartTotalDay - progressDays.StartDay);
}
@@ -304,10 +322,10 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
DialogResult dialogResult = MetroMessageBox.Show(this, $"환불 처리 하시겟습니까?\r\n 환불 금액 : {String.Format("{0:n0}", totalAmount)}원", "환불", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
- if(dialogResult == DialogResult.OK)
+ if (dialogResult == DialogResult.OK)
{
bool result = Database.SetRefund(no, refundDateTime, totalAmount);
- if(result)
+ if (result)
{
MetroMessageBox.Show(this, "환불처리가 완료되었습니다.", "환불", MessageBoxButtons.OK, MessageBoxIcon.Information);
DataChange();
@@ -407,5 +425,51 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
DataChange();
}
}
+
+ private void metroButton_PaymentOk_Click(object sender, EventArgs e)
+ {
+ var selectCount = dataGridView_List.SelectedRows.Count;
+ if (selectCount == 0) return;
+ string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
+ var status = Database.CheckPaymentStatus(no);
+ if (status != EPaymentStatus.StandBy)
+ {
+ MetroMessageBox.Show(this, "현재 사용자는 결재 완료로 전환할수 없는 사용자 입니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+
+ }
+ GetPaymentBaseInformation getPaymentBaseInformation = Database.GetPaymentBase(no);
+ int payBase = getPaymentBaseInformation.VehicleType == EVehicleType.Large ? Global.GlobalSettings.CargoLargeFee : Global.GlobalSettings.CargoOversizedFee;
+ int pay = getPaymentBaseInformation.Month * payBase;
+ StringBuilder sb = new StringBuilder();
+ sb.AppendLine("선택하신 사용자의 수납을 확인하시겠습니까 ?");
+ sb.AppendLine($"이용개월 : {getPaymentBaseInformation.Month}월");
+ sb.AppendLine($"이용금액(월) : {payBase}원");
+ sb.AppendLine($"총 이용금액 : {pay}원");
+
+ var result = MetroMessageBox.Show(this, sb.ToString(), "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
+ if (result == DialogResult.Yes)
+ {
+ Database.AcceptUser(no, pay);
+ }
+
+ }
+
+ private void metroButton_DeleteStandBy_Click(object sender, EventArgs e)
+ {
+ var selectCount = dataGridView_List.SelectedRows.Count;
+ if (selectCount == 0) return;
+ string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
+ var status = Database.CheckPaymentStatus(no);
+ if (status != EPaymentStatus.StandBy)
+ {
+ MetroMessageBox.Show(this, "현재 사용자는 삭제처리할수 없는 사용자 입니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ Database.DeleteUser(no);
+ MetroMessageBox.Show(this, "해당 사용자를 제거 완료했습니다.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ DataChange();
+
+ }
}
}
\ No newline at end of file
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.Designer.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.Designer.cs
index 7a54af0..e84e1e4 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.Designer.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.Designer.cs
@@ -209,6 +209,8 @@
//
// dataGridView_List
//
+ this.dataGridView_List.AllowUserToAddRows = false;
+ this.dataGridView_List.AllowUserToDeleteRows = false;
this.dataGridView_List.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.cs
index e22e5c5..3c98b44 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.cs
@@ -4,7 +4,6 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
-using System.Runtime.InteropServices.WindowsRuntime;
using System.Windows.Forms;
namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
@@ -13,14 +12,12 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
{
public WaitingList() => InitializeComponent();
- void ApplicantList_Load(object sender, EventArgs e)
+ private void ApplicantList_Load(object sender, EventArgs e)
{
metroComboBox_SearchType.SelectedIndex = 0;
}
-
-
- void DataChange()
+ private void DataChange()
{
var applicants = Database.GetApplicantWait();
switch (metroComboBox_SearchType.SelectedIndex)
@@ -29,19 +26,22 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
applicants = applicants.Where(x => x.CargoVehicleNumber.Contains(metroTextBox_Search.Text.Trim())).ToList();
break;
+
case 1:
applicants = applicants.Where(x => x.PassengerVehicleNumber.Contains(metroTextBox_Search.Text.Trim())).ToList();
break;
+
case 2:
applicants = applicants.Where(x => x.Name.Contains(metroTextBox_Search.Text.Trim())).ToList();
break;
+
case 3:
applicants = applicants.Where(x => x.Phone.Contains(metroTextBox_Search.Text.Trim())).ToList();
break;
+
case 4:
applicants = applicants.Where(x => x.Address.Contains(metroTextBox_Search.Text.Trim())).ToList();
break;
-
}
var dataTable = new DataTable();
@@ -60,10 +60,9 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
string order;
int countLarge = 1;
- int countOversize = 1;
+ int countOversized = 1;
for (int i = 0; i < applicants.Count; i++)
{
-
if (applicants[i].VehicleType == 0)
{
order = $"대형-{countLarge}";
@@ -71,8 +70,8 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
}
else
{
- order = $"특대형-{countOversize}";
- countOversize++;
+ order = $"특대형-{countOversized}";
+ countOversized++;
}
dataTable.Rows
.Add(
@@ -87,73 +86,62 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
applicants[i].PassengerVehicleNumber,
applicants[i].PassengerVehicleName,
applicants[i].VehicleType == 0 ? "대형(4.5톤 미만)" : "특대형(4.5톤 이상)",
- applicants[i].DateOfApplication
-
+ applicants[i].Date.DateTimeDatabase()
);
}
dataGridView_List.DataSource = dataTable;
dataGridView_List.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
- dataGridView_List.Columns[0].MinimumWidth = 100;
- dataGridView_List.Columns[0].FillWeight = 100;
-
- dataGridView_List.Columns[1].MinimumWidth = 100;
- dataGridView_List.Columns[1].FillWeight = 100;
- dataGridView_List.Columns[2].MinimumWidth = 60;
- dataGridView_List.Columns[2].FillWeight = 60;
}
- void metroButton_Search_Click(object sender, EventArgs e) => DataChange();
+ private void metroButton_Search_Click(object sender, EventArgs e) => DataChange();
- void metroButton_Delete_Click(object sender, EventArgs e)
+ private void metroButton_Delete_Click(object sender, EventArgs e)
{
var selectCount = dataGridView_List.SelectedRows.Count;
if (selectCount == 0) return;
string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
-
var message = "선태하신 화물챠랑번호 " + dataGridView_List.SelectedRows[0].Cells[5].Value.ToString() + "을 삭제 하시겠습니까?";
if (MetroMessageBox.Show(this, message, "삭제", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{
- bool result = Database.DeleteApplicantList(no);
- if(result)
+ bool result = Database.DeleteApplicantList(no);
+ if (result)
{
MetroMessageBox.Show(this, "삭제에 성공하였습니다.", "성공", MessageBoxButtons.OK, MessageBoxIcon.Information);
DataChange();
}
else
{
- MetroMessageBox.Show(this, "삭제에 실패하였습니다.", "성공", MessageBoxButtons.OK, MessageBoxIcon.Error );
+ MetroMessageBox.Show(this, "삭제에 실패하였습니다.", "성공", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
-
}
}
- void metroButton_UpdateUser_Click(object sender, EventArgs e)
+ private void metroButton_UpdateUser_Click(object sender, EventArgs e)
{
var count = dataGridView_List.Rows.Count - 1;
if (count == 0) return;
Promotion promotion = new Promotion("대기자 이용기간");
- DialogResult dialogResult = promotion.ShowDialog();
- if(dialogResult != DialogResult.OK)
+ DialogResult dialogResult = promotion.ShowDialog();
+ if (dialogResult != DialogResult.OK)
{
return;
}
DateTime startDate = promotion.StartDate;
LeftAreaInformation leftAreaInformation = Database.GetLeftArea(startDate, Global.GlobalSettings.CargoLargeMaxCount, Global.GlobalSettings.CargoOversizedMaxCount);
- if(leftAreaInformation.Large.Count + leftAreaInformation.OverSized.Count == 0)
+ if (leftAreaInformation.Large.Count + leftAreaInformation.OverSized.Count == 0)
{
- // 자리 없음
- MetroMessageBox.Show(this, "남은 자리가 없습니다", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ MetroMessageBox.Show(this, "남은 자리가 없습니다", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
- // 순서를 어떻게 하지?
- // 1. 추첨에서 떨어진 사람 들,
- //TODO: 업데이트 필요함
-
+
+ List result = Database.SetUserListForApplicantWait(leftAreaInformation, promotion.EndDate);
+ InsertResult insertResult = new InsertResult(result);
+ insertResult.ShowDialog();
DataChange();
}
diff --git a/HSUCO_Cargo_Garage_Operation_Program/DataModel.cs b/HSUCO_Cargo_Garage_Operation_Program/DataModel.cs
index 736cc38..bfa4821 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/DataModel.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/DataModel.cs
@@ -6,7 +6,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public struct ApplicantInformation
{
public string No { get; set; } // 고유번호
- public bool ApplicantType { get; set; }
+ public EApplicantType ApplicantType { get; set; }
public string CargoVehicleNumber { get; set; }
public string CargoVehicleName { get; set; }
public string PassengerVehicleNumber { get; set; }
@@ -16,7 +16,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public string PersonalNumber { get; set; } // 생년월일 및 법인등록변호
public string Phone { get; set; }
public string Address { get; set; }
- public DateTime DateOfApplication { get; set; }
+ public DateTime Date { get; set; }
}
public struct UserInformation
@@ -34,7 +34,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public string PersonalNumber { get; set; } //생년월일 혹은 법인번호
public string Phone { get; set; } // 연락처
public string Address { get; set; } // 주소
- public DateTime DateOfApplicant { get; set; } // 당첨일
+ public DateTime Date { get; set; } // 당첨일
public DateTime DateStart { get; set; } // 시작일
public DateTime DateEnd { get; set; } // 종료일
public bool ExtensionStatus { get; set; } // 연장여부
@@ -125,8 +125,8 @@ namespace HSUCO_Cargo_Garage_Operation_Program
}
public struct GetRefundInformation
{
-
- public bool RefundStatus { get; set; }
+
+ public EPaymentStatus PaymentStatus { get; set; }
public DateTime DateStart { get; set; }
public DateTime DateEnd { get; set; }
public bool ExtensionStatus { get; set; }
@@ -142,6 +142,28 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public List OverSized { get; set; }
}
+ public struct SetUserListInformation
+ {
+ public string No { get; set; }
+ public string Area { get; set; }
+ public string ApplicantNo { get; set; }
+ public int UID { get; set; }
+ public DateTime Date { get; set; }
+ public EVehicleType VehicleType { get; set; }
+
+ }
+ public struct ResultSetUserListInformation
+ {
+ public string Area { get; set; }
+ public string No { get; set; }
+ public string ApplicantNo { get; set; }
+ }
+ public struct GetPaymentBaseInformation
+ {
+
+ public int Month { get; set; }
+ public EVehicleType VehicleType { get; set; }
+ }
public struct Settings
{
public string GarageName { get; set; }
@@ -184,18 +206,26 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{
ApplicantList,
UserList,
-
+
}
public enum EApplicantType
{
- Lots,
- LotsOut,
- Wait
+ Lots, // 추첨 대기
+ LotsOut, // 추첨 아웃 -> 순번 대기
+ Wait // 추첨
+ }
+ public enum ERegistrationStatus
+ {
+ Wait,
+ Registration,
+ Delete
}
public enum EPaymentStatus
{
StandBy, // 대기
Use, // 사용중
- Refund // 삭제됨
+ Refund, // 환불됨
+ Delete
+
}
}
\ No newline at end of file
diff --git a/HSUCO_Cargo_Garage_Operation_Program/Database.cs b/HSUCO_Cargo_Garage_Operation_Program/Database.cs
index d9f7e12..9089bdc 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/Database.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/Database.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Data.SQLite;
using System.Globalization;
using System.IO;
+using System.Linq;
namespace HSUCO_Cargo_Garage_Operation_Program
{
@@ -31,10 +32,11 @@ namespace HSUCO_Cargo_Garage_Operation_Program
""No"" TEXT NOT NULL,
""ApplicantType"" INTEGER NOT NULL,
""UID"" INTEGER NOT NULL,
- ""DateOfApplicant"" TEXT NOT NULL,
- ""Status"" INTEGER NOT NULL,
- PRIMARY KEY(""No""),
- FOREIGN KEY(""UID"") REFERENCES ""UserInformation""(""UID"")
+ ""Date"" TEXT NOT NULL,
+ ""RegistrationStatus"" INTEGER NOT NULL,
+ ""DropDate"" TEXT,
+ FOREIGN KEY(""UID"") REFERENCES ""UserInformation""(""UID""),
+ PRIMARY KEY(""No"")
);
CREATE TABLE ""LedgerCertificate"" (
@@ -82,7 +84,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
""ApplicantNo"" TEXT NOT NULL,
""ApplicantDate"" TEXT NOT NULL,
""UID"" INTEGER NOT NULL,
- ""DateOfApplicant"" TEXT NOT NULL,
+ ""Date"" TEXT NOT NULL,
""DateStart"" TEXT NOT NULL,
""DateEnd"" TEXT NOT NULL,
""ExtensionStatus"" INTEGER NOT NULL,
@@ -112,8 +114,9 @@ namespace HSUCO_Cargo_Garage_Operation_Program
UI.PersonalNumber,
UI.Phone,
UI.Address,
- AL.DateOfApplicant,
- AL.Status
+ AL.Date,
+ AL.RegistrationStatus,
+ AL.DropDate
FROM main.ApplicantList AL INNER JOIN main.UserInformation UI ON AL.UID = UI.UID;
CREATE VIEW ViewUserList AS SELECT
@@ -131,7 +134,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
UI.PersonalNumber,
UI.Phone,
UI.Address,
- UL.DateOfApplicant,
+ UL.Date,
UL.DateStart,
UL.DateEnd,
UL.ExtensionStatus,
@@ -168,7 +171,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static bool ApplicantCheckAlready(string CargoVehicleNumber)
{
var count = 0;
- var query = string.Format("SELECT COUNT(*) From ViewApplicantList Where CargoVehicleNumber = '{0}' And Status=0;",
+ var query = string.Format($"SELECT COUNT(*) From ViewApplicantList Where CargoVehicleNumber = '{0}' And RegistrationStatus={(int)ERegistrationStatus.Wait};",
CargoVehicleNumber.Trim());
using (var command = _sqLiteConnection.CreateCommand())
@@ -204,13 +207,28 @@ namespace HSUCO_Cargo_Garage_Operation_Program
return count > 0;
}
+ public static EPaymentStatus CheckPaymentStatus(string no)
+ {
+ EPaymentStatus paymentStatus = new EPaymentStatus();
+ var query = $"SELECT PaymentStatus From UserList Where No='{no}'";
+ using (var command = _sqLiteConnection.CreateCommand())
+ {
+ command.CommandText = query;
+ using (var reader = command.ExecuteReader())
+ {
+ while (reader.Read())
+ paymentStatus = (EPaymentStatus)int.Parse(reader["PaymentStatus"].ToString());
+ }
+ }
+ return paymentStatus;
+ }
public static string SetApplicant(ApplicantInformation applicant)
{
int year = DateTime.Now.Year;
string suffix;
EGetLastNumber eGetLastNumber;
- if (applicant.ApplicantType)
+ if (applicant.ApplicantType == EApplicantType.Lots)
{
suffix = Global.SuffixApplicantLot;
eGetLastNumber = EGetLastNumber.ApplicantListLots;
@@ -229,7 +247,6 @@ namespace HSUCO_Cargo_Garage_Operation_Program
$"VALUES('{applicant.CargoVehicleNumber}','{applicant.CargoVehicleName}','{applicant.PassengerVehicleNumber}','{applicant.PassengerVehicleName}','{(int)applicant.VehicleType}','{applicant.Name}','{applicant.PersonalNumber}','{applicant.Phone}','{applicant.Address}');" +
$"select last_insert_rowid();";
-
int lastId = 0;
int insertResult;
using (var command = _sqLiteConnection.CreateCommand())
@@ -237,11 +254,11 @@ namespace HSUCO_Cargo_Garage_Operation_Program
command.CommandText = query;
lastId = int.Parse(command.ExecuteScalar().ToString());
}
- if(lastId < 1)
+ if (lastId < 1)
{
return string.Empty;
}
- query = $"INSERT INTO ApplicantList(No, ApplicantType, UID, DateOfApplicant, Status) VALUES('{no}', '{applicant.ApplicantType.BoolToInt()}',{lastId},'{applicant.DateOfApplication.DateTimeDatabase()}', 0)";
+ query = $"INSERT INTO ApplicantList(No, ApplicantType, UID, Date, RegistrationStatus) VALUES('{no}', '{(int)applicant.ApplicantType}',{lastId},'{applicant.Date.DateTimeDatabase()}', {(int)ERegistrationStatus.Wait})";
using (var command = _sqLiteConnection.CreateCommand())
{
command.CommandText = query;
@@ -261,7 +278,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static List GetApplicant()
{
var applicants = new List();
- var query = "SELECT * From ViewApplicantList Where ApplicantType=1 And Status=0";
+ var query = $"SELECT * From ViewApplicantList Where ApplicantType={(int)EApplicantType.Lots} And RegistrationStatus={(int)ERegistrationStatus.Wait}";
using (var command = _sqLiteConnection.CreateCommand())
{
@@ -273,7 +290,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{
var applicant = new ApplicantInformation();
applicant.No = reader["No"].ToString();
- applicant.ApplicantType = reader["ApplicantType"].ToString() == "1";
+ applicant.ApplicantType = (EApplicantType)int.Parse(reader["ApplicantType"].ToString());
applicant.CargoVehicleNumber = reader["CargoVehicleNumber"].ToString();
applicant.CargoVehicleName = reader["CargoVehicleName"].ToString();
applicant.PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString();
@@ -283,7 +300,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
applicant.PersonalNumber = reader["PersonalNumber"].ToString();
applicant.Phone = reader["Phone"].ToString();
applicant.Address = reader["Address"].ToString();
- applicant.DateOfApplication = DateTime.Parse(reader["DateOfApplicant"].ToString());
+ applicant.Date = DateTime.Parse(reader["Date"].ToString());
applicants.Add(applicant);
}
}
@@ -295,7 +312,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static List GetApplicantWait()
{
var applicants = new List();
- var query = "SELECT * From ViewApplicantList Where ApplicantType=0 And Status=0 Order By DateOfApplicant ASC";
+ var query = $"SELECT * From ViewApplicantList Where ApplicantType={(int)EApplicantType.LotsOut} And RegistrationStatus={(int)ERegistrationStatus.Wait} Order By DropDate, Date ASC";
using (var command = _sqLiteConnection.CreateCommand())
{
@@ -307,7 +324,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{
var applicant = new ApplicantInformation();
applicant.No = reader["No"].ToString();
- applicant.ApplicantType = reader["ApplicantType"].ToString() == "1";
+ applicant.ApplicantType = (EApplicantType)int.Parse(reader["ApplicantType"].ToString());
applicant.CargoVehicleNumber = reader["CargoVehicleNumber"].ToString();
applicant.CargoVehicleName = reader["CargoVehicleName"].ToString();
applicant.PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString();
@@ -317,7 +334,34 @@ namespace HSUCO_Cargo_Garage_Operation_Program
applicant.PersonalNumber = reader["PersonalNumber"].ToString();
applicant.Phone = reader["Phone"].ToString();
applicant.Address = reader["Address"].ToString();
- applicant.DateOfApplication = DateTime.Parse(reader["DateOfApplicant"].ToString());
+ applicant.Date = DateTime.Parse(reader["Date"].ToString());
+
+ applicants.Add(applicant);
+ }
+ }
+ }
+ query = $"SELECT * From ViewApplicantList Where ApplicantType={(int)EApplicantType.Wait} And RegistrationStatus={(int)ERegistrationStatus.Wait} Order By Date ASC";
+ using (var command = _sqLiteConnection.CreateCommand())
+ {
+ command.CommandText = query;
+
+ using (var reader = command.ExecuteReader())
+ {
+ while (reader.Read())
+ {
+ var applicant = new ApplicantInformation();
+ applicant.No = reader["No"].ToString();
+ applicant.ApplicantType = (EApplicantType)int.Parse(reader["ApplicantType"].ToString());
+ applicant.CargoVehicleNumber = reader["CargoVehicleNumber"].ToString();
+ applicant.CargoVehicleName = reader["CargoVehicleName"].ToString();
+ applicant.PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString();
+ applicant.PassengerVehicleName = reader["PassengerVehicleName"].ToString();
+ applicant.VehicleType = (EVehicleType)int.Parse(reader["VehicleType"].ToString());
+ applicant.Name = reader["Name"].ToString();
+ applicant.PersonalNumber = reader["PersonalNumber"].ToString();
+ applicant.Phone = reader["Phone"].ToString();
+ applicant.Address = reader["Address"].ToString();
+ applicant.Date = DateTime.Parse(reader["Date"].ToString());
applicants.Add(applicant);
}
@@ -327,10 +371,12 @@ namespace HSUCO_Cargo_Garage_Operation_Program
return applicants;
}
+
+
public static bool DeleteApplicantList(string no)
{
- //TODO: 수정사항
- var query = $"UPDATE ApplicantList SET Status=2 Where No='{no}'";
+
+ var query = $"UPDATE ApplicantList SET RegistrationStatus={(int)ERegistrationStatus.Delete} Where No='{no}'";
using (var updateCommand = _sqLiteConnection.CreateCommand())
{
updateCommand.CommandText = query;
@@ -415,7 +461,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
user.PersonalNumber = reader["PersonalNumber"].ToString();
user.Phone = reader["Phone"].ToString();
user.Address = reader["Address"].ToString();
- user.DateOfApplicant = DateTime.Parse(reader["DateOfApplicant"].ToString(), new CultureInfo("ko-KR"));
+ user.Date = DateTime.Parse(reader["Date"].ToString(), new CultureInfo("ko-KR"));
user.DateStart = DateTime.Parse(reader["DateStart"].ToString(), new CultureInfo("ko-KR"));
user.DateEnd = DateTime.Parse(reader["DateEnd"].ToString(), new CultureInfo("ko-KR"));
user.ExtensionStatus = reader["ExtensionStatus"].ToString() == "1";
@@ -450,12 +496,10 @@ namespace HSUCO_Cargo_Garage_Operation_Program
}
return users;
}
-
- public static EVehicleType GetEVehicleType(string no)
+ public static GetPaymentBaseInformation GetPaymentBase(string no)
{
- EVehicleType eVehicleType = new EVehicleType();
- string query = $"SELECT VehicleType From UserList Where No='{no}'";
-
+ GetPaymentBaseInformation getPaymentBaseInformation = new GetPaymentBaseInformation();
+ var query = $"SELECT DateStart, DateEnd, VehicleType FROM ViewUserList Where No='{no}'";
using (var command = _sqLiteConnection.CreateCommand())
{
command.CommandText = query;
@@ -463,13 +507,59 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{
while (reader.Read())
{
- int result = int.Parse(reader["VehicleType"].ToString());
- eVehicleType = (EVehicleType)result;
+ DateTime start = DateTime.Parse(reader["DateStart"].ToString(), new CultureInfo("ko-KR"));
+ DateTime end = DateTime.Parse(reader["DateEnd"].ToString(), new CultureInfo("ko-KR"));
+ getPaymentBaseInformation.Month = Extends.GetProgressDays(start, end).Month;
+ getPaymentBaseInformation.VehicleType = (EVehicleType)int.Parse(reader["VehicleType"].ToString());
+
}
}
}
- return eVehicleType;
+ return getPaymentBaseInformation;
+
+ }
+ public static void AcceptUser(string no, int pay)
+ {
+ var query = $"UPDATE PaymentStatus{(int)EPaymentStatus.Use} FROM UserList Where No='{no}'";
+ using (var command = _sqLiteConnection.CreateCommand())
+ {
+ command.CommandText = query;
+ command.ExecuteNonQuery();
+
+ }
+ query = $"INSERT INTO LedgerProceeds(UserNo, Type, Amount, Date) VALUES('{no}',{(int)EProceedsType.Fees},{pay},'{DateTime.Now.DateTimeDatabase()}')";
+ using (var command = _sqLiteConnection.CreateCommand())
+ {
+ command.CommandText = query;
+ command.ExecuteNonQuery();
+
+ }
+ return;
+ }
+ public static void DeleteUser(string no)
+ {
+ DateTime endDate = new DateTime();
+ var query = $"SELECT DateEnd FROM UserList Where No='{no}'";
+ using (var command = _sqLiteConnection.CreateCommand())
+ {
+ command.CommandText = query;
+ using (var reader = command.ExecuteReader())
+ {
+ while (reader.Read())
+ {
+ endDate = DateTime.Parse(reader["DateEnd"].ToString());
+ }
+ }
+ }
+ endDate = endDate.AddDays(-1);
+ query = $"UPDATE UserList Set DateEnd='{endDate.EndDateTime()}', PaymentStatus={(int)EPaymentStatus.Delete} Where No='{no}'";
+ using (var command = _sqLiteConnection.CreateCommand())
+ {
+ command.CommandText = query;
+ command.ExecuteNonQuery();
+
+ }
}
///
@@ -550,7 +640,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static GetRefundInformation GetRefundData(string no)
{
GetRefundInformation getRefundInformation = new GetRefundInformation();
- var query = $"SELECT RefundStatus, DateStart, DateEnd, ExtensionStatus, ExtensionStart From UserList Where No='{no}'";
+ var query = $"SELECT PaymentStatus, DateStart, DateEnd, ExtensionStatus, ExtensionStart From UserList Where No='{no}'";
using (var command = _sqLiteConnection.CreateCommand())
{
command.CommandText = query;
@@ -558,7 +648,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{
while (reader.Read())
{
- getRefundInformation.RefundStatus = reader["RefundStatus"].ToString() == "1";
+ getRefundInformation.PaymentStatus = (EPaymentStatus)int.Parse(reader["PaymentStatus"].ToString());
getRefundInformation.DateStart = DateTime.Parse(reader["DateStart"].ToString());
getRefundInformation.DateEnd = DateTime.Parse(reader["DateEnd"].ToString());
getRefundInformation.ExtensionStatus = reader["ExtensionStatus"].ToString() == "1";
@@ -595,7 +685,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static bool SetRefund(string no, DateTime refundDate, int amount)
{
- var query = $"UPDATE UserList Set DateEnd='{refundDate.AddDays(-1).EndDateTime()}', RefundStatus={true.BoolToInt()} Where No='{no}'";
+ var query = $"UPDATE UserList Set DateEnd='{refundDate.AddDays(-1).EndDateTime()}', PaymentStatus={(int)EPaymentStatus.Refund} Where No='{no}'";
using (var command = _sqLiteConnection.CreateCommand())
{
command.CommandText = query;
@@ -630,77 +720,155 @@ namespace HSUCO_Cargo_Garage_Operation_Program
return true;
}
- public static List GetApplicantList(List CargoVehicleNumber)
+ public static List SetUserListForApplicant(LeftAreaInformation leftAreaInformation, DateTime endDate)
{
- var applicants = new List();
-
- for (var i = 0; i < CargoVehicleNumber.Count; i++)
+ List setUserListInformations = new List();
+ var query = $"SELECT * From ViewApplicantList Where ApplicantType={(int)EApplicantType.Lots} And RegistrationStatus={(int)ERegistrationStatus.Wait}";
+ using (var command = _sqLiteConnection.CreateCommand())
{
- var query = $"SELECT * From ViewApplicantList Where CargoVehicleNumber='{CargoVehicleNumber[i]}' And Status=0";
+ command.CommandText = query;
+
+ using (var reader = command.ExecuteReader())
+ {
+ while (reader.Read())
+ {
+ SetUserListInformation setUserListInformation = new SetUserListInformation();
+ setUserListInformation.ApplicantNo = reader["No"].ToString();
+ setUserListInformation.UID = int.Parse(reader["UID"].ToString());
+ setUserListInformation.Date = DateTime.Parse(reader["Date"].ToString());
+ setUserListInformation.VehicleType = (EVehicleType)int.Parse(reader["VehicleType"].ToString());
+ setUserListInformations.Add(setUserListInformation);
+ }
+ }
+ }
+ setUserListInformations.Shuffle(); // 랜덤화 시킨다
+
+ List setUserListInformationLarge = new List();
+ List setUserListInformationOversized = new List();
+ setUserListInformationLarge.AddRange(setUserListInformations.Where(x => x.VehicleType == EVehicleType.Large).Take(leftAreaInformation.Large.Count));
+ setUserListInformationOversized.AddRange(setUserListInformations.Where(x => x.VehicleType == EVehicleType.Oversized).Take(leftAreaInformation.OverSized.Count));
+
+ List setUserListInformationFinal = new List();
+ for (int i = 0; i < setUserListInformationLarge.Count; i++)
+ {
+ SetUserListInformation setUserListInformation = setUserListInformationLarge[i];
+ setUserListInformation.Area = "대형-" + leftAreaInformation.Large[i];
+ setUserListInformationFinal.Add(setUserListInformation);
+ }
+ for (int i = 0; i < setUserListInformationOversized.Count; i++)
+ {
+ SetUserListInformation setUserListInformation = setUserListInformationOversized[i];
+ setUserListInformation.Area = "특대형-" + leftAreaInformation.OverSized[i];
+ setUserListInformationFinal.Add(setUserListInformation);
+ }
+ var result = SetUserList(setUserListInformationFinal, leftAreaInformation.StartDateTime, endDate);
+
+
+ // 남은 사람 대기로
+ query = $"UPDATE ApplicantList SET ApplicantType={(int)EApplicantType.LotsOut} Where ApplicantType={(int)EApplicantType.Lots}";
+ using (var command = _sqLiteConnection.CreateCommand())
+ {
+ command.CommandText = query;
+ command.ExecuteNonQuery();
+ }
+
+ return result;
+ }
+ public static List SetUserListForApplicantWait(LeftAreaInformation leftAreaInformation, DateTime endDate)
+ {
+ List setUserListInformations = new List();
+ // 저번에 떨어진 사람들 리스트
+ var query = $"SELECT * From ViewApplicantList Where ApplicantType={(int)EApplicantType.LotsOut} And RegistrationStatus={(int)ERegistrationStatus.Wait} Order By DropDate, Date ASC ";
+ using (var command = _sqLiteConnection.CreateCommand())
+ {
+ command.CommandText = query;
+
+ using (var reader = command.ExecuteReader())
+ {
+ while (reader.Read())
+ {
+ SetUserListInformation setUserListInformation = new SetUserListInformation();
+ setUserListInformation.ApplicantNo = reader["No"].ToString();
+ setUserListInformation.UID = int.Parse(reader["UID"].ToString());
+ setUserListInformation.Date = DateTime.Parse(reader["Date"].ToString());
+ setUserListInformation.VehicleType = (EVehicleType)int.Parse(reader["VehicleType"].ToString());
+ setUserListInformations.Add(setUserListInformation);
+ }
+ }
+ }
+ query = $"SELECT * From ViewApplicantList Where ApplicantType={(int)EApplicantType.Wait} And RegistrationStatus={(int)ERegistrationStatus.Wait} Order By Date ASC";
+ using (var command = _sqLiteConnection.CreateCommand())
+ {
+ command.CommandText = query;
+
+ using (var reader = command.ExecuteReader())
+ {
+ while (reader.Read())
+ {
+ SetUserListInformation setUserListInformation = new SetUserListInformation();
+ setUserListInformation.ApplicantNo = reader["No"].ToString();
+ setUserListInformation.UID = int.Parse(reader["UID"].ToString());
+ setUserListInformation.Date = DateTime.Parse(reader["Date"].ToString());
+ setUserListInformation.VehicleType = (EVehicleType)int.Parse(reader["VehicleType"].ToString());
+ setUserListInformations.Add(setUserListInformation);
+ }
+ }
+ }
+ List setUserListInformationLarge = new List();
+ List setUserListInformationOversized = new List();
+ setUserListInformationLarge.AddRange(setUserListInformations.Where(x => x.VehicleType == EVehicleType.Large).Take(leftAreaInformation.Large.Count));
+ setUserListInformationOversized.AddRange(setUserListInformations.Where(x => x.VehicleType == EVehicleType.Oversized).Take(leftAreaInformation.OverSized.Count));
+
+ setUserListInformationLarge.Shuffle();
+ setUserListInformationOversized.Shuffle();
+ List setUserListInformationFinal = new List();
+ for (int i = 0; i < setUserListInformationLarge.Count; i++)
+ {
+ SetUserListInformation setUserListInformation = setUserListInformationLarge[i];
+ setUserListInformation.Area = "대형-" + leftAreaInformation.Large[i];
+ setUserListInformationFinal.Add(setUserListInformation);
+ }
+ for (int i = 0; i < setUserListInformationOversized.Count; i++)
+ {
+ SetUserListInformation setUserListInformation = setUserListInformationOversized[i];
+ setUserListInformation.Area = "특대형-" + leftAreaInformation.OverSized[i];
+ setUserListInformationFinal.Add(setUserListInformation);
+ }
+ var result = SetUserList(setUserListInformationFinal, leftAreaInformation.StartDateTime, endDate);
+ return result;
+ }
+
+ public static List SetUserList(List setUserListInformation, DateTime startDate, DateTime endDate)
+ {
+ List ResultSetUserListInformations = new List();
+ int lastNo = GetLastUser(startDate.Year);
+ string noPrefix = startDate.Year + "-U";
+ lastNo++;
+ for (int i = 0; i < setUserListInformation.Count; i++)
+ {
+ string query = $"INSERT INTO UserList(No, Area, ApplicantNo, ApplicantDate, UID, Date, DateStart, DateEnd, ExtensionStatus, PaymentStatus) " +
+ $"VALUES('{noPrefix + lastNo}','{setUserListInformation[i].Area}','{setUserListInformation[i].ApplicantNo}','{setUserListInformation[i].Date}',{setUserListInformation[i].UID},'{startDate.DateOnly()}','{endDate.DateOnly()}',0,{(int)EPaymentStatus.StandBy})";
using (var command = _sqLiteConnection.CreateCommand())
{
command.CommandText = query;
-
- using (var reader = command.ExecuteReader())
- {
- while (reader.Read())
- {
- var applicant = new ApplicantInformation();
- applicant.ApplicantType = reader["ApplicantType"].ToString() == "1";
- applicant.CargoVehicleNumber = reader["CargoVehicleNumber"].ToString();
- applicant.PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString();
- applicant.Name = reader["Name"].ToString();
- applicant.Phone = reader["Phone"].ToString();
- applicant.Address = reader["Address"].ToString();
- applicant.DateOfApplication = DateTime.Parse(reader["DateOfApplicant"].ToString());
-
- applicants.Add(applicant);
- }
- }
+ command.ExecuteNonQuery();
}
+ query = $"UPDATE ApplicantList SET RegistrationStatus={(int)ERegistrationStatus.Registration} Where No={setUserListInformation[i].ApplicantNo}";
+ using (var command = _sqLiteConnection.CreateCommand())
+ {
+ command.CommandText = query;
+ command.ExecuteNonQuery();
+ }
+ ResultSetUserListInformation ResultSetUserListInformation = new ResultSetUserListInformation();
+ ResultSetUserListInformation.Area = setUserListInformation[i].Area;
+ ResultSetUserListInformation.No = noPrefix + lastNo;
+ ResultSetUserListInformation.ApplicantNo = setUserListInformation[i].ApplicantNo;
+ ResultSetUserListInformations.Add(ResultSetUserListInformation);
+ lastNo++;
}
-
- return applicants;
+ return ResultSetUserListInformations;
}
-
- public static void AddUserList(List CargoVehicleNumber, DateTime start, DateTime end,
- int totalCost)
- {
- var applicants = GetApplicantList(CargoVehicleNumber);
-
- for (var i = 0; i < applicants.Count; i++)
- {
- //TODO: 사용자 User 업데이트 부분 Status 1 로 변경
- //UID? 를 가져와야 하나? 아니면 여기서 처리
- var query =
- $"INSERT INTO UserList VALUES('{applicants[i].CargoVehicleNumber}','{applicants[i].PassengerVehicleNumber}','{applicants[i].Name}','{applicants[i].Phone}','{applicants[i].Address}','{applicants[i].DateOfApplication.DateTimeDatabase()}','{start.StartDateTime()}','{end.EndDateTime()}','0','0') ";
- using (var insertCommand = _sqLiteConnection.CreateCommand())
- {
- insertCommand.CommandText = query;
- insertCommand.ExecuteNonQuery();
- }
-
- var no = _sqLiteConnection.LastInsertRowId;
- query =
- $"INSERT INTO LedgerProceeds(No, Type, Amount, Date) VALUES({no},{(int)EProceedsType.Fees},{totalCost},'{DateTime.Now.DateTimeDatabase()}')";
- using (var insertCommand = _sqLiteConnection.CreateCommand())
- {
- insertCommand.CommandText = query;
- insertCommand.ExecuteNonQuery();
- }
-
- query =
- $"UPDATE ApplicantList SET Status=1 Where CargoVehicleNumber=\"{applicants[i].CargoVehicleNumber}\"";
-
- using (var updateCommand = _sqLiteConnection.CreateCommand())
- {
- updateCommand.CommandText = query;
- updateCommand.ExecuteNonQuery();
- }
- }
- }
-
public static List GetLedgerProceeds(DateTime startDateTime, DateTime endDateTime)
{
var proceedsDatas = new List();
diff --git a/HSUCO_Cargo_Garage_Operation_Program/DevelopReadMe.txt b/HSUCO_Cargo_Garage_Operation_Program/DevelopReadMe.txt
index 34243ad..b9e7487 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/DevelopReadMe.txt
+++ b/HSUCO_Cargo_Garage_Operation_Program/DevelopReadMe.txt
@@ -4,18 +4,11 @@ ApplicantType
1 Ture = 추첨
0 False = 대기
-Status
+RegistrationStatus
0 = 대기
1 = 등록
-2 = 삭제됨
-
-UserInfo가 필요한가?
-PersonalData
-
-결재 대기 ?
-결재 전환
-이걸 UserList에서 ?
-userList Status 가 필요함
+2 = 당첨에서 떨어짐
+3 = 삭제됨
UserList Status =
0 결재 대기
diff --git a/HSUCO_Cargo_Garage_Operation_Program/Extends.cs b/HSUCO_Cargo_Garage_Operation_Program/Extends.cs
index 611984d..d63957f 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/Extends.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/Extends.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
namespace HSUCO_Cargo_Garage_Operation_Program
{
@@ -11,7 +12,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
///
public static string DateTimeDatabase(this DateTime dateTime)
{
- return dateTime.ToString("yyyy-MM-dd hh:mm:ss");
+ return dateTime.ToString("yyyy-MM-dd HH:mm:ss");
}
///
/// 시간이 00:00:00 으로 된 버전
@@ -43,7 +44,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
return $"{date.Year:D4}-{date.Month:D2}-{date.Day:D2} 23:59:59";
}
-
+
public static int BoolToInt(this bool value)
{
return value ? 1 : 0;
@@ -58,13 +59,13 @@ namespace HSUCO_Cargo_Garage_Operation_Program
progressDays.StartTotalDay = DateTime.DaysInMonth(start.Year, start.Month);
midDay = midDay.AddMonths(1);
}
- int month = 0;
+ progressDays.Month = 0;
while (true)
{
DateTime get = new DateTime(midDay.Year, midDay.Month, DateTime.DaysInMonth(midDay.Year, midDay.Month));
if (get <= end.Date)
{
- month++;
+ progressDays.Month++;
midDay = midDay.AddMonths(1);
}
@@ -83,7 +84,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
int month = 0;
while (true)
{
-
+
if (progressDate <= endDate.Date)
{
month++;
@@ -97,6 +98,19 @@ namespace HSUCO_Cargo_Garage_Operation_Program
}
return month;
}
+ public static void Shuffle(this IList list)
+ {
+ Random random = new Random();
+ int n = list.Count;
+ while (n > 1)
+ {
+ n--;
+ int k = random.Next(n + 1);
+ T Value = list[k];
+ list[k] = list[n];
+ list[n] = Value;
+ }
+ }
}
public struct ProgressDays
{
diff --git a/HSUCO_Cargo_Garage_Operation_Program/HSUCO_Cargo_Garage_Operation_Program.csproj b/HSUCO_Cargo_Garage_Operation_Program/HSUCO_Cargo_Garage_Operation_Program.csproj
index fd2ae8c..d544ff0 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/HSUCO_Cargo_Garage_Operation_Program.csproj
+++ b/HSUCO_Cargo_Garage_Operation_Program/HSUCO_Cargo_Garage_Operation_Program.csproj
@@ -86,6 +86,18 @@
+
+ Form
+
+
+ InsertResult.cs
+
+
+ Form
+
+
+ LotsScreen.cs
+
Form
@@ -128,6 +140,12 @@
SettingControl.cs
+
+ UserControl
+
+
+ Lot.cs
+
UserControl
@@ -161,6 +179,12 @@
+
+ InsertResult.cs
+
+
+ LotsScreen.cs
+
Promotion.cs
@@ -183,6 +207,9 @@
SettingControl.cs
+
+ Lot.cs
+
UserList.cs
diff --git a/HSUCO_Cargo_Garage_Operation_Program/Master.cs b/HSUCO_Cargo_Garage_Operation_Program/Master.cs
index fff5b69..81f6f27 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/Master.cs
+++ b/HSUCO_Cargo_Garage_Operation_Program/Master.cs
@@ -1,13 +1,10 @@
-using HSUCO_Cargo_Garage_Operation_Program.CustomForm;
-using System;
-using System.Collections.Generic;
-using System.Windows.Forms;
+using System;
namespace HSUCO_Cargo_Garage_Operation_Program
{
public partial class Master : MetroFramework.Forms.MetroForm
{
-
+
public Master() => InitializeComponent();
diff --git a/HSUCO_Cargo_Garage_Operation_Program/Master.resx b/HSUCO_Cargo_Garage_Operation_Program/Master.resx
index c0152c7..18ac088 100644
--- a/HSUCO_Cargo_Garage_Operation_Program/Master.resx
+++ b/HSUCO_Cargo_Garage_Operation_Program/Master.resx
@@ -120,280 +120,10 @@
- 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
+ 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
@@ -404,7 +134,277 @@
ABBtZhMAAESb2QQAANFmNgEAQLSZTQAAEG1mEwAARJvZBAAA0WY2AQBAtJlNAAAQbWYTAABEm9kEAADR
ZjYBAEC0mU0AABBtZhMAAESb2QQAANFmNgEAQLSZTQAAEG1mEwAARJvZBAAA0WY2AQBAtJlNAAAQbWYT
AABEm9kEAADRZjYBAEC0mU0AABBtZhMAAESb2QQAANFmNgEAQLSZTQAAEG1mEwAARJvZBAAA0WY2AQBA
- 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
+ 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