public void MoveToErrorTest() { string errorMsg = ""; var testUser = GetTestUser(); var testCompany = GetTestCompany(testUser); // Create a temp file var tempFile = GetTempFile(".txt"); File.WriteAllText(tempFile, LorumIpsum()); // Now archive it var dts = new DataTransferService.DataTransferService(db); var config = createDataTransfer(testCompany, testUser); bool bRc = dts.MoveToError(config, tempFile, ref errorMsg); Assert.IsTrue(bRc == false, errorMsg); // Check if the file has been moved Assert.IsTrue(!File.Exists(tempFile), $"Error: File '{tempFile}' still exists when it should have been deleted"); string newTarget = config.ErrorFolder.AddString("\\") + tempFile.FileName(); Assert.IsTrue(File.Exists(newTarget), $"Error: File '{newTarget}' could not be found in its error location"); }
private void MoveFileToErrorFolder(DataTransferService.DataTransferService dts, FileTransferConfigurationModel config, string fileName) { string errorMsg = ""; if (dts.MoveToError(config, fileName, ref errorMsg)) { TaskService.WriteTaskLog(this.Task, $"Failed to move to Error folder\r\n{errorMsg}", LogSeverity.Severe); } else { TaskService.WriteTaskLog(this.Task, $"File '{fileName}' has been moved to the Error folder", LogSeverity.Severe); } }
public override int DoProcessing(string[] args) { // This service transfers files which have been placed in the folder specified // by the parameter profile // TaskProcessor.exe DATATRANSFERTASK datatransferprofilename if (args.Length != 2) { WriteTaskLog($"Error: Incorrect parameters!\r\nUsage: TaskProcessor.exe DATATRANSFERTASK datatransferprofilename"); } else { DataTransferService.DataTransferService dts = new DataTransferService.DataTransferService(_db); var profileName = args[1]; var config = dts.FindDataTransferConfigurationModel(profileName); if (config == null) { WriteTaskLog($"Error: Parameter profile '{profileName}' could not be found!"); } else { WriteTaskLog($"Running transfer profile '{profileName}'"); if (config.TransferType == FileTransferType.Send) { sendFiles(config); } else if (config.TransferType == FileTransferType.Receive) { receiveFiles(config); } // Handle the post-transfer processing if (!string.IsNullOrEmpty(config.PostTransferCommand)) { WriteTaskLog($"Running post-transfer process '{config.PostTransferCommand} {config.PostTransferParameters}'"); var error = SystemService.SystemService.WinExec(config.PostTransferCommand, config.PostTransferParameters); if (error.IsError) { WriteTaskLog(error.Message, LogSeverity.Severe); } } } } return(0); }
public override int DoProcessing(string[] args) { var shopifyImportService = new ShopifyImportService.ShopifyImportService(_db); DataTransferService.DataTransferService dts = new DataTransferService.DataTransferService(_db); int i = 1; var profileName = GetTaskParameter($"DataTransfer{1}", ""); var taskUser = GetTaskUser(); string errorMsg = ""; var config = dts.FindDataTransferConfigurationModel(profileName); if (config == null) { TaskService.WriteTaskLog(this.Task, $"Error: Failed to find Data Transfer configuration '{profileName}' !"); } else { string fileLoc = config.TargetFolder; while (!string.IsNullOrEmpty(fileLoc)) { string businessName = GetTaskParameter($"BusinessName{i}", ""); string[] files = null; try { files = Directory.GetFiles(fileLoc); } catch (Exception ex) { TaskService.WriteTaskLog(this.Task, $"Error: There was a problem getting files from '{fileLoc}'\r\n" + ex, LogSeverity.Severe); } if (files.Length > 0 && files != null) { foreach (string fileName in files) { // Process File TaskService.WriteTaskLog(this.Task, $"Success: Processing file '{fileName}'", LogSeverity.Normal); ShopifyImportTempModel.Data shopifyTempModel = null; try { shopifyTempModel = shopifyImportService.ProcessXml(fileName, businessName); } catch (Exception ex) { TaskService.WriteTaskLog(this.Task, $"Error: Could not process file '{fileName}'\r\n" + ex, LogSeverity.Severe); //MoveFileToErrorFolder(dts, config, fileName); } if (shopifyTempModel != null) { List <ShopifyImportHeaderTemp> sihtList = new List <ShopifyImportHeaderTemp>(); // Map each order to TEMP foreach (var order in shopifyTempModel.Order) { try { Dictionary <string, string> configDetails = LookupConfigDetails(order.StoreName); if (configDetails.Count > 0) { ShopifyImportHeaderTemp siht = new ShopifyImportHeaderTemp(); siht = shopifyImportService.MapOrderToTemp(businessName, configDetails, order, taskUser); sihtList.Add(siht); } else { TaskService.WriteTaskLog(this.Task, $"Error: Configuration Setting are not setup", LogSeverity.Severe); } } catch (Exception ex) { TaskService.WriteTaskLog(this.Task, $"Error: Could not map order (#{order.OrderNumber}) details to temp table\r\n" + ex, LogSeverity.Severe); //MoveFileToErrorFolder(dts, config, fileName); break; } } if (sihtList.Count > 0 && sihtList.Count == shopifyTempModel.Order.Length) // AND COUNT = THE ACTUAL NUMBER OF ORDERS IN THE XML FILE // Save temp to db { try { shopifyImportService.SaveDataToTempTables(sihtList); TaskService.WriteTaskLog(this.Task, $"Success: Saved '{fileName}' temp table", LogSeverity.Normal); // Get Temp table data try { sihtList = shopifyImportService.GetShopifyTempTableData(); if (sihtList.Count > 0) { try { // CopyTempDataToSalesModel List <SalesOrderHeader> orders = shopifyImportService.CopyTempDataToSalesModel(sihtList, businessName); if (orders.Count > 0) { if (shopifyImportService.SaveSalesOrders(orders)) { TaskService.WriteTaskLog(this.Task, $"Success: Data Saved to Sales tables", LogSeverity.Normal); // Move file to Archive folder if (dts.MoveToArchive(config, fileName, ref errorMsg)) { TaskService.WriteTaskLog(this.Task, $"Failed to move to Archive folder\r\n{errorMsg}", LogSeverity.Severe); } else { TaskService.WriteTaskLog(this.Task, $"Successfully moved file '{fileName}' to Archive folder", LogSeverity.Normal); } } else { // Move file to Error folder MoveFileToErrorFolder(dts, config, fileName); } } else { TaskService.WriteTaskLog(this.Task, $"Error: Could not retrieve any orders from the temp table/s", LogSeverity.Severe); MoveFileToErrorFolder(dts, config, fileName); } } catch (Exception ex) { TaskService.WriteTaskLog(this.Task, $"Error: Could not copy data to sales table/s\r\n" + ex, LogSeverity.Severe); MoveFileToErrorFolder(dts, config, fileName); } } } catch (Exception ex) { TaskService.WriteTaskLog(this.Task, $"Error: Failed to get temp data from database\r\n" + ex, LogSeverity.Severe); MoveFileToErrorFolder(dts, config, fileName); } } catch (Exception ex) { TaskService.WriteTaskLog(this.Task, $"Error: Failed to save data to the temp table/s\r\n" + ex, LogSeverity.Severe); MoveFileToErrorFolder(dts, config, fileName); } } } else { TaskService.WriteTaskLog(this.Task, $"Error: The file '{fileName}' was empty", LogSeverity.Severe); MoveFileToErrorFolder(dts, config, fileName); } MoveFileToErrorFolder(dts, config, fileName); } } else { TaskService.WriteTaskLog(this.Task, $"INFO: There were no files to process.'", LogSeverity.Normal); } i++; profileName = GetTaskParameter($"DataTransfer{i}", ""); config = dts.FindDataTransferConfigurationModel(profileName); fileLoc = (config != null) ? config.TargetFolder : ""; } } return(0); }
public override int DoProcessing(string[] args) { var pepperiImportService = new PepperiImportService.PepperiImportService(_db); DataTransferService.DataTransferService dts = new DataTransferService.DataTransferService(_db); int i = 1; var profileName = GetTaskParameter($"DataTransfer{i}", ""); var taskUser = GetTaskUser(); string errorMsg = ""; var config = dts.FindDataTransferConfigurationModel(profileName); if (config == null) { TaskService.WriteTaskLog(this.Task, $"Error: Failed to find Data Transfer configuration '{profileName}' !"); } else { string fileLoc = config.TargetFolder; while (!string.IsNullOrEmpty(fileLoc)) { string businessName = GetTaskParameter($"BusinessName{i}", ""); string[] files = Directory.GetFiles(fileLoc); if (files.Length > 0 && files != null) { foreach (string fileName in files) { if (pepperiImportService.ProcessXml(fileName, businessName, taskUser, this.Task)) { if (dts.MoveToArchive(config, fileName, ref errorMsg)) { TaskService.WriteTaskLog(this.Task, $"Failed to move to Archive folder/r/n{errorMsg}", LogSeverity.Severe); } else { TaskService.WriteTaskLog(this.Task, $"Successfully moved file '{fileName}' to Archive folder", LogSeverity.Normal); } } else { if (dts.MoveToError(config, fileName, ref errorMsg)) { TaskService.WriteTaskLog(this.Task, $"Failed to move to Error folder/r/n{errorMsg}", LogSeverity.Severe); } else { TaskService.WriteTaskLog(this.Task, $"File '{fileName}' has been moved to the Error folder", LogSeverity.Severe); } } } } else { TaskService.WriteTaskLog(this.Task, $"Warning: There are no files to import", LogSeverity.Normal); } i++; profileName = GetTaskParameter($"DataTransfer{i}", ""); config = dts.FindDataTransferConfigurationModel(profileName); fileLoc = (config != null) ? config.TargetFolder : ""; } } return(0); }
public override int DoProcessing(string[] args) { // This task retrieves unpack slips from a warehouse. // It uses the transfers configured in the task properties. // TaskProcessor.exe UNPACKRECEIVER datatransferprofilename if (args.Length != 2) { WriteTaskLog($"Error: Incorrect parameters!\r\nUsage: TaskProcessor.exe UNPACKRECEIVER datatransferprofilename"); } else { string errorMsg = ""; user = GetTaskUser(); if (user != null) { DataTransferService.DataTransferService dts = new DataTransferService.DataTransferService(_db); string taskName = args[1]; var config = dts.FindDataTransferConfigurationModel(taskName); if (config == null) { WriteTaskLog($"Warning: Task {taskName} cound not be found!", LogSeverity.Warning); } else { // Retrieve files from the warehouse WriteTaskLog("Downloading files from: " + config.TransferName); var ftpService = new FTPService.FTPService(config.FTPHost, config.UserId, config.Password, config.Protocol); var fileList = new List <string>(); if (ftpService.GetFTPFileList(config.SourceFolder, ref fileList, ref errorMsg)) { WriteTaskLog(errorMsg, LogSeverity.Severe); } else { // Download files one at a time and as each is successfully downloaded, // archive of delete it on the FTP host. // This ensures that if we have a comms failure, the local drive and FTP host are in // sync and we prevent repeated loads of the same file. FileManagerService.FileManagerService.CreateFolder(config.TargetFolder.TrimEnd('\\')); foreach (var fileName in fileList) { var downloadedFile = new List <string>(); var result = ftpService.DownloadFile(fileName, config.TargetFolder.TrimEnd('\\') + "\\" + fileName.FileName(), downloadedFile, ref errorMsg); _db.LogTestFile(downloadedFile); if (result) { WriteTaskLog(errorMsg, LogSeverity.Severe); } else { // Delete or archive the source files of those which were retrieved result = ftpService.DeleteFile(fileName, ref errorMsg); if (result) { WriteTaskLog(errorMsg, LogSeverity.Severe); } } } // Process the files received processFiles(config); } } } } return(0); }
public override int DoProcessing(string[] args) { var nuOrderImportService = new NuOrderImportService.NuOrderImportService(_db); DataTransferService.DataTransferService dts = new DataTransferService.DataTransferService(_db); int i = 1; var profileName = GetTaskParameter($"DataTransfer{1}", ""); var taskUser = GetTaskUser(); string errorMsg = ""; var config = dts.FindDataTransferConfigurationModel(profileName); if (config == null) { TaskService.WriteTaskLog(this.Task, $"Error: Failed to find Data Transfer configuration '{profileName}' !"); } else { string fileLoc = config.TargetFolder; while (!string.IsNullOrEmpty(fileLoc)) { string businessName = GetTaskParameter($"BusinessName{i}", "");; string[] files = null; try { files = Directory.GetFiles(fileLoc); } catch (Exception ex) { TaskService.WriteTaskLog(this.Task, $"Error: There was a problem getting files from '{fileLoc}'\r\n" + ex, LogSeverity.Severe); } if (files.Length > 0 && files != null) { foreach (string fileName in files) { // ProcessFile TaskService.WriteTaskLog(this.Task, $"Success: Processing file '{fileName}'", LogSeverity.Normal); List <Dictionary <string, string> > orderLines = null; try { orderLines = nuOrderImportService.ProcessFile(fileName, businessName); } catch (Exception ex) { TaskService.WriteTaskLog(this.Task, $"Error: Could not process file '{fileName}'\r\n" + ex, LogSeverity.Severe); } if (orderLines != null || orderLines.Count == 0) { List <NuOrderImportTemp> nuOrderImportTempList = new List <NuOrderImportTemp>(); // MapFileToTemp try { nuOrderImportTempList = nuOrderImportService.MapFileToTemp(businessName, orderLines, taskUser); TaskService.WriteTaskLog(this.Task, $"Success: Saved '{fileName}' temp table", LogSeverity.Normal); // GetTempTableData try { nuOrderImportTempList = nuOrderImportService.GetTempTableData(); } catch (Exception ex) { TaskService.WriteTaskLog(this.Task, $"Error: Failed to get temp data from database\r\n" + ex, LogSeverity.Severe); } // CopyTempToProduction & Move to file to appropriate folder if (nuOrderImportTempList.Count > 0) { try { if (nuOrderImportService.CopyTempDataToProduction(nuOrderImportTempList, businessName)) { TaskService.WriteTaskLog(this.Task, $"Success: Data Saved to Sales tables", LogSeverity.Normal); if (dts.MoveToArchive(config, fileName, ref errorMsg)) { TaskService.WriteTaskLog(this.Task, $"Failed to move to Archive folder\r\n{errorMsg}", LogSeverity.Severe); } else { TaskService.WriteTaskLog(this.Task, $"Successfully moved file '{fileName}' to Archive folder", LogSeverity.Normal); } } else { MoveFileToErrorFolder(dts, config, fileName); } } catch (Exception ex) { TaskService.WriteTaskLog(this.Task, $"Error: Could not copy data to sales table/s\r\n" + ex, LogSeverity.Severe); MoveFileToErrorFolder(dts, config, fileName); } } } catch (Exception ex) { TaskService.WriteTaskLog(this.Task, $"Error: Failed to map '{fileName}'\r\n" + ex, LogSeverity.Severe); MoveFileToErrorFolder(dts, config, fileName); } } else { TaskService.WriteTaskLog(this.Task, $"Error: The file '{fileName}' was empty", LogSeverity.Severe); MoveFileToErrorFolder(dts, config, fileName); } } } else { TaskService.WriteTaskLog(this.Task, $"INFO: There were no files to process.'", LogSeverity.Normal); } i++; profileName = GetTaskParameter($"DataTransfer{i}", ""); config = dts.FindDataTransferConfigurationModel(profileName); fileLoc = (config != null) ? config.TargetFolder : ""; } } return(0); }