당첨창 제외 전부 완성

This commit is contained in:
2023-10-03 20:20:12 +09:00
parent 2effd39bd8
commit 1845f4aabb
30 changed files with 1707 additions and 615 deletions

View File

@@ -0,0 +1,108 @@
namespace HSUCO_Cargo_Garage_Operation_Program.CustomForm
{
partial class InsertResult
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
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;
}
}

View File

@@ -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> _resultSetUserListInformation;
public InsertResult(List<ResultSetUserListInformation> 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();
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,90 @@
namespace HSUCO_Cargo_Garage_Operation_Program.CustomForm
{
partial class LotsScreen
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
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;
}
}

View File

@@ -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();
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -49,7 +49,7 @@
// //
// metroDateTime_Refund // 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.MinimumSize = new System.Drawing.Size(0, 29);
this.metroDateTime_Refund.Name = "metroDateTime_Refund"; this.metroDateTime_Refund.Name = "metroDateTime_Refund";
this.metroDateTime_Refund.Size = new System.Drawing.Size(200, 29); this.metroDateTime_Refund.Size = new System.Drawing.Size(200, 29);
@@ -58,7 +58,7 @@
// metroButton_Refund // metroButton_Refund
// //
this.metroButton_Refund.FontSize = MetroFramework.MetroButtonSize.Tall; 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.Name = "metroButton_Refund";
this.metroButton_Refund.Size = new System.Drawing.Size(170, 50); this.metroButton_Refund.Size = new System.Drawing.Size(170, 50);
this.metroButton_Refund.TabIndex = 37; this.metroButton_Refund.TabIndex = 37;
@@ -69,7 +69,7 @@
// metroButton_Cancel // metroButton_Cancel
// //
this.metroButton_Cancel.FontSize = MetroFramework.MetroButtonSize.Tall; 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.Name = "metroButton_Cancel";
this.metroButton_Cancel.Size = new System.Drawing.Size(170, 50); this.metroButton_Cancel.Size = new System.Drawing.Size(170, 50);
this.metroButton_Cancel.TabIndex = 38; this.metroButton_Cancel.TabIndex = 38;
@@ -117,7 +117,7 @@
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 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.metroLabel5);
this.Controls.Add(this.metroLabel4); this.Controls.Add(this.metroLabel4);
this.Controls.Add(this.metroLabel_DateEnd); this.Controls.Add(this.metroLabel_DateEnd);

View File

@@ -93,7 +93,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
return; return;
} }
var applicant = new ApplicantInformation(); 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.CargoVehicleNumber = metroTextBox_CargoVehicleNumber.Text.Trim();
applicant.CargoVehicleName = metroTextBox_CargoVehicleName.Text.Trim(); applicant.CargoVehicleName = metroTextBox_CargoVehicleName.Text.Trim();
applicant.PassengerVehicleNumber = metroTextBox_PassengerVehicleNumber.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.PersonalNumber = metroTextBox_PersonalNumber.Text.Trim();
applicant.Phone = maskedTextBox_Phone.Text.Trim(); applicant.Phone = maskedTextBox_Phone.Text.Trim();
applicant.Address = metroTextBox_Address.Text.Trim(); applicant.Address = metroTextBox_Address.Text.Trim();
applicant.DateOfApplication = DateTime.Now; applicant.Date = DateTime.Now;
var resultInsert = Database.SetApplicant(applicant); var resultInsert = Database.SetApplicant(applicant);
@@ -120,7 +120,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
printFilingReceiptInformation.Address = applicant.Address; printFilingReceiptInformation.Address = applicant.Address;
printFilingReceiptInformation.CargoVehicleNumber = applicant.CargoVehicleNumber; printFilingReceiptInformation.CargoVehicleNumber = applicant.CargoVehicleNumber;
printFilingReceiptInformation.PassengerVehicleNumber = applicant.PassengerVehicleNumber; printFilingReceiptInformation.PassengerVehicleNumber = applicant.PassengerVehicleNumber;
printFilingReceiptInformation.DateReception = applicant.DateOfApplication; printFilingReceiptInformation.DateReception = applicant.Date;
PrintFilingReceipt printFilingReceipt = new PrintFilingReceipt(new List<PrintFilingReceiptInformation>() { printFilingReceiptInformation }); PrintFilingReceipt printFilingReceipt = new PrintFilingReceipt(new List<PrintFilingReceiptInformation>() { printFilingReceiptInformation });
var printPreviewDialog = new PrintPreviewDialog(); var printPreviewDialog = new PrintPreviewDialog();

View File

@@ -28,7 +28,7 @@
/// </summary> /// </summary>
private void InitializeComponent() 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.metroPanel1 = new MetroFramework.Controls.MetroPanel();
this.metroButton_UpdateUserData = new MetroFramework.Controls.MetroButton(); this.metroButton_UpdateUserData = new MetroFramework.Controls.MetroButton();
this.metroButton_ExportExcel = new MetroFramework.Controls.MetroButton(); this.metroButton_ExportExcel = new MetroFramework.Controls.MetroButton();
@@ -209,19 +209,21 @@
// //
// dataGridView_List // 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) 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.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView_List.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; this.dataGridView_List.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dataGridView_List.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells; this.dataGridView_List.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control; dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle2.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); dataGridViewCellStyle1.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText; dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dataGridView_List.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView_List.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView_List.Location = new System.Drawing.Point(20, 120); this.dataGridView_List.Location = new System.Drawing.Point(20, 120);
this.dataGridView_List.Name = "dataGridView_List"; this.dataGridView_List.Name = "dataGridView_List";

View File

@@ -71,7 +71,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
applicants[i].PassengerVehicleNumber, applicants[i].PassengerVehicleNumber,
applicants[i].PassengerVehicleName, applicants[i].PassengerVehicleName,
applicants[i].VehicleType == 0 ? "대형(4.5톤 미만)" : "특대형(4.5톤 이상)", 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) void metroButton_UpdateUser_Click(object sender, EventArgs e)
{ {
var allCount = dataGridView_List.SelectedRows.Count; var count = dataGridView_List.Rows.Count - 1;
if (allCount == 0) return; if (count == 0) return;
var CargoVehicleNumber = new List<string>(); Promotion promotion = new Promotion("추첨자 이용기간");
DialogResult dialogResult = promotion.ShowDialog();
for (int i = 0; i < dataGridView_List.SelectedRows.Count; i++) 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; return;
} }
DateTime startDate = promotion.StartDate;
var message = "선태하신 " + allCount + "건을 당첨 하시겠습니까?"; LeftAreaInformation leftAreaInformation = Database.GetLeftArea(startDate, Global.GlobalSettings.CargoLargeMaxCount, Global.GlobalSettings.CargoOversizedMaxCount);
if (leftAreaInformation.Large.Count + leftAreaInformation.OverSized.Count == 0)
if (MetroMessageBox.Show(this, message, "이용자로 변경", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{ {
//var promotion = new -Promotion(); MetroMessageBox.Show(this, "남은 자리가 없습니다", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
//if (promotion.ShowDialog() == DialogResult.OK)
//{
//Database.AddUserList(CargoVehicleNumber, promotion.StartDate, promotion.EndDate, promotion.TotalCost);
// DataChange();
//}
} }
List<ResultSetUserListInformation> 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) 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); UpdateUserInformation updateUserInformation = Database.GetUserData(EUserInformationType.ApplicantList, no);
UpdateUserData updateUserData = new UpdateUserData(updateUserInformation); UpdateUserData updateUserData = new UpdateUserData(updateUserInformation);
DialogResult dialogResult = updateUserData.ShowDialog(); DialogResult dialogResult = updateUserData.ShowDialog();
if(dialogResult ==DialogResult.OK) if (dialogResult == DialogResult.OK)
{ {
DataChange(); DataChange();
} }

