Exemplo n.º 1
0
        private void SetUpExporter()
        {
            if (!CoreDataLib.IsLive())
            {
                _tempServerPath = @"\\SVRsql4\E$\CoreData\ExportFiles\Test\Temp\";
            }
            else
            {
                _tempServerPath = @"E:\CoreData\ExportFiles\Temp\";
            }

            PathAndFileName = _tempServerPath + ExportItem.ExportItemName + Extension;
        }
        public PropertySupplierMapping(string fileToProcess)
        {
            if (CoreDataLib.IsLive())
            {
                PathToExport = "E:\\CoreData\\ExportFiles\\";
            }
            else
            {
                PathToExport = @"\\SVRsql4\E$\CoreData\ExportFiles\";
            }

            fileName = fileToProcess;
            DoProcessing();
        }
 private void SetupExport()
 {
     if (!CoreDataLib.IsLive())
     {
         _serverPath       = @"\\SVRsql4\E$\CoreData\ExportFiles\Test\";
         _exportServerTemp = @"E:\CoreData\ExportFiles\Test\Temp\";
         _tempServerPath   = _serverPath + @"Temp\";
     }
     else
     {
         _serverPath       = "E:\\CoreData\\ExportFiles\\";
         _exportServerTemp = @"E:\CoreData\ExportFiles\Temp\";
         _tempServerPath   = _serverPath + @"Temp\";
     }
     _pathAndFileName = _tempServerPath + ExportItem.ExportItemName + ".csv";
 }
        public override bool Export(ReportLogger reportLogger)
        {
            _reportLogger = reportLogger;
            SetupExport();

            int stepId = reportLogger.AddStep();

            try
            {
                FileInfo fileInfo = new FileInfo(PathAndFileName);

                FileInfo serverPathAndFile = new FileInfo(_serverPath + fileInfo.Name);
                FileInfo serverPath        = new FileInfo(_serverPath);
                FileInfo tempDirectory     = new FileInfo(_serverPath + @"Temp\");
                string   filename          = fileInfo.Name.Split('.')[0];

                XmlExport(fileInfo);

                if (File.Exists(serverPathAndFile.FullName))
                {
                    File.Delete(serverPathAndFile.FullName);
                }

                File.Move(tempDirectory + filename + _extension, serverPathAndFile.FullName);

                if (CoreDataLib.IsLive())
                {
                    if (ExportItem.ExportItemFtpId > 0)
                    {
                        FileFtp.FtpFile(serverPathAndFile, reportLogger, ExportItem);
                    }
                }

                reportLogger.EndStep(stepId);
            }
            catch (Exception exception)
            {
                _reportLogger.EndStep(stepId, exception);
                return(false);
            }
            return(true);
        }
        private void BcpExport()
        {
            int      stepId            = _csvExporteLogger.AddStep();
            FileInfo fileInfo          = new FileInfo(_pathAndFileName);
            FileInfo serverPathAndFile = new FileInfo(_serverPath + fileInfo.Name);
            FileInfo serverPath        = new FileInfo(_serverPath);
            FileInfo tempDirectory     = new FileInfo(_serverPath + @"Temp\");
            string   filename          = fileInfo.Name.Split('.')[0];

            _serverPathAndFile = serverPathAndFile.FullName;

            StringBuilder headers = new StringBuilder();

            foreach (string header in _selectStatementBuilder.GetOutputHeaders)
            {
                headers.Append(header + "|");
            }

            headers.Remove(headers.Length - 1, 1);

            using (SqlConnection conn = new SqlConnection(DataConnection.SqlConnCoreData))
            {
                SqlCommand sqlCommand = new SqlCommand();
                sqlCommand.CommandType    = CommandType.Text;
                sqlCommand.CommandTimeout = 720000;
                sqlCommand.Connection     = conn;
                StringBuilder sqlBuilder = new StringBuilder();
                sqlBuilder.Append(@"DECLARE @bcpCmd as VARCHAR(8000);");
                sqlBuilder.Append(@"SET @bcpCmd= 'bcp ""SET NOCOUNT ON;");
                sqlBuilder.Append(_selectClause);
                sqlBuilder.Append(@";SET NOCOUNT OFF;""");
                sqlBuilder.Append(" queryout ");
                sqlBuilder.Append(_exportServerTemp + fileInfo.Name);
                sqlBuilder.Append(" -t \"" + _del + "\" -r(!!!!!!!!!!)");

                if (CoreDataLib.IsLive())
                {
                    sqlBuilder.Append(
                        " -c -C ACP -S SVRsql4 -d CoreData -U CoreData -P CoreD@T@'; EXEC master..xp_cmdshell @bcpCmd;");
                }
                else
                {
                    sqlBuilder.Append(
                        " -c -C ACP -S SVRsql4 -d CoreData_Test -U CoreData -P CoreD@T@'; EXEC master..xp_cmdshell @bcpCmd;");
                }

                sqlBuilder.Replace("@LangId", _selectStatementBuilder.LanguageId);
                string sql = sqlBuilder.ToString();
                sqlCommand.CommandText = sql;
                conn.Open();
                sqlCommand.ExecuteNonQuery();

                if (File.Exists(tempDirectory + fileInfo.Name))
                {
                    CreateCsvFile(tempDirectory, filename, fileInfo, headers, serverPathAndFile, serverPath,
                                  _selectStatementBuilder.LanguageId);
                }
                else
                {
                    _csvExporteLogger.EndStep(stepId, new Exception("File not found"));
                }
                _csvExporteLogger.EndStep(stepId);
            }
        }
        private void CreateCsvFile(FileInfo tempDirectory, string filename, FileInfo fileInfo, StringBuilder headers,
                                   FileInfo serverPathAndFile, FileInfo serverPath, string languageEncoding)
        {
            int stepId = _csvExporteLogger.AddStep();

            try
            {
                string line;

                if (File.Exists(tempDirectory + filename + TEMPFILE_APPENDING))
                {
                    File.Delete(tempDirectory + filename + TEMPFILE_APPENDING);
                }

                StreamWriter writer    = null;
                StreamReader reader    = null;
                FileStream   fs        = new FileStream(tempDirectory + fileInfo.Name, FileMode.Open);
                FileStream   outStream = new FileStream(tempDirectory + filename + TEMPFILE_APPENDING, FileMode.Append);
                reader = new StreamReader(fs, Encoding.Default);
                string encoding = Get.GetLanguageEncoding(languageEncoding);
                if (String.IsNullOrEmpty(encoding))
                {
                    writer = new StreamWriter(outStream, Encoding.GetEncoding("windows-1252"));
                }
                else
                {
                    writer = new StreamWriter(outStream, Encoding.GetEncoding(encoding));
                }

                if (headers.Length > 0)
                {
                    writer.WriteLine(headers);
                }

                string[] stringSeperators = { "(!!!!!!!!!!)" };
                string[] fieldSeperators  = { "!|!" };
                string   lastEntry        = "";
                while ((line = reader.ReadLine()) != null)
                {
                    string[] lines = line.Split(stringSeperators, StringSplitOptions.RemoveEmptyEntries);

                    if (lines.Length > 0)
                    {
                        for (int i = 0; i <= lines.Length - 1; i++)
                        {
                            if (lines[i].Split(fieldSeperators, StringSplitOptions.None).Length - 1 ==
                                headers.ToString().Split('|').Length - 1)
                            {
                                string row = lines[i].Replace("!|!", "|");
                                writer.WriteLine(row);
                            }
                            else
                            {
                                lastEntry = lastEntry + lines[i];
                                if (lastEntry.Split(fieldSeperators, StringSplitOptions.None).Length - 1 ==
                                    headers.ToString().Split('|').Length - 1)
                                {
                                    lastEntry = lastEntry.Replace("!|!", "|");
                                    writer.WriteLine(lastEntry);
                                    lastEntry = "";
                                }
                            }
                        }
                    }
                }

                writer.Flush();

                reader.Close();
                writer.Close();

                File.Delete(tempDirectory + fileInfo.Name);
                if (File.Exists(serverPathAndFile.FullName))
                {
                    File.Delete(serverPathAndFile.FullName);
                }

                File.Move(tempDirectory + filename + TEMPFILE_APPENDING, serverPathAndFile.FullName);

                File.Delete(tempDirectory + filename + TEMPFILE_APPENDING);
                if (CoreDataLib.IsLive())
                {
                    if (ExportItem.ExportItemFtpId > 0)
                    {
                        FileFtp.FtpFile(serverPathAndFile, _csvExporteLogger, ExportItem);
                    }
                    //FtpExportedFile(pathAndFileToFtp);
                }

                _csvExporteLogger.EndStep(stepId);
            }
            catch (Exception exception)
            {
                _csvExporteLogger.EndStep(stepId, exception);
            }
        }
        public static void Run()
        {
            if (!CoreDataLib.IsLive())
            {
                List <ExportItem> runList = Get.GetAllRunItems();
                foreach (ExportItem exportItem in runList)
                {
                    ReportLogger reportLogger = new ReportLogger(exportItem.ExportItemName);
                    try
                    {
                        //exportItem.Export(reportLogger);
                        if (exportItem.ExportItemName == "LCH_FullStock_HotelOnly_HC_ENG")
                        {
                            exportItem.Export(reportLogger);
                            //LchFullStockImagesEngTsmExportItem expItem = new LchFullStockImagesEngTsmExportItem(exportItem);
                            //expItem.Export(reportLogger);
                        }
                        //exportItem.Export(reportLogger);
                        //if (exportItem.ExportItemName.Contains("LCH_FullStock_HotelOnly_ENG_100R"))
                        //{
                        //    exportItem.Export(reportLogger);
                        //}
                        reportLogger.EndLog();
                    }
                    catch (Exception e)
                    {
                        reportLogger.EndLog(e);
                    }
                }
                //Parallel.ForEach(runList, currentExportItem =>
                //{
                //    ReportLogger reportLogger = new ReportLogger(currentExportItem.ExportItemName);
                //    try
                //    {
                //        reportLogger.StartLog(currentExportItem.ExportItemName);
                //        currentExportItem.Export(reportLogger);
                //        reportLogger.EndLog();
                //    }
                //    catch (Exception e)
                //    {
                //        reportLogger.EndLog(e);
                //        Emailer.SendEmail("*****@*****.**", "CoreDataReportService", "MainProcess->Run", e);
                //    }
                //});
            }
            else
            {
                List <ExportItem> runList = Get.GetRunItems(DateTime.Now.Hour);

                Parallel.ForEach(runList, currentExportItem =>
                {
                    ReportLogger reportLogger = new ReportLogger(currentExportItem.ExportItemName);
                    try
                    {
                        reportLogger.StartLog(currentExportItem.ExportItemName);
                        currentExportItem.Export(reportLogger);
                        reportLogger.EndLog();
                    }
                    catch (Exception e)
                    {
                        reportLogger.EndLog(e);
                        Emailer.SendEmail("*****@*****.**", "CoreDataReportService", "MainProcess->Run", e);
                    }
                });
            }
        }