using System.IO; namespace Shared; public class FilePathGeneratorInfo { public string To { get; protected set; } public string From { get; protected set; } public bool IsErrorFile { get; protected set; } public string SubFolderPath { get; protected set; } public string FirstDirectory { get; protected set; } public string ReportFullPath { get; protected set; } public string ResolvedFileLocation { get; protected set; } public FilePathGeneratorInfo(object originalFilePathGenerator, string reportFullPath, bool isErrorFile, System.Collections.Generic.Dictionary fileParameter) { ReportFullPath = reportFullPath; IsErrorFile = isErrorFile; if (originalFilePathGenerator is null || originalFilePathGenerator is not FilePathGenerator original) { FirstDirectory = string.Empty; ResolvedFileLocation = string.Empty; To = string.Empty; From = string.Empty; } else { string directorySeparatorChar = Path.DirectorySeparatorChar.ToString(); FilePathGenerator filePathGenerator = new(original.FileConnectorConfiguration, reportFullPath, isErrorFile); SubFolderPath = filePathGenerator.GetSubFolderPath(); if (string.IsNullOrEmpty(SubFolderPath)) FirstDirectory = SubFolderPath; else FirstDirectory = SubFolderPath.Split(Path.DirectorySeparatorChar)[0]; ResolvedFileLocation = filePathGenerator.GetTargetFolder(); if (string.IsNullOrEmpty(ResolvedFileLocation) && string.IsNullOrEmpty(SubFolderPath)) To = string.Empty; else if (string.IsNullOrEmpty(SubFolderPath)) To = ResolvedFileLocation; else To = string.Concat(ResolvedFileLocation.Replace(SubFolderPath, string.Empty), Path.DirectorySeparatorChar, FirstDirectory); #if (true) if (string.IsNullOrEmpty(original.FileConnectorConfiguration.DefaultPlaceHolderValue)) original.FileConnectorConfiguration.DefaultPlaceHolderValue = "NA"; if (fileParameter is not null && fileParameter.Count == 1 && To.Contains(original.FileConnectorConfiguration.DefaultPlaceHolderValue)) { foreach (System.Collections.Generic.KeyValuePair keyValuePair in fileParameter) To = To.Replace(string.Concat(original.FileConnectorConfiguration.DefaultPlaceHolderValue), keyValuePair.Value); } #endif if (original.FileConnectorConfiguration.SourceFileLocation.EndsWith(directorySeparatorChar)) From = string.Concat(original.FileConnectorConfiguration.SourceFileLocation, FirstDirectory); else From = string.Concat(original.FileConnectorConfiguration.SourceFileLocation, Path.DirectorySeparatorChar, FirstDirectory); if (From.EndsWith(directorySeparatorChar) && !To.EndsWith(directorySeparatorChar)) To = string.Concat(To, Path.DirectorySeparatorChar); else if (To.EndsWith(directorySeparatorChar) && !From.EndsWith(directorySeparatorChar)) To = To.Remove(To.Length - 1, 1); } } }