using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using bsmd.database; namespace CrewPasCSVTool { public partial class Form1 : Form { bsmd.database.Message selectedCrewMessage = null; bsmd.database.Message selectedPasMessage = null; public Form1() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (!DBManager.Instance.Connect(Properties.Settings.Default.ConnectionString)) { MessageBox.Show("cannot connect to SMSPLASH01!"); this.Close(); } this.comboBoxStatus.DataSource = Enum.GetValues(typeof(MessageCore.BSMDStatus)); } protected override void OnClosing(CancelEventArgs e) { base.OnClosing(e); DBManager.Instance.Disconnect(); } private void comboBoxStatus_SelectedIndexChanged(object sender, EventArgs e) { MessageCore.BSMDStatus status; Enum.TryParse(comboBoxStatus.SelectedValue.ToString(), out status); this.listBoxMessageCore.DataSource = DBManager.Instance.GetMessageCoresByStatus(status); } private void listBoxMessageCore_SelectedIndexChanged(object sender, EventArgs e) { this.selectedCrewMessage = null; this.selectedPasMessage = null; Cursor currentCursor = this.Cursor; this.Cursor = Cursors.WaitCursor; MessageCore selectedCore = this.listBoxMessageCore.SelectedValue as MessageCore; if (selectedCore != null) { List messages = DBManager.Instance.GetMessagesForCore(selectedCore); foreach (bsmd.database.Message message in messages) { if (message.MessageNotificationClass == bsmd.database.Message.NotificationClass.CREW) this.selectedCrewMessage = message; if (message.MessageNotificationClass == bsmd.database.Message.NotificationClass.PAS) this.selectedPasMessage = message; } } this.buttonCrew.Enabled = this.selectedCrewMessage != null; this.buttonPas.Enabled = this.selectedPasMessage != null; this.Cursor = currentCursor; } private void buttonCrew_Click(object sender, EventArgs e) { if (this.selectedCrewMessage != null) { using (SaveFileDialog ofd = new SaveFileDialog()) { ofd.Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*"; if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { StringBuilder sb = new StringBuilder(); foreach (CREW crew in this.selectedCrewMessage.Elements) { string dateOfBirth = ""; if(crew.CrewMemberDateOfBirth.HasValue) dateOfBirth = crew.CrewMemberDateOfBirth.Value.ToString("yyyy-MM-dd"); sb.AppendLine(string.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9}", crew.CrewMemberLastName ?? "", crew.CrewMemberFirstName ?? "", this.GetGender(crew.CrewMemberGender), crew.CrewMemberNationality ?? "", crew.CrewMemberDuty ?? "", crew.CrewMemberPlaceOfBirth ?? "", dateOfBirth, this.GetDocumentType(crew.CrewMemberIdentityDocumentType), crew.CrewMemberIdentityDocumentId ?? "", crew.CrewMemberVisaNumber ?? "")); } File.WriteAllText(ofd.FileName, sb.ToString(), Encoding.UTF8); } } } } private void buttonPas_Click(object sender, EventArgs e) { if (this.selectedPasMessage != null) { using (SaveFileDialog ofd = new SaveFileDialog()) { ofd.Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*"; if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { StringBuilder sb = new StringBuilder(); foreach (PAS pas in this.selectedPasMessage.Elements) { string dateOfBirth = ""; if(pas.PassengerDateOfBirth.HasValue) dateOfBirth = pas.PassengerDateOfBirth.Value.ToString("yyyy-MM-dd"); sb.AppendLine(string.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9};{10};{11}", pas.PassengerLastName ?? "", pas.PassengerFirstName ?? "", this.GetGender(pas.PassengerGender), pas.PassengerNationality ?? "", pas.PassengerPortOfEmbarkation ?? "", pas.PassengerPortOfDisembarkation ?? "", (pas.PassengerInTransit ?? false) ? "Y" : "N", pas.PassengerPlaceOfBirth ?? "", dateOfBirth, this.GetDocumentType(pas.PassengerIdentityDocumentType), pas.PassengerIdentityDocumentId ?? "", pas.PassengerVisaNumber ?? "")); } File.WriteAllText(ofd.FileName, sb.ToString(), Encoding.UTF8); } } } } private string GetDocumentType(byte? type) { string documentType = ""; if (type.HasValue) { switch (type.Value) { case 0: documentType = "IDENTITY_CARD"; break; case 1: documentType = "PASSPORT"; break; case 2: documentType = "MUSTER_BOOK"; break; case 3: documentType = "PICTURE_ID"; break; case 4: documentType = "RESIDENTAL_PERMIT"; break; default: documentType = "OTHER_LEGAL_IDENTITY_DOCUMENT"; break; } } return documentType; } private string GetGender(byte? gender) { string genders = ""; if (gender.HasValue) { if (gender == 0) genders = "MALE"; if (gender == 1) genders = "FEMALE"; if (gender == 2) genders = "OTHER"; } return genders; } } }