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));
        }
Esempio n. 3
0
 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!"
         });
     }
 }