diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 84171c79..b9a48977 100644 Binary files a/Stundensheet.xlsx and b/Stundensheet.xlsx differ diff --git a/nsw/Source/bsmd.ExcelReadService/App.config b/nsw/Source/bsmd.ExcelReadService/App.config index 74872a60..34c5e3ad 100644 --- a/nsw/Source/bsmd.ExcelReadService/App.config +++ b/nsw/Source/bsmd.ExcelReadService/App.config @@ -34,6 +34,9 @@ + + False + \ No newline at end of file diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs index 0db02132..294fd9c6 100644 --- a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs +++ b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs @@ -131,19 +131,25 @@ namespace bsmd.ExcelReadService receiptText = string.Format("Incoming sheet could not be read: {0}", readMessage); _log.Error(receiptText); } - } - // TODO: Quittung / set messagecore to createreport and let reportGenerator create a reply? + if (readResult) + { + // Quittung / set messagecore to createreport and let reportGenerator create a reply? + if (Properties.Settings.Default.SendConfirmationSheet) + { + string confirmationFileName = Path.Combine(Path.GetDirectoryName(attachmentLocalPath), + string.Format("{0}_confirm.xls", Path.GetFileNameWithoutExtension(attachmentLocalPath))); - // create a reply sheet (template + scanned highlighted content for verification - if (readResult) - { - string confirmationExcelFilePath = Util.CreateConfirmationSheet(messageCore); - List sendItems = new List(); - sendItems.Add(confirmationExcelFilePath); - // send reply sheet back to sender - BSMDMail.SendNSWReportWithAttachments(Properties.Settings.Default.SendEMailSubject, sendItems); - } + if (reader.SaveCopy(confirmationFileName)) + { + List sendItems = new List(); + sendItems.Add(confirmationFileName); + // send reply sheet back to sender + BSMDMail.SendNSWReportWithAttachments(Properties.Settings.Default.SendEMailSubject, sendItems); + } + } + } + } } if (receiptText.Length > 0) diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs index a83bd3aa..c2ff433e 100644 --- a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs +++ b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs @@ -22,6 +22,7 @@ namespace bsmd.ExcelReadService { private ILog _log = LogManager.GetLogger(typeof(ExcelReader)); private Workbooks _excelWorkbooks; + private Workbook _portcall; private Application _excelApp; private Dictionary _nameDict; @@ -37,22 +38,50 @@ namespace bsmd.ExcelReadService { this._excelApp = new Application(); this._excelWorkbooks = _excelApp.Workbooks; - Workbook portcall = _excelWorkbooks.Open(filePath, 0, true, 5, "", "", false, XlPlatform.xlWindows, "", false, false, 0, false, false, false); + this._portcall = _excelWorkbooks.Open(filePath, 0, true, 5, "", "", false, XlPlatform.xlWindows, "", false, false, 0, false, false, false); _nameDict = new Dictionary(); - foreach(Name name in portcall.Names) + foreach(Name name in _portcall.Names) { _nameDict[name.Name] = name; } } - internal void Save(string filePath) + internal bool Save(string filePath) { - if (this._excelApp == null) return; - this._excelApp.SaveWorkspace(filePath); + bool result = true; + if (this._excelApp == null) return false; + try + { + this._excelApp.SaveWorkspace(filePath); + } + catch(Exception ex) + { + _log.WarnFormat("cannot save workspace: {0}", ex.Message); + result = false; + } + return result; + } + + internal bool SaveCopy(string filePath) + { + bool result = true; + if (this._excelApp == null) return false; + try + { + this._portcall.Saved = true; + this._portcall.SaveCopyAs(filePath); + } + catch (Exception ex) + { + _log.WarnFormat("cannot save copy of workbook: {0}", ex.Message); + result = false; + } + return result; } internal void HighlightLookup(string lookup, ReadState state) { + if (!_nameDict.ContainsKey(lookup)) return; Range range = _nameDict[lookup].RefersToRange; if(range != null) { @@ -117,6 +146,7 @@ namespace bsmd.ExcelReadService internal byte? ReadShippingArea(string lookup) { string val = this.ReadText(lookup); + if (val == null) return null; if (val.IndexOf("baltic", StringComparison.OrdinalIgnoreCase) >= 0) return 0; if (val.IndexOf("europe", StringComparison.OrdinalIgnoreCase) >= 0) return 1; if (val.IndexOf("overseas", StringComparison.OrdinalIgnoreCase) >= 0) return 2; @@ -127,6 +157,7 @@ namespace bsmd.ExcelReadService internal byte? ReadHullConfiguration(string lookup) { string val = this.ReadText(lookup); + if (val == null) return null; if (val.IndexOf("sbt", StringComparison.OrdinalIgnoreCase) >= 0) return 1; if (val.IndexOf("single", StringComparison.OrdinalIgnoreCase) >= 0) return 0; if (val.IndexOf("double", StringComparison.OrdinalIgnoreCase) >= 0) return 2; @@ -137,6 +168,7 @@ namespace bsmd.ExcelReadService internal byte? ReadConditionTanks(string lookup) { string val = this.ReadText(lookup); + if (val == null) return null; if (val.IndexOf("full", StringComparison.OrdinalIgnoreCase) >= 0) return 0; if (val.IndexOf("empty", StringComparison.OrdinalIgnoreCase) >= 0) return 1; if (val.IndexOf("inerted", StringComparison.OrdinalIgnoreCase) >= 0) return 2; @@ -147,6 +179,7 @@ namespace bsmd.ExcelReadService internal byte? ReadDelivery(string lookup) { string val = this.ReadText(lookup); + if (val == null) return null; if (val.IndexOf("all", StringComparison.OrdinalIgnoreCase) >= 0) return 0; if (val.IndexOf("some", StringComparison.OrdinalIgnoreCase) >= 0) return 1; if (val.IndexOf("none", StringComparison.OrdinalIgnoreCase) >= 0) return 2; @@ -166,6 +199,7 @@ namespace bsmd.ExcelReadService { try { + if (!_nameDict.ContainsKey(lookup)) return null; var val = _nameDict[lookup].RefersToRange.Value; if (val is DateTime) return val; if (val is double) @@ -206,6 +240,7 @@ namespace bsmd.ExcelReadService { try { + if (!_nameDict.ContainsKey(lookup)) return null; var val = _nameDict[lookup].RefersToRange.Value; if (val is DateTime) return val; if (val is double) @@ -231,6 +266,7 @@ namespace bsmd.ExcelReadService double result; try { + if (!_nameDict.ContainsKey(lookup)) return null; var val = _nameDict[lookup].RefersToRange.Value; if (val is double) return val; if (val is string) diff --git a/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs b/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs index 4e56b544..e881f7c9 100644 --- a/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs +++ b/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs @@ -59,7 +59,15 @@ namespace bsmd.ExcelReadService public static List AllLocodesForCityName(string city) { List results = new List(); - string query = string.Format("SELECT city_code, countries.code FROM locodes JOIN countries ON locodes.country_id = countries.ID WHERE locodes.port='t' AND locodes.name like '{1}'", city); + if(city.Contains(",")) + { + string[] elems = city.Split(','); + string countryCode = CountryCodeFromName(elems[1].Trim()); + string lcLookup = LocodeFromCity(elems[0].Trim(), countryCode); + if ((countryCode != null) && (lcLookup != null)) + results.Add(lcLookup); + } + string query = string.Format("SELECT city_code, countries.code FROM locodes JOIN countries ON locodes.country_id = countries.ID WHERE locodes.port='t' AND locodes.name like '{0}'", city); SQLiteCommand cmd = new SQLiteCommand(query, _con); IDataReader reader = cmd.ExecuteReader(); while (reader.Read()) diff --git a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs index 4c21e0c4..c81b1b4c 100644 --- a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs +++ b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs @@ -74,5 +74,14 @@ namespace bsmd.ExcelReadService.Properties { return ((global::System.Collections.Specialized.StringCollection)(this["ValidSender"])); } } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool SendConfirmationSheet { + get { + return ((bool)(this["SendConfirmationSheet"])); + } + } } } diff --git a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings index fc6899fc..30bd5dbe 100644 --- a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings +++ b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings @@ -24,5 +24,8 @@ <string>hollmann@bsmd.de</string> </ArrayOfString> + + False + \ No newline at end of file diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs index 1ff005c9..4ba8a2e8 100644 --- a/nsw/Source/bsmd.ExcelReadService/Util.cs +++ b/nsw/Source/bsmd.ExcelReadService/Util.cs @@ -140,13 +140,7 @@ namespace bsmd.ExcelReadService } return true; - } - - internal static string CreateConfirmationSheet(MessageCore messageCore) - { - throw new NotImplementedException(); - } - + } #region ATA @@ -354,6 +348,7 @@ namespace bsmd.ExcelReadService if (!callPurposeDescription.IsNullOrEmpty()) { CallPurpose callPurpose = new CallPurpose(); + callPurpose.NOA_NOD = noa_nod; callPurpose.CallPurposeCode = noa_nod.getCallPurposeCodeFromDescription(callPurposeDescription) ?? 0; callPurpose.CallPurposeDescription = callPurposeDescription; noa_nod.CallPurposes.Add(callPurpose); @@ -591,8 +586,8 @@ namespace bsmd.ExcelReadService s2sActivity.ShipToShipActivityLocationName = reader.ReadText(s2sName); s2sActivity.ShipToShipActivityLocationLoCode = reader.ReadTextNoWhitespace(s2sLocode); - s2sActivity.ShipToShipActivityLocationCoordinatesLatitude = (int)reader.ReadNumber(s2sLatitude); - s2sActivity.ShipToShipActivityLocationCoordinatesLongitude = (int)reader.ReadNumber(s2sLongitude); + s2sActivity.ShipToShipActivityLocationCoordinatesLatitude = (int?)reader.ReadNumber(s2sLatitude); + s2sActivity.ShipToShipActivityLocationCoordinatesLongitude = (int?)reader.ReadNumber(s2sLongitude); s2sActivity.ShipToShipActivityDateFrom = reader.ReadDate(s2sFromDate); s2sActivity.ShipToShipActivityDateTo = reader.ReadDate(s2sToDate); s2sActivity.ShipToShipActivityType = reader.ReadText(s2sActivityString); @@ -774,7 +769,7 @@ namespace bsmd.ExcelReadService } ladg.CargoCodeNST = reader.ReadText(lnType); - if (ladg.CargoCodeNST.Length != 2) ladg.CargoCodeNST = null; // stupid validation + if ((ladg.CargoCodeNST != null) && (ladg.CargoCodeNST.Length != 2)) ladg.CargoCodeNST = null; // stupid validation ladg.CargoNumberOfItems = (int?) reader.ReadNumber(lnCNOI); ladg.CargoGrossQuantity_TNE = reader.ReadNumber(lnCGQ); @@ -972,8 +967,15 @@ namespace bsmd.ExcelReadService // Im Sheet könnte der Name statt des LOCODES stehen! if (!RuleEngine.IsGermanLocode(poc)) { + string aGermanPortName = poc; + + if(poc.Contains(',')) // irgendwas wie "Hamburg, Germany" + { + aGermanPortName = poc.Split(',')[0]; + } + // somehow lookup LOCODE from the port's name! - poc = LocodeDB.LocodeGERFromCity(poc); + poc = LocodeDB.LocodeGERFromCity(aGermanPortName); } } @@ -982,11 +984,13 @@ namespace bsmd.ExcelReadService // ETA eta = reader.ReadDateTime("NOA_NOD.ETADateToPortOfCall", "NOA_NOD.ETATimeToPortOfCall"); - if ((imo != null) && (eta.HasValue)) + if ((imo != null) && (eta.HasValue) && (poc != null)) { - result = DBManager.Instance.GetMessageCoreByShipInfos(imo, eta.Value, poc); - if (result.IsNew) - result.IsTransit = isTransit; + result = DBManager.Instance.GetMessageCoreByShipInfos(imo, eta.Value, poc); + if(result != null) + { + _log.InfoFormat("Core [{3}] found for IMO {0}, ETA {1}, Poc {2}", imo, eta, poc, result.Id); + } } } } @@ -1015,6 +1019,7 @@ namespace bsmd.ExcelReadService result = new MessageCore(); result.IMO = imo; + result.IsTransit = isTransit; result.ReportStatus = MessageCore.ReportStatusEnum.COMPLETE; result.Portname = poc; result.ETA = eta; diff --git a/nsw/Source/bsmd.database/AGNT.cs b/nsw/Source/bsmd.database/AGNT.cs index d02c62f1..3b715f77 100644 --- a/nsw/Source/bsmd.database/AGNT.cs +++ b/nsw/Source/bsmd.database/AGNT.cs @@ -35,44 +35,54 @@ namespace bsmd.database [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("AGNT.AgentCompanyName")] + [MaxLength(100)] public string AgentCompanyName { get; set; } [ShowReport] [LookupName("AGNT.AgentStreetAndNumber")] + [MaxLength(100)] public string AgentStreetAndNumber { get; set; } [ShowReport] [LookupName("AGNT.AgentPostalCode")] + [MaxLength(100)] public string AgentPostalCode { get; set; } [ShowReport] [LookupName("AGNT.AgentCity")] + [MaxLength(100)] public string AgentCity { get; set; } [ShowReport] [LookupName("AGNT.AgentCountry")] + [MaxLength(100)] public string AgentCountry { get; set; } [ShowReport] [LookupName("AGNT.AgentLastName")] [Validation2(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string AgentLastName { get; set; } [ShowReport] [LookupName("AGNT.AgentFirstName")] + [MaxLength(100)] public string AgentFirstName { get; set; } [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("AGNT.AgentPhone")] + [MaxLength(100)] public string AgentPhone { get; set; } [ShowReport] [LookupName("AGNT.AgentFax")] + [MaxLength(100)] public string AgentFax { get; set; } [ShowReport] [LookupName("AGNT.AgentEMail")] + [MaxLength(100)] public string AgentEMail { get; set; } #endregion diff --git a/nsw/Source/bsmd.database/BKRA.cs b/nsw/Source/bsmd.database/BKRA.cs index 05c6c526..733b9582 100644 --- a/nsw/Source/bsmd.database/BKRA.cs +++ b/nsw/Source/bsmd.database/BKRA.cs @@ -26,6 +26,7 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string BunkerFuelType { get; set; } [ShowReport] diff --git a/nsw/Source/bsmd.database/BRKD.cs b/nsw/Source/bsmd.database/BRKD.cs index aefba44e..7418d2a8 100644 --- a/nsw/Source/bsmd.database/BRKD.cs +++ b/nsw/Source/bsmd.database/BRKD.cs @@ -26,6 +26,7 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string BunkerFuelType { get; set; } [ShowReport] diff --git a/nsw/Source/bsmd.database/CREW.cs b/nsw/Source/bsmd.database/CREW.cs index 9ada25e9..e74ed6c4 100644 --- a/nsw/Source/bsmd.database/CREW.cs +++ b/nsw/Source/bsmd.database/CREW.cs @@ -27,16 +27,19 @@ namespace bsmd.database [ShowReport] [ReportDisplayName("Last name")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string CrewMemberLastName { get; set; } [ShowReport] [ReportDisplayName("First name")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string CrewMemberFirstName { get; set; } [ShowReport] [ReportDisplayName("Place of birth")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string CrewMemberPlaceOfBirth { get; set; } [Validation(ValidationCode.NOT_NULL)] @@ -63,6 +66,7 @@ namespace bsmd.database [ShowReport] [ReportDisplayName("Nationality")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(2)] public string CrewMemberNationality { get; set; } [Validation(ValidationCode.NOT_NULL)] @@ -75,16 +79,19 @@ namespace bsmd.database [ShowReport] [ReportDisplayName("Identity document id")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string CrewMemberIdentityDocumentId { get; set; } [ShowReport] [ReportDisplayName("Visa number")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string CrewMemberVisaNumber { get; set; } [ShowReport] [ReportDisplayName("Duty")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string CrewMemberDuty { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/CallPurpose.cs b/nsw/Source/bsmd.database/CallPurpose.cs index b3f7ab28..c52d84a0 100644 --- a/nsw/Source/bsmd.database/CallPurpose.cs +++ b/nsw/Source/bsmd.database/CallPurpose.cs @@ -30,6 +30,7 @@ namespace bsmd.database public int CallPurposeCode { get; set; } [ShowReport] + [MaxLength(100)] public string CallPurposeDescription { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/Customer.cs b/nsw/Source/bsmd.database/Customer.cs index d1a04365..66412c4a 100644 --- a/nsw/Source/bsmd.database/Customer.cs +++ b/nsw/Source/bsmd.database/Customer.cs @@ -28,24 +28,34 @@ namespace bsmd.database #region Properties + [MaxLength(100)] public string Name { get; set; } + [MaxLength(50)] public string Phone { get; set; } + [MaxLength(100)] public string Email { get; set; } + [MaxLength(50)] public string ContactFirstName { get; set; } + [MaxLength(50)] public string ContactLastName { get; set; } + [MaxLength(50)] public string StreetAndNumber { get; set; } + [MaxLength(50)] public string PostalCode { get; set; } + [MaxLength(50)] public string City { get; set; } + [MaxLength(50)] public string Country { get; set; } + [MaxLength(50)] public string CustomerNumber { get; set; } #endregion diff --git a/nsw/Source/bsmd.database/DBManager.cs b/nsw/Source/bsmd.database/DBManager.cs index 587b2926..7d807a1f 100644 --- a/nsw/Source/bsmd.database/DBManager.cs +++ b/nsw/Source/bsmd.database/DBManager.cs @@ -349,6 +349,13 @@ namespace bsmd.database public void Save(DatabaseEntity entity) { + List truncatedFields = new List(); + entity.TruncateFields(truncatedFields); + foreach(string truncatedField in truncatedFields) + { + _log.WarnFormat("Entity {0} save: Field truncated: {1}", entity.GetType(), truncatedField); + } + SqlCommand cmd = new SqlCommand(); entity.PrepareSave(cmd); int queryResult = this.PerformNonQuery(cmd); diff --git a/nsw/Source/bsmd.database/DatabaseEntity.cs b/nsw/Source/bsmd.database/DatabaseEntity.cs index 08fa1143..7d964316 100644 --- a/nsw/Source/bsmd.database/DatabaseEntity.cs +++ b/nsw/Source/bsmd.database/DatabaseEntity.cs @@ -83,12 +83,50 @@ namespace bsmd.database public abstract List LoadList(IDataReader reader); + /// + /// Überprüft eingegangene Meldeklassen auf Fehlerkonditionen + /// + /// + /// public virtual void Validate(List errors, List violations) { errors = new List(); violations = new List(); } + /// + /// Diese Methode sollte eigentlich nie einen Effekt haben und dient nur dazu, dass keine Situation + /// auftreten kann in der ein Insert/Update an fehlender Datenvalidierung kracht + /// + /// + public virtual void TruncateFields(List truncated) + { + List props = new List(); + + // add flagged properties to check list + props.AddRange(this.GetType().GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(MaxLengthAttribute)))); + foreach (PropertyInfo property in props) + { + object propValue = property.GetValue(this, null); + string value = (propValue == null) ? string.Empty : propValue.ToString(); + + MaxLengthAttribute maxLengthAttribute = Attribute.GetCustomAttribute(property, typeof(MaxLengthAttribute)) + as MaxLengthAttribute; + + if(value.Length > maxLengthAttribute.MaxLength) // truncate situation + { + string maxLengthValue = value.Substring(0, maxLengthAttribute.MaxLength); + truncated.Add(string.Format("[{0} ({1})]: {2}", property.Name, maxLengthAttribute.MaxLength, value)); + property.SetValue(this, maxLengthValue); + } + } + } + + /// + /// Kann überschrieben werden, wenn abhängig von den Daten (einem Flag) andere Regeln gelten (Bsp. wenn schon eine + /// MDH Meldung abgegeben wurde) + /// + /// public virtual ValidationBlock GetValidationBlock() { return ValidationBlock.BLOCK1; diff --git a/nsw/Source/bsmd.database/IBCPosition.cs b/nsw/Source/bsmd.database/IBCPosition.cs index 7372f5d0..8a5febef 100644 --- a/nsw/Source/bsmd.database/IBCPosition.cs +++ b/nsw/Source/bsmd.database/IBCPosition.cs @@ -27,6 +27,7 @@ namespace bsmd.database public HAZ HAZ { get; set; } [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(255)] public string ProductName { get; set; } [ShowReport] [Validation(ValidationCode.NOT_NULL)] @@ -36,24 +37,37 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.NOT_NULL)] public byte? FlashpointInformation { get; set; } + [ShowReport] + [MaxLength(11)] public string Flashpoint_CEL { get; set; } [ShowReport] [Validation(ValidationCode.DOUBLE_GT_ZERO)] + public double? Quantity_KGM { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(24)] public string StowagePosition { get; set; } + [ShowReport] [Validation(ValidationCode.LOCODE)] + [MaxLength(5)] public string PortOfLoading { get; set; } + [ShowReport] [Validation(ValidationCode.LOCODE)] + [MaxLength(5)] public string PortOfDischarge { get; set; } + [ShowReport] public bool? SpecRef15_19 { get; set; } + [ShowReport] + [MaxLength(255)] public string Remarks { get; set; } + public string Identifier { get; set; } #endregion diff --git a/nsw/Source/bsmd.database/IGCPosition.cs b/nsw/Source/bsmd.database/IGCPosition.cs index e9d85d23..4cd86344 100644 --- a/nsw/Source/bsmd.database/IGCPosition.cs +++ b/nsw/Source/bsmd.database/IGCPosition.cs @@ -25,27 +25,43 @@ namespace bsmd.database #region Properties public HAZ HAZ { get; set; } + [ShowReport] + [MaxLength(4)] public string UNNumber { get; set; } + [ShowReport] + [MaxLength(10)] public string IMOClass { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(255)] public string ProductName { get; set; } + [ShowReport] [Validation(ValidationCode.DOUBLE_GT_ZERO)] public double? Quantity_KGM { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(24)] public string StowagePosition { get; set; } + [ShowReport] [Validation(ValidationCode.LOCODE)] + [MaxLength(5)] public string PortOfLoading { get; set; } + [ShowReport] [Validation(ValidationCode.LOCODE)] + [MaxLength(5)] public string PortOfDischarge { get; set; } + [ShowReport] + [MaxLength(255)] public string Remarks { get; set; } + public string Identifier { get; set; } #endregion diff --git a/nsw/Source/bsmd.database/IMDGPosition.cs b/nsw/Source/bsmd.database/IMDGPosition.cs index 5108dcd3..54aa095b 100644 --- a/nsw/Source/bsmd.database/IMDGPosition.cs +++ b/nsw/Source/bsmd.database/IMDGPosition.cs @@ -27,83 +27,129 @@ namespace bsmd.database #region Properties public HAZ HAZ { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(10)] public string UNNumber { get; set; } + [ShowReport] public byte? PackingGroup { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(255)] public string ProperShippingName { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(10)] public string IMOClass { get; set; } + [ShowReport] + [MaxLength(10)] public string CompatibilityGroup { get; set; } + [ShowReport] + [MaxLength(255)] public string TechnicalName { get; set; } + [ShowReport] public double? NetExplosiveMass_KGM { get; set; } + [ShowReport] + [MaxLength(10)] public string Flashpoint_CEL { get; set; } + [ShowReport] + [MaxLength(100)] public string Class7NuclideName { get; set; } + [ShowReport] public double? Class7MaxActivity_BQL { get; set; } + [ShowReport] public int? Class7Category { get; set; } + [ShowReport] public double? Class7TransportIndex { get; set; } + [ShowReport] public int? Class7CSI { get; set; } + [ShowReport] public double? ControlTemperature_CEL { get; set; } + [ShowReport] public double? EmergencyTemperature_CEL { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] public bool? MarinePollutant { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] public int? NumberOfPackages { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(255)] public string PackageType { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] public bool? LimitedQuantities { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] public bool? ExceptedQuantities { get; set; } + [ShowReport] public double? NetQuantity_KGM { get; set; } + [ShowReport] public double? GrossQuantity_KGM { get; set; } + [ShowReport] public double? Volume_MTQ { get; set; } + [ShowReport] public bool? GeneralCargoIBC { get; set; } + [ShowReport] + [MaxLength(24)] public string ContainerNumber { get; set; } + [ShowReport] + [MaxLength(24)] public string VehicleLicenseNumber { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(24)] public string StowagePosition { get; set; } + [MaxLength(5)] public string Bay { get; set; } + [MaxLength(5)] public string Row { get; set; } + [MaxLength(5)] public string Tier { get; set; } [ShowReport] [Validation(ValidationCode.LOCODE)] + [MaxLength(5)] public string PortOfLoading { get; set; } + [ShowReport] [Validation(ValidationCode.LOCODE)] + [MaxLength(5)] public string PortOfDischarge { get; set; } + [ShowReport] + [MaxLength(255)] public string Remarks { get; set; } public List SubsidiaryRiskList { get { return this.subsidiaryRisksList; } } diff --git a/nsw/Source/bsmd.database/IMSBCPosition.cs b/nsw/Source/bsmd.database/IMSBCPosition.cs index fef6a4f1..320bbbe1 100644 --- a/nsw/Source/bsmd.database/IMSBCPosition.cs +++ b/nsw/Source/bsmd.database/IMSBCPosition.cs @@ -25,30 +25,47 @@ namespace bsmd.database #region Properties public HAZ HAZ { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(255)] public string BulkCargoShippingName { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] public bool? MHB { get; set; } + [ShowReport] + [MaxLength(4)] public string UNNumber { get; set; } + [ShowReport] + [MaxLength(10)] public string IMOClass { get; set; } + [ShowReport] [Validation(ValidationCode.DOUBLE_GT_ZERO)] public double? Quantity_KGM { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(24)] public string StowagePosition { get; set; } + [ShowReport] [Validation(ValidationCode.LOCODE)] + [MaxLength(5)] public string PortOfLoading { get; set; } + [ShowReport] [Validation(ValidationCode.LOCODE)] + [MaxLength(5)] public string PortOfDischarge { get; set; } + [ShowReport] + [MaxLength(255)] public string Remarks { get; set; } + public string Identifier { get; set; } #endregion diff --git a/nsw/Source/bsmd.database/INFO.cs b/nsw/Source/bsmd.database/INFO.cs index 9de0e2ae..1c4c6c5e 100644 --- a/nsw/Source/bsmd.database/INFO.cs +++ b/nsw/Source/bsmd.database/INFO.cs @@ -30,12 +30,15 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("INFO.RequestedPositionInPortOfCall")] + [MaxLength(100)] public string RequestedPositionInPortOfCall { get; set; } [ShowReport] + [MaxLength(255)] public string SpecialRequirementsOfShipAtBerth { get; set; } [ShowReport] + [MaxLength(100)] public string ConstructionCharacteristicsOfShip { get; set; } [ShowReport] @@ -49,10 +52,13 @@ namespace bsmd.database [ShowReport] [LookupName("INFO.PortArea")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(50)] public string PortArea { get; set; } + [MaxLength(50)] public string BowThrusterPower { get; set; } + [MaxLength(50)] public string SternThrusterPower { get; set; } #endregion diff --git a/nsw/Source/bsmd.database/InfectedArea.cs b/nsw/Source/bsmd.database/InfectedArea.cs index 43093d22..7aed9613 100644 --- a/nsw/Source/bsmd.database/InfectedArea.cs +++ b/nsw/Source/bsmd.database/InfectedArea.cs @@ -27,6 +27,7 @@ namespace bsmd.database public MDH MDH { get; set; } [ShowReport] + [MaxLength(255)] public string InfectedAreaPort { get; set; } [ShowReport] diff --git a/nsw/Source/bsmd.database/LADG.cs b/nsw/Source/bsmd.database/LADG.cs index c6f718b6..d693b514 100644 --- a/nsw/Source/bsmd.database/LADG.cs +++ b/nsw/Source/bsmd.database/LADG.cs @@ -30,6 +30,7 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.TWO_DIGIT)] + [MaxLength(5)] public string CargoCodeNST { get; set; } [ShowReport] diff --git a/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs b/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs index dc90688c..022c06a1 100644 --- a/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs +++ b/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs @@ -25,25 +25,38 @@ namespace bsmd.database #region Properties public SEC SEC { get; set; } + [ShowReport] + [MaxLength(100)] public string PortFacilityPortName { get; set; } + [ShowReport] + [MaxLength(100)] public string PortFacilityPortCountry { get; set; } + [ShowReport] + [MaxLength(5)] public string PortFacilityPortLoCode { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] public DateTime? PortFacilityDateOfArrival { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] public DateTime? PortFacilityDateOfDeparture { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] public byte? PortFacilityShipSecurityLevel { get; set; } + [ShowReport] + [MaxLength(255)] public string PortFacilitySecurityMattersToReport { get; set; } + [ShowReport] [Validation(ValidationCode.GISIS)] + [MaxLength(4)] public string PortFacilityGISISCode { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/MARPOL_Annex_I_Position.cs b/nsw/Source/bsmd.database/MARPOL_Annex_I_Position.cs index 138a1b2a..d9281cfc 100644 --- a/nsw/Source/bsmd.database/MARPOL_Annex_I_Position.cs +++ b/nsw/Source/bsmd.database/MARPOL_Annex_I_Position.cs @@ -25,27 +25,41 @@ namespace bsmd.database #region Properties public HAZ HAZ { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(255)] public string Name { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] public byte? FlashpointInformation { get; set; } + [ShowReport] + [MaxLength(10)] public string Flashpoint_CEL { get; set; } + [ShowReport] [Validation(ValidationCode.DOUBLE_GT_ZERO)] public double? Quantity_KGM { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(24)] public string StowagePosition { get; set; } + [ShowReport] [Validation(ValidationCode.LOCODE)] + [MaxLength(5)] public string PortOfLoading { get; set; } + [ShowReport] [Validation(ValidationCode.LOCODE)] + [MaxLength(5)] public string PortOfDischarge { get; set; } + [ShowReport] + [MaxLength(255)] public string Remarks { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/MDH.cs b/nsw/Source/bsmd.database/MDH.cs index 1e43643a..e53650ff 100644 --- a/nsw/Source/bsmd.database/MDH.cs +++ b/nsw/Source/bsmd.database/MDH.cs @@ -44,85 +44,113 @@ namespace bsmd.database [Validation1(ValidationCode.NOT_NULL)] [LookupName("MDH.ValidSanitaryControlExemptionOrCertificateOnBoard")] public bool? MDHSimplification { get; set; } + [ShowReport] [Validation1(ValidationCode.LOCODE_GER)] [LookupName("MDH.PlaceOfIssue")] + [MaxLength(5)] public string PortOfCallWhereCompleteMDHNotified { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("MDH.DateOfIssue")] public bool? NonAccidentalDeathsDuringVoyage { get; set; } + [ShowReport] [LookupName("MDH.NonAccidentialDeathsDuringVoyageCount")] public int? NonAccidentalDeathsDuringVoyageCount { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("MDH.SuspisionInfectiousNature")] public bool? SuspisionInfectiousNature { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("MDH.NumberOfIllPersonsHigherThanExpected")] public bool? NumberOfIllPersonsHigherThanExpected { get; set; } + [ShowReport] [LookupName("MDH.NumberOfIllPersons")] public int? NumberOfIllPersons { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("MDH.SickPersonsOnBoard")] public bool? SickPersonsOnBoard { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("MDH.MedicalConsulted")] public bool? MedicalConsulted { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("MDH.AwareOfConditionsForFurtherInfections")] public bool? AwareOfFurtherInfections { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("MDH.SanitaryMeasuresApplied")] public bool? SanitaryMeasuresApplied { get; set; } + [ShowReport] [LookupName("MDH.SanitaryMeasuresType_1")] // TODO: NSW 3.0: wird ein Array + [MaxLength(100)] public string SanitaryMeasuresType { get; set; } + [ShowReport] [LookupName("MDH.SanitaryMeasuresLocation_1")] + [MaxLength(100)] public string SanitaryMeasuresLocation { get; set; } [ShowReport] [LookupName("MDH.SanitaryMeasuresDate_1")] public DateTime? SanitaryMeasuresDate { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("MDH.StowawaysDetected")] public bool? StowawaysDetected { get; set; } + [ShowReport] [LookupName("MDH.StowawaysJoiningLocation_1")] // TODO: NSW 3.0: wird ein Array + [MaxLength(100)] public string StowawaysJoiningLocation { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("MDH.SickAnimalOrPetOnBoard")] public bool? SickAnimalOrPetOnBoard { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("MDH.ValidSanitaryControlExemptionOrCertificateOnBoard")] public bool? ValidSanitaryControlExemptionOrCertificateOnBoard { get; set; } + [ShowReport] [LookupName("MDH.PlaceOfIssue")] + [MaxLength(100)] public string PlaceOfIssue { get; set; } + [ShowReport] [LookupName("MDH.DateOfIssue")] public DateTime? DateOfIssue { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("SanitaryControlReinspectionRequired")] public bool? SanitaryControlReinspectionRequired { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("MDH.InfectedAreaVisited")] public bool? InfectedAreaVisited { get; set; } + [ShowReport] [LookupName("MDH.InfectedAreaPort_1")] // TODO: NSW 3.0: wird ein Array + [MaxLength(100)] public string InfectedAreaPort { get; set; } + [ShowReport] [LookupName("MDH.InfectedAreaDate_1")] public DateTime? InfectedAreaDate { get; set; } diff --git a/nsw/Source/bsmd.database/MessageCore.cs b/nsw/Source/bsmd.database/MessageCore.cs index fe424ae8..92f5eca5 100644 --- a/nsw/Source/bsmd.database/MessageCore.cs +++ b/nsw/Source/bsmd.database/MessageCore.cs @@ -55,16 +55,22 @@ namespace bsmd.database #region Properties + [MaxLength(25)] public string VisitId { get; set; } + [MaxLength(25)] public string TransitId { get; set; } + [MaxLength(7)] public string IMO { get; set; } + [MaxLength(8)] public string ENI { get; set; } + [MaxLength(5)] public string PoC { get; set; } + [MaxLength(50)] public string Portname { get; set; } public DateTime? ETA { get; set; } @@ -83,10 +89,13 @@ namespace bsmd.database public Guid? HerbergFormTemplateGuid { get; set; } + [MaxLength(50)] public string HerbergReportType { get; set; } + [MaxLength(255)] public string HerbergEmailContactReportingVessel { get; set; } + [MaxLength(255)] public string HerbergEmail24HrsContact { get; set; } public DateTime? HerbergRevDate { get; set; } @@ -97,6 +106,7 @@ namespace bsmd.database public ReportStatusEnum ReportStatus { get; set; } + [MaxLength(50)] public string SietasSheetVersion { get; set; } public Guid? DefaultReportingPartyId { get; set; } diff --git a/nsw/Source/bsmd.database/NAME.cs b/nsw/Source/bsmd.database/NAME.cs index c5355989..439d6ef6 100644 --- a/nsw/Source/bsmd.database/NAME.cs +++ b/nsw/Source/bsmd.database/NAME.cs @@ -27,6 +27,7 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("NAME.NameOfMaster")] + [MaxLength(100)] public string NameOfMaster { get; set; } #endregion diff --git a/nsw/Source/bsmd.database/NOA_NOD.cs b/nsw/Source/bsmd.database/NOA_NOD.cs index 5411e1c0..1165eaff 100644 --- a/nsw/Source/bsmd.database/NOA_NOD.cs +++ b/nsw/Source/bsmd.database/NOA_NOD.cs @@ -29,25 +29,35 @@ namespace bsmd.database [ShowReport] [Validation1(ValidationCode.NOT_NULL)] public DateTime? ETAToPortOfCall { get; set; } + [ShowReport] [Validation1(ValidationCode.NOT_NULL)] public DateTime? ETDFromPortOfCall { get; set; } + [Validation1(ValidationCode.NOT_NULL)] public List CallPurposes { get { return this.callPurposes; } } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] public DateTime? ETAToKielCanal { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] public DateTime? ETDFromKielCanal { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(5)] public string LastPort { get; set; } + [ShowReport] public DateTime? ETDFromLastPort { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(5)] public string NextPort { get; set; } + [ShowReport] public DateTime? ETAToNextPort { get; set; } diff --git a/nsw/Source/bsmd.database/PAS.cs b/nsw/Source/bsmd.database/PAS.cs index 9ce9ec9a..0b68e85d 100644 --- a/nsw/Source/bsmd.database/PAS.cs +++ b/nsw/Source/bsmd.database/PAS.cs @@ -23,19 +23,26 @@ namespace bsmd.database } #region Properties + [ShowReport] [ReportDisplayName("Last name")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string PassengerLastName { get; set; } + [ShowReport] [ReportDisplayName("First name")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string PassengerFirstName { get; set; } + [ShowReport] [ReportDisplayName("Place of birth")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string PassengerPlaceOfBirth { get; set; } + [Validation(ValidationCode.NOT_NULL)] public DateTime? PassengerDateOfBirth { get; set; } @@ -59,6 +66,7 @@ namespace bsmd.database [ShowReport] [ReportDisplayName("Nationality")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(2)] public string PassengerNationality { get; set; } [Validation(ValidationCode.NOT_NULL)] @@ -71,18 +79,26 @@ namespace bsmd.database [ShowReport] [ReportDisplayName("Identity document id")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string PassengerIdentityDocumentId { get; set; } + [ShowReport] [ReportDisplayName("Visa number")] + [MaxLength(100)] public string PassengerVisaNumber { get; set; } + [ShowReport] [ReportDisplayName("Port of embarkation")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(5)] public string PassengerPortOfEmbarkation { get; set; } + [ShowReport] [ReportDisplayName("Port of disembarkation")] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(5)] public string PassengerPortOfDisembarkation { get; set; } + [ShowReport] [ReportDisplayName("In transit")] [Validation(ValidationCode.NOT_NULL)] diff --git a/nsw/Source/bsmd.database/PRE72H.cs b/nsw/Source/bsmd.database/PRE72H.cs index ff4eab86..9ecd6d88 100644 --- a/nsw/Source/bsmd.database/PRE72H.cs +++ b/nsw/Source/bsmd.database/PRE72H.cs @@ -28,27 +28,38 @@ namespace bsmd.database [Validation(ValidationCode.NOT_NULL)] [LookupName("PRE72H.Tanker")] public bool? Tanker { get; set; } + [ShowReport] public byte? TankerHullConfiguration { get; set; } + [ShowReport] public byte? ConditionCargoBallastTanks { get; set; } + [ShowReport] [LookupName("PRE72H.NaturOfCargo")] + [MaxLength(100)] public string NatureOfCargo { get; set; } + [ShowReport] [LookupName("PRE72H.VolumeOfCargo_TNE")] public double? VolumeOfCargo { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("PRE72H.PlannedOperations")] + [MaxLength(100)] public string PlannedOperations { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("PRE72H.PlannedWorks")] + [MaxLength(255)] public string PlannedWorks { get; set; } + [ShowReport] [LookupName("PRE72H.DateOfLastExpandedInspection")] public DateTime? DateOfLastExpandedInspection { get; set; } + [ShowReport] [Validation(ValidationCode.DOUBLE_GT_ZERO)] [LookupName("PRE72H.PlannedPeriodOfStay_HUR")] diff --git a/nsw/Source/bsmd.database/PortArea.cs b/nsw/Source/bsmd.database/PortArea.cs index 2d198a7d..94e59f3a 100644 --- a/nsw/Source/bsmd.database/PortArea.cs +++ b/nsw/Source/bsmd.database/PortArea.cs @@ -14,14 +14,19 @@ namespace bsmd.database #region Properties + [MaxLength(10)] public string Country { get; set; } + [MaxLength(5)] public string Locode { get; set; } + [MaxLength(255)] public string Port { get; set; } + [MaxLength(10)] public string Code { get; set; } + [MaxLength(255)] public string Name { get; set; } #endregion diff --git a/nsw/Source/bsmd.database/PortOfCallLast30Days.cs b/nsw/Source/bsmd.database/PortOfCallLast30Days.cs index d0274102..de96e4db 100644 --- a/nsw/Source/bsmd.database/PortOfCallLast30Days.cs +++ b/nsw/Source/bsmd.database/PortOfCallLast30Days.cs @@ -30,11 +30,14 @@ namespace bsmd.database public List CrewJoinedShip { get { return this.poc30Crew; } } [ShowReport] - [Validation2(ValidationCode.LOCODE)] + [Validation2(ValidationCode.LOCODE)] + [MaxLength(5)] public string PortOfCallLast30DaysLocode { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] public DateTime? PortOfCallLast30DaysDateOfDeparture { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] public bool? PortOfCallLast30DaysCrewMembersJoined { get; set; } diff --git a/nsw/Source/bsmd.database/PortOfCallLast30DaysCrewJoinedShip.cs b/nsw/Source/bsmd.database/PortOfCallLast30DaysCrewJoinedShip.cs index c30ede1a..84b8312b 100644 --- a/nsw/Source/bsmd.database/PortOfCallLast30DaysCrewJoinedShip.cs +++ b/nsw/Source/bsmd.database/PortOfCallLast30DaysCrewJoinedShip.cs @@ -25,8 +25,10 @@ namespace bsmd.database #region Properties public PortOfCallLast30Days PortOfCallLast30Days { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] + [MaxLength(255)] public string PortOfCallLast30DaysCrewJoinedShipName { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/PortOfItinerary.cs b/nsw/Source/bsmd.database/PortOfItinerary.cs index 08e524b1..16060793 100644 --- a/nsw/Source/bsmd.database/PortOfItinerary.cs +++ b/nsw/Source/bsmd.database/PortOfItinerary.cs @@ -25,9 +25,12 @@ namespace bsmd.database #region Properties public BPOL BPOL { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string PortOfItineraryName { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] public DateTime? PortOfItineraryETA { get; set; } diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index 3fe8b100..65d99177 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs @@ -2,6 +2,6 @@ [assembly: AssemblyCompany("Informatikbüro Daniel Schick")] [assembly: AssemblyProduct("BSMD NSW interface")] -[assembly: AssemblyInformationalVersion("3.1.6")] +[assembly: AssemblyInformationalVersion("3.2.0")] [assembly: AssemblyCopyright("Copyright © 2014-2016 Informatikbüro Daniel Schick. All rights reserved.")] [assembly: AssemblyTrademark("")] \ No newline at end of file diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs index 19bb04ac..8ee99736 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("3.1.6.*")] +[assembly: AssemblyVersion("3.2.0.*")] diff --git a/nsw/Source/bsmd.database/ReportingParty.cs b/nsw/Source/bsmd.database/ReportingParty.cs index 8c0afa6d..b3447eeb 100644 --- a/nsw/Source/bsmd.database/ReportingParty.cs +++ b/nsw/Source/bsmd.database/ReportingParty.cs @@ -20,24 +20,34 @@ namespace bsmd.database #region Properties + [MaxLength(100)] public string Name { get; set; } + [MaxLength(100)] public string StreetAndNumber { get; set; } + [MaxLength(25)] public string PostalCode { get; set; } + [MaxLength(100)] public string City { get; set; } + [MaxLength(100)] public string Country { get; set; } + [MaxLength(100)] public string LastName { get; set; } + [MaxLength(100)] public string FirstName { get; set; } + [MaxLength(100)] public string Phone { get; set; } + [MaxLength(100)] public string Fax { get; set; } + [MaxLength(100)] public string EMail { get; set; } public ReportingPartyTypeEnum? ReportingPartyType { get; set; } diff --git a/nsw/Source/bsmd.database/SEC.cs b/nsw/Source/bsmd.database/SEC.cs index 628e8bb7..ede5a286 100644 --- a/nsw/Source/bsmd.database/SEC.cs +++ b/nsw/Source/bsmd.database/SEC.cs @@ -27,44 +27,62 @@ namespace bsmd.database } #region Properties + [ShowReport] [Validation1(ValidationCode.NOT_NULL)] public bool? SECSimplification { get; set; } + [ShowReport] [Validation1(ValidationCode.LOCODE_GER)] + [MaxLength(5)] public string PortOfCallWhereCompleteSECNotified { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("SEC.CSOLastName")] + [MaxLength(100)] public string CSOLastName { get; set; } + [ShowReport] + [MaxLength(100)] public string CSOFirstName { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("SEC.CSOPhone")] + [MaxLength(100)] public string CSOPhone { get; set; } + [ShowReport] + [MaxLength(100)] public string CSOFax { get; set; } + [ShowReport] + [MaxLength(100)] public string CSOEMail { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("SEC.ValidISSCOnBoard")] public bool? ValidISSCOnBoard { get; set; } + [ShowReport] [LookupName("SEC.ReasonsForNoValidISSC")] + [MaxLength(255)] public string ReasonsForNoValidISSC { get; set; } + [Validation2(ValidationCode.NOT_NULL)] [LookupName("SEC.ISSCType")] public byte? ISSCType { get; set; } + [ShowReport] [ReportDisplayName("ISSC type")] public string ISSCTypeDisplay { get { return Util.GetISSCTypeDisplay(this.ISSCType); } } [Validation2(ValidationCode.NOT_NULL)] [LookupName("SEC.ISSCIssuerType")] - public byte? ISSCIssuerType { get; set; } + [ShowReport] [ReportDisplayName("ISSC issuer type")] public string ISSCIssuerTypeDisplay { get { return Util.GetISSCIssuerTypeDisplay(this.ISSCIssuerType); } } @@ -72,21 +90,28 @@ namespace bsmd.database [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("SEC.ISSCIssuerName")] + [MaxLength(100)] public string ISSCIssuerName { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("SEC.ISSCDateOfExpiration")] public DateTime? ISSCDateOfExpiration { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("SEC.ApprovedSecurityPlanOnBoard")] public bool? ApprovedSecurityPlanOnBoard { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("SEC.CurrentShipSecurityLevel")] public byte? CurrentShipSecurityLevel { get; set; } + [ShowReport] + [MaxLength(100)] public string PortFacilityOfArrival { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("SEC.GeneralDescriptionOfCargo")] diff --git a/nsw/Source/bsmd.database/SERV.cs b/nsw/Source/bsmd.database/SERV.cs index 0109fec3..b32b963a 100644 --- a/nsw/Source/bsmd.database/SERV.cs +++ b/nsw/Source/bsmd.database/SERV.cs @@ -23,15 +23,21 @@ namespace bsmd.database } #region Properties + [ShowReport] + [MaxLength(100)] public string ServiceName { get; set; } + [ShowReport] [Validation1(ValidationCode.NOT_NULL)] [LookupName("SERV.ServiceBeneficiary")] + [MaxLength(100)] public string ServiceBeneficiary { get; set; } + [ShowReport] [Validation1(ValidationCode.NOT_NULL)] [LookupName("SERV.ServiceInvoiceRecipient")] + [MaxLength(100)] public string ServiceInvoiceRecipient { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/STAT.cs b/nsw/Source/bsmd.database/STAT.cs index 8e8f1e91..294d34d5 100644 --- a/nsw/Source/bsmd.database/STAT.cs +++ b/nsw/Source/bsmd.database/STAT.cs @@ -27,21 +27,25 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("STAT.ShipName")] + [MaxLength(100)] public string ShipName { get; set; } [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("STAT.CallSign")] + [MaxLength(50)] public string CallSign { get; set; } [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("STAT.MMSINumber")] + [MaxLength(50)] public string MMSINumber { get; set; } [ShowReport] [Validation(ValidationCode.FLAG_CODE)] [LookupName("STAT.Flag")] + [MaxLength(2)] public string Flag { get; set; } [ShowReport] @@ -62,15 +66,18 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.LOCODE)] [LookupName("STAT.PortOfRegistry")] + [MaxLength(5)] public string PortOfRegistry { get; set; } [ShowReport] + [MaxLength(100)] public string InmarsatCallNumber { get; set; } /// /// UNECE Rec.19 Code (http://www.unece.org/fileadmin/DAM/cefact/recommendations/rec19/rec19_ecetrd138.pdf) /// [Validation(ValidationCode.NOT_NULL)] + [MaxLength(1)] public string TransportMode { get; set; } [ShowReport] @@ -90,27 +97,34 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("STAT.ShipType")] + [MaxLength(5)] public string ShipType { get; set; } [ShowReport] [LookupName("STAT.ISMCompanyName")] + [MaxLength(100)] public string ISMCompanyName { get; set; } [ShowReport] [Validation(ValidationCode.STRING_EXACT_LEN, 7)] [LookupName("STAT.ISMCompanyId")] + [MaxLength(10)] public string ISMCompanyId { get; set; } [ShowReport] + [MaxLength(100)] public string ISMCompanyStreetAndNumber { get; set; } [ShowReport] + [MaxLength(24)] public string ISMCompanyPostalCode { get; set; } [ShowReport] + [MaxLength(100)] public string ISMCompanyCity { get; set; } [ShowReport] + [MaxLength(100)] public string ISMCompanyCountry { get; set; } public override string Subtitle diff --git a/nsw/Source/bsmd.database/SanitaryMeasuresDetail.cs b/nsw/Source/bsmd.database/SanitaryMeasuresDetail.cs index 8428fa9a..5002d20c 100644 --- a/nsw/Source/bsmd.database/SanitaryMeasuresDetail.cs +++ b/nsw/Source/bsmd.database/SanitaryMeasuresDetail.cs @@ -28,9 +28,11 @@ namespace bsmd.database public MDH MDH { get; set; } [ShowReport] + [MaxLength(255)] public string SanitaryMeasuresType { get; set; } [ShowReport] + [MaxLength(255)] public string SanitaryMeasuresLocation { get; set; } [ShowReport] diff --git a/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs b/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs index 2e601226..c543cad3 100644 --- a/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs +++ b/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs @@ -25,24 +25,36 @@ namespace bsmd.database #region Properties public SEC SEC { get; set; } + [ShowReport] + [MaxLength(255)] public string ShipToShipActivityLocationName { get; set; } + [ShowReport] + [MaxLength(5)] public string ShipToShipActivityLocationLoCode { get; set; } + [ShowReport] public int? ShipToShipActivityLocationCoordinatesLatitude { get; set; } + [ShowReport] public int? ShipToShipActivityLocationCoordinatesLongitude { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] public DateTime? ShipToShipActivityDateFrom { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] public DateTime? ShipToShipActivityDateTo { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] + [MaxLength(255)] public string ShipToShipActivityType { get; set; } + [ShowReport] + [MaxLength(255)] public string ShipToShipActivitySecurityMattersToReport { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/StowawaysJoiningLocation.cs b/nsw/Source/bsmd.database/StowawaysJoiningLocation.cs index 2c190b35..649f3eb8 100644 --- a/nsw/Source/bsmd.database/StowawaysJoiningLocation.cs +++ b/nsw/Source/bsmd.database/StowawaysJoiningLocation.cs @@ -28,6 +28,7 @@ namespace bsmd.database public MDH MDH { get; set; } [ShowReport] + [MaxLength(255)] public string StowawayJoiningLocation { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/SubsidiaryRisks.cs b/nsw/Source/bsmd.database/SubsidiaryRisks.cs index 241d1652..00d9239f 100644 --- a/nsw/Source/bsmd.database/SubsidiaryRisks.cs +++ b/nsw/Source/bsmd.database/SubsidiaryRisks.cs @@ -27,6 +27,7 @@ namespace bsmd.database public IMDGPosition IMDGPosition { get; set; } [ShowReport] + [MaxLength(11)] public string SubsidiaryRisk { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/TOWA.cs b/nsw/Source/bsmd.database/TOWA.cs index 3a60ae70..8bcca71f 100644 --- a/nsw/Source/bsmd.database/TOWA.cs +++ b/nsw/Source/bsmd.database/TOWA.cs @@ -26,35 +26,45 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("TOWA.TowageOnArrivalName")] + [MaxLength(100)] public string TowageOnArrivalName { get; set; } [ShowReport] [Validation(ValidationCode.FLAG_CODE)] [LookupName("TOWA.TowageOnArrivalFlag")] + [MaxLength(2)] public string TowageOnArrivalFlag { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnArrivalOperatorCompanyName { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnArrivalOperatorStreetNameAndNumber { get; set; } [ShowReport] + [MaxLength(24)] public string TowageOnArrivalOperatorPostalCode { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnArrivalOperatorCity { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnArrivalOperatorCountry { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnArrivalOperatorPhone { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnArrivalOperatorFax { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnArrivalOperatorEmail { get; set; } [ShowReport] @@ -75,6 +85,7 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("TOWA.TowageOnArrivalPurposeOfCall")] + [MaxLength(100)] public string TowageOnArrivalPurposeOfCall { get; set; } [ShowReport] @@ -83,6 +94,7 @@ namespace bsmd.database public double? TowageOnArrivalDraught_DMT { get; set; } [ShowReport] + [MaxLength(255)] public string TowageOnArrivalRemarks { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/TOWD.cs b/nsw/Source/bsmd.database/TOWD.cs index 57799e59..40aeeb76 100644 --- a/nsw/Source/bsmd.database/TOWD.cs +++ b/nsw/Source/bsmd.database/TOWD.cs @@ -27,34 +27,44 @@ namespace bsmd.database [ShowReport] [Validation(ValidationCode.NOT_NULL)] [LookupName("TOWD.TowageOnDepartureName")] + [MaxLength(100)] public string TowageOnDepartureName { get; set; } [ShowReport] [LookupName("TOWD.TowageOnDepartureFlag")] + [MaxLength(2)] public string TowageOnDepartureFlag { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnDepartureOperatorCompanyName { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnDepartureOperatorStreetNameAndNumber { get; set; } [ShowReport] + [MaxLength(24)] public string TowageOnDepartureOperatorPostalCode { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnDepartureOperatorCity { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnDepartureOperatorCountry { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnDepartureOperatorPhone { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnDepartureOperatorFax { get; set; } [ShowReport] + [MaxLength(100)] public string TowageOnDepartureOperatorEmail { get; set; } [ShowReport] @@ -71,6 +81,7 @@ namespace bsmd.database public double? TowageOnDepartureDraught_DMT { get; set; } [ShowReport] + [MaxLength(255)] public string TowageOnDepartureRemarks { get; set; } public string Identifier { get; set; } diff --git a/nsw/Source/bsmd.database/ValidationAttribute.cs b/nsw/Source/bsmd.database/ValidationAttribute.cs index 74bc3556..3da51525 100644 --- a/nsw/Source/bsmd.database/ValidationAttribute.cs +++ b/nsw/Source/bsmd.database/ValidationAttribute.cs @@ -110,7 +110,7 @@ namespace bsmd.database { private ValidationCode validationCode; - + public Validation1Attribute(ValidationCode code) { @@ -131,7 +131,7 @@ namespace bsmd.database [AttributeUsage(AttributeTargets.Property)] public class Validation2Attribute : Attribute { - private ValidationCode validationCode; + private ValidationCode validationCode; public Validation2Attribute(ValidationCode code) { @@ -147,4 +147,25 @@ namespace bsmd.database #endregion + #region Überprüfung der maximalen String-Länge + + [AttributeUsage(AttributeTargets.Property)] + public class MaxLengthAttribute : Attribute + { + private int maxLength; + + public MaxLengthAttribute(int length) + { + this.maxLength = length; + } + + public int MaxLength + { + get { return this.maxLength; } + set { this.maxLength = value; } + } + } + + #endregion + } diff --git a/nsw/Source/bsmd.database/WAS.cs b/nsw/Source/bsmd.database/WAS.cs index 57ab110b..8754a345 100644 --- a/nsw/Source/bsmd.database/WAS.cs +++ b/nsw/Source/bsmd.database/WAS.cs @@ -27,19 +27,25 @@ namespace bsmd.database } #region Properties + [ShowReport] public bool? WasteDisposalValidExemption { get; set; } + [ShowReport] - [Validation2(ValidationCode.NOT_NULL)] + [Validation2(ValidationCode.NOT_NULL)] + [MaxLength(5)] public string LastWasteDisposalPort { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("WAS.ConfirmationOfCorrectness")] public bool? ConfirmationOfCorrectness { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] [LookupName("WAS.LastWasteDisposalDate")] public DateTime? LastWasteDisposalDate { get; set; } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] public byte? WasteDisposalDelivery { get; set; } diff --git a/nsw/Source/bsmd.database/Waste.cs b/nsw/Source/bsmd.database/Waste.cs index 00ddb049..7c88dcd3 100644 --- a/nsw/Source/bsmd.database/Waste.cs +++ b/nsw/Source/bsmd.database/Waste.cs @@ -50,22 +50,29 @@ namespace bsmd.database [Validation(ValidationCode.NOT_NULL)] public byte? WasteType { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] + [MaxLength(100)] public string WasteDescription { get; set; } + [ShowReport] [Validation(ValidationCode.NOT_NULL)] public double? WasteDisposalAmount_MTQ { get; set; } + [ShowReport] public double? WasteCapacity_MTQ { get; set; } + [ShowReport] public double? WasteAmountRetained_MTQ { get; set; } + [ShowReport] + [MaxLength(5)] public string WasteDisposalPort { get; set; } + [ShowReport] public double? WasteAmountGeneratedTillNextPort_MTQ { get; set; } - public string Identifier { get; set; } #endregion diff --git a/nsw/Source/bsmd.database/WasteDisposalServiceProvider.cs b/nsw/Source/bsmd.database/WasteDisposalServiceProvider.cs index ec16aea3..c3a71be7 100644 --- a/nsw/Source/bsmd.database/WasteDisposalServiceProvider.cs +++ b/nsw/Source/bsmd.database/WasteDisposalServiceProvider.cs @@ -25,8 +25,11 @@ namespace bsmd.database #region Properties public WAS WAS { get; set; } + [ShowReport] + [MaxLength(100)] public string WasteDisposalServiceProviderName { get; set; } + [ShowReport] public byte? WasteDisposalDelivery { get; set; } diff --git a/nsw/Source/bsmd.email/Properties/Settings.Designer.cs b/nsw/Source/bsmd.email/Properties/Settings.Designer.cs index aa1f09b3..8a19806a 100644 --- a/nsw/Source/bsmd.email/Properties/Settings.Designer.cs +++ b/nsw/Source/bsmd.email/Properties/Settings.Designer.cs @@ -90,8 +90,7 @@ namespace bsmd.email.Properties { [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("\r\n\r\n nsw@textbausteine.net\r\n hollmann@bsmd.de\r\n")] + "tring>nsw@textbausteine.net\r\n")] public global::System.Collections.Specialized.StringCollection Recipient { get { return ((global::System.Collections.Specialized.StringCollection)(this["Recipient"])); diff --git a/nsw/Source/bsmd.email/Properties/Settings.settings b/nsw/Source/bsmd.email/Properties/Settings.settings index 1416d6a9..d9cd5437 100644 --- a/nsw/Source/bsmd.email/Properties/Settings.settings +++ b/nsw/Source/bsmd.email/Properties/Settings.settings @@ -27,7 +27,6 @@ <?xml version="1.0" encoding="utf-16"?> <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <string>nsw@textbausteine.net</string> - <string>hollmann@bsmd.de</string> </ArrayOfString> diff --git a/nsw/Source/bsmd.email/app.config b/nsw/Source/bsmd.email/app.config index 311af5f5..0995fee1 100644 --- a/nsw/Source/bsmd.email/app.config +++ b/nsw/Source/bsmd.email/app.config @@ -33,7 +33,6 @@ nsw@textbausteine.net - hollmann@bsmd.de diff --git a/nsw/Source/misc/db.sqlite b/nsw/Source/misc/db.sqlite index a22133f4..60deaaf2 100644 Binary files a/nsw/Source/misc/db.sqlite and b/nsw/Source/misc/db.sqlite differ