2023-09-20 새벽까지 작업물 백업

This commit is contained in:
2023-09-20 01:32:46 +09:00
parent 9902d984b5
commit 05ee9c79a5
8 changed files with 698 additions and 263 deletions

View File

@@ -94,7 +94,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
string issueNumber = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
CertificateData certificateData = Database.GetCertificate(issueNumber);
var print = new PrintCertificate(new List<CertificateData>() { certificateData });
var print = new PrintCertificate(new List<CertificateData>() { certificateData }, Global.GlobalSettings.GarageName);

View File

@@ -28,12 +28,13 @@
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.metroRadioButton_EndUser = new MetroFramework.Controls.MetroRadioButton();
this.metroRadioButton_UseUser = new MetroFramework.Controls.MetroRadioButton();
this.metroRadioButton_InspectionAll = new MetroFramework.Controls.MetroRadioButton();
this.metroPanel1 = new MetroFramework.Controls.MetroPanel();
this.metroButton1 = new MetroFramework.Controls.MetroButton();
this.metroButton_Certificate = new MetroFramework.Controls.MetroButton();
this.metroButton_ExportExcel = new MetroFramework.Controls.MetroButton();
this.metroButton_Refund = new MetroFramework.Controls.MetroButton();
@@ -46,7 +47,6 @@
this.metroComboBox_SearchType = new MetroFramework.Controls.MetroComboBox();
this.dataGridView_List = new System.Windows.Forms.DataGridView();
this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
this.metroButton1 = new MetroFramework.Controls.MetroButton();
this.groupBox1.SuspendLayout();
this.metroPanel1.SuspendLayout();
this.groupBox2.SuspendLayout();
@@ -121,6 +121,17 @@
this.metroPanel1.VerticalScrollbarHighlightOnWheel = false;
this.metroPanel1.VerticalScrollbarSize = 10;
//
// metroButton1
//
this.metroButton1.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.metroButton1.FontSize = MetroFramework.MetroButtonSize.Tall;
this.metroButton1.Location = new System.Drawing.Point(626, 256);
this.metroButton1.Name = "metroButton1";
this.metroButton1.Size = new System.Drawing.Size(121, 40);
this.metroButton1.TabIndex = 11;
this.metroButton1.Text = "수정";
this.metroButton1.UseSelectable = true;
//
// metroButton_Certificate
//
this.metroButton_Certificate.Anchor = System.Windows.Forms.AnchorStyles.Right;
@@ -266,15 +277,15 @@
| 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.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle1.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dataGridView_List.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView_List.Location = new System.Drawing.Point(20, 120);
this.dataGridView_List.MultiSelect = false;
@@ -285,17 +296,6 @@
this.dataGridView_List.Size = new System.Drawing.Size(600, 330);
this.dataGridView_List.TabIndex = 6;
//
// metroButton1
//
this.metroButton1.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.metroButton1.FontSize = MetroFramework.MetroButtonSize.Tall;
this.metroButton1.Location = new System.Drawing.Point(626, 256);
this.metroButton1.Name = "metroButton1";
this.metroButton1.Size = new System.Drawing.Size(121, 40);
this.metroButton1.TabIndex = 11;
this.metroButton1.Text = "수정";
this.metroButton1.UseSelectable = true;
//
// UserList
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);

View File

