public async Task <ProcessFileResultModel> ProcessFiles(ProcessFileModel fileModel) { try { FileFacade fileFacede = new FileFacade(_fileValidators, _fileFormatValidators, _businessRuleValidators); string folder = System.Web.Hosting.HostingEnvironment.MapPath("~/CSVFiles/"); List <string> serverFilePaths = new List <string>(); foreach (string filePath in fileModel.FilePaths) { serverFilePaths.Add(folder + filePath); } var fileResultTasks = fileFacede.ProcessFiles <Shipment>(serverFilePaths.ToArray()); var fileResults = await Task.WhenAll(fileResultTasks); return(new ProcessFileResultModel { Message = "File processing successful", FileResults = fileResults }); } catch { //ToDo: Proper logging at business logic level return(new ProcessFileResultModel { Message = "Error in processing file/s!" }); } }
public HttpResponseMessage GetFile(ProcessFileModel fileModel) { FileFacade fileFacede = new FileFacade(); //Here we know that all files are in single folder so we are sending only one folder path for Zip creation //Current service method will support zip file creation from diffrent paths as well List <string> filePaths = new List <string>(); filePaths.Add(fileModel.FilePaths[0]); string filePath = fileFacede.CreateZip(filePaths); FileInfo fileInfo = new FileInfo(filePath); return(FileAsAttachment(filePath, fileInfo.Name)); }
public static ProcessFileAggregate ToDomain(this ProcessFileModel processFile) { return(new ProcessFileAggregate { CreateDateTime = processFile.CreateDateTime, Description = processFile.Description, FileId = processFile.FileId, AggregateId = processFile.Id, Name = processFile.Name, Payload = processFile.Payload, NbInstances = processFile.NbInstances, Status = processFile.Status, UpdateDateTime = processFile.UpdateDateTime, Version = processFile.Version }); }
public async Task <ProcessFileResultModel> OmitAndIgnoreFormatValidation(ProcessFileModel fileModel) { try { FileFacade fileFacede = new FileFacade(_fileValidators, _fileFormatValidators, _businessRuleValidators); return(await fileFacede.OmitAndIgnoreFormatValidation <Shipment>(fileModel.FilePaths[0]).ContinueWith((resultTask) => { var fileResults = new List <FileResult>(); fileResults.Add(resultTask.Result); return new ProcessFileResultModel { Message = "File processing successful", FileResults = fileResults.ToArray() }; })); } catch { //ToDo: Proper logging at business logic level return(new ProcessFileResultModel { Message = "Error in processing file/s!" }); } }