Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 6
0
        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;
        }
Exemplo n.º 7
0
        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;
        }