@@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.Data;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
@@ -21,15 +22,15 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
metroComboBox_SearchType.SelectedIndex = 0;
}
private List<User> UserType()
private List<UserInformation> UserType()
{
var userList = Database.GetUserList();
List<User> nowUserList;
List<UserInformation> nowUserList;
if (metroRadioButton_UseUser.Checked)
nowUserList = userList.Where(x => x.DateEnd >= DateTime.Now && !x.RefundCheck).ToList();
nowUserList = userList.Where(x => x.DateEnd >= DateTime.Now && !x.RefundStatus).ToList();
else if (metroRadioButton_EndUser.Checked)
nowUserList = userList.Where(x => x.DateEnd <= DateTime.Now || x.RefundCheck).ToList();
nowUserList = userList.Where(x => x.DateEnd <= DateTime.Now || x.RefundStatus).ToList();
else
nowUserList = userList;
@@ -63,34 +64,52 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
}
var dataTable = new DataTable();
dataTable.Columns.Add("No");
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("연락처");
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("이용종료일");
dataTable.Columns.Add("연장여부");
dataTable.Columns.Add("환불령부");
dataTable.Columns.Add("변경사항");
for (var i = 0; i < nowUserList.Count; i++)
{
StringBuilder history = new StringBuilder();
for (int j = 0; j < nowUserList[i].HistoryInformations.Count; j++)
{
history.Append(nowUserList[i].HistoryInformations[j].HistoryDate.DateTimeDatabase());
history.Append(" ");
history.AppendLine(nowUserList[i].HistoryInformations[j].HistoryCode == EHistoryCode.Extension ? "연장" : "환불");
}
dataTable.Rows
.Add(
nowUserList[i].No,
nowUserList[i].CargoVehicleNumber,
nowUserList[i].PassengerVehicleNumber,
nowUserList[i].DateOfApplicant,
nowUserList[i].ApplicantNo,
nowUserList[i].ApplicantDate,
nowUserList[i].Name,
nowUserList[i].PersonalNumber,
nowUserList[i].Phone,
nowUserList[i].Address,
nowUserList[i].DateOfApplicant,
nowUserList[i].Area,
nowUserList[i].CargoVehicleNumber,
nowUserList[i].CargoVehicleName,
nowUserList[i].PassengerVehicleNumber,
nowUserList[i].PassengerVehicleName,
nowUserList[i].DateStart,
nowUserList[i].DateEnd,
nowUserList[i].Extended ? "Y" : "N",
nowUserList[i].RefundCheck ? "Y" : "N"
);
history
);
}
dataGridView_List.DataSource = dataTable;
dataGridView_List.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView_List.Columns[0].MinimumWidth = 20;
@@ -100,6 +119,9 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
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)
@@ -164,7 +186,6 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
private void metroButton_Certificate_Click(object sender, EventArgs e)
{
// TODO: 증명서 인쇄 데이터
DateTime nowDateTime = DateTime.Now;
var count = dataGridView_List.SelectedRows.Count;
if (count == 0)
@@ -172,8 +193,6 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
MetroMessageBox.Show(this, "선택된 이용자가 없습니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
var result = MetroMessageBox.Show(this, "발급 하시겠습니까?", "증명서 발급", MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (result == DialogResult.No) return;
@@ -181,45 +200,49 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
// 사용자 정보 가져와야함
int code = int.Parse(dataGridView_List.SelectedRows[0].Cells[0].Value.ToString());
CertificateData certificateData = new CertificateData();
certificateData.CargoVehicleNumber =
dataGridView_List.SelectedRows[0].Cells[1].Value.ToString();
//certificateData.PassengerVehicleNumber = dataGridView_List.SelectedRows[0].Cells[2].Value.ToString();
CertificateInformation certificateInformation = new CertificateInformation();
certificateInformation.Name = dataGridView_List.SelectedRows[0].Cells[4].Value.ToString();
certificateInformation.PersonalNumber = dataGridView_List.SelectedRows[0].Cells[5].Value.ToString();
certificateInformation.Address = dataGridView_List.SelectedRows[0].Cells[7].Value.ToString();
certificateInformation.CargoVehicleNumber = dataGridView_List.SelectedRows[0].Cells[10].Value.ToString();
//certificateInformation.Amount = dataGridView_List.SelectedRows[0].Cells[7].Value.ToString();
certificateInformation.Area = dataGridView_List.SelectedRows[0].Cells[8].Value.ToString();
certificateInformation.StartDate =
DateTime.Parse(dataGridView_List.SelectedRows[0].Cells[14].Value.ToString());
certificateInformation.EndDate = DateTime.Parse(dataGridView_List.SelectedRows[0].Cells[15].Value.ToString());
certificateInformation.IssueDate = nowDateTime;
certificateData.Name = dataGridView_List.SelectedRows[0].Cells[3].Value.ToString();
certificateData.StartDate =
DateTime.Parse(dataGridView_List.SelectedRows[0].Cells[7].Value.ToString());
certificateData.EndDate = DateTime.Parse(dataGridView_List.SelectedRows[0].Cells[8].Value.ToString());
certificateData.IssueDate = nowDateTime;
int lastNo = Database.GetLastCertificate(nowDateTime.Year);
lastNo++;
certificateData.IssueNumber = nowDateTime.Year.ToString() + "-" + lastNo.ToString("D4");
certificateInformation.IssueNumber = nowDateTime.Year.ToString() + "-" + lastNo.ToString();
Certificate certificate = new Certificate();
certificate.No = int.Parse(dataGridView_List.SelectedRows[0].Cells[0].Value.ToString());
certificate.IssueNumber = certificateData.IssueNumber;
certificate.IssueDate = certificateData.IssueDate;
certificate.StartDate = certificateData.StartDate;
certificate.EndDate = certificateData.EndDate;
bool dbResult = Database.SetCertificate(certificate);
SetCertificateInformation setCertificateInformation = new SetCertificateInformation();
setCertificateInformation.No = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
setCertificateInformation.UserNo = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
setCertificateInformation.IssueDate = certificateInformation.IssueDate;
setCertificateInformation.StartDate = certificateInformation.StartDate;
setCertificateInformation.EndDate = certificateInformation.EndDate;
//bool dbResult = Database.SetCertificate(setCertificateInformation);
// 요금 상계
SetProceedsInfo setProceedsInfo = new SetProceedsInfo();
setProceedsInfo.No = certificate.No;
setProceedsInfo.Date = nowDateTime;
setProceedsInfo.Type = ProceedsType.Certificate;
//SetProceedsInfo setProceedsInfo = new SetProceedsInfo();
//setProceedsInfo.No = certificate.No;
//setProceedsInfo.Date = nowDateTime;
//setProceedsInfo.Type = ProceedsType.Certificate;
// 요금 상계 부분
// setProceedsInfo.Amount = Global.GlobalSettings.CertificateFee;
dbResult = Database.SetProceeds(setProceedsInfo);
//dbResult = Database.SetProceeds(setProceedsInfo);
var print = new PrintCertificate(new List<CertificateData>() { certificateData });
var print = new PrintCertificate(new List<CertificateInformation>() { certificateInformation }, Global.GlobalSettings.GarageName);
var printDocument = new PrintDocument();
printDocument.DocumentName = "차고지 이용 증명서";

View File

@@ -1,10 +1,11 @@
using System;
using System.Collections.Generic;
namespace HSUCO_Cargo_Garage_Operation_Program
{
public struct ApplicantInformation
{
public string No { get; set; }
public string No { get; set; } // 고유번호
public bool ApplicantType { get; set; }
public string CargoVehicleNumber { get; set; }
public string CargoVehicleName { get; set; }
@@ -17,29 +18,44 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public string Address { get; set; }
public DateTime DateOfApplication { get; set; }
}
public struct ResultApplicantInsertInformation
{
public bool Result { get; set; }
public string No { get; set; }
public int WaitingOrder { get; set; }
}
public struct User
public struct UserInformation
{
public int No;
public string CargoVehicleNumber { get; set; }
public string CargoVehicleName { get; set; }
public string PassengerVehicleNumber { get; set; }
public string PassengerVehicleName { get; set; }
public EVehicleType VehicleType { get; set; }
public string Name { get; set; }
public string PersonalNumber { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
public DateTime DateOfApplicant { get; set; }
public DateTime DateStart { get; set; }
public DateTime DateEnd { get; set; }
public bool Extended { get; set; }
public bool RefundCheck { get; set; }
public string No { get; set; } // 고유번호
public string Area { get; set; } // 주차구역
public string ApplicantNo { get; set; } // 접수시번호
public DateTime ApplicantDate { get; set; } // 접수일자
public string CargoVehicleNumber { get; set; } // 화물차량번호
public string CargoVehicleName { get; set; } // 화물차종
public string PassengerVehicleNumber { get; set; } // 승용차량번호
public string PassengerVehicleName { get; set; } // 승용차종
public EVehicleType VehicleType { get; set; } // 차종 구분 4.5톤 이상 미만
public string Name { get; set; } // 성명
public string PersonalNumber { get; set; } //생년월일 혹은 법인번호
public string Phone { get; set; } // 연락처
public string Address { get; set; } // 주소
public DateTime DateOfApplicant { get; set; } // 당첨일
public DateTime DateStart { get; set; } // 시작일
public DateTime DateEnd { get; set; } // 종료일
public bool ExtensionStatus { get; set; } // 연장여부
public DateTime ExtensionStart { get; set; } // 연장시 시작일
public bool RefundStatus { get; set; } // 환불여부
public List<HistoryInformation> HistoryInformations { get; set; } // 과거내역정보
}
public struct HistoryInformation
{
public EHistoryCode HistoryCode { get; set; }
public DateTime HistoryDate { get; set; }
public int HistoryAmount { get; set; }
}
public struct Extended
@@ -60,36 +76,37 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public struct SetProceedsInfo
{
public int No { get; set; }
public string No { get; set; }
public ProceedsType Type { get; set; }
public int Amount { get; set; }
public DateTime Date { get; set; }
}
public struct Certificate
public struct SetCertificateInformation
{
public int No { get; set; }
public string No { get; set; }
public string UserNo { get; set; }
public string IssueNumber { get; set; }
public DateTime IssueDate { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public int Amount { get; set; }
}
public struct CertificateData
public struct CertificateInformation // 인쇄용
{
public string Name { get; set; }
public string PersonalNumber { get; set; }
public string Address { get; set; }
public string CargoVehicleNumber { get; set; }
public string Amount { get; set; }
public string AreaSize { get; set; }
public string Area { get; set; }
public string IssueNumber { get; set; }
public DateTime IssueDate { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
/// <summary>
/// 인쇄용
/// </summary>
@@ -129,4 +146,18 @@ namespace HSUCO_Cargo_Garage_Operation_Program
Large,
Oversized
}
public enum EGetLastNumber
{
ApplicantListLots,
ApplicantListWait,
UserList,
LedgerCertificate,
}
public enum EHistoryCode
{
Extension,
Refund
}
}

View File

@@ -1,8 +1,10 @@
using System;
using HSUCO_Cargo_Garage_Operation_Program.CustomUserControl;
using System;
using System.Collections.Generic;
using System.Data.SQLite;
using System.Globalization;
using System.IO;
using System.Windows.Controls;
using System.Windows.Forms;
namespace HSUCO_Cargo_Garage_Operation_Program
{
@@ -28,8 +30,8 @@ namespace HSUCO_Cargo_Garage_Operation_Program
var createKeyTable = @"
CREATE TABLE ""ApplicantList"" (
""ApplicantType"" INTEGER NOT NULL,
""No"" TEXT NOT NULL,
""ApplicantType"" INTEGER NOT NULL,
""CargoVehicleNumber"" TEXT NOT NULL,
""CargoVehicleName"" TEXT NOT NULL,
""PassengerVehicleNumber"" TEXT NOT NULL,
@@ -43,7 +45,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
PRIMARY KEY(""No"")
);
CREATE TABLE ""DeleteList"" (
CREATE TABLE ""ApplicantListDelete"" (
""No"" TEXT NOT NULL,
""ApplicantType"" INTEGER NOT NULL,
""CargoVehicleNumber"" TEXT NOT NULL,
@@ -63,26 +65,22 @@ namespace HSUCO_Cargo_Garage_Operation_Program
);
CREATE TABLE ""LedgerCertificate"" (
""No"" INTEGER NOT NULL,
""IssueNumber"" TEXT NOT NULL,
""No"" TEXT NOT NULL UNIQUE,
""UserNo"" TEXT NOT NULL,
""IssueDate"" TEXT NOT NULL,
""StartDate"" TEXT NOT NULL,
""EndDate"" TEXT NOT NULL
""EndDate"" TEXT NOT NULL,
""Amount"" INTEGER NOT NULL,
FOREIGN KEY(""UserNo"") REFERENCES ""UserList"",
PRIMARY KEY(""No"")
);
CREATE TABLE ""LedgerProceeds"" (
""No"" INTEGER,
""Type"" INTEGER,
""Amount"" INTEGER,
""Date"" TEXT
);
CREATE TABLE ""RefundList"" (
""No"" INTEGER NOT NULL UNIQUE,
""UserNo"" INTEGER NOT NULL,
""RefundDate"" TEXT NOT NULL,
""RefundAmount"" INTEGER NOT NULL
""UserNo"" TEXT NOT NULL,
""Type"" INTEGER NOT NULL,
""Amount"" INTEGER NOT NULL,
""Date"" TEXT NOT NULL,
FOREIGN KEY(""UserNo"") REFERENCES ""UserList""(""No"")
);
CREATE TABLE ""Settings"" (
@@ -92,8 +90,10 @@ namespace HSUCO_Cargo_Garage_Operation_Program
);
CREATE TABLE ""UserList"" (
""No"" INTEGER NOT NULL UNIQUE,
""Area"" TEXT,
""No"" TEXT NOT NULL UNIQUE,
""Area"" TEXT NOT NULL,
""ApplicantNo"" TEXT NOT NULL,
""ApplicantDate"" TEXT NOT NULL,
""CargoVehicleNumber"" TEXT NOT NULL,
""CargoVehicleName"" TEXT NOT NULL,
""PassengerVehicleNumber"" TEXT NOT NULL,
@@ -106,10 +106,18 @@ namespace HSUCO_Cargo_Garage_Operation_Program
""DateOfApplicant"" TEXT NOT NULL,
""DateStart"" TEXT NOT NULL,
""DateEnd"" TEXT NOT NULL,
""Extended"" INTEGER NOT NULL,
""ExtendedStart"" TEXT,
""RefundCheck"" INTEGER NOT NULL,
PRIMARY KEY(""No"" AUTOINCREMENT)
""ExtensionStatus"" INTEGER NOT NULL,
""ExtensionStart"" TEXT,
""RefundStatus"" INTEGER NOT NULL,
PRIMARY KEY(""No"")
);
CREATE TABLE ""UserListHistory"" (
""UserNo"" TEXT NOT NULL,
""HistoryCode"" INTEGER NOT NULL,
""HistoryDate"" TEXT NOT NULL,
""HistoryAmount"" INTEGER NOT NULL,
FOREIGN KEY(""UserNo"") REFERENCES ""UserList""(""No"")
);";
using (var command = _sqLiteConnection.CreateCommand())
@@ -179,7 +187,6 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static ResultApplicantInsertInformation SetApplicant(ApplicantInformation applicant)
{
string year = DateTime.Now.Year.ToString();
string suffix = applicant.ApplicantType ? Global.SuffixApplicantLot : Global.SuffixApplicantWait;
int lastNo = GetLastApplicant(year, suffix);
@@ -216,7 +223,6 @@ namespace HSUCO_Cargo_Garage_Operation_Program
}
if (insertResult > 0)
{
return new ResultApplicantInsertInformation { Result = true, No = no, WaitingOrder = waitOrder };
}
else
@@ -251,7 +257,6 @@ namespace HSUCO_Cargo_Garage_Operation_Program
applicant.Phone = reader["Phone"].ToString();
applicant.Address = reader["Address"].ToString();
applicant.DateOfApplication = DateTime.Parse(reader["DateOfApplicant"].ToString());
applicants.Add(applicant);
}
}
@@ -287,7 +292,6 @@ namespace HSUCO_Cargo_Garage_Operation_Program
applicant.Address = reader["Address"].ToString();
applicant.DateOfApplication = DateTime.Parse(reader["DateOfApplicant"].ToString());
applicants.Add(applicant);
}
}
@@ -296,10 +300,10 @@ namespace HSUCO_Cargo_Garage_Operation_Program
return applicants;
}
public static List<User> GetUserList()
public static List<UserInformation> GetUserList()
{
var userList = new List<User>();
const string query = "SELECT * From UserList";
var users = new List<UserInformation>();
string query = "SELECT * From UserList";
using (var command = _sqLiteConnection.CreateCommand())
{
@@ -309,29 +313,55 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{
while (reader.Read())
{
var user = new User
var user = new UserInformation();
user.No = (reader["No"].ToString());
user.Area = reader["Area"].ToString();
user.ApplicantNo = reader["ApplicantNo"].ToString();
user.ApplicantDate = DateTime.Parse(reader["ApplicantDate"].ToString(), new CultureInfo("ko-KR"));
user.CargoVehicleNumber = reader["CargoVehicleNumber"].ToString();
user.CargoVehicleName = reader["CargoVehicleName"].ToString();
user.PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString();
user.PassengerVehicleName = reader["PassengerVehicleName"].ToString();
user.Name = reader["Name"].ToString();
user.PersonalNumber = reader["PersonalNumber"].ToString();
user.Phone = reader["Phone"].ToString();
user.Address = reader["Address"].ToString();
user.DateOfApplicant = DateTime.Parse(reader["DateOfApplicant"].ToString(), new CultureInfo("ko-KR"));
user.DateStart = DateTime.Parse(reader["DateStart"].ToString(), new CultureInfo("ko-KR"));
user.DateEnd = DateTime.Parse(reader["DateEnd"].ToString(), new CultureInfo("ko-KR"));
user.ExtensionStatus = reader["ExtensionStatus"].ToString() == "1";
user.ExtensionStart = reader["ExtensionStatus"].ToString() == "1" ? DateTime.Parse(reader["ExtensionStart"].ToString(), new CultureInfo("ko-KR")) : DateTime.MinValue;
user.RefundStatus = reader["RefundStatus"].ToString() == "1";
user.HistoryInformations = new List<HistoryInformation>();
users.Add(user);
}
}
}
for (int i = 0; i < users.Count; i++)
{
No = int.Parse(reader["No"].ToString()),
CargoVehicleNumber = reader["CargoVehicleNumber"].ToString(),
PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString(),
Name = reader["Name"].ToString(),
Phone = reader["Phone"].ToString(),
Address = reader["Address"].ToString(),
DateOfApplicant = DateTime.Parse(reader["DateOfApplicant"].ToString()),
DateStart = DateTime.Parse(reader["DateStart"].ToString()),
DateEnd = DateTime.Parse(reader["DateEnd"].ToString()),
Extended = reader["Extended"].ToString() == "1",
RefundCheck = reader["RefundCheck"].ToString() == "1"
query = $"SELECT * From UserListHistory Where UserNo='{users[i].No}' Order By HistoryCode,HistoryDate ASC";
using (var command = _sqLiteConnection.CreateCommand())
{
command.CommandText = query;
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
HistoryInformation historyInformation = new HistoryInformation
{
HistoryCode = (EHistoryCode)int.Parse(reader["HistoryCode"].ToString()),
HistoryDate = DateTime.Parse(reader["HistoryDate"].ToString(), new CultureInfo("ko-KR")),
HistoryAmount = int.Parse(reader["HistoryAmount"].ToString())
};
userList.Add(user);
users[i].HistoryInformations.Add(historyInformation);
}
}
}
return userList;
}
return users;
}
public static void UpdateExtended(List<Extended> extendeds)
{
@@ -390,7 +420,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
for (var i = 0; i < applicants.Count; i++)
{
var query =
$"INSERT INTO UserList (CargoVehicleNumber,PassengerVehicleNumber,Name,Phone,Address,DateOfApplicant,DateStart,DateEnd,Extended,RefundCheck) 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') ";
$"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;
@@ -473,9 +503,15 @@ namespace HSUCO_Cargo_Garage_Operation_Program
return proceedsDatas;
}
public static List<CertificateData> GetLedgerCertificate(DateTime startDateTime, DateTime endDateTime)
/// <summary>
/// 증명서 발급 대장 조회용
/// </summary>
/// <param name="startDateTime"></param>
/// <param name="endDateTime"></param>
/// <returns></returns>
public static List<CertificateInformation> GetLedgerCertificate(DateTime startDateTime, DateTime endDateTime)
{
var certificateDatas = new List<CertificateData>();
var certificateDatas = new List<CertificateInformation>();
var query =
$"SELECT UserList.Name, UserList.PersonalNumber, UserList.Address, UserList.CargoVehicleNumber, LedgerCertificate.IssueNumber, LedgerCertificate.IssueDate, LedgerCertificate.StartDate, LedgerCertificate.EndDate From LedgerCertificate INNER JOIN UserList ON LedgerCertificate.No = UserList.No Where LedgerCertificate.IssueDate >='{startDateTime.StartDateTime()}' And LedgerCertificate.IssueDate <='{endDateTime.EndDateTime()}'";
@@ -487,7 +523,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{
while (reader.Read())
{
var certificateData = new CertificateData();
var certificateData = new CertificateInformation();
certificateData.Name = reader["Name"].ToString();
certificateData.PersonalNumber = reader["PersonalNumber"].ToString();
certificateData.Address = reader["Address"].ToString();
@@ -504,10 +540,14 @@ namespace HSUCO_Cargo_Garage_Operation_Program
return certificateDatas;
}
public static CertificateData GetCertificate(string issueNumber)
/// <summary>
/// 발급 번호로 발급데이터 조회
/// </summary>
/// <param name="issueNumber"></param>
/// <returns></returns>
public static CertificateInformation GetCertificate(string issueNumber)
{
var certificateData = new CertificateData();
CertificateInformation certificateInformation = new CertificateInformation();
var query = $"SELECT UserList.CargoVehicleNumber, UserList.PassengerVehicleNumber, UserList.Name, LedgerCertificate.IssueNumber, LedgerCertificate.IssueDate, LedgerCertificate.StartDate, LedgerCertificate.EndDate From LedgerCertificate INNER JOIN UserList ON LedgerCertificate.No = UserList.No Where IssueNumber='{issueNumber}'";
using (var command = _sqLiteConnection.CreateCommand())
{
@@ -517,45 +557,62 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{
while (reader.Read())
{
certificateData.CargoVehicleNumber = reader["CargoVehicleNumber"].ToString();
certificateInformation.CargoVehicleNumber = reader["CargoVehicleNumber"].ToString();
//certificateData.PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString();
certificateData.Name = reader["Name"].ToString();
certificateData.IssueNumber = reader["IssueNumber"].ToString();
certificateData.IssueDate = DateTime.Parse(reader["IssueDate"].ToString());
certificateData.StartDate = DateTime.Parse(reader["StartDate"].ToString());
certificateData.EndDate = DateTime.Parse(reader["EndDate"].ToString());
certificateInformation.Name = reader["Name"].ToString();
certificateInformation.IssueNumber = reader["IssueNumber"].ToString();
certificateInformation.IssueDate = DateTime.Parse(reader["IssueDate"].ToString());
certificateInformation.StartDate = DateTime.Parse(reader["StartDate"].ToString());
certificateInformation.EndDate = DateTime.Parse(reader["EndDate"].ToString());
}
}
}
return certificateData;
return certificateInformation;
}
}
public static int GetLastApplicant(string year, string suffix)
public static int GetLastApplicantLots(int year)
{
var query = $"SELECT No From ApplicantList Where No Like '{year}-{suffix}%' Order By No DESC LIMIT 1";
int lastNo = 0;
using (var command = _sqLiteConnection.CreateCommand())
{
command.CommandText = query;
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var no = reader[0].ToString();
no = no.Substring(7, no.Length - 7);
lastNo = int.Parse(no);
return GetLastNo(EGetLastNumber.ApplicantListLots, year);
}
}
}
return lastNo;
public static int GetLastApplicantWait(int year)
{
return GetLastNo(EGetLastNumber.ApplicantListWait, year);
}
public static int GetLastCertificate(int year)
{
var certificateDatas = new List<CertificateData>();
var query =
$"SELECT IssueNumber FROM LedgerCertificate Where IssueNumber Like '{year}%' Order By IssueNumber DESC LIMIT 1";
return GetLastNo(EGetLastNumber.LedgerCertificate, year);
}
public static int GetLastUser(int year)
{
return GetLastNo(EGetLastNumber.UserList, year);
}
public static int GetLastNo(EGetLastNumber eGetLastNumber, int year)
{
string tableName = string.Empty;
string suffix = string.Empty;
switch (eGetLastNumber)
{
case EGetLastNumber.ApplicantListLots:
tableName = "ApplicantList";
suffix = "L";
break;
case EGetLastNumber.ApplicantListWait:
tableName = "ApplicantList";
suffix = "W";
break;
case EGetLastNumber.UserList:
tableName = "UserList";
suffix = "U";
break;
case EGetLastNumber.LedgerCertificate:
tableName = "LedgerCertificate";
suffix = "C";
break;
}
var query = $"SELECT No FROM {tableName} Where IssueNumber Like '{year}-{suffix}%' Order By No DESC LIMIT 1";
var lastNo = 0;
using (var command = _sqLiteConnection.CreateCommand())
{
@@ -566,15 +623,13 @@ namespace HSUCO_Cargo_Garage_Operation_Program
while (reader.Read())
{
var issueNumber = reader["IssueNumber"].ToString();
issueNumber = issueNumber.Substring(5, issueNumber.Length - 5);
issueNumber = issueNumber.Substring(6, issueNumber.Length - 6);
lastNo = int.Parse(issueNumber);
}
}
}
return lastNo;
}
public static bool SetCertificate(Certificate certificate)
{
var query =
@@ -623,6 +678,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
case "GarageName":
settings.GarageName = value;
break;
case "CargoLargeMaxCount":
int.TryParse(value, out intValue);
settings.CargoLargeMaxCount = intValue;

View File

@@ -33,19 +33,21 @@
this.tabPage1 = new System.Windows.Forms.TabPage();
this.metroTabControl_Applicant = new MetroFramework.Controls.MetroTabControl();
this.tabPage5 = new System.Windows.Forms.TabPage();
this.applicant1 = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.ApplicantControl();
this.tabPage6 = new System.Windows.Forms.TabPage();
this.applicantList1 = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.ApplicantList();
this.tabPage7 = new System.Windows.Forms.TabPage();
this.waitingList1 = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.WaitingList();
this.tabPage8 = new System.Windows.Forms.TabPage();
this.userList1 = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.UserList();
this.tabPage9 = new System.Windows.Forms.TabPage();
this.tabPage10 = new System.Windows.Forms.TabPage();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.settings1 = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.SettingControl();
this.Main = new System.Windows.Forms.TabPage();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.applicant1 = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.ApplicantControl();
this.applicantList1 = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.ApplicantList();
this.waitingList1 = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.WaitingList();
this.userList1 = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.UserList();
this.listProceeds = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.ListProceeds();
this.listCertificate1 = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.ListCertificate();
this.settings1 = new HSUCO_Cargo_Garage_Operation_Program.CustomUserControl.SettingControl();
this.metroTabControl_Main.SuspendLayout();
this.tabPage1.SuspendLayout();
this.metroTabControl_Applicant.SuspendLayout();
@@ -56,10 +58,13 @@
this.tabPage9.SuspendLayout();
this.tabPage10.SuspendLayout();
this.tabPage2.SuspendLayout();
this.Main.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// metroTabControl_Main
//
this.metroTabControl_Main.Controls.Add(this.Main);
this.metroTabControl_Main.Controls.Add(this.tabPage1);
this.metroTabControl_Main.Controls.Add(this.tabPage2);
this.metroTabControl_Main.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -105,16 +110,6 @@
this.tabPage5.TabIndex = 0;
this.tabPage5.Text = "신규 접수";
//
// applicant1
//
this.applicant1.BackColor = System.Drawing.Color.White;
this.applicant1.Dock = System.Windows.Forms.DockStyle.Fill;
this.applicant1.Location = new System.Drawing.Point(0, 0);
this.applicant1.Margin = new System.Windows.Forms.Padding(0);
this.applicant1.Name = "applicant1";
this.applicant1.Size = new System.Drawing.Size(968, 604);
this.applicant1.TabIndex = 1;
//
// tabPage6
//
this.tabPage6.Controls.Add(this.applicantList1);
@@ -124,14 +119,6 @@
this.tabPage6.TabIndex = 1;
this.tabPage6.Text = "신청자 리스트";
//
// applicantList1
//
this.applicantList1.Dock = System.Windows.Forms.DockStyle.Fill;
this.applicantList1.Location = new System.Drawing.Point(0, 0);
this.applicantList1.Name = "applicantList1";
this.applicantList1.Size = new System.Drawing.Size(968, 604);
this.applicantList1.TabIndex = 0;
//
// tabPage7
//
this.tabPage7.Controls.Add(this.waitingList1);
@@ -141,14 +128,6 @@
this.tabPage7.TabIndex = 2;
this.tabPage7.Text = "대기자 리스트";
//
// waitingList1
//
this.waitingList1.Dock = System.Windows.Forms.DockStyle.Fill;
this.waitingList1.Location = new System.Drawing.Point(0, 0);
this.waitingList1.Name = "waitingList1";
this.waitingList1.Size = new System.Drawing.Size(968, 604);
this.waitingList1.TabIndex = 0;
//
// tabPage8
//
this.tabPage8.Controls.Add(this.userList1);
@@ -158,14 +137,6 @@
this.tabPage8.TabIndex = 3;
this.tabPage8.Text = "이용자 리스트";
//
// userList1
//
this.userList1.Dock = System.Windows.Forms.DockStyle.Fill;
this.userList1.Location = new System.Drawing.Point(0, 0);
this.userList1.Name = "userList1";
this.userList1.Size = new System.Drawing.Size(968, 604);
this.userList1.TabIndex = 0;
//
// tabPage9
//
this.tabPage9.Controls.Add(this.listProceeds);
@@ -193,17 +164,65 @@
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "설정";
//
// settings1
// Main
//
this.settings1.BackColor = System.Drawing.Color.White;
this.settings1.Dock = System.Windows.Forms.DockStyle.Fill;
this.settings1.Location = new System.Drawing.Point(0, 0);
this.settings1.Name = "settings1";
this.settings1.Size = new System.Drawing.Size(976, 646);
this.settings1.TabIndex = 0;
this.Main.BackColor = System.Drawing.Color.White;
this.Main.Controls.Add(this.pictureBox1);
this.Main.Location = new System.Drawing.Point(4, 38);
this.Main.Name = "Main";
this.Main.Size = new System.Drawing.Size(976, 646);
this.Main.TabIndex = 2;
this.Main.Text = "메인";
//
// pictureBox1
//
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.InitialImage = null;
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(976, 646);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// applicant1
//
this.applicant1.BackColor = System.Drawing.Color.White;
this.applicant1.Dock = System.Windows.Forms.DockStyle.Fill;
this.applicant1.Location = new System.Drawing.Point(0, 0);
this.applicant1.Margin = new System.Windows.Forms.Padding(0);
this.applicant1.Name = "applicant1";
this.applicant1.Size = new System.Drawing.Size(968, 604);
this.applicant1.TabIndex = 1;
//
// applicantList1
//
this.applicantList1.Dock = System.Windows.Forms.DockStyle.Fill;
this.applicantList1.Location = new System.Drawing.Point(0, 0);
this.applicantList1.Name = "applicantList1";
this.applicantList1.Size = new System.Drawing.Size(968, 604);
this.applicantList1.TabIndex = 0;
//
// waitingList1
//
this.waitingList1.Dock = System.Windows.Forms.DockStyle.Fill;
this.waitingList1.Location = new System.Drawing.Point(0, 0);
this.waitingList1.Name = "waitingList1";
this.waitingList1.Size = new System.Drawing.Size(968, 604);
this.waitingList1.TabIndex = 0;
//
// userList1
//
this.userList1.Dock = System.Windows.Forms.DockStyle.Fill;
this.userList1.Location = new System.Drawing.Point(0, 0);
this.userList1.Name = "userList1";
this.userList1.Size = new System.Drawing.Size(968, 604);
this.userList1.TabIndex = 0;
//
// listProceeds
//
this.listProceeds.BackColor = System.Drawing.Color.White;
this.listProceeds.Dock = System.Windows.Forms.DockStyle.Fill;
this.listProceeds.Location = new System.Drawing.Point(0, 0);
this.listProceeds.Name = "listProceeds";
@@ -212,12 +231,22 @@
//
// listCertificate1
//
this.listCertificate1.BackColor = System.Drawing.Color.White;
this.listCertificate1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listCertificate1.Location = new System.Drawing.Point(0, 0);
this.listCertificate1.Name = "listCertificate1";
this.listCertificate1.Size = new System.Drawing.Size(968, 604);
this.listCertificate1.TabIndex = 0;
//
// settings1
//
this.settings1.BackColor = System.Drawing.Color.White;
this.settings1.Dock = System.Windows.Forms.DockStyle.Fill;
this.settings1.Location = new System.Drawing.Point(0, 0);
this.settings1.Name = "settings1";
this.settings1.Size = new System.Drawing.Size(976, 646);
this.settings1.TabIndex = 0;
//
// Master
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
@@ -238,6 +267,8 @@
this.tabPage9.ResumeLayout(false);
this.tabPage10.ResumeLayout(false);
this.tabPage2.ResumeLayout(false);
this.Main.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
}
@@ -261,6 +292,8 @@
private CustomUserControl.SettingControl settings1;
private CustomUserControl.ListProceeds listProceeds;
private CustomUserControl.ListCertificate listCertificate1;
private System.Windows.Forms.TabPage Main;
private System.Windows.Forms.PictureBox pictureBox1;
}
}