View File

@@ -44,6 +44,8 @@
// //
// dataGridView_List // 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) 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.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));

View File

@@ -57,13 +57,13 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
.Add( .Add(
certificateInformation[i].IssueNumber, certificateInformation[i].IssueNumber,
certificateInformation[i].IssueDate, certificateInformation[i].IssueDate.DateTimeDatabase(),
certificateInformation[i].Name, certificateInformation[i].Name,
certificateInformation[i].PersonalNumber, certificateInformation[i].PersonalNumber,
certificateInformation[i].Address, certificateInformation[i].Address,
certificateInformation[i].CargoVehicleNumber, certificateInformation[i].CargoVehicleNumber,
certificateInformation[i].StartDate, certificateInformation[i].StartDate.ToString("yyyy-MM-dd"),
certificateInformation[i].EndDate, certificateInformation[i].EndDate.ToString("yyyy-MM-dd"),
certificateInformation[i].Amount certificateInformation[i].Amount
); );

View File

@@ -103,6 +103,8 @@
// //
// dataGridView_List // 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) 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.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));

View File

@@ -78,7 +78,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
proceedsDatas[i].Name, proceedsDatas[i].Name,
typeString, typeString,
String.Format("{0:n0}", proceedsDatas[i].Amount), String.Format("{0:n0}", proceedsDatas[i].Amount),
proceedsDatas[i].Date proceedsDatas[i].Date.DateTimeDatabase()
); );
} }

View File

@@ -0,0 +1,106 @@
namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
{
partial class Lot
{
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 사용 중인 모든 리소스를 정리합니다.
/// </summary>
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
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;
}
}

View File

@@ -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;
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -54,6 +54,7 @@
this.metroLabel20 = new MetroFramework.Controls.MetroLabel(); this.metroLabel20 = new MetroFramework.Controls.MetroLabel();
this.metroLabel21 = new MetroFramework.Controls.MetroLabel(); this.metroLabel21 = new MetroFramework.Controls.MetroLabel();
this.metroButton_init = new MetroFramework.Controls.MetroButton(); this.metroButton_init = new MetroFramework.Controls.MetroButton();
this.metroButton_Test = new MetroFramework.Controls.MetroButton();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout(); this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout(); this.groupBox3.SuspendLayout();
@@ -468,11 +469,22 @@
this.metroButton_init.UseSelectable = true; this.metroButton_init.UseSelectable = true;
this.metroButton_init.Click += new System.EventHandler(this.metroButton_init_Click); 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 // SettingControl
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White; this.BackColor = System.Drawing.Color.White;
this.Controls.Add(this.metroButton_Test);
this.Controls.Add(this.metroButton_init); this.Controls.Add(this.metroButton_init);
this.Controls.Add(this.groupBox3); this.Controls.Add(this.groupBox3);
this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox2);
@@ -482,7 +494,7 @@
this.Controls.Add(this.metroLabel9); this.Controls.Add(this.metroLabel9);
this.Controls.Add(this.metroButton_Save); this.Controls.Add(this.metroButton_Save);
this.Name = "SettingControl"; 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.Paint += new System.Windows.Forms.PaintEventHandler(this.Settings_Paint);
this.groupBox1.ResumeLayout(false); this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout(); this.groupBox1.PerformLayout();
@@ -522,5 +534,6 @@
private MetroFramework.Controls.MetroLabel metroLabel20; private MetroFramework.Controls.MetroLabel metroLabel20;
private MetroFramework.Controls.MetroLabel metroLabel21; private MetroFramework.Controls.MetroLabel metroLabel21;
private MetroFramework.Controls.MetroButton metroButton_init; private MetroFramework.Controls.MetroButton metroButton_init;
private MetroFramework.Controls.MetroButton metroButton_Test;
} }
} }

View File

@@ -1,4 +1,5 @@
using System; using HSUCO_Cargo_Garage_Operation_Program.CustomForm;
using System;
using System.Windows.Forms; using System.Windows.Forms;
namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
@@ -60,5 +61,11 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
{ {
SettingReset(); SettingReset();
} }
private void metroButton_Test_Click(object sender, EventArgs e)
{
LotsScreen lotsScreen = new LotsScreen();
lotsScreen.Show();
}
} }
} }

View File

