Maske CREWD/PASD getestet und gebugfixt, Validierung angefangen

This commit is contained in:
Daniel Schick 2022-01-24 09:00:51 +01:00
parent e087419d64
commit 503618a323
13 changed files with 57 additions and 14 deletions

View File

@ -443,20 +443,20 @@ namespace ENI2
if(App.UserId.HasValue && DBManager.Instance.GetReportingPartyDict().ContainsKey(App.UserId.Value))
{
userName = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].Logon;
}
}
message.ChangedBy = string.Format("{0} at {1}", userName, DateTime.Now);
message.IsDirty = false;
message.UnsentMessageWarningShown = false;
message.UnconfirmedMessageWarningShown = false;
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(message);
message.SaveElements();
message.SaveElements();
if(message.MessageNotificationClass == Message.NotificationClass.ATA)
{
DetailBaseControl currentControl = this.detailView.Children[0] as DetailBaseControl;
// ggf. hat sich die Ticketnr geändert..
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(currentControl.Core);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(currentControl.Core);
}
if(message.MessageNotificationClass == Message.NotificationClass.STAT)

View File

@ -406,10 +406,11 @@ namespace ENI2.DetailViewControls
private void DataGridPassengerListDeparture_CreateRequested()
{
EditPASDialog epd = new EditPASDialog
EditPASDialog epd = new EditPASDialog
{
PAS = new PASD()
};
epd.PAS.IsDeparture = true;
epd.PAS.Identifier = PASD.GetNewIdentifier(_pasdMessage.Elements);
epd.PAS.MessageHeader = this._pasdMessage;
@ -421,6 +422,7 @@ namespace ENI2.DetailViewControls
this.dataGridPassengerList.Items.Refresh();
epd.PAS = new PASD
{
IsDeparture = true,
MessageHeader = this._pasdMessage,
Identifier = PASD.GetNewIdentifier(_pasdMessage.Elements)
};
@ -468,6 +470,7 @@ namespace ENI2.DetailViewControls
this.dataGridPassengerList.Items.Refresh();
epd.PAS = new PASD
{
IsDeparture = true,
Identifier = PASD.GetNewIdentifier(_pasdMessage.Elements),
MessageHeader = _pasdMessage
};
@ -586,8 +589,9 @@ namespace ENI2.DetailViewControls
{
EditCREWDialog ecd = new EditCREWDialog
{
CREW = new CREW()
CREW = new CREWD()
};
ecd.CREW.IsDeparture = true;
ecd.CREW.Identifier = CREWD.GetNewIdentifier(_crewdMessage.Elements);
ecd.CREW.MessageHeader = this._crewdMessage;
@ -599,6 +603,7 @@ namespace ENI2.DetailViewControls
this.dataGridCrewListDeparture.Items.Refresh();
ecd.CREW = new CREWD
{
IsDeparture = true,
MessageHeader = this._crewdMessage,
Identifier = CREWD.GetNewIdentifier(_crewdMessage.Elements)
};
@ -646,6 +651,7 @@ namespace ENI2.DetailViewControls
this.dataGridCrewListDeparture.Items.Refresh();
ecd.CREW = new CREWD
{
IsDeparture = true,
Identifier = CREWD.GetNewIdentifier(_crewdMessage.Elements),
MessageHeader = _crewdMessage
};
@ -792,6 +798,8 @@ namespace ENI2.DetailViewControls
throw new InvalidDataException("Sheet must have at least 10 Columns of data");
}
CREWD crew = new CREWD();
crew.IsDeparture = true;
if (reader.IsDBNull(0) && reader.IsDBNull(1)) continue;
if (!reader.IsDBNull(0)) crew.CrewMemberLastName = reader.GetString(0);
if (!reader.IsDBNull(1)) crew.CrewMemberFirstName = reader.GetString(1);
@ -956,6 +964,7 @@ namespace ENI2.DetailViewControls
}
PASD pas = new PASD();
pas.IsDeparture = true;
if (reader.IsDBNull(0) && reader.IsDBNull(1)) continue;
if (!reader.IsDBNull(0)) pas.PassengerLastName = reader.GetValue(0).ToString();
if (!reader.IsDBNull(1)) pas.PassengerFirstName = reader.GetValue(1).ToString();

View File

