Validation rules implemented
This commit is contained in:
parent
503618a323
commit
dd2c8723b0
@ -26,10 +26,10 @@
|
||||
<value>1000</value>
|
||||
</setting>
|
||||
<setting name="LockingServerAddress" serializeAs="String">
|
||||
<value>http://192.168.2.24/LockingService/LockingService.svc</value>
|
||||
<value>http://heupferd/bsmd.LockingService/LockingService.svc</value>
|
||||
</setting>
|
||||
<setting name="ConnectionString" serializeAs="String">
|
||||
<value>Initial Catalog=nsw;Data Source=192.168.2.24\SQLEXPRESS;Uid=dfuser;pwd=dfpasswd;Persist Security Info=False;Connection Reset=false</value>
|
||||
<value>Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=E:\DATA\DB\NSW.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False</value>
|
||||
</setting>
|
||||
</ENI2.Properties.Settings>
|
||||
</applicationSettings>
|
||||
|
||||
@ -686,12 +686,15 @@ namespace ENI2
|
||||
}
|
||||
|
||||
#region 12.11.18 / 6.3.21: globale Plausi-Prüfungen
|
||||
Message crewMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.CREW);
|
||||
Message pasMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PAS);
|
||||
Message crewaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.CREW);
|
||||
Message crewdMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.CREWD);
|
||||
Message pasaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PAS);
|
||||
Message pasdMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PASD);
|
||||
Message pobaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.POBA);
|
||||
Message secMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.SEC);
|
||||
Message noanodMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.NOA_NOD);
|
||||
Message mdhMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.MDH);
|
||||
Message was_rcptMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.WAS_RCPT);
|
||||
|
||||
#region CREW / PAS Count Plausibility
|
||||
|
||||
@ -699,14 +702,14 @@ namespace ENI2
|
||||
{
|
||||
POBA poba = pobaMessage.Elements[0] as POBA;
|
||||
|
||||
if (crewMessage.Elements.Count != poba.TotalCrewMembersOnBoardUponArrival)
|
||||
if (crewaMessage.Elements.Count != poba.TotalCrewMembersOnBoardUponArrival)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "POBA crew member count different from CREW count!", null, "Crew count mismatch", null, "CREW");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
|
||||
if(pasMessage.Elements.Count != poba.TotalPassengersOnBoardUponArrival)
|
||||
if(pasaMessage.Elements.Count != poba.TotalPassengersOnBoardUponArrival)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "POBA passenger count different from PAS count!", null, "Passenger count mismatch", null, "PAS");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
@ -716,6 +719,172 @@ namespace ENI2
|
||||
|
||||
#endregion
|
||||
|
||||
#region CREW/PAS Schengen Plausibility
|
||||
|
||||
// Wir können davon ausgehen, dass bei allen Unterelementen die Flags gleich gesetzt sind. Das wird im Import und BorderPoliceDetailControl sichergestellt.
|
||||
|
||||
if(crewaMessage.Elements.Count > 0)
|
||||
{
|
||||
CREW crewaFirst = crewaMessage.Elements[0] as CREW;
|
||||
bool crewaIsSchengen = crewaFirst.NotificationSchengen ?? false;
|
||||
if (!((crewaFirst.NotificationPAX ?? false) || crewaIsSchengen)) // mindestens eins der beiden
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V181, "Wrong selection", null, "CREWA", null, "CREWA");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
|
||||
foreach(CREW crewa in crewaMessage.Elements)
|
||||
{
|
||||
if(crewaIsSchengen && !crewa.HasSchengenDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V182, "No Schengen details", null, "CREWA", crewa.Identifier, "CREWA");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
if(!crewaIsSchengen && crewa.HasSchengenDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V182, "Schengen details but checkbox not set", null, "CREWA", crewa.Identifier, "CREWA");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (crewdMessage.Elements.Count > 0)
|
||||
{
|
||||
CREWD crewdFirst = crewdMessage.Elements[0] as CREWD;
|
||||
bool crewdIsSchengen = crewdFirst.NotificationSchengen ?? false;
|
||||
if (!((crewdFirst.NotificationPAX ?? false) || crewdIsSchengen)) // mindestens eins der beiden
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V181, "Wrong selection", null, "CREWD", null, "CREWD");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
|
||||
foreach (CREWD crewd in crewdMessage.Elements)
|
||||
{
|
||||
if (crewdIsSchengen && !crewd.HasSchengenDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V182, "No Schengen details", null, "CREWD", crewd.Identifier, "CREWD");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
if (!crewdIsSchengen && crewd.HasSchengenDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V182, "Schengen details but checkbox not set", null, "CREWD", crewd.Identifier, "CREWD");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(pasaMessage.Elements.Count > 0)
|
||||
{
|
||||
PAS pasFirst = pasaMessage.Elements[0] as PAS;
|
||||
bool pasIsSchengen = pasFirst.NotificationSchengen ?? false;
|
||||
bool pasIsPAX = pasFirst.NotificationPAX ?? false;
|
||||
if (!((pasFirst.NotificationPAX ?? false) || pasIsSchengen)) // mindestens eins der beiden
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V201, "Wrong selection", null, "PASA", null, "PASA");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
|
||||
foreach (PAS pasa in pasaMessage.Elements)
|
||||
{
|
||||
if (pasIsSchengen && !pasa.HasSchengenDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V202, "No Schengen details", null, "PASA", pasa.Identifier, "PASA");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
if (!pasIsSchengen && pasa.HasSchengenDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V202, "Schengen details but checkbox not set", null, "PASA", pasa.Identifier, "PASA");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
if(pasIsPAX && !pasa.HasPAXDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V203, "No PAX details", null, "PASA", pasa.Identifier, "PASA");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
if(!pasIsPAX && pasa.HasPAXDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V203, "PAX details but checkbox not set", null, "PASA", pasa.Identifier, "PASA");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pasdMessage.Elements.Count > 0)
|
||||
{
|
||||
PASD pasdFirst = pasdMessage.Elements[0] as PASD;
|
||||
bool pasdIsSchengen = pasdFirst.NotificationSchengen ?? false;
|
||||
bool pasdIsPAX = pasdFirst.NotificationPAX ?? false;
|
||||
if (!((pasdFirst.NotificationPAX ?? false) || pasdIsSchengen)) // mindestens eins der beiden
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V201, "Wrong selection", null, "PASD", null, "PASD");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
|
||||
foreach (PASD pasd in pasdMessage.Elements)
|
||||
{
|
||||
if (pasdIsSchengen && !pasd.HasSchengenDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V202, "No Schengen details", null, "PASD", pasd.Identifier, "PASD");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
if (!pasdIsSchengen && pasd.HasSchengenDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V202, "Schengen details but checkbox not set", null, "PASD", pasd.Identifier, "PASD");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
if (pasdIsPAX && !pasd.HasPAXDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V203, "No PAX details", null, "PASD", pasd.Identifier, "PASD");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
if (!pasdIsPAX && pasd.HasPAXDetails)
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V203, "PAX details but checkbox not set", null, "PASD", pasd.Identifier, "PASD");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region WAS_RCPT double numbers
|
||||
|
||||
Dictionary<string, string> identDict = new Dictionary<string, string>();
|
||||
|
||||
foreach (WAS_RCPT was_rcpt in was_rcptMessage.Elements)
|
||||
{
|
||||
|
||||
if (identDict.ContainsKey(was_rcpt.IdentificationNumber))
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V221, "Identification number", null, "WAS_RCPT", was_rcpt.Identifier, "WAS_RCPT");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
identDict.Add(was_rcpt.IdentificationNumber, "");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Kiel Canal Timing Plausibility
|
||||
|
||||
if (!this.Core.IsTransit && (secMessage?.Elements.Count > 0) && (noanodMessage?.Elements.Count > 0))
|
||||
@ -979,9 +1148,12 @@ namespace ENI2
|
||||
}
|
||||
|
||||
private DependencyObject GetContainerForMessageGroupName(string messageGroupName)
|
||||
{
|
||||
if (messageGroupName != null)
|
||||
{
|
||||
if (controlCache.ContainsKey(messageGroupName))
|
||||
return controlCache[messageGroupName];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -112,6 +112,11 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridCrewList.DeleteRequested += DataGridCrewList_DeleteRequested;
|
||||
this.dataGridCrewList.CreateRequested += DataGridCrewList_CreateRequested;
|
||||
this.dataGridCrewList.RefreshGrid += DataGridCrewList_RefreshGrid;
|
||||
if(this._crewMessage.Elements.Count > 0)
|
||||
{
|
||||
this.checkBoxCrewNotificationSchengen.IsChecked = ((CREW)this._crewMessage.Elements[0]).NotificationSchengen;
|
||||
this.checkBoxCrewNotificationPAX.IsChecked = ((CREW)this._crewMessage.Elements[0]).NotificationPAX;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@ -133,6 +138,12 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridCrewListDeparture.CreateRequested += DataGridCrewListDeparture_CreateRequested;
|
||||
this.dataGridCrewListDeparture.RefreshGrid += DataGridCrewListDeparture_RefreshGrid;
|
||||
|
||||
if (this._crewdMessage.Elements.Count > 0)
|
||||
{
|
||||
this.checkBoxCrewNotificationSchengenDeparture.IsChecked = ((CREWD)this._crewdMessage.Elements[0]).NotificationSchengen;
|
||||
this.checkBoxCrewNotificationPAXDeparture.IsChecked = ((CREWD)this._crewdMessage.Elements[0]).NotificationPAX;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region init PASA
|
||||
@ -153,6 +164,12 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridPassengerList.CreateRequested += DataGridPassengerList_CreateRequested;
|
||||
this.dataGridPassengerList.RefreshGrid += DataGridPassengerList_RefreshGrid;
|
||||
|
||||
if (this._pasMessage.Elements.Count > 0)
|
||||
{
|
||||
this.checkBoxPasNotificationSchengen.IsChecked = ((PAS)this._pasMessage.Elements[0]).NotificationSchengen;
|
||||
this.checkBoxPasNotificationPAX.IsChecked = ((PAS)this._pasMessage.Elements[0]).NotificationPAX;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region init PASD
|
||||
@ -173,6 +190,12 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridPassengerListDeparture.CreateRequested += DataGridPassengerListDeparture_CreateRequested;
|
||||
this.dataGridPassengerListDeparture.RefreshGrid += DataGridPassengerListDeparture_RefreshGrid;
|
||||
|
||||
if (this._pasdMessage.Elements.Count > 0)
|
||||
{
|
||||
this.checkBoxPasNotificationSchengenDeparture.IsChecked = ((PASD)this._pasdMessage.Elements[0]).NotificationSchengen;
|
||||
this.checkBoxPasNotificationPAXDeparture.IsChecked = ((PASD)this._pasdMessage.Elements[0]).NotificationPAX;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
@ -114,3 +114,13 @@ GO
|
||||
INSERT INTO ViolationText(ViolationCode, ViolationText) VALUES (33, 'Value is too large')
|
||||
|
||||
GO
|
||||
|
||||
Insert into ViolationText(ViolationCode, ViolationText) values (181, 'A notification for crew has to contain at least one of the two options for PAX or Schengen.')
|
||||
Insert into ViolationText(ViolationCode, ViolationText) values (182, 'If a crew notification is for Schengen, then Schengen Details have to be provided, if a crew notification is not for Schengen, Schengen Details must not be provided.')
|
||||
Insert into ViolationText(ViolationCode, ViolationText) values (201, 'A notification for passengers has to contain at least one of the two options for PAX or Schengen.')
|
||||
Insert into ViolationText(ViolationCode, ViolationText) values (202, 'If a passenger notification is for Schengen, then Schengen Details have to be provided, if a passenger notification is not for Schengen, Schengen Details must not be provided.')
|
||||
Insert into ViolationText(ViolationCode, ViolationText) values (203, 'If a passenger notification is for PAX, then PAX Details have to be provided, if a passenger notification is not for PAX, PAX Details must not be provided.')
|
||||
Insert into ViolationText(ViolationCode, ViolationText) values (221, 'The identification number has to be unique per ship call.')
|
||||
Insert into ViolationText(ViolationCode, ViolationText) values (786, 'The provided LOCODE is not accepted by SafeSeaNet.')
|
||||
|
||||
GO
|
||||
@ -125,6 +125,17 @@ namespace bsmd.database
|
||||
[ENI2Validation]
|
||||
public bool? NotificationPAX { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Helper property for validation
|
||||
/// </summary>
|
||||
public bool HasSchengenDetails
|
||||
{
|
||||
get
|
||||
{
|
||||
return CrewMemberIdentityDocumentType.HasValue && !CrewMemberIdentityDocumentId.IsNullOrEmpty() && CrewMemberIdentityDocumentExpiryDate.HasValue;
|
||||
}
|
||||
}
|
||||
|
||||
public string Identifier { get; set; }
|
||||
|
||||
public string SublistCollectionKey { get { return "crew"; } }
|
||||
@ -277,6 +288,39 @@ namespace bsmd.database
|
||||
|
||||
cmd.CommandText = query;
|
||||
}
|
||||
|
||||
public override List<DatabaseEntity> LoadList(System.Data.IDataReader reader)
|
||||
{
|
||||
List<DatabaseEntity> result = new List<DatabaseEntity>();
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
CREWD crew = new CREWD();
|
||||
|
||||
crew.id = reader.GetGuid(0);
|
||||
if (!reader.IsDBNull(1)) crew.CrewMemberLastName = reader.GetString(1);
|
||||
if (!reader.IsDBNull(2)) crew.CrewMemberFirstName = reader.GetString(2);
|
||||
if (!reader.IsDBNull(3)) crew.CrewMemberPlaceOfBirth = reader.GetString(3);
|
||||
if (!reader.IsDBNull(4)) crew.CrewMemberDateOfBirth = reader.GetDateTime(4);
|
||||
if (!reader.IsDBNull(5)) crew.CrewMemberGender = reader.GetByte(5);
|
||||
if (!reader.IsDBNull(6)) crew.CrewMemberNationality = reader.GetString(6);
|
||||
if (!reader.IsDBNull(7)) crew.CrewMemberIdentityDocumentType = reader.GetByte(7);
|
||||
if (!reader.IsDBNull(8)) crew.CrewMemberIdentityDocumentId = reader.GetString(8);
|
||||
if (!reader.IsDBNull(9)) crew.CrewMemberVisaNumber = reader.GetString(9);
|
||||
if (!reader.IsDBNull(10)) crew.CrewMemberDuty = reader.GetString(10);
|
||||
if (!reader.IsDBNull(11)) crew.Identifier = reader.GetString(11);
|
||||
if (!reader.IsDBNull(12)) crew.IsDeparture = reader.GetBoolean(12);
|
||||
if (!reader.IsDBNull(13)) crew.CrewMemberIdentityDocumentIssuingState = reader.GetString(13);
|
||||
if (!reader.IsDBNull(14)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(14);
|
||||
if (!reader.IsDBNull(15)) crew.NotificationSchengen = reader.GetBoolean(15);
|
||||
if (!reader.IsDBNull(16)) crew.NotificationPAX = reader.GetBoolean(16);
|
||||
|
||||
result.Add(crew);
|
||||
}
|
||||
reader.Close();
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@ -144,6 +144,28 @@ namespace bsmd.database
|
||||
[MaxLength(99)]
|
||||
public string EmergencyContactNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Helper property for validation
|
||||
/// </summary>
|
||||
public bool HasSchengenDetails
|
||||
{
|
||||
get
|
||||
{
|
||||
return PassengerIdentityDocumentType.HasValue && !PassengerIdentityDocumentId.IsNullOrEmpty() &&
|
||||
PassengerIdentityDocumentExpiryDate.HasValue && !PassengerPortOfEmbarkation.IsNullOrEmpty() && !PassengerPortOfDisembarkation.IsNullOrEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Helper property for validation
|
||||
/// </summary>
|
||||
public bool HasPAXDetails
|
||||
{
|
||||
get
|
||||
{
|
||||
return !EmergencyCare.IsNullOrEmpty() && !EmergencyContactNumber.IsNullOrEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
public string Identifier { get; set; }
|
||||
|
||||
@ -332,6 +354,42 @@ namespace bsmd.database
|
||||
|
||||
cmd.CommandText = query;
|
||||
}
|
||||
|
||||
public override List<DatabaseEntity> LoadList(System.Data.IDataReader reader)
|
||||
{
|
||||
List<DatabaseEntity> result = new List<DatabaseEntity>();
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
PASD pas = new PASD();
|
||||
|
||||
pas.id = reader.GetGuid(0);
|
||||
if (!reader.IsDBNull(1)) pas.PassengerLastName = reader.GetString(1);
|
||||
if (!reader.IsDBNull(2)) pas.PassengerFirstName = reader.GetString(2);
|
||||
if (!reader.IsDBNull(3)) pas.PassengerPlaceOfBirth = reader.GetString(3);
|
||||
if (!reader.IsDBNull(4)) pas.PassengerDateOfBirth = reader.GetDateTime(4);
|
||||
if (!reader.IsDBNull(5)) pas.PassengerGender = reader.GetByte(5);
|
||||
if (!reader.IsDBNull(6)) pas.PassengerNationality = reader.GetString(6);
|
||||
if (!reader.IsDBNull(7)) pas.PassengerIdentityDocumentType = reader.GetByte(7);
|
||||
if (!reader.IsDBNull(8)) pas.PassengerIdentityDocumentId = reader.GetString(8);
|
||||
if (!reader.IsDBNull(9)) pas.PassengerVisaNumber = reader.GetString(9);
|
||||
if (!reader.IsDBNull(10)) pas.PassengerPortOfEmbarkation = reader.GetString(10);
|
||||
if (!reader.IsDBNull(11)) pas.PassengerPortOfDisembarkation = reader.GetString(11);
|
||||
if (!reader.IsDBNull(12)) pas.PassengerInTransit = reader.GetBoolean(12);
|
||||
if (!reader.IsDBNull(13)) pas.Identifier = reader.GetString(13);
|
||||
if (!reader.IsDBNull(14)) pas.IsDeparture = reader.GetBoolean(14);
|
||||
if (!reader.IsDBNull(15)) pas.PassengerIdentityDocumentIssuingState = reader.GetString(15);
|
||||
if (!reader.IsDBNull(16)) pas.PassengerIdentityDocumentExpiryDate = reader.GetDateTime(16);
|
||||
if (!reader.IsDBNull(17)) pas.NotificationSchengen = reader.GetBoolean(17);
|
||||
if (!reader.IsDBNull(18)) pas.NotificationPAX = reader.GetBoolean(18);
|
||||
if (!reader.IsDBNull(19)) pas.EmergencyCare = reader.GetString(19);
|
||||
if (!reader.IsDBNull(20)) pas.EmergencyContactNumber = reader.GetString(20);
|
||||
result.Add(pas);
|
||||
}
|
||||
reader.Close();
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@ -50,11 +50,17 @@ namespace bsmd.database
|
||||
OPTIONAL_FLAG_CODE,
|
||||
WORDOVERFLOW,
|
||||
VALUE_TOO_LARGE,
|
||||
V181 = 181,
|
||||
V182,
|
||||
E121 = 121,
|
||||
E122 = 122,
|
||||
E123 = 123,
|
||||
E124 = 124,
|
||||
E125 = 125,
|
||||
V201 = 201,
|
||||
V202,
|
||||
V203,
|
||||
V221 = 221,
|
||||
V701 = 701,
|
||||
V702 = 702,
|
||||
V703 = 703,
|
||||
@ -75,6 +81,7 @@ namespace bsmd.database
|
||||
V782 = 782,
|
||||
V783 = 783,
|
||||
V784 = 784,
|
||||
V786 = 786,
|
||||
V801 = 801,
|
||||
V802 = 802,
|
||||
V803 = 803,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user