187 lines
7.5 KiB
C#
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;
|
|
}
|
|
|
|
|
|
}
|
|
}
|