From 805ef43551ee5be459f11dd855d3ea6f08108d65 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Fri, 27 Oct 2023 12:28:55 +0200 Subject: [PATCH] fixed errors and implemented sending for CREWA/D PASA/D through dbh --- bsmd.dbh/RequestUtil.cs | 213 +++++++++++++++++++++++++++++++--------- 1 file changed, 164 insertions(+), 49 deletions(-) diff --git a/bsmd.dbh/RequestUtil.cs b/bsmd.dbh/RequestUtil.cs index 5013b7f5..1fccd406 100644 --- a/bsmd.dbh/RequestUtil.cs +++ b/bsmd.dbh/RequestUtil.cs @@ -25,7 +25,7 @@ namespace bsmd.dbh try { Root root = new Root(); - root.Version = RootVersion.Item71; + root.Version = RootVersion.Item72; root.SourceDocumentVersion = "7.1"; root.Timestamp = DateTime.Now; string filenameComponent; @@ -461,38 +461,41 @@ namespace bsmd.dbh #endregion - #region CREW + #region CREWA - case Message.NotificationClass.CREW: + case Message.NotificationClass.CREW: // this is CREWA { - RootCREW rootCREW = new RootCREW(); + RootCREWA rootCREW = new RootCREWA(); - rootCREW.CrewMember = new RootCREWCrewMember[message.Elements.Count]; + rootCREW.CrewMember = new RootCREWACrewMember[message.Elements.Count]; for (int i = 0; i < message.Elements.Count; i++) { CREW crew = message.Elements[i] as CREW; - rootCREW.CrewMember[i] = new RootCREWCrewMember(); + rootCREW.CrewMember[i] = new RootCREWACrewMember(); if (crew.CrewMemberDateOfBirth.HasValue) - rootCREW.CrewMember[i].CrewMemberDateOfBirth = crew.CrewMemberDateOfBirth.Value; - rootCREW.CrewMember[i].CrewMemberDuty = crew.CrewMemberDuty; - rootCREW.CrewMember[i].CrewMemberFirstName = crew.CrewMemberFirstName; - rootCREW.CrewMember[i].CrewMemberGenderSpecified = crew.CrewMemberGender.HasValue; - if (crew.CrewMemberGender.HasValue) - rootCREW.CrewMember[i].CrewMemberGender = SetGender(crew.CrewMemberGender.Value); - rootCREW.CrewMember[i].CrewMemberIdentityDocumentId = crew.CrewMemberIdentityDocumentId; - if (crew.CrewMemberIdentityDocumentType.HasValue) - rootCREW.CrewMember[i].CrewMemberIdentityDocumentType = (IdDocType)crew.CrewMemberIdentityDocumentType.Value; - rootCREW.CrewMember[i].CrewMemberLastName = crew.CrewMemberLastName; - rootCREW.CrewMember[i].CrewMemberNationality = crew.CrewMemberNationality; - rootCREW.CrewMember[i].CrewMemberPlaceOfBirth = crew.CrewMemberPlaceOfBirth; - rootCREW.CrewMember[i].CrewMemberVisaNumber = crew.CrewMemberVisaNumber; - if (crew.CrewMemberIdentityDocumentIssuingState.Trim().Length == 2) - rootCREW.CrewMember[i].CrewMemberIdentityDocumentIssuingState = crew.CrewMemberIdentityDocumentIssuingState; - if (crew.CrewMemberIdentityDocumentExpiryDate.HasValue) - rootCREW.CrewMember[i].CrewMemberIdentityDocumentExpiryDate = crew.CrewMemberIdentityDocumentExpiryDate.Value; + rootCREW.CrewMember[i].DateOfBirth = crew.CrewMemberDateOfBirth.Value; + rootCREW.CrewMember[i].DutyOnBoard = crew.CrewMemberDuty; + rootCREW.CrewMember[i].FirstName = crew.CrewMemberFirstName; + rootCREW.CrewMember[i].LastName = crew.CrewMemberLastName; + rootCREW.CrewMember[i].Nationality = crew.CrewMemberNationality; + rootCREW.CrewMember[i].PlaceOfBirth = crew.CrewMemberPlaceOfBirth; + rootCREW.CrewMember[i].Gender = SetGender(crew.CrewMemberGender.Value); + + if (crew.NotificationSchengen ?? false) + { + rootCREW.CrewMember[i].DetailsSchengen = new RootCREWACrewMemberDetailsSchengen(); + rootCREW.CrewMember[i].DetailsSchengen.IdentityDocumentId = crew.CrewMemberIdentityDocumentId; + if (crew.CrewMemberIdentityDocumentType.HasValue) + rootCREW.CrewMember[i].DetailsSchengen.IdentityDocumentType = (IdDocType)crew.CrewMemberIdentityDocumentType.Value; + rootCREW.CrewMember[i].DetailsSchengen.VisaNumber = crew.CrewMemberVisaNumber; + if (crew.CrewMemberIdentityDocumentIssuingState.Trim().Length == 2) + rootCREW.CrewMember[i].DetailsSchengen.IdentityDocumentIssuingState = crew.CrewMemberIdentityDocumentIssuingState; + if (crew.CrewMemberIdentityDocumentExpiryDate.HasValue) + rootCREW.CrewMember[i].DetailsSchengen.IdentityDocumentExpiryDate = crew.CrewMemberIdentityDocumentExpiryDate.Value; + } } - // rootCREW.ReportingParty = rp; + root.Items = new object[1]; root.Items[0] = rootCREW; @@ -501,41 +504,153 @@ namespace bsmd.dbh #endregion - #region PAS - case Message.NotificationClass.PAS: + #region CREWD + + case Message.NotificationClass.CREWD: { - RootPAS rootPAS = new RootPAS(); - rootPAS.Passenger = new RootPASPassenger[message.Elements.Count]; + + RootCREWD rootCREW = new RootCREWD(); + + rootCREW.CrewMember = new RootCREWDCrewMember[message.Elements.Count]; + for (int i = 0; i < message.Elements.Count; i++) + { + CREW crew = message.Elements[i] as CREW; + rootCREW.CrewMember[i] = new RootCREWDCrewMember(); + if (crew.CrewMemberDateOfBirth.HasValue) + rootCREW.CrewMember[i].DateOfBirth = crew.CrewMemberDateOfBirth.Value; + rootCREW.CrewMember[i].DutyOnBoard = crew.CrewMemberDuty; + rootCREW.CrewMember[i].FirstName = crew.CrewMemberFirstName; + rootCREW.CrewMember[i].LastName = crew.CrewMemberLastName; + rootCREW.CrewMember[i].Nationality = crew.CrewMemberNationality; + rootCREW.CrewMember[i].PlaceOfBirth = crew.CrewMemberPlaceOfBirth; + rootCREW.CrewMember[i].Gender = SetGender(crew.CrewMemberGender.Value); + + if (crew.NotificationSchengen ?? false) + { + rootCREW.CrewMember[i].DetailsSchengen = new RootCREWDCrewMemberDetailsSchengen(); + rootCREW.CrewMember[i].DetailsSchengen.IdentityDocumentId = crew.CrewMemberIdentityDocumentId; + if (crew.CrewMemberIdentityDocumentType.HasValue) + rootCREW.CrewMember[i].DetailsSchengen.IdentityDocumentType = (IdDocType)crew.CrewMemberIdentityDocumentType.Value; + rootCREW.CrewMember[i].DetailsSchengen.VisaNumber = crew.CrewMemberVisaNumber; + if (crew.CrewMemberIdentityDocumentIssuingState.Trim().Length == 2) + rootCREW.CrewMember[i].DetailsSchengen.IdentityDocumentIssuingState = crew.CrewMemberIdentityDocumentIssuingState; + if (crew.CrewMemberIdentityDocumentExpiryDate.HasValue) + rootCREW.CrewMember[i].DetailsSchengen.IdentityDocumentExpiryDate = crew.CrewMemberIdentityDocumentExpiryDate.Value; + } + } + + root.Items = new object[1]; + root.Items[0] = rootCREW; + + } + break; + + #endregion + + #region PASA + + case Message.NotificationClass.PAS: // this is PASA + { + RootPASA rootPAS = new RootPASA(); + rootPAS.Passenger = new RootPASAPassenger[message.Elements.Count]; for (int i = 0; i < message.Elements.Count; i++) { PAS pas = message.Elements[i] as PAS; - rootPAS.Passenger[i] = new RootPASPassenger(); - rootPAS.Passenger[i].PassengerLastName = pas.PassengerLastName; - rootPAS.Passenger[i].PassengerFirstName = pas.PassengerFirstName; - rootPAS.Passenger[i].PassengerPlaceOfBirth = pas.PassengerPlaceOfBirth; + rootPAS.Passenger[i] = new RootPASAPassenger(); + rootPAS.Passenger[i].LastName = pas.PassengerLastName; + rootPAS.Passenger[i].FirstName = pas.PassengerFirstName; + rootPAS.Passenger[i].PlaceOfBirth = pas.PassengerPlaceOfBirth; if (pas.PassengerDateOfBirth.HasValue) - rootPAS.Passenger[i].PassengerDateOfBirth = pas.PassengerDateOfBirth.Value; - rootPAS.Passenger[i].PassengerGenderSpecified = pas.PassengerGender.HasValue; - if (pas.PassengerGender.HasValue) - rootPAS.Passenger[i].PassengerGender = SetGender(pas.PassengerGender.Value); - rootPAS.Passenger[i].PassengerNationality = pas.PassengerNationality; - if (pas.PassengerIdentityDocumentType.HasValue) - rootPAS.Passenger[i].PassengerIdentityDocumentType = (IdDocType)pas.PassengerIdentityDocumentType.Value; - rootPAS.Passenger[i].PassengerIdentityDocumentId = pas.PassengerIdentityDocumentId; - rootPAS.Passenger[i].PassengerVisaNumber = pas.PassengerVisaNumber; - rootPAS.Passenger[i].PassengerPortOfEmbarkation = pas.PassengerPortOfEmbarkation; - rootPAS.Passenger[i].PassengerPortOfDisembarkation = pas.PassengerPortOfDisembarkation; - rootPAS.Passenger[i].PassengerInTransit = pas.PassengerInTransit ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N; - if (pas.PassengerIdentityDocumentIssuingState.Trim().Length == 2) - rootPAS.Passenger[i].PassengerIdentityDocumentIssuingState = pas.PassengerIdentityDocumentIssuingState; - if (pas.PassengerIdentityDocumentExpiryDate.HasValue) - rootPAS.Passenger[i].PassengerIdentityDocumentExpiryDate = pas.PassengerIdentityDocumentExpiryDate.Value; + rootPAS.Passenger[i].DateOfBirth = pas.PassengerDateOfBirth.Value; + rootPAS.Passenger[i].Gender = SetGender(pas.PassengerGender.Value); + rootPAS.Passenger[i].Nationality = pas.PassengerNationality; + + if (pas.NotificationSchengen ?? false) + { + rootPAS.Passenger[i].DetailsSchengen = new RootPASAPassengerDetailsSchengen(); + if (pas.PassengerIdentityDocumentType.HasValue) + rootPAS.Passenger[i].DetailsSchengen.IdentityDocumentType = (IdDocType)pas.PassengerIdentityDocumentType.Value; + rootPAS.Passenger[i].DetailsSchengen.IdentityDocumentId = pas.PassengerIdentityDocumentId; + if(!pas.PassengerVisaNumber.IsNullOrEmpty()) + rootPAS.Passenger[i].DetailsSchengen.VisaNumber = pas.PassengerVisaNumber; + rootPAS.Passenger[i].DetailsSchengen.PortOfEmbarkation = pas.PassengerPortOfEmbarkation; + rootPAS.Passenger[i].DetailsSchengen.PortOfDisembarkation = pas.PassengerPortOfDisembarkation; + rootPAS.Passenger[i].DetailsSchengen.InTransit = pas.PassengerInTransit ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N; + if (pas.PassengerIdentityDocumentIssuingState.Trim().Length == 2) + rootPAS.Passenger[i].DetailsSchengen.IdentityDocumentIssuingState = pas.PassengerIdentityDocumentIssuingState; + if (pas.PassengerIdentityDocumentExpiryDate.HasValue) + rootPAS.Passenger[i].DetailsSchengen.IdentityDocumentExpiryDate = pas.PassengerIdentityDocumentExpiryDate.Value; + } + + if(pas.NotificationPAX ?? false) + { + rootPAS.Passenger[i].DetailsPAX = new RootPASAPassengerDetailsPAX(); + if (!pas.EmergencyCare.IsNullOrEmpty()) + rootPAS.Passenger[i].DetailsPAX.EmergencyCare = pas.EmergencyCare; + if (!pas.EmergencyContactNumber.IsNullOrEmpty()) + rootPAS.Passenger[i].DetailsPAX.EmergencyContactNumber = pas.EmergencyContactNumber; + } + } - // rootPAS.ReportingParty = rp; + root.Items = new object[1]; root.Items[0] = rootPAS; } break; + + #endregion + + #region PASD + + case Message.NotificationClass.PASD: + { + RootPASD rootPAS = new RootPASD(); + rootPAS.Passenger = new RootPASDPassenger[message.Elements.Count]; + for (int i = 0; i < message.Elements.Count; i++) + { + PAS pas = message.Elements[i] as PAS; + rootPAS.Passenger[i] = new RootPASDPassenger(); + rootPAS.Passenger[i].LastName = pas.PassengerLastName; + rootPAS.Passenger[i].FirstName = pas.PassengerFirstName; + rootPAS.Passenger[i].PlaceOfBirth = pas.PassengerPlaceOfBirth; + if (pas.PassengerDateOfBirth.HasValue) + rootPAS.Passenger[i].DateOfBirth = pas.PassengerDateOfBirth.Value; + rootPAS.Passenger[i].Gender = SetGender(pas.PassengerGender.Value); + rootPAS.Passenger[i].Nationality = pas.PassengerNationality; + + if (pas.NotificationSchengen ?? false) + { + rootPAS.Passenger[i].DetailsSchengen = new RootPASDPassengerDetailsSchengen(); + if (pas.PassengerIdentityDocumentType.HasValue) + rootPAS.Passenger[i].DetailsSchengen.IdentityDocumentType = (IdDocType)pas.PassengerIdentityDocumentType.Value; + rootPAS.Passenger[i].DetailsSchengen.IdentityDocumentId = pas.PassengerIdentityDocumentId; + if (!pas.PassengerVisaNumber.IsNullOrEmpty()) + rootPAS.Passenger[i].DetailsSchengen.VisaNumber = pas.PassengerVisaNumber; + rootPAS.Passenger[i].DetailsSchengen.PortOfEmbarkation = pas.PassengerPortOfEmbarkation; + rootPAS.Passenger[i].DetailsSchengen.PortOfDisembarkation = pas.PassengerPortOfDisembarkation; + rootPAS.Passenger[i].DetailsSchengen.InTransit = pas.PassengerInTransit ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N; + if (pas.PassengerIdentityDocumentIssuingState.Trim().Length == 2) + rootPAS.Passenger[i].DetailsSchengen.IdentityDocumentIssuingState = pas.PassengerIdentityDocumentIssuingState; + if (pas.PassengerIdentityDocumentExpiryDate.HasValue) + rootPAS.Passenger[i].DetailsSchengen.IdentityDocumentExpiryDate = pas.PassengerIdentityDocumentExpiryDate.Value; + } + + if (pas.NotificationPAX ?? false) + { + rootPAS.Passenger[i].DetailsPAX = new RootPASDPassengerDetailsPAX(); + if (!pas.EmergencyCare.IsNullOrEmpty()) + rootPAS.Passenger[i].DetailsPAX.EmergencyCare = pas.EmergencyCare; + if (!pas.EmergencyContactNumber.IsNullOrEmpty()) + rootPAS.Passenger[i].DetailsPAX.EmergencyContactNumber = pas.EmergencyContactNumber; + } + + } + + root.Items = new object[1]; + root.Items[0] = rootPAS; + } + break; + #endregion #region BKRA