@@ -28,14 +28,19 @@
/// </summary> /// </summary>
private void InitializeComponent() 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.groupBox1 = new System.Windows.Forms.GroupBox();
this.metroRadioButton_EndUser = new MetroFramework.Controls.MetroRadioButton(); this.metroRadioButton_EndUser = new MetroFramework.Controls.MetroRadioButton();
this.metroRadioButton_UseUser = new MetroFramework.Controls.MetroRadioButton(); this.metroRadioButton_UseUser = new MetroFramework.Controls.MetroRadioButton();
this.metroRadioButton_InspectionAll = new MetroFramework.Controls.MetroRadioButton(); this.metroRadioButton_InspectionAll = new MetroFramework.Controls.MetroRadioButton();
this.metroPanel1 = new MetroFramework.Controls.MetroPanel(); this.metroPanel1 = new MetroFramework.Controls.MetroPanel();
this.metroButton2 = new MetroFramework.Controls.MetroButton(); this.groupBox3 = new System.Windows.Forms.GroupBox();
this.metroButton1 = new MetroFramework.Controls.MetroButton(); 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_UpdateUserData = new MetroFramework.Controls.MetroButton();
this.metroButton_Certificate = new MetroFramework.Controls.MetroButton(); this.metroButton_Certificate = new MetroFramework.Controls.MetroButton();
this.metroButton_ExportExcel = new MetroFramework.Controls.MetroButton(); this.metroButton_ExportExcel = new MetroFramework.Controls.MetroButton();
@@ -49,16 +54,11 @@
this.metroComboBox_SearchType = new MetroFramework.Controls.MetroComboBox(); this.metroComboBox_SearchType = new MetroFramework.Controls.MetroComboBox();
this.dataGridView_List = new System.Windows.Forms.DataGridView(); this.dataGridView_List = new System.Windows.Forms.DataGridView();
this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); 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.groupBox1.SuspendLayout();
this.metroPanel1.SuspendLayout(); this.metroPanel1.SuspendLayout();
this.groupBox3.SuspendLayout();
this.groupBox2.SuspendLayout(); this.groupBox2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView_List)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView_List)).BeginInit();
this.groupBox3.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// groupBox1 // groupBox1
@@ -109,8 +109,8 @@
// metroPanel1 // metroPanel1
// //
this.metroPanel1.Controls.Add(this.groupBox3); this.metroPanel1.Controls.Add(this.groupBox3);
this.metroPanel1.Controls.Add(this.metroButton2); this.metroPanel1.Controls.Add(this.metroButton_DeleteStandBy);
this.metroPanel1.Controls.Add(this.metroButton1); this.metroPanel1.Controls.Add(this.metroButton_PaymentOk);
this.metroPanel1.Controls.Add(this.metroButton_UpdateUserData); this.metroPanel1.Controls.Add(this.metroButton_UpdateUserData);
this.metroPanel1.Controls.Add(this.metroButton_Certificate); this.metroPanel1.Controls.Add(this.metroButton_Certificate);
this.metroPanel1.Controls.Add(this.metroButton_ExportExcel); this.metroPanel1.Controls.Add(this.metroButton_ExportExcel);
@@ -132,27 +132,85 @@
this.metroPanel1.VerticalScrollbarHighlightOnWheel = false; this.metroPanel1.VerticalScrollbarHighlightOnWheel = false;
this.metroPanel1.VerticalScrollbarSize = 10; this.metroPanel1.VerticalScrollbarSize = 10;
// //
// metroButton2 // groupBox3
// //
this.metroButton2.Anchor = System.Windows.Forms.AnchorStyles.Right; this.groupBox3.BackColor = System.Drawing.Color.Transparent;
this.metroButton2.FontSize = MetroFramework.MetroButtonSize.Tall; this.groupBox3.Controls.Add(this.metroRadioButton_Refund);
this.metroButton2.Location = new System.Drawing.Point(776, 279); this.groupBox3.Controls.Add(this.metroRadioButton_Use);
this.metroButton2.Name = "metroButton2"; this.groupBox3.Controls.Add(this.metroRadioButton_StandBy);
this.metroButton2.Size = new System.Drawing.Size(121, 40); this.groupBox3.Controls.Add(this.metroRadioButton_PayAll);
this.metroButton2.TabIndex = 15; this.groupBox3.Location = new System.Drawing.Point(176, 20);
this.metroButton2.Text = "결재대기 삭제"; this.groupBox3.Name = "groupBox3";
this.metroButton2.UseSelectable = true; 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.metroRadioButton_Refund.AutoSize = true;
this.metroButton1.FontSize = MetroFramework.MetroButtonSize.Tall; this.metroRadioButton_Refund.Location = new System.Drawing.Point(41, 56);
this.metroButton1.Location = new System.Drawing.Point(776, 233); this.metroRadioButton_Refund.Name = "metroRadioButton_Refund";
this.metroButton1.Name = "metroButton1"; this.metroRadioButton_Refund.Size = new System.Drawing.Size(47, 15);
this.metroButton1.Size = new System.Drawing.Size(121, 40); this.metroRadioButton_Refund.TabIndex = 3;
this.metroButton1.TabIndex = 14; this.metroRadioButton_Refund.Text = "환불";
this.metroButton1.Text = "결재 확인"; this.metroRadioButton_Refund.UseSelectable = true;
this.metroButton1.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 // metroButton_UpdateUserData
// //
@@ -307,19 +365,21 @@
// //
// dataGridView_List // 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) 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.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView_List.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; this.dataGridView_List.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dataGridView_List.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells; this.dataGridView_List.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle1.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); dataGridViewCellStyle3.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3;
this.dataGridView_List.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView_List.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView_List.Location = new System.Drawing.Point(20, 120); this.dataGridView_List.Location = new System.Drawing.Point(20, 120);
this.dataGridView_List.MultiSelect = false; this.dataGridView_List.MultiSelect = false;
@@ -330,62 +390,6 @@
this.dataGridView_List.Size = new System.Drawing.Size(750, 460); this.dataGridView_List.Size = new System.Drawing.Size(750, 460);
this.dataGridView_List.TabIndex = 6; 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 // UserList
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
@@ -397,11 +401,11 @@
this.groupBox1.ResumeLayout(false); this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout(); this.groupBox1.PerformLayout();
this.metroPanel1.ResumeLayout(false); this.metroPanel1.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
this.groupBox3.PerformLayout();
this.groupBox2.ResumeLayout(false); this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout(); this.groupBox2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView_List)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView_List)).EndInit();
this.groupBox3.ResumeLayout(false);
this.groupBox3.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@@ -426,8 +430,8 @@
private MetroFramework.Controls.MetroButton metroButton_ExportExcel; private MetroFramework.Controls.MetroButton metroButton_ExportExcel;
private MetroFramework.Controls.MetroButton metroButton_Certificate; private MetroFramework.Controls.MetroButton metroButton_Certificate;
private MetroFramework.Controls.MetroButton metroButton_UpdateUserData; private MetroFramework.Controls.MetroButton metroButton_UpdateUserData;
private MetroFramework.Controls.MetroButton metroButton2; private MetroFramework.Controls.MetroButton metroButton_DeleteStandBy;
private MetroFramework.Controls.MetroButton metroButton1; private MetroFramework.Controls.MetroButton metroButton_PaymentOk;
private System.Windows.Forms.GroupBox groupBox3; private System.Windows.Forms.GroupBox groupBox3;
private MetroFramework.Controls.MetroRadioButton metroRadioButton_Use; private MetroFramework.Controls.MetroRadioButton metroRadioButton_Use;
private MetroFramework.Controls.MetroRadioButton metroRadioButton_StandBy; private MetroFramework.Controls.MetroRadioButton metroRadioButton_StandBy;

View File

