Пример #1
0
        public void PlaceUprdJobAndProcess(bool IsOacy, bool IsUnsc, bool IsSwnt)
        {
            bool            IsTest = Convert.ToBoolean(_serviceSetting.GetById((int)Settings.UprdEDIForTest).Value);
            List <Pipeline> pipes  = _servicePipeline.GetActiveUprdPipelines().ToList();

            pipes.ForEach(a => RaiseAndSendUprdRequest(a, IsOacy, IsUnsc, IsSwnt, IsTest, false));
        }
Пример #2
0
 private static void ProcessReceiveFile_JobCreation(IScheduler _jobScheduler)
 {
     try
     {
         TimeAndFreqForReceiveFileProcess = _serviceSetting.GetById((int)Settings.TimeAndFreqForReceiveFileProcess).Value;
         Console.WriteLine("JobScheduler Start for process receive files (check every 5 sec).");
         IJobDetail EncEDIGenerationJobDetail = JobBuilder.Create <JobManagerReceiveUprdProcessing>()
                                                .WithIdentity(string.Format("{0}", "ReceiveUprdJob"))
                                                .Build();
         ITrigger EncEDIGenerationJobTrigger = TriggerBuilder.Create()
                                               .WithIdentity(string.Format("{0}", "ReceiveUprdJob"))
                                               .StartNow()
                                               .WithCronSchedule(TimeAndFreqForReceiveFileProcess)
                                               .Build();
         _jobScheduler.ScheduleJob(EncEDIGenerationJobDetail, EncEDIGenerationJobTrigger);
     }
     catch (Exception ex)
     {
         Console.WriteLine("Exception:- " + ex.Message);
     }
 }
