Validation rules implemented
This commit is contained in:
parent
503618a323
commit
dd2c8723b0
@ -26,11 +26,11 @@
|
|||||||
<value>1000</value>
|
<value>1000</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="LockingServerAddress" serializeAs="String">
|
<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>
|
||||||
<setting name="ConnectionString" serializeAs="String">
|
<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>
|
</setting>
|
||||||
</ENI2.Properties.Settings>
|
</ENI2.Properties.Settings>
|
||||||
</applicationSettings>
|
</applicationSettings>
|
||||||
<userSettings>
|
<userSettings>
|
||||||
|
|||||||
@ -686,12 +686,15 @@ namespace ENI2
|
|||||||
}
|
}
|
||||||
|
|
||||||
#region 12.11.18 / 6.3.21: globale Plausi-Prüfungen
|
#region 12.11.18 / 6.3.21: globale Plausi-Prüfungen
|
||||||
Message crewMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.CREW);
|
Message crewaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.CREW);
|
||||||
Message pasMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PAS);
|
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 pobaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.POBA);
|
||||||
Message secMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.SEC);
|
Message secMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.SEC);
|
||||||
Message noanodMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.NOA_NOD);
|
Message noanodMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.NOA_NOD);
|
||||||
Message mdhMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.MDH);
|
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
|
#region CREW / PAS Count Plausibility
|
||||||
|
|
||||||
@ -699,14 +702,14 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
POBA poba = pobaMessage.Elements[0] as POBA;
|
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");
|
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;
|
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||||
vViolations.Add(mv);
|
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");
|
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "POBA passenger count different from PAS count!", null, "Passenger count mismatch", null, "PAS");
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||||
@ -716,9 +719,175 @@ namespace ENI2
|
|||||||
|
|
||||||
#endregion
|
#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
|
#region Kiel Canal Timing Plausibility
|
||||||
|
|
||||||
if(!this.Core.IsTransit && (secMessage?.Elements.Count > 0) && (noanodMessage?.Elements.Count > 0))
|
if (!this.Core.IsTransit && (secMessage?.Elements.Count > 0) && (noanodMessage?.Elements.Count > 0))
|
||||||
{
|
{
|
||||||
SEC sec = secMessage.Elements[0] as SEC;
|
SEC sec = secMessage.Elements[0] as SEC;
|
||||||
NOA_NOD noa_nod = noanodMessage.Elements[0] as NOA_NOD;
|
NOA_NOD noa_nod = noanodMessage.Elements[0] as NOA_NOD;
|
||||||
@ -980,8 +1149,11 @@ namespace ENI2
|
|||||||
|
|
||||||
private DependencyObject GetContainerForMessageGroupName(string messageGroupName)
|
private DependencyObject GetContainerForMessageGroupName(string messageGroupName)
|
||||||
{
|
{
|
||||||
if (controlCache.ContainsKey(messageGroupName))
|
if (messageGroupName != null)
|
||||||
return controlCache[messageGroupName];
|
{
|
||||||
|
if (controlCache.ContainsKey(messageGroupName))
|
||||||
|
return controlCache[messageGroupName];
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -112,6 +112,11 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridCrewList.DeleteRequested += DataGridCrewList_DeleteRequested;
|
this.dataGridCrewList.DeleteRequested += DataGridCrewList_DeleteRequested;
|
||||||
this.dataGridCrewList.CreateRequested += DataGridCrewList_CreateRequested;
|
this.dataGridCrewList.CreateRequested += DataGridCrewList_CreateRequested;
|
||||||
this.dataGridCrewList.RefreshGrid += DataGridCrewList_RefreshGrid;
|
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
|
#endregion
|
||||||
|
|
||||||
@ -133,6 +138,12 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridCrewListDeparture.CreateRequested += DataGridCrewListDeparture_CreateRequested;
|
this.dataGridCrewListDeparture.CreateRequested += DataGridCrewListDeparture_CreateRequested;
|
||||||
this.dataGridCrewListDeparture.RefreshGrid += DataGridCrewListDeparture_RefreshGrid;
|
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
|
#endregion
|
||||||
|
|
||||||
#region init PASA
|
#region init PASA
|
||||||
@ -153,6 +164,12 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridPassengerList.CreateRequested += DataGridPassengerList_CreateRequested;
|
this.dataGridPassengerList.CreateRequested += DataGridPassengerList_CreateRequested;
|
||||||
this.dataGridPassengerList.RefreshGrid += DataGridPassengerList_RefreshGrid;
|
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
|
#endregion
|
||||||
|
|
||||||
#region init PASD
|
#region init PASD
|
||||||
@ -173,6 +190,12 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridPassengerListDeparture.CreateRequested += DataGridPassengerListDeparture_CreateRequested;
|
this.dataGridPassengerListDeparture.CreateRequested += DataGridPassengerListDeparture_CreateRequested;
|
||||||
this.dataGridPassengerListDeparture.RefreshGrid += DataGridPassengerListDeparture_RefreshGrid;
|
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
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -114,3 +114,13 @@ GO
|
|||||||
INSERT INTO ViolationText(ViolationCode, ViolationText) VALUES (33, 'Value is too large')
|
INSERT INTO ViolationText(ViolationCode, ViolationText) VALUES (33, 'Value is too large')
|
||||||
|
|
||||||
GO
|
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]
|
[ENI2Validation]
|
||||||
public bool? NotificationPAX { get; set; }
|
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 Identifier { get; set; }
|
||||||
|
|
||||||
public string SublistCollectionKey { get { return "crew"; } }
|
public string SublistCollectionKey { get { return "crew"; } }
|
||||||
@ -277,6 +288,39 @@ namespace bsmd.database
|
|||||||
|
|
||||||
cmd.CommandText = query;
|
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
|
#endregion
|
||||||
|
|||||||
@ -144,6 +144,28 @@ namespace bsmd.database
|
|||||||
[MaxLength(99)]
|
[MaxLength(99)]
|
||||||
public string EmergencyContactNumber { get; set; }
|
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; }
|
public string Identifier { get; set; }
|
||||||
|
|
||||||
@ -332,6 +354,42 @@ namespace bsmd.database
|
|||||||
|
|
||||||
cmd.CommandText = query;
|
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
|
#endregion
|
||||||
|
|||||||
@ -50,11 +50,17 @@ namespace bsmd.database
|
|||||||
OPTIONAL_FLAG_CODE,
|
OPTIONAL_FLAG_CODE,
|
||||||
WORDOVERFLOW,
|
WORDOVERFLOW,
|
||||||
VALUE_TOO_LARGE,
|
VALUE_TOO_LARGE,
|
||||||
|
V181 = 181,
|
||||||
|
V182,
|
||||||
E121 = 121,
|
E121 = 121,
|
||||||
E122 = 122,
|
E122 = 122,
|
||||||
E123 = 123,
|
E123 = 123,
|
||||||
E124 = 124,
|
E124 = 124,
|
||||||
E125 = 125,
|
E125 = 125,
|
||||||
|
V201 = 201,
|
||||||
|
V202,
|
||||||
|
V203,
|
||||||
|
V221 = 221,
|
||||||
V701 = 701,
|
V701 = 701,
|
||||||
V702 = 702,
|
V702 = 702,
|
||||||
V703 = 703,
|
V703 = 703,
|
||||||
@ -75,6 +81,7 @@ namespace bsmd.database
|
|||||||
V782 = 782,
|
V782 = 782,
|
||||||
V783 = 783,
|
V783 = 783,
|
||||||
V784 = 784,
|
V784 = 784,
|
||||||
|
V786 = 786,
|
||||||
V801 = 801,
|
V801 = 801,
|
||||||
V802 = 802,
|
V802 = 802,
|
||||||
V803 = 803,
|
V803 = 803,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user