diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.cs index 2fecd4a..3a4ee83 100644 --- a/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.cs +++ b/HSUCO_Cargo_Garage_Operation_Program/CustomForm/LotsScreen.cs @@ -16,15 +16,12 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomForm _resultSetUserLists = resultSetUserListInformation; 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; + var bounds = Screen.AllScreens[Screen.AllScreens.Length - 1].Bounds; + + this.ClientSize = new Size(bounds.Width, bounds.Height); + this.Location = new Point(bounds.Left, bounds.Top); + this.TopMost = true; int baseMargin = 5; // 내부 각테두리의 여백 사이즈 int controlWidth = 340 + 5; // Lot 컨트롤러 가로사이즈 + 여백 diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.cs index 196cf85..dd9a5da 100644 --- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.cs +++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/ApplicantList.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Data; using System.Linq; +using System.Text; using System.Windows.Forms; namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl @@ -12,14 +13,12 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl { public ApplicantList() => InitializeComponent(); - void ApplicantList_Load(object sender, EventArgs e) + private void ApplicantList_Load(object sender, EventArgs e) { metroComboBox_SearchType.SelectedIndex = 0; } - - - void DataChange() + private void DataChange() { var applicants = Database.GetApplicant(); @@ -29,19 +28,22 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl applicants = applicants.Where(x => x.CargoVehicleNumber.Contains(metroTextBox_Search.Text.Trim())).ToList(); break; + case 1: applicants = applicants.Where(x => x.PassengerVehicleNumber.Contains(metroTextBox_Search.Text.Trim())).ToList(); break; + case 2: applicants = applicants.Where(x => x.Name.Contains(metroTextBox_Search.Text.Trim())).ToList(); break; + case 3: applicants = applicants.Where(x => x.Phone.Contains(metroTextBox_Search.Text.Trim())).ToList(); break; + case 4: applicants = applicants.Where(x => x.Address.Contains(metroTextBox_Search.Text.Trim())).ToList(); break; - } var dataTable = new DataTable(); @@ -87,20 +89,16 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl dataGridView_List.Columns[2].MinimumWidth = 60; dataGridView_List.Columns[2].FillWeight = 60; */ - - } - void metroButton_Search_Click(object sender, EventArgs e) => DataChange(); + private void metroButton_Search_Click(object sender, EventArgs e) => DataChange(); - - void metroButton_Delete_Click(object sender, EventArgs e) + private void metroButton_Delete_Click(object sender, EventArgs e) { var selectCount = dataGridView_List.SelectedRows.Count; if (selectCount == 0) return; string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString(); - var message = "선태하신 화물챠랑번호 " + dataGridView_List.SelectedRows[0].Cells[5].Value.ToString() + "을 삭제 하시겠습니까?"; if (MetroMessageBox.Show(this, message, "삭제", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK) @@ -115,11 +113,10 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl { MetroMessageBox.Show(this, "삭제에 실패하였습니다.", "성공", MessageBoxButtons.OK, MessageBoxIcon.Error); } - } } - void metroButton_UpdateUser_Click(object sender, EventArgs e) + private void metroButton_UpdateUser_Click(object sender, EventArgs e) { var count = dataGridView_List.Rows.Count - 1; if (count == 0) return; @@ -137,16 +134,42 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl MetroMessageBox.Show(this, "남은 자리가 없습니다", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } - List result = Database.SetUserListForApplicant(leftAreaInformation, promotion.EndDate); - //TODO: 당첨 화면 출력 필요함 - LotsScreen lotsScreen = new LotsScreen(result); - lotsScreen.ShowDialog(); + LeftUserInformation leftUserInformation = Database.GetLeftUserLots(startDate); + if (leftUserInformation.Large + leftUserInformation.OverSized == 0) + { + MetroMessageBox.Show(this, "당첨처리 할수 있는 인원이 없습니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + // 자릿수가 0 이고 추첨하는 인원이 + bool largeBool = leftAreaInformation.Large.Count == 0 || leftUserInformation.Large == 0; + bool overSizedBool = leftAreaInformation.OverSized.Count == 0 || leftUserInformation.OverSized == 0; + StringBuilder stringBuilder; + if (largeBool && overSizedBool) + { + stringBuilder = new StringBuilder(); + stringBuilder.AppendLine("현재 당첨 가능한 사람/자리 가 없습니다."); + stringBuilder.AppendLine($"대 형 대기인원/남은자리 : {leftUserInformation.Large}/{leftAreaInformation.Large.Count}"); + stringBuilder.Append($"특대형 대기인원/남은자리 : {leftUserInformation.OverSized}/{leftAreaInformation.OverSized.Count}"); + MetroMessageBox.Show(this, stringBuilder.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + stringBuilder = new StringBuilder(); + stringBuilder.AppendLine("다음 사항을 추첨하시겠습니까?"); + stringBuilder.AppendLine($"대 형 대기인원/남은자리 : {leftUserInformation.Large}/{leftAreaInformation.Large.Count}"); + stringBuilder.Append($"특대형 대기인원/남은자리 : {leftUserInformation.OverSized}/{leftAreaInformation.OverSized.Count}"); + dialogResult = MetroMessageBox.Show(this, stringBuilder.ToString(), "Error", MessageBoxButtons.YesNo, MessageBoxIcon.Information); + if (dialogResult == DialogResult.Yes) + { + List result = Database.SetUserListForApplicant(leftAreaInformation, promotion.EndDate); - InsertResult insertResult = new InsertResult(result); - insertResult.ShowDialog(); + LotsScreen lotsScreen = new LotsScreen(result); + lotsScreen.ShowDialog(); - DataChange(); + InsertResult insertResult = new InsertResult(result); + insertResult.ShowDialog(); + DataChange(); + } } private void metroButton_ExportExcel_Click(object sender, EventArgs e) @@ -184,7 +207,6 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl { DataChange(); } - } } } \ No newline at end of file diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.cs index 7e01711..ba11920 100644 --- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.cs +++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/SettingControl.cs @@ -36,10 +36,15 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl private void metroButton_Save_Click(object sender, EventArgs e) { + bool reStart = false; int value; Settings settings = new Settings(); settings.GarageName = metroTextBox_GarageName.Text.Trim(); + if (settings.GarageName != Global.GlobalSettings.GarageName) + { + reStart = true; + } int.TryParse(metroTextBox_CargoLargeMaxCount.Text, out value); settings.CargoLargeMaxCount = value; @@ -55,7 +60,8 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl int.TryParse(metroTextBox_CargoOversizedCertificateFee.Text, out value); settings.CargoOversizedCertificateFee = value; Database.SaveSettings(settings); - + MetroMessageBox.Show(this, "중요 설정이 변경되었습니다. 프로그램을 재시작합니다.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Error); + Application.Restart(); } diff --git a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.cs b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.cs index 3c98b44..7ac0830 100644 --- a/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.cs +++ b/HSUCO_Cargo_Garage_Operation_Program/CustomUserControl/WaitingList.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Data; using System.Linq; +using System.Text; using System.Windows.Forms; namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl @@ -138,11 +139,38 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl MetroMessageBox.Show(this, "남은 자리가 없습니다", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } + LeftUserInformation leftUserInformation = Database.GetLeftUserWait(startDate); + if (leftUserInformation.Large + leftUserInformation.OverSized == 0) + { + MetroMessageBox.Show(this, "당첨처리 할수 있는 인원이 없습니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + // 자릿수가 0 이고 추첨하는 인원이 + bool largeBool = leftAreaInformation.Large.Count == 0 || leftUserInformation.Large == 0; + bool overSizedBool = leftAreaInformation.OverSized.Count == 0 || leftUserInformation.OverSized == 0; + StringBuilder stringBuilder; + if (largeBool && overSizedBool) + { + stringBuilder = new StringBuilder(); + stringBuilder.AppendLine("현재 당첨 가능한 사람/자리 가 없습니다."); + stringBuilder.AppendLine($"대 형 대기인원/남은자리 : {leftUserInformation.Large}/{leftAreaInformation.Large.Count}"); + stringBuilder.Append($"특대형 대기인원/남은자리 : {leftUserInformation.OverSized}/{leftAreaInformation.OverSized.Count}"); + MetroMessageBox.Show(this, stringBuilder.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; - List result = Database.SetUserListForApplicantWait(leftAreaInformation, promotion.EndDate); - InsertResult insertResult = new InsertResult(result); - insertResult.ShowDialog(); - DataChange(); + } + stringBuilder = new StringBuilder(); + stringBuilder.AppendLine("다음 사항을 추첨하시겠습니까?"); + stringBuilder.AppendLine($"대 형 대기인원/남은자리 : {leftUserInformation.Large}/{leftAreaInformation.Large.Count}"); + stringBuilder.Append($"특대형 대기인원/남은자리 : {leftUserInformation.OverSized}/{leftAreaInformation.OverSized.Count}"); + dialogResult = MetroMessageBox.Show(this, stringBuilder.ToString(), "Error", MessageBoxButtons.YesNo, MessageBoxIcon.Information); + if (dialogResult == DialogResult.Yes) + { + List result = Database.SetUserListForApplicantWait(leftAreaInformation, promotion.EndDate); + InsertResult insertResult = new InsertResult(result); + insertResult.ShowDialog(); + DataChange(); + } } private void metroButton_ExportExcel_Click(object sender, EventArgs e) diff --git a/HSUCO_Cargo_Garage_Operation_Program/DataModel.cs b/HSUCO_Cargo_Garage_Operation_Program/DataModel.cs index bfa4821..3a1f70b 100644 --- a/HSUCO_Cargo_Garage_Operation_Program/DataModel.cs +++ b/HSUCO_Cargo_Garage_Operation_Program/DataModel.cs @@ -142,6 +142,11 @@ namespace HSUCO_Cargo_Garage_Operation_Program public List OverSized { get; set; } } + public struct LeftUserInformation + { + public int Large { get; set; } + public int OverSized { get; set; } + } public struct SetUserListInformation { public string No { get; set; } diff --git a/HSUCO_Cargo_Garage_Operation_Program/Database.cs b/HSUCO_Cargo_Garage_Operation_Program/Database.cs index 54fcd5e..cc15493 100644 --- a/HSUCO_Cargo_Garage_Operation_Program/Database.cs +++ b/HSUCO_Cargo_Garage_Operation_Program/Database.cs @@ -774,6 +774,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program return result; } + public static List SetUserListForApplicantWait(LeftAreaInformation leftAreaInformation, DateTime endDate) { List setUserListInformations = new List(); @@ -1143,7 +1144,56 @@ namespace HSUCO_Cargo_Garage_Operation_Program } return leftAreaInformation; } + public static LeftUserInformation GetLeftUserLots(DateTime startDateTime) + { + LeftUserInformation leftUserInformation = new LeftUserInformation(); + leftUserInformation.Large = 0; + leftUserInformation.OverSized = 0; + var query = $"SELECT VehicleType , COUNT(VehicleType) as Count FROM ViewApplicantList Where ApplicantType={(int)EApplicantType.Lots} And RegistrationStatus={(int)ERegistrationStatus.Wait} Group By VehicleType"; + leftUserInformation = GetLeftUser(startDateTime, leftUserInformation, query); + return leftUserInformation; + } + + public static LeftUserInformation GetLeftUserWait(DateTime startDateTime) + { + LeftUserInformation leftUserInformation = new LeftUserInformation(); + leftUserInformation.Large = 0; + leftUserInformation.OverSized = 0; + var query = $"SELECT VehicleType , COUNT(VehicleType) as Count From ViewApplicantList Where ApplicantType={(int)EApplicantType.LotsOut} And RegistrationStatus={(int)ERegistrationStatus.Wait} Group By VehicleType"; + leftUserInformation = GetLeftUser(startDateTime, leftUserInformation, query); + query = $"SELECT VehicleType , COUNT(VehicleType) as Count From ViewApplicantList Where ApplicantType={(int)EApplicantType.Wait} And RegistrationStatus={(int)ERegistrationStatus.Wait} Group By VehicleType"; + leftUserInformation = GetLeftUser(startDateTime, leftUserInformation, query); + return leftUserInformation; + } + public static LeftUserInformation GetLeftUser(DateTime startDateTime, LeftUserInformation leftUserInformation, string query) + { + LeftUserInformation leftUser = leftUserInformation; + using (var command = _sqLiteConnection.CreateCommand()) + { + command.CommandText = query; + + using (var reader = command.ExecuteReader()) + { + while (reader.Read()) + { + int vehicleType = int.Parse(reader["VehicleType"].ToString()); + int count = int.Parse(reader["Count"].ToString()); + switch ((EVehicleType)vehicleType) + { + case EVehicleType.Large: + leftUser.Large += count; + break; + case EVehicleType.Oversized: + leftUser.OverSized += count; + break; + } + + } + } + } + return leftUser; + } public static Settings LoadSettings() { var settings = new Settings(); diff --git a/HSUCO_Cargo_Garage_Operation_Program/Master.cs b/HSUCO_Cargo_Garage_Operation_Program/Master.cs index 81f6f27..f3251cc 100644 --- a/HSUCO_Cargo_Garage_Operation_Program/Master.cs +++ b/HSUCO_Cargo_Garage_Operation_Program/Master.cs @@ -13,7 +13,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program { Global.GlobalSettings = Database.LoadSettings(); settings1.SettingReset(); - + this.Text = $"{Global.GlobalSettings.GarageName} 화물 차고지 운영프로그램 v{System.Reflection.Assembly.GetExecutingAssembly().GetName().Version}"; }