Пример #3
0
        public void ProcessFiles(bool TryAgain)
        {
            Console.Clear();
            Console.WriteLine("Processing files");

            try
            {
                var    releaseToShipper = _serviceSettings.GetById((int)Settings.releaseToShipper).Value;
                string crashFilesPath   = _serviceSettings.GetById((int)Settings.CrashFilesPath).Value;
                var    AckFiles         = _serviceSettings.GetById((int)Settings.AckFiles).Value;
                var    UnknownFiles     = _serviceSettings.GetById((int)Settings.UnknownFiles).Value;
                string EngineFilePath   = string.Empty;
                if (TryAgain)
                {
                    EngineFilePath = crashFilesPath + @"\TryAgain";// _serviceSettings.GetById((int)Settings.TryAgainFilePath).Value;
                }
                else
                {
                    EngineFilePath = _serviceSettings.GetById((int)Settings.EngineFilesPath).Value;
                }

                var inFileList = Directory.GetFiles(EngineFilePath);
                if (inFileList != null && inFileList.Count() > 0)
                {
                    List <SwntPerTransaction>  SwntList        = new List <SwntPerTransaction>();
                    List <OACYPerTransaction>  OacyList        = new List <OACYPerTransaction>();
                    List <UnscPerTransaction>  UnscList        = new List <UnscPerTransaction>();
                    List <UPRDStatus>          UprdStatusList  = new List <UPRDStatus>();
                    List <FileSysIncomingData> incominDataList = new List <FileSysIncomingData>();
                    bool IsProcessed = false;
                    Parallel.ForEach(inFileList, (file) =>
                    {
                        string fileText = string.Empty;
                        try
                        {
                            FileInfo fileInfo = new FileInfo(file);
                            if (File.Exists(file) && !IsFileLocked(fileInfo))
                            {
                                var currentfile       = new FileSysIncomingData();
                                currentfile.MessageId = Path.GetFileNameWithoutExtension(file);
                                fileText = File.ReadAllText(file);
                                File.Delete(file);
                                currentfile.DecryptedData  = fileText;
                                StringBuilder decryptedEDI = null;
                                decryptedEDI        = new StringBuilder(currentfile.DecryptedData);
                                int pos             = decryptedEDI.ToString().IndexOf("ISA");
                                var data            = decryptedEDI.Remove(0, pos);
                                string pipelineDUNS = "";
                                pipelineDUNS        = data.ToString().Substring(35, 9);

                                currentfile.DecryptedData = decryptedEDI.ToString();
                                currentfile.PipeDuns      = pipelineDUNS;

                                //Start Processing
                                char dataSeperator, segmentSeperator;
                                dataSeperator    = Convert.ToChar(decryptedEDI.ToString()[(decryptedEDI.ToString().IndexOf("ISA") + "ISA".Length)]);
                                segmentSeperator = Convert.ToChar(decryptedEDI.ToString()[(decryptedEDI.ToString().IndexOf("GS") - 1)]);

                                if (dataSeperator != '\0' || segmentSeperator != '\0')
                                {
                                    EDIWrapperBase ediWrapper = new EDIWrapperBase(decryptedEDI.ToString()
                                                                                   , new char[] { segmentSeperator }
                                                                                   , new char[] { dataSeperator });
                                    List <string[]> separateSTFiles = ediWrapper.EnvelopeBlocks(EDIEnvelopeNodes.ST, EDIEnvelopeNodes.SE);

                                    foreach (string[] separateFile in separateSTFiles)
                                    {
                                        string subEDIfile = "";
                                        foreach (string element in separateFile)
                                        {
                                            subEDIfile = subEDIfile + element + Convert.ToChar(segmentSeperator);
                                        }
                                        if (!string.IsNullOrEmpty(subEDIfile))
                                        {
                                            EDIWrapperBase subEdiWrapper = new EDIWrapperBase(subEDIfile
                                                                                              , new char[] { segmentSeperator }//segement seperators
                                                                                              , new char[] { dataSeperator });//Dataseperators

                                            EDIFileType fileType = subEdiWrapper.FileType;
                                            switch (fileType)
                                            {
                                            case EDIFileType.OACY:
                                                currentfile.DatasetType = "OACY";
                                                OacyList.AddRange(FillUpOACYData(subEDIfile, currentfile.MessageId, dataSeperator, segmentSeperator));
                                                IsProcessed = true;
                                                break;

                                            case EDIFileType.UNSC:
                                                currentfile.DatasetType = "UNSC";
                                                UnscList.AddRange(FillUpUNSCData(subEDIfile, currentfile.MessageId, dataSeperator, segmentSeperator));
                                                IsProcessed = true;
                                                break;

                                            case EDIFileType.RURD:
                                                currentfile.DatasetType = "RURD";
                                                UprdStatusList.AddRange(FillUpRURDData(subEDIfile, currentfile.MessageId, dataSeperator, segmentSeperator));
                                                IsProcessed = true;
                                                break;

                                            case EDIFileType.SWNT:
                                                currentfile.DatasetType = "SWNT";
                                                SwntList.AddRange(FillUpSWNTData(subEDIfile, currentfile.MessageId, dataSeperator, segmentSeperator));
                                                IsProcessed = true;
                                                break;

                                            case EDIFileType.Ack:
                                                IsProcessed             = false;
                                                currentfile.DatasetType = "ACK";
                                                if (!Directory.Exists(AckFiles))
                                                {
                                                    Directory.CreateDirectory(AckFiles);
                                                }
                                                var AckFilePath = AckFiles + "/" + currentfile.MessageId + ".txt";
                                                File.WriteAllText(AckFilePath, decryptedEDI.ToString());
                                                break;

                                            case EDIFileType.Unknown:
                                                IsProcessed             = false;
                                                currentfile.DatasetType = "UNK";
                                                if (!Directory.Exists(UnknownFiles))
                                                {
                                                    Directory.CreateDirectory(UnknownFiles);
                                                }
                                                var UnknownFilePath = UnknownFiles + "/" + currentfile.MessageId + ".txt";
                                                File.WriteAllText(UnknownFilePath, decryptedEDI.ToString());
                                                break;
                                            }
                                        }
                                    }
                                }
                                currentfile.ReceivedAt = DateTime.Now;
                                incominDataList.Add(currentfile);
                            }
                        }
                        catch (Exception ex)
                        {
                            string storeFilePath = string.Empty;
                            var name             = Path.GetFileNameWithoutExtension(file);
                            string data          = fileText;
                            if (File.Exists(file))
                            {
                                data = File.ReadAllText(file);
                            }
                            IsProcessed = false;
                            Console.WriteLine("crash");

                            if (TryAgain)
                            {
                                storeFilePath          = crashFilesPath + @"\CrashAgain\";
                                var EmailTo            = new string[] { "*****@*****.**", "*****@*****.**", "*****@*****.**" };
                                string subject         = "Crashed File " + "(" + ConfigurationManager.AppSettings["Environment"] + ")";
                                string fromDisplay     = "NatGasHub";
                                string Body            = "Please find the attached crashed file.";
                                MemoryStream stream    = new MemoryStream(Encoding.UTF8.GetBytes(data));
                                Attachment attachments = new Attachment(stream, name + ".txt", System.Net.Mime.MediaTypeNames.Text.Plain);
                                EmailService.SendEmailAsync(EmailTo, Body, subject, fromDisplay, attachments);
                                stream.Dispose();
                            }
                            else
                            {
                                storeFilePath = crashFilesPath + @"\TryAgain\";
                            }

                            if (!Directory.Exists(storeFilePath))
                            {
                                Directory.CreateDirectory(storeFilePath);
                            }
                            storeFilePath = storeFilePath + name + ".txt";
                            File.WriteAllText(storeFilePath, data + Environment.NewLine + ex.Message);
                        }
                    });

                    bool IsDataEntered = false;

                    if (IsProcessed)
                    {
                        if (SwntList.Count > 0)
                        {
                            IsDataEntered = _serviceSwntPerTransaction.SaveSwntList(SwntList);
                        }
                        if (UnscList.Count > 0)
                        {
                            IsDataEntered = _serviceUnscPerTransaction.SaveUnscList(UnscList);
                        }
                        if (OacyList.Count > 0)
                        {
                            IsDataEntered = _serviceOacyPerTransaction.SaveOacyList(OacyList);
                        }
                        if (UprdStatusList.Count > 0)
                        {
                            IsDataEntered = ProcessRurdData(UprdStatusList);
                        }
                        if (incominDataList.Count > 0)
                        {
                            _serviceFileSysIncomingData.AddListOfFileSysIncomingData(incominDataList);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AppLogManager("ReceivePartFileInsertion", "Error", ex.ToString());
            }
        }