View File

@@ -118,6 +118,295 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<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">
<value>
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
</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAAAAAAAEAIACFLAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAFv

View File

@@ -2,18 +2,21 @@
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Printing;
using System.Web;
using Font = System.Drawing.Font;
namespace HSUCO_Cargo_Garage_Operation_Program
{
internal class PrintCertificate
{
private readonly List<CertificateData> _certificateDatas;
private readonly List<CertificateInformation> _certificateInformation;
private readonly string _garageName;
private int _count;
public PrintDocument printDocument;
public PrintCertificate(List<CertificateData> certificateDatas)
public PrintCertificate(List<CertificateInformation> certificateDatas, string garageName )
{
_certificateDatas = certificateDatas;
_garageName = garageName;
_count = 0;
printDocument = new PrintDocument();
printDocument.DocumentName = "차고지 이용 증명서";
@@ -34,15 +37,15 @@ namespace HSUCO_Cargo_Garage_Operation_Program
e.Graphics.DrawString($"■ 성  명 : {_certificateDatas[_count].Name}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 250);
e.Graphics.DrawString($"■ 생년월일 : {string.Empty}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 300);
e.Graphics.DrawString($"■ 주  소 : {string.Empty}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 350);
e.Graphics.DrawString($"■ 생년월일 : {_certificateDatas[_count].PersonalNumber}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 300);
e.Graphics.DrawString($"■ 주  소 : {_certificateDatas[_count].Address}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 350);
e.Graphics.DrawString($"■ 차량번호 : {_certificateDatas[_count].CargoVehicleNumber}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 400);
e.Graphics.DrawString($"■ 이용요금 : {string.Empty}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 450);
e.Graphics.DrawString($"■ 이용면적 : {string.Empty}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 500);
e.Graphics.DrawString($"■ 이용요금 : {_certificateDatas[_count].Amount}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 450);
e.Graphics.DrawString($"■ 이용면적 : {_certificateDatas[_count].AreaSize}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 500);
e.Graphics.DrawString($"■ 이용기한 : {_certificateDatas[_count].StartDate.ToString("yyyy-MM-dd")} ~ {_certificateDatas[_count].EndDate.ToString("yyyy-MM-dd")}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 550);
e.Graphics.DrawString($"■ 차 고 지 : {string.Empty}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 600);
e.Graphics.DrawString($"■ 차 고 지 : {_garageName}", new Font("맑은 고딕", 12), Brushes.Black, e.MarginBounds.Left + 50, e.MarginBounds.Top + 600);
CenterTextWriter($"위 차량에 대하여 {string.Empty} 화물자동차 공영차고지 이용을 증명합니다.", new Font("맑은 고딕", 12, FontStyle.Bold), e.Graphics, totalWidth, e.MarginBounds.Top + 700);
CenterTextWriter($"위 차량에 대하여 {_garageName} 화물자동차 공영차고지 이용을 증명합니다.", new Font("맑은 고딕", 12, FontStyle.Bold), e.Graphics, totalWidth, e.MarginBounds.Top + 700);
CenterTextWriter($"{_certificateDatas[_count].IssueDate.ToString("yyyy년 MM월 dd일")}", new Font("맑은 고딕", 15), e.Graphics, totalWidth, e.MarginBounds.Top + 800);
CenterTextWriter("화성도시공사 사장", new Font("맑은 고딕", 20, FontStyle.Bold), e.Graphics, totalWidth, e.MarginBounds.Top + 900);
_count++;