@@ -4,7 +4,6 @@ using MetroFramework;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.Diagnostics.Eventing.Reader;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
@@ -29,7 +28,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
List<UserInformation> nowUserList; List<UserInformation> nowUserList;
if (metroRadioButton_UseUser.Checked) 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) else if (metroRadioButton_EndUser.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 else
@@ -40,9 +39,9 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
private List<UserInformation> PaymentType(List<UserInformation> beforUserInfromation) private List<UserInformation> PaymentType(List<UserInformation> beforUserInfromation)
{ {
List<UserInformation> userList = beforUserInfromation; List<UserInformation> 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) 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(); userList = beforUserInfromation.Where(x => x.PaymentStatus == EPaymentStatus.Refund).ToList();
} }
return userList; 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("이용종료일"); dataTable.Columns.Add("이용종료일");
dataTable.Columns.Add("결재여부");
dataTable.Columns.Add("변경사항"); dataTable.Columns.Add("변경사항");
for (var i = 0; i < nowUserList.Count; i++) for (var i = 0; i < nowUserList.Count; i++)
{ {
@@ -114,12 +114,31 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
history.Append(" "); history.Append(" ");
history.AppendLine(nowUserList[i].HistoryInformations[j].HistoryCode == EHistoryCode.Extension ? "연장" : "환불"); 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 dataTable.Rows
.Add( .Add(
nowUserList[i].No, nowUserList[i].No,
nowUserList[i].DateOfApplicant,
nowUserList[i].Date.DateTimeDatabase(),
nowUserList[i].ApplicantNo, nowUserList[i].ApplicantNo,
nowUserList[i].ApplicantDate, nowUserList[i].ApplicantDate.DateTimeDatabase(),
nowUserList[i].Name, nowUserList[i].Name,
nowUserList[i].PersonalNumber, nowUserList[i].PersonalNumber,
nowUserList[i].Phone, nowUserList[i].Phone,
@@ -129,23 +148,16 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
nowUserList[i].CargoVehicleName, nowUserList[i].CargoVehicleName,
nowUserList[i].PassengerVehicleNumber, nowUserList[i].PassengerVehicleNumber,
nowUserList[i].PassengerVehicleName, nowUserList[i].PassengerVehicleName,
nowUserList[i].DateStart, nowUserList[i].DateStart.ToString("yyyy-MM-dd"),
nowUserList[i].DateEnd, nowUserList[i].DateEnd.ToString("yyyy-MM-dd"),
payment,
history history
); );
} }
dataGridView_List.DataSource = dataTable; dataGridView_List.DataSource = dataTable;
dataGridView_List.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 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) private void metroButton_Search_Click(object sender, EventArgs e)
@@ -171,7 +183,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
} }
else 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(); string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
bool result = Database.CheckExtensionStatus(no); bool result = Database.CheckExtensionStatus(no);
if(result) if (result)
{ {
MetroMessageBox.Show(this, "이미 연장된 사용자 입니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); MetroMessageBox.Show(this, "이미 연장된 사용자 입니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return; return;
@@ -194,16 +206,16 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
EVehicleType eVehicleType = Database.GetVehicleType(no); EVehicleType eVehicleType = Database.GetVehicleType(no);
int amount = eVehicleType == EVehicleType.Large ? Global.GlobalSettings.CargoLargeFee : Global.GlobalSettings.CargoOversizedFee; int amount = eVehicleType == EVehicleType.Large ? Global.GlobalSettings.CargoLargeFee : Global.GlobalSettings.CargoOversizedFee;
string cargoNumber = dataGridView_List.SelectedRows[0].Cells[9].Value.ToString(); 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, if (MetroMessageBox.Show(this, message, "1년 연장", MessageBoxButtons.OKCancel,
MessageBoxIcon.Information) == DialogResult.OK) MessageBoxIcon.Information) == DialogResult.OK)
{ {
Database.UpdateExtended(no,amount); Database.UpdateExtended(no, amount);
DataChange(); DataChange();
} }
} }
private void metroButton_Refund_Click(object sender, EventArgs e) private void metroButton_Refund_Click(object sender, EventArgs e)
@@ -212,35 +224,41 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
if (count == 0) return; if (count == 0) return;
string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString(); string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
GetRefundInformation getRefundInformation = Database.GetRefundData(no); GetRefundInformation getRefundInformation = Database.GetRefundData(no);
if (getRefundInformation.RefundStatus) if (getRefundInformation.PaymentStatus == EPaymentStatus.Refund)
{ {
MetroMessageBox.Show(this, "이미 환불된 사용자 입니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); MetroMessageBox.Show(this, "이미 환불된 사용자 입니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return; return;
} }
Refund refund = new Refund(getRefundInformation); Refund refund = new Refund(getRefundInformation);
refund.ShowDialog(); refund.ShowDialog();
if(refund.DialogResult != DialogResult.OK) if (refund.DialogResult != DialogResult.OK)
{ {
return; return;
} }
DateTime refundDateTime = refund.RefundDateTime; DateTime refundDateTime = refund.RefundDateTime;
int totalAmount = 0; 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; refundDateTime = getRefundInformation.DateStart;
totalAmount += getRefundInformation.BaseFee; totalAmount += getRefundInformation.BaseFee;
if(getRefundInformation.ExtensionStatus) if (getRefundInformation.ExtensionStatus)
{ {
totalAmount += getRefundInformation.ExtensionFee; totalAmount += getRefundInformation.ExtensionFee;
} }
} }
else if(getRefundInformation.ExtensionStatus) else if (getRefundInformation.ExtensionStatus)
{ {
//연장일 보다 환불일이 늦는경우(연장에 부분만 일자 계산후 정산) //연장일 보다 환불일이 늦는경우(연장에 부분만 일자 계산후 정산)
if (getRefundInformation.ExtensionStart < refundDateTime) 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 totalMonth = Extends.GetProgressMonth(getRefundInformation.DateStart.Year, getRefundInformation.DateStart.Month, getRefundInformation.DateEnd.Year, getRefundInformation.DateEnd.Month);
int monthAmount = getRefundInformation.BaseFee / totalMonth; int monthAmount = getRefundInformation.BaseFee / totalMonth;
int leftAmount = progressDays.Month * monthAmount; int leftAmount = progressDays.Month * monthAmount;
if(progressDays.StartDay != 0) if (progressDays.StartDay != 0)
{ {
leftAmount += (monthAmount / progressDays.StartTotalDay) * (progressDays.StartTotalDay - progressDays.StartDay); 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); 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); bool result = Database.SetRefund(no, refundDateTime, totalAmount);
if(result) if (result)
{ {
MetroMessageBox.Show(this, "환불처리가 완료되었습니다.", "환불", MessageBoxButtons.OK, MessageBoxIcon.Information); MetroMessageBox.Show(this, "환불처리가 완료되었습니다.", "환불", MessageBoxButtons.OK, MessageBoxIcon.Information);
DataChange(); DataChange();
@@ -407,5 +425,51 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
DataChange(); 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();
}
} }
} }

View File

@@ -209,6 +209,8 @@
// //
// dataGridView_List // 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) 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.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));

View File