@ -70,6 +70,7 @@ namespace ENI2.DetailViewControls
this.hazd = new HAZ();
this.hazd.MessageCore = this.Core;
this.hazd.MessageHeader = aMessage;
this.hazd.IsDeparture = true;
aMessage.Elements.Add(this.hazd);
SublistElementChanged(Message.NotificationClass.HAZD);
}
@ -96,6 +97,7 @@ namespace ENI2.DetailViewControls
haz = new HAZ();
haz.MessageCore = this.Core;
haz.MessageHeader = this._hazMessage;
haz.IsDeparture = this.IsDeparture;
_hazMessage.Elements.Add(haz);
}

View File

@ -1948,6 +1948,7 @@ namespace ENI2.Excel
if (!(crewdMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREWD crew))
{
crew = new CREWD();
crew.IsDeparture = true;
crew.Identifier = (i + 1).ToString();
crew.MessageHeader = crewdMessage;
crewdMessage.Elements.Add(crew);
@ -2054,6 +2055,7 @@ namespace ENI2.Excel
if (!(pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is PASD pas))
{
pas = new PASD();
pas.IsDeparture = true;
pas.Identifier = (i + 1).ToString();
pas.MessageHeader = pasMessage;
pasMessage.Elements.Add(pas);

View File

@ -109,4 +109,8 @@ ALTER TABLE [dbo].[PAS]
ADD [EmergencyCare] NVARCHAR (255) NULL,
[EmergencyContactNumber] NVARCHAR (99) NULL;
GO
INSERT INTO ViolationText(ViolationCode, ViolationText) VALUES (33, 'Value is too large')
GO

View File

@ -859,6 +859,7 @@ namespace bsmd.database
{ typeof(BRKA), typeof(BRKA).Name },
{ typeof(BRKD), typeof(BRKD).Name },
{ typeof(CREW), typeof(CREW).Name },
{ typeof(CREWD), typeof(CREWD).Name },
{ typeof(HAZ), typeof(HAZ).Name },
{ typeof(INFO), typeof(INFO).Name },
{ typeof(LADG), typeof(LADG).Name },
@ -866,6 +867,7 @@ namespace bsmd.database
{ typeof(NAME), typeof(NAME).Name },
{ typeof(NOA_NOD), typeof(NOA_NOD).Name },
{ typeof(PAS), typeof(PAS).Name },
{typeof(PASD), typeof(PASD).Name },
{ typeof(POBA), typeof(POBA).Name },
{ typeof(POBD), typeof(POBD).Name },
{ typeof(PRE72H), typeof(PRE72H).Name },
@ -922,8 +924,8 @@ namespace bsmd.database
case Message.NotificationClass.HAZD: result = new HAZ(); ((HAZ)result).IsDeparture = true; break;
case Message.NotificationClass.AGNT: result = new AGNT(); break;
case Message.NotificationClass.STO: result = new STO(); break;
case Message.NotificationClass.CREWD: result = new CREWD(); break;
case Message.NotificationClass.PASD: result = new PASD(); break;
case Message.NotificationClass.CREWD: result = new CREWD(); ((CREWD)result).IsDeparture = true; break;
case Message.NotificationClass.PASD: result = new PASD(); ((PASD)result).IsDeparture = true; break;
case Message.NotificationClass.WAS_RCPT: result = new WAS_RCPT(); break;
default:

View File

@ -99,7 +99,7 @@ namespace bsmd.database
CREWD,
PASD,
WAS_RCPT
}
}
public enum MessageStatus
{ ACCEPTED, REJECTED }

View File

@ -311,17 +311,17 @@ namespace bsmd.database
errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "ETDFromLastPort missing", null, this.Title, null, this.Tablename));
if((this.LastPort?.Equals("ZZUKN") == true) && this.ETDFromLastPort.HasValue)
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETDFromLastPort missing", null, this.Title, null, this.Tablename));
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETDFromLastPort cannot be set if ZZUKN", null, this.Title, null, this.Tablename));
if (this.ETDFromPortOfCall.HasValue && this.ETAToNextPort.HasValue && (this.NextPort?.Equals("ZZUKN") == false) &&
(this.ETAToNextPort <= ETDFromPortOfCall))
errors.Add(RuleEngine.CreateError(ValidationCode.E122, "ETAToNextPort", null, this.Title, null, this.Tablename));
if ((this.NextPort?.Equals("ZZUKN") == false) && !this.ETAToNextPort.HasValue)
errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "ETAToNextPort", null, this.Title, null, this.Tablename));
errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "ETAToNextPort missing", null, this.Title, null, this.Tablename));
if((this.NextPort?.Equals("ZZUKN") == true) && this.ETAToNextPort.HasValue)
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETAToNextPort", null, this.Title, null, this.Tablename));
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETAToNextPort cannot be set if ZZUKN", null, this.Title, null, this.Tablename));
if (this.ETDFromLastPort.HasValue && this.ETAToPortOfCall.HasValue && (this.ETDFromLastPort >= this.ETAToPortOfCall))
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "ETDFromLastPort", null, this.Title, null, this.Tablename));
@ -394,5 +394,5 @@ namespace bsmd.database
#endregion
}
}
}

