コード例 #1
0
 public GESMESFileProcess(
     FlatFile fileInfo,
     LogFileData logFileData,
     GesmesHelpers gesmesHelpers,
     ValidateMsdData validateMsdData,
     Msd1FileProcess msd1FileProcess,
     Msd2FileProcess msd2FileProcess,
     Msd3FileProcess msd3FileProcess,
     IMsd1DataService msd1DataService,
     IMsd2DataService msd2DataService,
     IMsd3DataService msd3DataService,
     IFileProcessService fileProcessService,
     IHelperService helperService,
     IOptions <FileOptions> settings,
     IEmailSender emailSender,
     ILogger <GESMESFileProcess> logger)
 {
     _fileInfo           = fileInfo;
     _logFileData        = logFileData;
     _gesmesHelpers      = gesmesHelpers;
     _helperService      = helperService;
     _msd1DataService    = msd1DataService;
     _msd2DataService    = msd2DataService;
     _msd3DataService    = msd3DataService;
     _validateMsdData    = validateMsdData;
     _fileProcessService = fileProcessService;
     _logger             = logger;
     _settings           = settings.Value;
     _emailSender        = emailSender;
     _msd1FileProcess    = msd1FileProcess;
     _msd2FileProcess    = msd2FileProcess;
     _msd3FileProcess    = msd3FileProcess;
     headerErrors        = new StringBuilder();
     bodyErrorMsg        = new StringBuilder();
 }
コード例 #2
0
        private FlatFile ProcessHeader(string filename, GesmesHelpers gesmesHelpers)
        {
            var lines = File.ReadAllLines(filename);

            var senderID = gesmesHelpers.GetDataItem("UNOC:3");

            _fileInfo.SenderId = (senderID.Contains(":") ? senderID.Split(':')[0] : senderID);
            var isValidSenederId = !string.IsNullOrEmpty(_fileInfo.SenderId) ?
                                   string.Empty : "The Gemses file header record is missing or invalid. The file has not been processed. " + " Please correct and resubmit.";

            if (!string.IsNullOrEmpty(isValidSenederId))
            {
                headerErrors.AppendLine().AppendFormat(isValidSenederId);
                NotifyErrorMsgToUsers(_fileInfo, headerErrors.ToString());
                return(null);
            }

            _fileInfo.FileName     = filename;
            _fileInfo.TotalRecords = gesmesHelpers.GetNumberOfRecords();
            _fileInfo.TableRef     = gesmesHelpers.GetDataItem("DSI");

            var validateMsdRecord = string.Empty;

            if (_fileInfo.TableRef.ToUpper().Equals("TABLE-1-UO-Q") ||
                _fileInfo.TableRef.ToUpper().Equals("TABLE-1-UQ-Q") ||
                _fileInfo.TableRef.ToUpper().Equals("TABLE-2-FT-A") ||
                _fileInfo.TableRef.ToUpper().Equals("TABLE-3-LA-A") ||
                _fileInfo.TableRef.ToUpper().Equals("TABLE-4-VS-Q") ||
                _fileInfo.TableRef.ToUpper().Equals("TABLE-5-FT-A"))
            {
                if (!(_fileInfo.TableRef.ToUpper().Equals("TABLE-1-UO-Q") ||
                      _fileInfo.TableRef.ToUpper().Equals("TABLE-1-UQ-Q") ||
                      _fileInfo.TableRef.ToUpper().Equals("TABLE-2-FT-A") ||
                      _fileInfo.TableRef.ToUpper().Equals("TABLE-3-LA-A")))
                {
                    validateMsdRecord = "The Gesmes file header record is not in the correct format for an MSD1 submission. The file has not been processed. Please correct and resubmit.";
                    ArchiveProcessedFilesFromBucket(filename, true);
                    var tokens = new Dictionary <string, dynamic>();
                    tokens.Add("filename", filename);
                    _emailSender.SendEmail(_settings.MaritimeHelpdeskEmailAddress, "Error in file submitted", validateMsdRecord, tokens);
                    return(null);
                }
            }
            else
            {
                validateMsdRecord = "The Gesmes file header record is not in the correct format for a submission. The file has not been processed. Please correct and resubmit.";
                headerErrors.AppendLine().AppendFormat(validateMsdRecord);
            }

            _fileInfo.IsAmendment  = gesmesHelpers.GetAmmendment("STS");
            _fileInfo.CreationDate = DateTime.Now.Date;
            _fileInfo.IsTest       = null;
            var regNo = gesmesHelpers.GetDataItem("UNB");

            _fileInfo.RegistrationNumber = regNo.Contains(":") ? int.Parse(regNo.Split(':')[1]) : int.Parse(regNo);
            _fileInfo.SendersRef         = gesmesHelpers.GetDataItem("UNH");

            if (_fileInfo != null && string.IsNullOrEmpty(validateMsdRecord))
            {
                previousFileRefId = _fileProcessService.GetLastInvalidFileRefId(_fileInfo);
                isDuplicatedFile  = _fileProcessService.CheckFileExist(_fileInfo);
                _fileProcessService.Add(_fileInfo);
            }

            if (string.IsNullOrEmpty(headerErrors.ToString().Trim()))
            {
                return(_fileInfo);
            }
            AddErrorLogToDbAndNotifyUser(filename, headerErrors.ToString());
            return(null);
        }