private void NotifyErrorMsgToUsers(FlatFile _fileInfo, string validateMsd1Record) { var userName = _validateMsdData.GetUserName(_fileInfo); var userEmail = String.IsNullOrEmpty(userName) ? _settings.MaritimeHelpdeskEmailAddress : userName; var tokens = new Dictionary <string, dynamic>(); tokens.Add("filename", _fileInfo.FileName.Substring(0, _fileInfo.FileName.IndexOf('.') + 4)); tokens.Add("senderRef", _fileInfo.SendersRef); tokens.Add("senderId", _fileInfo.SenderId); tokens.Add("username", String.IsNullOrEmpty(userEmail) ? _settings.MaritimeHelpdeskEmailAddress : userEmail); _emailSender.SendEmail(_settings.MaritimeHelpdeskEmailAddress, "Error in file submitted", validateMsd1Record, tokens); if (!string.IsNullOrEmpty(userEmail)) { _emailSender.SendEmail(userEmail, "Error in file submitted", validateMsd1Record, tokens); } else { var useremails = _fileProcessService.GetAllUsers(_fileInfo.SenderId); foreach (var email in useremails) { _emailSender.SendEmail(email, "Error in file submitted", validateMsd1Record, tokens); } } }
private bool ValidateAndPopulateMsd1DataFromFlatFile(string record, string filename) { _msd1.UserName = _validateMsdData.GetUserName(_fileInfo); _msd1.DataSourceId = (int)DataSource.ASCII; _msd1.RecordRef = record.Substring(0, 8); var validateLinSenderId = string.IsNullOrEmpty(record.Substring(8, 6)) || record.Substring(8, 6).Trim().Length < 6 ? record.Substring(8, 6) + " is not a recognised code for shipping line. Replace it or contact the helpdesk for advice." : string.Empty; _msd1.LineSenderId = !string.IsNullOrEmpty(validateLinSenderId) ? string.Empty : record.Substring(8, 6); if (!string.IsNullOrEmpty(validateLinSenderId)) { recordErrors.AppendLine().AppendFormat(validateLinSenderId); } var validateAgentSenderId = string.IsNullOrEmpty(record.Substring(14, 6)) || record.Substring(14, 6).Trim().Length < 6 ? record.Substring(14, 6) + " is not a recognised code for shipping agent. Replace it or contact the helpdesk for advice." : string.Empty; _msd1.AgentSenderId = !string.IsNullOrEmpty(validateAgentSenderId) ? string.Empty : record.Substring(14, 6); if (!string.IsNullOrEmpty(validateAgentSenderId)) { recordErrors.AppendLine().AppendFormat(validateAgentSenderId); } var oprator = record.Substring(20, 6); UInt16 year = 0; var strYear = record.Substring(26, 4).Length < 4 ? string.Empty : record.Substring(26, 4); UInt16.TryParse(strYear, out year); _msd1.Year = year; var validateYear = string.IsNullOrEmpty(record.Substring(26, 4).Trim()) || record.Substring(26, 4).Trim().Length < 4 || _msd1.Year == 0 ? record.Substring(26, 4) + " is not a valid year. Please correct it." : string.Empty; if (!string.IsNullOrEmpty(validateYear)) { recordErrors.AppendLine().AppendFormat(validateYear); } UInt16 qtr = 0; var strQtr = record.Substring(30, 1).Length < 1 ? string.Empty : record.Substring(30, 1); UInt16.TryParse(strQtr, out qtr); _msd1.Quarter = qtr; var validateQuarter = string.IsNullOrEmpty(record.Substring(30, 1).Trim()) || record.Substring(30, 1).Length < 1 || _msd1.Quarter == 0 ? record.Substring(30, 1) + " is not a valid quarter. Please correct it." : string.Empty; if (!string.IsNullOrEmpty(validateQuarter)) { recordErrors.AppendLine().AppendFormat(validateQuarter); } var validateReportingPort = !_helperService.IsValidReportingPort(record.Substring(31, 5)) || record.Substring(31, 5).Length < 5 ? record.Substring(31, 5) + " is not a recognised code for reporting port. Enter a valid code or contact the helpdesk for advice." : string.Empty; _msd1.ReportingPort = !string.IsNullOrEmpty(validateReportingPort) ? string.Empty : record.Substring(31, 5); if (!string.IsNullOrEmpty(validateReportingPort)) { recordErrors.AppendLine().AppendFormat(validateReportingPort); } bool validShipOrImoOrCallSign = false; string errorMessageIMO = " is not a recognised IMO number. Enter a valid IMO number or a Call Sign or Flag of Vessel and Vessel Name or contact the helpdesk for further advice"; var validateImo = string.IsNullOrEmpty(record.Substring(36, 7).Trim()) || record.Substring(36, 7).Trim().Length < 7 ? record.Substring(36, 7) + errorMessageIMO : String.Empty; UInt32 imoNum = 0; if (string.IsNullOrEmpty(validateImo)) { var strImo = record.Substring(36, 7).Length < 7 ? string.Empty : record.Substring(36, 7); UInt32.TryParse(strImo, out imoNum); if (imoNum == 0) { validateImo = record.Substring(36, 7) + errorMessageIMO; } } var callSign = string.IsNullOrEmpty(record.Substring(43, 9).Trim()) || record.Substring(43, 9).Length < 9 ? string.Empty : record.Substring(43, 9); var flagOfVessel = string.IsNullOrEmpty(record.Substring(52, 3).Trim()) || record.Substring(52, 3).Length < 3 ? string.Empty : record.Substring(52, 3); if (!flagOfVessel.Trim().All(Char.IsLetter)) { flagOfVessel = string.Empty; } var shipName = string.Empty; if (record.Length >= 137) { shipName = string.IsNullOrEmpty(record.Substring(102, 35).Trim()) || record.Substring(102, 35).Length < 35 ? string.Empty : record.Substring(102, 35); } validShipOrImoOrCallSign = string.IsNullOrEmpty(validateImo) || !string.IsNullOrEmpty(callSign) || (!string.IsNullOrEmpty(flagOfVessel) && !string.IsNullOrEmpty(shipName)); if (!validShipOrImoOrCallSign) { recordErrors.AppendLine().AppendFormat(validateImo); } _msd1.Imo = imoNum; _msd1.ShipName = shipName.Trim(); _msd1.FlagCode = flagOfVessel.Trim(); _msd1.Callsign = callSign.Trim(); _msd1.IsInbound = record.Substring(55, 1) == "1"; var validateVoyageDirection = record.Substring(55, 1).Equals("1") || record.Substring(55, 1).Equals("2") ? string.Empty : record.Substring(55, 1) + " is not a valid value for Voyage Direction. Correct it to either 1 for inwards or 2 for outwards."; if (!string.IsNullOrEmpty(validateVoyageDirection)) { recordErrors.AppendLine().AppendFormat(validateVoyageDirection); } var validateNumVoyages = string.IsNullOrEmpty(record.Substring(56, 6).Trim()) || record.Substring(56, 6).Length < 6 ? record.Substring(56, 6) + " is not a valid number of voyages. Enter a number under 1000 or contact the helpdesk for advice." : string.Empty; if (!string.IsNullOrEmpty(validateNumVoyages)) { recordErrors.AppendLine().AppendFormat(validateNumVoyages); } UInt32 numVoyages = 0; var strNumVoyages = record.Substring(56, 6).Length < 6 ? string.Empty : record.Substring(56, 6); UInt32.TryParse(strNumVoyages, out numVoyages); _msd1.NumVoyages = numVoyages; var validateAssociatedPort = !_helperService.IsValidPort(record.Substring(62, 5)) || record.Substring(62, 5).Length < 5 ? record.Substring(62, 5) + " is not a recognised code for port of load/discharge. Enter a valid code or contact the helpdesk for advice." : string.Empty; _msd1.AssociatedPort = !string.IsNullOrEmpty(validateAssociatedPort) ? string.Empty : record.Substring(62, 5); if (!string.IsNullOrEmpty(validateAssociatedPort)) { recordErrors.AppendLine().AppendFormat(validateAssociatedPort); } var validatePorts = !_msd1.ReportingPort.Equals(_msd1.AssociatedPort) ? string.Empty : "Port of load/discharge is the same as the reporting port. Please correct or contact the helpdesk for advice."; if (!string.IsNullOrEmpty(validatePorts)) { recordErrors.AppendLine().AppendFormat(validatePorts); } _msd1.CreatedDate = DateTime.Now; _msd1.ModifiedDate = DateTime.Now; return(string.IsNullOrEmpty(recordErrors.ToString().Trim()) ? true : false); }
private void ValidateAndPopulateMsd3DataFromFlatFile(string[] msd3Elements) { _msd3.LastUpdatedBy = _validateMsdData.GetUserName(_fileInfo); _msd3.CreatedBy = _validateMsdData.GetUserName(_fileInfo); _msd3.DataSourceId = (int)DataSource.GESMES; _msd3.CreatedDate = DateTime.Now; _msd3.ModifiedDate = DateTime.Now; _msd3.SenderId = _fileInfo.SenderId; msd3Elements[0] = msd3Elements[0].Replace("ARR", "").Replace("++", "").Replace(" ", ""); var validateReportingPort = !_helperService.IsValidMsd3Port(msd3Elements[0]) || string.IsNullOrEmpty(msd3Elements[0]) ? msd3Elements[0] + " is not a recognised code for reporting port. " + " Enter a valid code or contact the helpdesk for advice." : String.Empty; _msd3.ReportingPort = !string.IsNullOrEmpty(validateReportingPort) ? string.Empty : msd3Elements[0]; if (!string.IsNullOrEmpty(validateReportingPort)) { recordErrors.AppendLine().AppendFormat(validateReportingPort); } UInt16 year = 0; var strYear = string.IsNullOrEmpty(msd3Elements[1].Trim()) || msd3Elements[1].Trim().Length < 4 ? string.Empty : msd3Elements[1]; UInt16.TryParse(strYear, out year); _msd3.Year = year; var validateYear = _msd3.Year.ToString().Length < 4 || _msd3.Year == 0 ? msd3Elements[1].Trim() + " is not a valid year. Please correct it." : String.Empty; if (!string.IsNullOrEmpty(validateYear)) { recordErrors.AppendLine().AppendFormat(validateYear); } UInt16 qtr = 0; var strQtr = string.IsNullOrEmpty(msd3Elements[2].Trim()) || msd3Elements[2].Trim().Length < 1 ? string.Empty : msd3Elements[2]; UInt16.TryParse(strQtr, out qtr); _msd3.Quarter = qtr; var validateQuarter = _msd3.Quarter == 0 ? msd3Elements[2].Trim() + " is not a valid quarter. Please correct it." : String.Empty; if (!string.IsNullOrEmpty(validateQuarter)) { recordErrors.AppendLine().AppendFormat(validateQuarter); } var validateYearAndQtrSubmission = _validateMsdData.ValidateYearAndQtrSubmission(_msd3.Year, _msd3.Quarter); if (!string.IsNullOrEmpty(validateYearAndQtrSubmission)) { recordErrors.AppendLine().AppendFormat(validateYearAndQtrSubmission); } _msd3.FileRefId = null; }
private bool ValidateAndPopulateMsd3DataFromFlatFile(string record, string filename) { _msd3.DataSourceId = (int)DataSource.ASCII; _msd3.SenderId = _fileInfo.SenderId; var validateReportingPort = !_helperService.IsValidMsd3Port(record.Substring(8, 5)) || record.Substring(8, 5).Length < 5 ? record.Substring(8, 5) + " is not a recognised code for reporting port. " + " Enter a valid code or contact the helpdesk for advice." : String.Empty; _msd3.ReportingPort = !string.IsNullOrEmpty(validateReportingPort) ? string.Empty : record.Substring(8, 5); if (!string.IsNullOrEmpty(validateReportingPort)) { recordErrors.AppendLine().AppendFormat(validateReportingPort); } UInt16 year = 0; var strYear = record.Substring(13, 4).Length < 4 ? string.Empty : record.Substring(13, 4); UInt16.TryParse(strYear, out year); _msd3.Year = year; var validateYear = string.IsNullOrEmpty(record.Substring(13, 4).Trim()) || record.Substring(13, 4).Trim().Length < 4 || _msd3.Year == 0 ? record.Substring(13, 4) + " is not a valid year. Please correct it." : String.Empty; if (!string.IsNullOrEmpty(validateYear)) { recordErrors.AppendLine().AppendFormat(validateYear); } UInt16 qtr = 0; var strQtr = string.IsNullOrEmpty(record.Substring(17, 1).Trim()) ? string.Empty : record.Substring(17, 1); UInt16.TryParse(strQtr, out qtr); _msd3.Quarter = qtr; var validateQuarter = string.IsNullOrEmpty(record.Substring(17, 1).Trim()) || _msd3.Quarter == 0 ? record.Substring(17, 1) + " is not a valid quarter. Please correct it." : String.Empty; if (!string.IsNullOrEmpty(validateQuarter)) { recordErrors.AppendLine().AppendFormat(validateQuarter); } var validateYearAndQtrSubmission = _validateMsdData.ValidateYearAndQtrSubmission(_msd3.Year, _msd3.Quarter); if (!string.IsNullOrEmpty(validateYearAndQtrSubmission)) { recordErrors.AppendLine().AppendFormat(validateYearAndQtrSubmission); } _msd3.CreatedDate = DateTime.Now; _msd3.ModifiedDate = DateTime.Now; _msd3.CreatedBy = _validateMsdData.GetUserName(_fileInfo); _msd3.LastUpdatedBy = _validateMsdData.GetUserName(_fileInfo); return(string.IsNullOrEmpty(recordErrors.ToString().Trim())); }
private bool ValidateAndPopulateMsd2DataFromFlatFile(string record, string filename) { if (record.Length < 52) { recordErrors.AppendLine().AppendFormat('"' + record + '"' + " is not a valid record because it is missing some data"); } else { _msd2.DataSourceId = (int)DataSource.ASCII; _msd2.SenderId = _fileInfo.SenderId; var validateReportingPort = !_helperService.IsValidMsd2Port(record.Substring(8, 5)) || record.Substring(8, 5).Length < 5 ? record.Substring(8, 5) + " is not a recognised code for reporting port. " + " Enter a valid code or contact the helpdesk for advice." : String.Empty; _msd2.ReportingPort = !string.IsNullOrEmpty(validateReportingPort) ? string.Empty : record.Substring(8, 5); if (!string.IsNullOrEmpty(validateReportingPort)) { recordErrors.AppendLine().AppendFormat(validateReportingPort); } UInt16 year = 0; var strYear = record.Substring(13, 4).Length < 4 ? string.Empty : record.Substring(13, 4); UInt16.TryParse(strYear, out year); _msd2.Year = year; var validateYear = string.IsNullOrEmpty(record.Substring(13, 4).Trim()) || record.Substring(13, 4).Trim().Length < 4 || _msd2.Year == 0 ? record.Substring(13, 4) + " is not a valid year. Please correct it." : String.Empty; if (!string.IsNullOrEmpty(validateYear)) { recordErrors.AppendLine().AppendFormat(validateYear); } UInt16 qtr = 0; var strQtr = record.Substring(17, 1).Length < 1 ? string.Empty : record.Substring(17, 1); UInt16.TryParse(strQtr, out qtr); _msd2.Quarter = qtr; var validateQuarter = string.IsNullOrEmpty(record.Substring(17, 1).Trim()) || record.Substring(17, 1).Length < 1 || _msd2.Quarter == 0 ? record.Substring(30, 1) + " is not a valid quarter. Please correct it." : String.Empty; if (!string.IsNullOrEmpty(validateQuarter)) { recordErrors.AppendLine().AppendFormat(validateQuarter); } decimal grossWeightInWard = 0.0m; var strGrossWeightInward = record.Substring(18, 9).Length < 9 ? string.Empty : record.Substring(18, 9); Decimal.TryParse(strGrossWeightInward, out grossWeightInWard); _msd2.GrossWeightInward = grossWeightInWard; decimal grossWeightOutWard = 0.0m; var strGrossWeightOutward = record.Substring(27, 9).Length < 9 ? string.Empty : record.Substring(27, 9); Decimal.TryParse(strGrossWeightOutward, out grossWeightOutWard); _msd2.GrossWeightOutward = grossWeightOutWard; UInt32 totalUnitsInwards = 0; var strTotalUnitsInwards = record.Substring(36, 8).Length < 8 ? string.Empty : record.Substring(36, 8); UInt32.TryParse(strTotalUnitsInwards, out totalUnitsInwards); _msd2.TotalUnitsInward = totalUnitsInwards; UInt32 totalUnitsOutwards = 0; var strTotalUnitsOutwards = record.Substring(44, 8).Length < 8 ? string.Empty : record.Substring(44, 8); UInt32.TryParse(strTotalUnitsOutwards, out totalUnitsOutwards); _msd2.TotalUnitsOutward = totalUnitsOutwards; _msd2.PassengerVehiclesInward = 0; _msd2.PassengerVehiclesOutward = 0; var validateGrossWeights = _validateMsdData.ValidateMSD2InwardOutwadCargoWeight(_msd2); if (!string.IsNullOrEmpty(validateGrossWeights)) { recordErrors.AppendLine().AppendFormat(validateGrossWeights); } var validateYearAndQtrSubmission = _validateMsdData.ValidateYearAndQtrSubmission(_msd2.Year, _msd2.Quarter); if (!string.IsNullOrEmpty(validateYearAndQtrSubmission)) { recordErrors.AppendLine().AppendFormat(validateYearAndQtrSubmission); } _msd2.CreatedDate = DateTime.Now; _msd2.ModifiedDate = DateTime.Now; _msd2.CreatedBy = _validateMsdData.GetUserName(_fileInfo); _msd2.LastUpdatedBy = _validateMsdData.GetUserName(_fileInfo); } return(string.IsNullOrEmpty(recordErrors.ToString().Trim()) ? true : false); }
private void ValidateAndPopulateMsd2DataFromFlatFile(string[] msd2Elements) { _msd2.LastUpdatedBy = _validateMsdData.GetUserName(_fileInfo); _msd2.CreatedBy = _validateMsdData.GetUserName(_fileInfo); _msd2.DataSourceId = (int)DataSource.GESMES; _msd2.CreatedDate = DateTime.Now; _msd2.ModifiedDate = DateTime.Now; _msd2.SenderId = _fileInfo.SenderId; msd2Elements[0] = msd2Elements[0].Replace("ARR", "").Replace("++", ""); var validateReportingPort = !_helperService.IsValidMsd2Port(msd2Elements[0]) || msd2Elements[0].Length < 5 ? msd2Elements[0] + " is not a recognised code for reporting port. " + " Enter a valid code or contact the helpdesk for advice." : String.Empty; _msd2.ReportingPort = !string.IsNullOrEmpty(validateReportingPort) ? string.Empty : msd2Elements[0]; if (!string.IsNullOrEmpty(validateReportingPort)) { recordErrors.AppendLine().AppendFormat(validateReportingPort); } UInt16 year = 0; var strYear = string.IsNullOrEmpty(msd2Elements[1].Trim()) || msd2Elements[1].Trim().Length < 4 ? string.Empty : msd2Elements[1]; UInt16.TryParse(strYear, out year); _msd2.Year = year; var validateYear = _msd2.Year.ToString().Length < 4 || _msd2.Year == 0 ? msd2Elements[1].Trim() + " is not a valid year. Please correct it." : String.Empty; if (!string.IsNullOrEmpty(validateYear)) { recordErrors.AppendLine().AppendFormat(validateYear); } UInt16 qtr = 0; var strQtr = string.IsNullOrEmpty(msd2Elements[2].Trim()) || msd2Elements[2].Trim().Length < 1 ? string.Empty : msd2Elements[2]; UInt16.TryParse(strQtr, out qtr); _msd2.Quarter = qtr; var validateQuarter = _msd2.Quarter == 0 ? msd2Elements[2].Trim() + " is not a valid quarter. Please correct it." : String.Empty; if (!string.IsNullOrEmpty(validateQuarter)) { recordErrors.AppendLine().AppendFormat(validateQuarter); } decimal grossWeightInWard = 0.0m; var strGrossWeightInward = string.IsNullOrEmpty(msd2Elements[3]) ? string.Empty : msd2Elements[3]; Decimal.TryParse(strGrossWeightInward, out grossWeightInWard); _msd2.GrossWeightInward = grossWeightInWard; decimal grossWeightOutWard = 0.0m; var strGrossWeightOutward = string.IsNullOrEmpty(msd2Elements[4]) ? string.Empty : msd2Elements[4]; Decimal.TryParse(strGrossWeightOutward, out grossWeightOutWard); _msd2.GrossWeightOutward = grossWeightOutWard; UInt32 totalUnitsInwards = 0; var strTotalUnitsInwards = string.IsNullOrEmpty(msd2Elements[5]) ? string.Empty : msd2Elements[5]; UInt32.TryParse(strTotalUnitsInwards, out totalUnitsInwards); _msd2.TotalUnitsInward = totalUnitsInwards; UInt32 totalUnitsOutwards = 0; var strTotalUnitsOutwards = string.IsNullOrEmpty(msd2Elements[6]) ? string.Empty : msd2Elements[6]; UInt32.TryParse(strTotalUnitsOutwards, out totalUnitsOutwards); _msd2.TotalUnitsOutward = totalUnitsOutwards; _msd2.PassengerVehiclesInward = 0; _msd2.PassengerVehiclesOutward = 0; var validateGrossWeights = _validateMsdData.ValidateMSD2InwardOutwadCargoWeight(_msd2); if (!string.IsNullOrEmpty(validateGrossWeights)) { recordErrors.AppendLine().AppendFormat(validateGrossWeights); } var validateYearAndQtrSubmission = _validateMsdData.ValidateYearAndQtrSubmission(_msd2.Year, _msd2.Quarter); if (!string.IsNullOrEmpty(validateYearAndQtrSubmission)) { recordErrors.AppendLine().AppendFormat(validateYearAndQtrSubmission); } _msd2.FileRefId = null; }
private void ValidateAndPopulateMsd1DataFromFlatFile(string[] msd1Elements) { _msd1.UserName = _validateMsdData.GetUserName(_fileInfo); _msd1.DataSourceId = (int)DataSource.GESMES; _msd1.RecordRef = ""; var validateLinSenderId = msd1Elements[0].Length < 6 ? msd1Elements[0].Trim() + " is not a recognised code for shipping line. Replace it or contact the help-desk for advice." : String.Empty; _msd1.LineSenderId = !string.IsNullOrEmpty(validateLinSenderId) ? string.Empty : msd1Elements[0].ToString().Replace("ARR++", ""); if (!string.IsNullOrEmpty(validateLinSenderId)) { recordErrors.AppendLine().AppendFormat(validateLinSenderId); } var validateAgentSenderId = msd1Elements[1].Length < 6 ? msd1Elements[1].Trim() + " is not a recognised code for shipping agent. Replace it or contact the help-desk for advice." : String.Empty; _msd1.AgentSenderId = !string.IsNullOrEmpty(validateAgentSenderId) ? string.Empty : msd1Elements[1]; if (!string.IsNullOrEmpty(validateAgentSenderId)) { recordErrors.AppendLine().AppendFormat(validateAgentSenderId); } UInt16 year = 0; var strYear = string.IsNullOrEmpty(msd1Elements[3].Trim()) || msd1Elements[3].Trim().Length < 4 ? string.Empty : msd1Elements[3]; UInt16.TryParse(strYear, out year); _msd1.Year = year; var validateYear = _msd1.Year.ToString().Length < 4 || _msd1.Year == 0 ? msd1Elements[3].Trim() + " is not a valid year. Please correct it." : String.Empty; if (!string.IsNullOrEmpty(validateYear)) { recordErrors.AppendLine().AppendFormat(validateYear); } UInt16 qtr = 0; var strQtr = string.IsNullOrEmpty(msd1Elements[4].Trim()) || msd1Elements[4].Trim().Length < 1 ? string.Empty : msd1Elements[4]; UInt16.TryParse(strQtr, out qtr); _msd1.Quarter = qtr; var validateQuarter = _msd1.Quarter == 0 ? msd1Elements[4].Trim() + " is not a valid quarter. Please correct it." : String.Empty; if (!string.IsNullOrEmpty(validateQuarter)) { recordErrors.AppendLine().AppendFormat(validateQuarter); } _msd1.ReportingPort = !_helperService.IsValidReportingPort(msd1Elements[5].Trim()) || string.IsNullOrEmpty(msd1Elements[5].Trim()) ? string.Empty : msd1Elements[5]; var validateReportingPort = string.IsNullOrEmpty(_msd1.ReportingPort.Trim()) ? msd1Elements[5].Trim() + " is not a recognised code for reporting port. Enter a valid code or contact the help-desk for advice." : String.Empty; if (!string.IsNullOrEmpty(validateReportingPort)) { recordErrors.AppendLine().AppendFormat(validateReportingPort); } bool validShipOrImoOrCallSign = false; string errorMessageIMO = " is not a recognised IMO number. Enter a valid IMO number or a Call Sign or Flag of Vessel and Vessel Name or contact the helpdesk for further advice"; var validateImo = string.IsNullOrEmpty(msd1Elements[6].Trim()) || msd1Elements[6].Trim().Length < 7 || msd1Elements[6].Trim().Length > 7 ? msd1Elements[6] + errorMessageIMO : String.Empty; UInt32 imoNum = 0; if (string.IsNullOrEmpty(validateImo)) { var strImo = msd1Elements[6].Length < 7 ? string.Empty : msd1Elements[6]; UInt32.TryParse(strImo, out imoNum); if (imoNum == 0) { validateImo = msd1Elements[6] + errorMessageIMO; } } var callSign = string.IsNullOrEmpty(msd1Elements[7].Trim()) || msd1Elements[7].Length > 9 ? string.Empty : msd1Elements[7]; var flagOfVessel = string.IsNullOrEmpty(msd1Elements[9].Trim()) || msd1Elements[9].Length != 3 ? string.Empty : msd1Elements[9]; if (!flagOfVessel.Trim().All(Char.IsLetter)) { flagOfVessel = string.Empty; } var shipName = string.IsNullOrEmpty(msd1Elements[8].Trim()) ? string.Empty : msd1Elements[8]; validShipOrImoOrCallSign = string.IsNullOrEmpty(validateImo) || !string.IsNullOrEmpty(callSign) || (!string.IsNullOrEmpty(flagOfVessel) && !string.IsNullOrEmpty(shipName)); if (!validShipOrImoOrCallSign) { recordErrors.AppendLine().AppendFormat(validateImo); } _msd1.Imo = imoNum; _msd1.ShipName = shipName.Substring(0, shipName.Length >= 35 ? 35 : shipName.Length).Trim(); _msd1.FlagCode = flagOfVessel.Trim(); _msd1.Callsign = callSign.Trim(); _msd1.IsInbound = msd1Elements[10] == "1"; var validateVoyageDirection = msd1Elements[10] == "1" || msd1Elements[10] == "2" ? string.Empty : msd1Elements[10].Trim() + " is not a valid value for Voyage Direction. Correct it to either 1 for inwards or 2 for outwards."; if (!string.IsNullOrEmpty(validateVoyageDirection)) { recordErrors.AppendLine().AppendFormat(validateVoyageDirection); } _msd1.NumVoyages = string.IsNullOrEmpty(msd1Elements[11].Trim()) ? Convert.ToUInt32(0) : Convert.ToUInt32(msd1Elements[11]); UInt32 numVoyages = 0; var strNumVoyages = string.IsNullOrEmpty(msd1Elements[11].Trim()) ? string.Empty : msd1Elements[11]; UInt32.TryParse(strNumVoyages, out numVoyages); _msd1.NumVoyages = numVoyages; var validateNumVoyages = string.IsNullOrEmpty(msd1Elements[11].Trim()) ? msd1Elements[11].Trim() + " is not a valid number of voyages. Enter a number under 1000 or contact the help-desk for further advice." : String.Empty; if (!string.IsNullOrEmpty(validateNumVoyages)) { recordErrors.AppendLine().AppendFormat(validateNumVoyages); } _msd1.AssociatedPort = !_helperService.IsValidPort(msd1Elements[12].Trim()) || string.IsNullOrEmpty(msd1Elements[12].Trim()) ? string.Empty : msd1Elements[12]; var validateAssociatedPort = string.IsNullOrEmpty(_msd1.AssociatedPort.Trim()) ? msd1Elements[12].Trim() + " is not a recognised code for port of load/discharge. Enter a valid code or contact the help-desk for further advice." : String.Empty; if (!string.IsNullOrEmpty(validateAssociatedPort)) { recordErrors.AppendLine().AppendFormat(validateAssociatedPort); } var ValidatePorts = !_msd1.ReportingPort.Equals(_msd1.AssociatedPort) ? string.Empty : "Port of load/discharge is the same as the reporting port. Please correct or contact the help-desk for further advice."; if (!string.IsNullOrEmpty(ValidatePorts)) { recordErrors.AppendLine().AppendFormat(ValidatePorts); } _msd1.CreatedDate = DateTime.Now; _msd1.ModifiedDate = DateTime.Now; _msd1.FileRefId = null; }