@@ -4,7 +4,6 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Windows.Forms; using System.Windows.Forms;
namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
@@ -13,14 +12,12 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
{ {
public WaitingList() => InitializeComponent(); public WaitingList() => InitializeComponent();
void ApplicantList_Load(object sender, EventArgs e) private void ApplicantList_Load(object sender, EventArgs e)
{ {
metroComboBox_SearchType.SelectedIndex = 0; metroComboBox_SearchType.SelectedIndex = 0;
} }
private void DataChange()
void DataChange()
{ {
var applicants = Database.GetApplicantWait(); var applicants = Database.GetApplicantWait();
switch (metroComboBox_SearchType.SelectedIndex) 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(); applicants = applicants.Where(x => x.CargoVehicleNumber.Contains(metroTextBox_Search.Text.Trim())).ToList();
break; break;
case 1: case 1:
applicants = applicants.Where(x => x.PassengerVehicleNumber.Contains(metroTextBox_Search.Text.Trim())).ToList(); applicants = applicants.Where(x => x.PassengerVehicleNumber.Contains(metroTextBox_Search.Text.Trim())).ToList();
break; break;
case 2: case 2:
applicants = applicants.Where(x => x.Name.Contains(metroTextBox_Search.Text.Trim())).ToList(); applicants = applicants.Where(x => x.Name.Contains(metroTextBox_Search.Text.Trim())).ToList();
break; break;
case 3: case 3:
applicants = applicants.Where(x => x.Phone.Contains(metroTextBox_Search.Text.Trim())).ToList(); applicants = applicants.Where(x => x.Phone.Contains(metroTextBox_Search.Text.Trim())).ToList();
break; break;
case 4: case 4:
applicants = applicants.Where(x => x.Address.Contains(metroTextBox_Search.Text.Trim())).ToList(); applicants = applicants.Where(x => x.Address.Contains(metroTextBox_Search.Text.Trim())).ToList();
break; break;
} }
var dataTable = new DataTable(); var dataTable = new DataTable();
@@ -60,10 +60,9 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
string order; string order;
int countLarge = 1; int countLarge = 1;
int countOversize = 1; int countOversized = 1;
for (int i = 0; i < applicants.Count; i++) for (int i = 0; i < applicants.Count; i++)
{ {
if (applicants[i].VehicleType == 0) if (applicants[i].VehicleType == 0)
{ {
order = $"대형-{countLarge}"; order = $"대형-{countLarge}";
@@ -71,8 +70,8 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
} }
else else
{ {
order = $"특대형-{countOversize}"; order = $"특대형-{countOversized}";
countOversize++; countOversized++;
} }
dataTable.Rows dataTable.Rows
.Add( .Add(
@@ -87,73 +86,62 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
applicants[i].PassengerVehicleNumber, applicants[i].PassengerVehicleNumber,
applicants[i].PassengerVehicleName, applicants[i].PassengerVehicleName,
applicants[i].VehicleType == 0 ? "대형(4.5톤 미만)" : "특대형(4.5톤 이상)", applicants[i].VehicleType == 0 ? "대형(4.5톤 미만)" : "특대형(4.5톤 이상)",
applicants[i].DateOfApplication applicants[i].Date.DateTimeDatabase()
); );
} }
dataGridView_List.DataSource = dataTable; dataGridView_List.DataSource = dataTable;
dataGridView_List.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 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; var selectCount = dataGridView_List.SelectedRows.Count;
if (selectCount == 0) return; if (selectCount == 0) return;
string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString(); string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
var message = "선태하신 화물챠랑번호 " + dataGridView_List.SelectedRows[0].Cells[5].Value.ToString() + "을 삭제 하시겠습니까?"; var message = "선태하신 화물챠랑번호 " + dataGridView_List.SelectedRows[0].Cells[5].Value.ToString() + "을 삭제 하시겠습니까?";
if (MetroMessageBox.Show(this, message, "삭제", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK) if (MetroMessageBox.Show(this, message, "삭제", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{ {
bool result = Database.DeleteApplicantList(no); bool result = Database.DeleteApplicantList(no);
if(result) if (result)
{ {
MetroMessageBox.Show(this, "삭제에 성공하였습니다.", "성공", MessageBoxButtons.OK, MessageBoxIcon.Information); MetroMessageBox.Show(this, "삭제에 성공하였습니다.", "성공", MessageBoxButtons.OK, MessageBoxIcon.Information);
DataChange(); DataChange();
} }
else 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; var count = dataGridView_List.Rows.Count - 1;
if (count == 0) return; if (count == 0) return;
Promotion promotion = new Promotion("대기자 이용기간"); Promotion promotion = new Promotion("대기자 이용기간");
DialogResult dialogResult = promotion.ShowDialog(); DialogResult dialogResult = promotion.ShowDialog();
if(dialogResult != DialogResult.OK) if (dialogResult != DialogResult.OK)
{ {
return; return;
} }
DateTime startDate = promotion.StartDate; DateTime startDate = promotion.StartDate;
LeftAreaInformation leftAreaInformation = Database.GetLeftArea(startDate, Global.GlobalSettings.CargoLargeMaxCount, Global.GlobalSettings.CargoOversizedMaxCount); 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; return;
} }
// 순서를 어떻게 하지?
// 1. 추첨에서 떨어진 사람 들, List<ResultSetUserListInformation> result = Database.SetUserListForApplicantWait(leftAreaInformation, promotion.EndDate);
//TODO: 업데이트 필요함 InsertResult insertResult = new InsertResult(result);
insertResult.ShowDialog();
DataChange(); DataChange();
} }

View File

@@ -6,7 +6,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public struct ApplicantInformation public struct ApplicantInformation
{ {
public string No { get; set; } // 고유번호 public string No { get; set; } // 고유번호
public bool ApplicantType { get; set; } public EApplicantType ApplicantType { get; set; }
public string CargoVehicleNumber { get; set; } public string CargoVehicleNumber { get; set; }
public string CargoVehicleName { get; set; } public string CargoVehicleName { get; set; }
public string PassengerVehicleNumber { get; set; } public string PassengerVehicleNumber { get; set; }
@@ -16,7 +16,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public string PersonalNumber { get; set; } // 생년월일 및 법인등록변호 public string PersonalNumber { get; set; } // 생년월일 및 법인등록변호
public string Phone { get; set; } public string Phone { get; set; }
public string Address { get; set; } public string Address { get; set; }
public DateTime DateOfApplication { get; set; } public DateTime Date { get; set; }
} }
public struct UserInformation public struct UserInformation
@@ -34,7 +34,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public string PersonalNumber { get; set; } //생년월일 혹은 법인번호 public string PersonalNumber { get; set; } //생년월일 혹은 법인번호
public string Phone { get; set; } // 연락처 public string Phone { get; set; } // 연락처
public string Address { get; set; } // 주소 public string Address { get; set; } // 주소
public DateTime DateOfApplicant { get; set; } // 당첨일 public DateTime Date { get; set; } // 당첨일
public DateTime DateStart { get; set; } // 시작일 public DateTime DateStart { get; set; } // 시작일
public DateTime DateEnd { get; set; } // 종료일 public DateTime DateEnd { get; set; } // 종료일
public bool ExtensionStatus { get; set; } // 연장여부 public bool ExtensionStatus { get; set; } // 연장여부
@@ -125,8 +125,8 @@ namespace HSUCO_Cargo_Garage_Operation_Program
} }
public struct GetRefundInformation public struct GetRefundInformation
{ {
public bool RefundStatus { get; set; } public EPaymentStatus PaymentStatus { get; set; }
public DateTime DateStart { get; set; } public DateTime DateStart { get; set; }
public DateTime DateEnd { get; set; } public DateTime DateEnd { get; set; }
public bool ExtensionStatus { get; set; } public bool ExtensionStatus { get; set; }
@@ -142,6 +142,28 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public List<int> OverSized { get; set; } public List<int> 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 struct Settings
{ {
public string GarageName { get; set; } public string GarageName { get; set; }
@@ -184,18 +206,26 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{ {
ApplicantList, ApplicantList,
UserList, UserList,
} }
public enum EApplicantType public enum EApplicantType
{ {
Lots, Lots, // 추첨 대기
LotsOut, LotsOut, // 추첨 아웃 -> 순번 대기
Wait Wait // 추첨
}
public enum ERegistrationStatus
{
Wait,
Registration,
Delete
} }
public enum EPaymentStatus public enum EPaymentStatus
{ {
StandBy, // 대기 StandBy, // 대기
Use, // 사용중 Use, // 사용중
Refund // 삭제 Refund, // 환불
Delete
} }
} }

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Data.SQLite; using System.Data.SQLite;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Linq;
namespace HSUCO_Cargo_Garage_Operation_Program namespace HSUCO_Cargo_Garage_Operation_Program
{ {
@@ -31,10 +32,11 @@ namespace HSUCO_Cargo_Garage_Operation_Program
""No"" TEXT NOT NULL, ""No"" TEXT NOT NULL,
""ApplicantType"" INTEGER NOT NULL, ""ApplicantType"" INTEGER NOT NULL,
""UID"" INTEGER NOT NULL, ""UID"" INTEGER NOT NULL,
""DateOfApplicant"" TEXT NOT NULL, ""Date"" TEXT NOT NULL,
""Status"" INTEGER NOT NULL, ""RegistrationStatus"" INTEGER NOT NULL,
PRIMARY KEY(""No""), ""DropDate"" TEXT,
FOREIGN KEY(""UID"") REFERENCES ""UserInformation""(""UID"") FOREIGN KEY(""UID"") REFERENCES ""UserInformation""(""UID""),
PRIMARY KEY(""No"")
); );
CREATE TABLE ""LedgerCertificate"" ( CREATE TABLE ""LedgerCertificate"" (
@@ -82,7 +84,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
""ApplicantNo"" TEXT NOT NULL, ""ApplicantNo"" TEXT NOT NULL,
""ApplicantDate"" TEXT NOT NULL, ""ApplicantDate"" TEXT NOT NULL,
""UID"" INTEGER NOT NULL, ""UID"" INTEGER NOT NULL,
""DateOfApplicant"" TEXT NOT NULL, ""Date"" TEXT NOT NULL,
""DateStart"" TEXT NOT NULL, ""DateStart"" TEXT NOT NULL,
""DateEnd"" TEXT NOT NULL, ""DateEnd"" TEXT NOT NULL,
""ExtensionStatus"" INTEGER NOT NULL, ""ExtensionStatus"" INTEGER NOT NULL,
@@ -112,8 +114,9 @@ namespace HSUCO_Cargo_Garage_Operation_Program
UI.PersonalNumber, UI.PersonalNumber,
UI.Phone, UI.Phone,
UI.Address, UI.Address,
AL.DateOfApplicant, AL.Date,
AL.Status AL.RegistrationStatus,
AL.DropDate
FROM main.ApplicantList AL INNER JOIN main.UserInformation UI ON AL.UID = UI.UID; FROM main.ApplicantList AL INNER JOIN main.UserInformation UI ON AL.UID = UI.UID;
CREATE VIEW ViewUserList AS SELECT CREATE VIEW ViewUserList AS SELECT
@@ -131,7 +134,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
UI.PersonalNumber, UI.PersonalNumber,
UI.Phone, UI.Phone,
UI.Address, UI.Address,
UL.DateOfApplicant, UL.Date,
UL.DateStart, UL.DateStart,
UL.DateEnd, UL.DateEnd,
UL.ExtensionStatus, UL.ExtensionStatus,
@@ -168,7 +171,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static bool ApplicantCheckAlready(string CargoVehicleNumber) public static bool ApplicantCheckAlready(string CargoVehicleNumber)
{ {
var count = 0; 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()); CargoVehicleNumber.Trim());
using (var command = _sqLiteConnection.CreateCommand()) using (var command = _sqLiteConnection.CreateCommand())
@@ -204,13 +207,28 @@ namespace HSUCO_Cargo_Garage_Operation_Program
return count > 0; 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) public static string SetApplicant(ApplicantInformation applicant)
{ {
int year = DateTime.Now.Year; int year = DateTime.Now.Year;
string suffix; string suffix;
EGetLastNumber eGetLastNumber; EGetLastNumber eGetLastNumber;
if (applicant.ApplicantType) if (applicant.ApplicantType == EApplicantType.Lots)
{ {
suffix = Global.SuffixApplicantLot; suffix = Global.SuffixApplicantLot;
eGetLastNumber = EGetLastNumber.ApplicantListLots; 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}');" + $"VALUES('{applicant.CargoVehicleNumber}','{applicant.CargoVehicleName}','{applicant.PassengerVehicleNumber}','{applicant.PassengerVehicleName}','{(int)applicant.VehicleType}','{applicant.Name}','{applicant.PersonalNumber}','{applicant.Phone}','{applicant.Address}');" +
$"select last_insert_rowid();"; $"select last_insert_rowid();";
int lastId = 0; int lastId = 0;
int insertResult; int insertResult;
using (var command = _sqLiteConnection.CreateCommand()) using (var command = _sqLiteConnection.CreateCommand())
@@ -237,11 +254,11 @@ namespace HSUCO_Cargo_Garage_Operation_Program
command.CommandText = query; command.CommandText = query;
lastId = int.Parse(command.ExecuteScalar().ToString()); lastId = int.Parse(command.ExecuteScalar().ToString());
} }
if(lastId < 1) if (lastId < 1)
{ {
return string.Empty; 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()) using (var command = _sqLiteConnection.CreateCommand())
{ {
command.CommandText = query; command.CommandText = query;
@@ -261,7 +278,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static List<ApplicantInformation> GetApplicant() public static List<ApplicantInformation> GetApplicant()
{ {
var applicants = new List<ApplicantInformation>(); var applicants = new List<ApplicantInformation>();
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()) using (var command = _sqLiteConnection.CreateCommand())
{ {
@@ -273,7 +290,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{ {
var applicant = new ApplicantInformation(); var applicant = new ApplicantInformation();
applicant.No = reader["No"].ToString(); 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.CargoVehicleNumber = reader["CargoVehicleNumber"].ToString();
applicant.CargoVehicleName = reader["CargoVehicleName"].ToString(); applicant.CargoVehicleName = reader["CargoVehicleName"].ToString();
applicant.PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString(); applicant.PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString();
@@ -283,7 +300,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
applicant.PersonalNumber = reader["PersonalNumber"].ToString(); applicant.PersonalNumber = reader["PersonalNumber"].ToString();
applicant.Phone = reader["Phone"].ToString(); applicant.Phone = reader["Phone"].ToString();
applicant.Address = reader["Address"].ToString(); applicant.Address = reader["Address"].ToString();
applicant.DateOfApplication = DateTime.Parse(reader["DateOfApplicant"].ToString()); applicant.Date = DateTime.Parse(reader["Date"].ToString());
applicants.Add(applicant); applicants.Add(applicant);
} }
} }
@@ -295,7 +312,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static List<ApplicantInformation> GetApplicantWait() public static List<ApplicantInformation> GetApplicantWait()
{ {
var applicants = new List<ApplicantInformation>(); var applicants = new List<ApplicantInformation>();
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()) using (var command = _sqLiteConnection.CreateCommand())
{ {
@@ -307,7 +324,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{ {
var applicant = new ApplicantInformation(); var applicant = new ApplicantInformation();
applicant.No = reader["No"].ToString(); 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.CargoVehicleNumber = reader["CargoVehicleNumber"].ToString();
applicant.CargoVehicleName = reader["CargoVehicleName"].ToString(); applicant.CargoVehicleName = reader["CargoVehicleName"].ToString();
applicant.PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString(); applicant.PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString();
@@ -317,7 +334,34 @@ namespace HSUCO_Cargo_Garage_Operation_Program
applicant.PersonalNumber = reader["PersonalNumber"].ToString(); applicant.PersonalNumber = reader["PersonalNumber"].ToString();
applicant.Phone = reader["Phone"].ToString(); applicant.Phone = reader["Phone"].ToString();
applicant.Address = reader["Address"].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); applicants.Add(applicant);
} }
@@ -327,10 +371,12 @@ namespace HSUCO_Cargo_Garage_Operation_Program
return applicants; return applicants;
} }
public static bool DeleteApplicantList(string no) 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()) using (var updateCommand = _sqLiteConnection.CreateCommand())
{ {
updateCommand.CommandText = query; updateCommand.CommandText = query;
@@ -415,7 +461,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
user.PersonalNumber = reader["PersonalNumber"].ToString(); user.PersonalNumber = reader["PersonalNumber"].ToString();
user.Phone = reader["Phone"].ToString(); user.Phone = reader["Phone"].ToString();
user.Address = reader["Address"].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.DateStart = DateTime.Parse(reader["DateStart"].ToString(), new CultureInfo("ko-KR"));
user.DateEnd = DateTime.Parse(reader["DateEnd"].ToString(), new CultureInfo("ko-KR")); user.DateEnd = DateTime.Parse(reader["DateEnd"].ToString(), new CultureInfo("ko-KR"));
user.ExtensionStatus = reader["ExtensionStatus"].ToString() == "1"; user.ExtensionStatus = reader["ExtensionStatus"].ToString() == "1";
@@ -450,12 +496,10 @@ namespace HSUCO_Cargo_Garage_Operation_Program
} }
return users; return users;
} }
public static GetPaymentBaseInformation GetPaymentBase(string no)
public static EVehicleType GetEVehicleType(string no)
{ {
EVehicleType eVehicleType = new EVehicleType(); GetPaymentBaseInformation getPaymentBaseInformation = new GetPaymentBaseInformation();
string query = $"SELECT VehicleType From UserList Where No='{no}'"; var query = $"SELECT DateStart, DateEnd, VehicleType FROM ViewUserList Where No='{no}'";
using (var command = _sqLiteConnection.CreateCommand()) using (var command = _sqLiteConnection.CreateCommand())
{ {
command.CommandText = query; command.CommandText = query;
@@ -463,13 +507,59 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{ {
while (reader.Read()) while (reader.Read())
{ {
int result = int.Parse(reader["VehicleType"].ToString()); DateTime start = DateTime.Parse(reader["DateStart"].ToString(), new CultureInfo("ko-KR"));
eVehicleType = (EVehicleType)result; 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();
}
} }
/// <summary> /// <summary>
@@ -550,7 +640,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static GetRefundInformation GetRefundData(string no) public static GetRefundInformation GetRefundData(string no)
{ {
GetRefundInformation getRefundInformation = new GetRefundInformation(); 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()) using (var command = _sqLiteConnection.CreateCommand())
{ {
command.CommandText = query; command.CommandText = query;
@@ -558,7 +648,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{ {
while (reader.Read()) 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.DateStart = DateTime.Parse(reader["DateStart"].ToString());
getRefundInformation.DateEnd = DateTime.Parse(reader["DateEnd"].ToString()); getRefundInformation.DateEnd = DateTime.Parse(reader["DateEnd"].ToString());
getRefundInformation.ExtensionStatus = reader["ExtensionStatus"].ToString() == "1"; 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) 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()) using (var command = _sqLiteConnection.CreateCommand())
{ {
command.CommandText = query; command.CommandText = query;
@@ -630,77 +720,155 @@ namespace HSUCO_Cargo_Garage_Operation_Program
return true; return true;
} }
public static List<ApplicantInformation> GetApplicantList(List<string> CargoVehicleNumber) public static List<ResultSetUserListInformation> SetUserListForApplicant(LeftAreaInformation leftAreaInformation, DateTime endDate)
{ {
var applicants = new List<ApplicantInformation>(); List<SetUserListInformation> setUserListInformations = new List<SetUserListInformation>();
var query = $"SELECT * From ViewApplicantList Where ApplicantType={(int)EApplicantType.Lots} And RegistrationStatus={(int)ERegistrationStatus.Wait}";
for (var i = 0; i < CargoVehicleNumber.Count; i++) 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<SetUserListInformation> setUserListInformationLarge = new List<SetUserListInformation>();
List<SetUserListInformation> setUserListInformationOversized = new List<SetUserListInformation>();
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<SetUserListInformation> setUserListInformationFinal = new List<SetUserListInformation>();
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<ResultSetUserListInformation> SetUserListForApplicantWait(LeftAreaInformation leftAreaInformation, DateTime endDate)
{
List<SetUserListInformation> setUserListInformations = new List<SetUserListInformation>();
// 저번에 떨어진 사람들 리스트
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<SetUserListInformation> setUserListInformationLarge = new List<SetUserListInformation>();
List<SetUserListInformation> setUserListInformationOversized = new List<SetUserListInformation>();
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<SetUserListInformation> setUserListInformationFinal = new List<SetUserListInformation>();
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<ResultSetUserListInformation> SetUserList(List<SetUserListInformation> setUserListInformation, DateTime startDate, DateTime endDate)
{
List<ResultSetUserListInformation> ResultSetUserListInformations = new List<ResultSetUserListInformation>();
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()) using (var command = _sqLiteConnection.CreateCommand())
{ {
command.CommandText = query; command.CommandText = query;
command.ExecuteNonQuery();
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);
}
}
} }
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 ResultSetUserListInformations;
return applicants;
} }
public static void AddUserList(List<string> 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<ProceedsData> GetLedgerProceeds(DateTime startDateTime, DateTime endDateTime) public static List<ProceedsData> GetLedgerProceeds(DateTime startDateTime, DateTime endDateTime)
{ {
var proceedsDatas = new List<ProceedsData>(); var proceedsDatas = new List<ProceedsData>();

View File

@@ -4,18 +4,11 @@ ApplicantType
1 Ture = 추첨 1 Ture = 추첨
0 False = 대기 0 False = 대기
Status RegistrationStatus
0 = 대기 0 = 대기
1 = 등록 1 = 등록
2 = 삭제됨 2 = 당첨에서 떨어짐
3 = 삭제됨
UserInfo가 필요한가?
PersonalData
결재 대기 ?
결재 전환
이걸 UserList에서 ?
userList Status 가 필요함
UserList Status = UserList Status =
0 결재 대기 0 결재 대기

View File

@@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
namespace HSUCO_Cargo_Garage_Operation_Program namespace HSUCO_Cargo_Garage_Operation_Program
{ {
@@ -11,7 +12,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
/// <returns></returns> /// <returns></returns>
public static string DateTimeDatabase(this DateTime dateTime) 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");
} }
/// <summary> /// <summary>
/// 시간이 00:00:00 으로 된 버전 /// 시간이 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"; return $"{date.Year:D4}-{date.Month:D2}-{date.Day:D2} 23:59:59";
} }
public static int BoolToInt(this bool value) public static int BoolToInt(this bool value)
{ {
return value ? 1 : 0; return value ? 1 : 0;
@@ -58,13 +59,13 @@ namespace HSUCO_Cargo_Garage_Operation_Program
progressDays.StartTotalDay = DateTime.DaysInMonth(start.Year, start.Month); progressDays.StartTotalDay = DateTime.DaysInMonth(start.Year, start.Month);
midDay = midDay.AddMonths(1); midDay = midDay.AddMonths(1);
} }
int month = 0; progressDays.Month = 0;
while (true) while (true)
{ {
DateTime get = new DateTime(midDay.Year, midDay.Month, DateTime.DaysInMonth(midDay.Year, midDay.Month)); DateTime get = new DateTime(midDay.Year, midDay.Month, DateTime.DaysInMonth(midDay.Year, midDay.Month));
if (get <= end.Date) if (get <= end.Date)
{ {
month++; progressDays.Month++;
midDay = midDay.AddMonths(1); midDay = midDay.AddMonths(1);
} }
@@ -83,7 +84,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
int month = 0; int month = 0;
while (true) while (true)
{ {
if (progressDate <= endDate.Date) if (progressDate <= endDate.Date)
{ {
month++; month++;
@@ -97,6 +98,19 @@ namespace HSUCO_Cargo_Garage_Operation_Program
} }
return month; return month;
} }
public static void Shuffle<T>(this IList<T> 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 public struct ProgressDays
{ {

View File

@@ -86,6 +86,18 @@
<Reference Include="WindowsBase" /> <Reference Include="WindowsBase" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="CustomForm\InsertResult.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="CustomForm\InsertResult.Designer.cs">
<DependentUpon>InsertResult.cs</DependentUpon>
</Compile>
<Compile Include="CustomForm\LotsScreen.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="CustomForm\LotsScreen.Designer.cs">
<DependentUpon>LotsScreen.cs</DependentUpon>
</Compile>
<Compile Include="CustomForm\Promotion.cs"> <Compile Include="CustomForm\Promotion.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@@ -128,6 +140,12 @@
<Compile Include="CustomUserControl\SettingControl.Designer.cs"> <Compile Include="CustomUserControl\SettingControl.Designer.cs">
<DependentUpon>SettingControl.cs</DependentUpon> <DependentUpon>SettingControl.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="CustomUserControl\Lot.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="CustomUserControl\Lot.Designer.cs">
<DependentUpon>Lot.cs</DependentUpon>
</Compile>
<Compile Include="CustomUserControl\UserList.cs"> <Compile Include="CustomUserControl\UserList.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
@@ -161,6 +179,12 @@
<Compile Include="PrintCertificate.cs" /> <Compile Include="PrintCertificate.cs" />
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="CustomForm\InsertResult.resx">
<DependentUpon>InsertResult.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="CustomForm\LotsScreen.resx">
<DependentUpon>LotsScreen.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="CustomForm\Promotion.resx"> <EmbeddedResource Include="CustomForm\Promotion.resx">
<DependentUpon>Promotion.cs</DependentUpon> <DependentUpon>Promotion.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@@ -183,6 +207,9 @@
<EmbeddedResource Include="CustomUserControl\SettingControl.resx"> <EmbeddedResource Include="CustomUserControl\SettingControl.resx">
<DependentUpon>SettingControl.cs</DependentUpon> <DependentUpon>SettingControl.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="CustomUserControl\Lot.resx">
<DependentUpon>Lot.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="CustomUserControl\UserList.resx"> <EmbeddedResource Include="CustomUserControl\UserList.resx">
<DependentUpon>UserList.cs</DependentUpon> <DependentUpon>UserList.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>

View File

@@ -1,13 +1,10 @@
using HSUCO_Cargo_Garage_Operation_Program.CustomForm; using System;
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace HSUCO_Cargo_Garage_Operation_Program namespace HSUCO_Cargo_Garage_Operation_Program
{ {
public partial class Master : MetroFramework.Forms.MetroForm public partial class Master : MetroFramework.Forms.MetroForm
{ {
public Master() => InitializeComponent(); public Master() => InitializeComponent();

View File

@@ -120,280 +120,10 @@
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
@@ -404,7 +134,277 @@
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
</value> </value>
</data> </data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">