git_bsmd/CrewPasCSVTool/Form1.cs

187 lines
7.5 KiB
C#

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<MessageCore.BSMDStatus>(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<bsmd.database.Message> 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;
}
}
}