View File

@ -200,7 +200,7 @@ namespace bsmd.database
"PassengerPlaceOfBirth, PassengerDateOfBirth, PassengerGender, PassengerNationality, PassengerIdentityDocumentType, " +
"PassengerIdentityDocumentId, PassengerVisaNumber, PassengerPortOfEmbarkation, PassengerPortOfDisembarkation," +
"PassengerInTransit, Identifier, IsDeparture, PassengerIdentityDocumentIssuingState, PassengerIdentityDocumentExpiryDate, " +
"NotificationSchengen, NotificationSchengen, EmergencyCare, EmergencyContactNumber) " +
"NotificationSchengen, NotificationPAX, EmergencyCare, EmergencyContactNumber) " +
"VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15, @P16, @P17, @P18, @P19, @P20, @P21 )",
this.Tablename);
}

View File

@ -137,6 +137,11 @@ namespace bsmd.database
{
if (((TotalCrewMembersOnBoardUponArrival ?? 0) + (TotalPassengersOnBoardUponArrival ?? 0) + (TotalStowawaysOnBoardUponArrival ?? 0)) != (TotalPersonsOnBoardUponArrival ?? 0))
violations.Add(RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "TotalPersonsOnBoardUponArrival", null, this.Title, null, this.Tablename));
if((TotalCrewMembersOnBoardUponArrival > 99998) || (TotalPassengersOnBoardUponArrival > 99998) || (TotalStowawaysOnBoardUponArrival > 99998) || (TotalPersonsOnBoardUponArrival > 99998))
{
violations.Add(RuleEngine.CreateViolation(ValidationCode.VALUE_TOO_LARGE, "POBA", null, this.Title));
}
}
#endregion

View File

@ -135,6 +135,12 @@ namespace bsmd.database
{
if (((TotalCrewMembersOnBoardUponDeparture ?? 0) + (TotalPassengersOnBoardUponDeparture ?? 0) + (TotalStowawaysOnBoardUponDeparture ?? 0)) != (TotalPersonsOnBoardUponDeparture ?? 0))
violations.Add(RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "TotalPersonsOnBoardUponDeparture", null, this.Title, null, this.Tablename));
if ((TotalCrewMembersOnBoardUponDeparture > 99998) || (TotalPassengersOnBoardUponDeparture > 99998) || (TotalStowawaysOnBoardUponDeparture > 99998) || (TotalPersonsOnBoardUponDeparture > 99998))
{
violations.Add(RuleEngine.CreateViolation(ValidationCode.VALUE_TOO_LARGE, "POBD", null, this.Title));
}
}
#endregion

View File

@ -214,6 +214,18 @@ namespace bsmd.database
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "ShipToShipActivityType", this.ShipToShipActivityTypeCode.ToString(), this.Title, this.Identifier, this.SEC.Tablename));
}
if (this.ShipToShipActivityLocationCoordinatesLatitude.HasValue &&
((this.ShipToShipActivityLocationCoordinatesLatitude.Value > 54600000) || (this.ShipToShipActivityLocationCoordinatesLatitude < -54000000)))
{
violations.Add(RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "Latitude", null, this.Title, this.Identifier, this.SEC.Tablename));
}
if(this.ShipToShipActivityLocationCoordinatesLongitude.HasValue &&
((this.ShipToShipActivityLocationCoordinatesLongitude.Value > 108600000) || (this.ShipToShipActivityLocationCoordinatesLongitude.Value < -108000000)))
{
violations.Add(RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "Longitude", null, this.Title, this.Identifier, this.SEC.Tablename));
}
}
#endregion

View File

@ -49,6 +49,7 @@ namespace bsmd.database
INVALID_NUMBER_CHARS = 30,
OPTIONAL_FLAG_CODE,
WORDOVERFLOW,
VALUE_TOO_LARGE,
E121 = 121,
E122 = 122,
E123 = 123,