/// <summary> /// Takes in an input HttpPostedFileBase and returns a parsed CsvTable object /// </summary> /// <param name="inputFile"></param> /// <param name="containsHeader"></param> /// <returns></returns> public CsvHandleResult ParseCsvFile(HttpPostedFileBase inputFile, bool containsHeader) { var result = new CsvHandleResult(); if (!_validationService.IsCsvFile(inputFile.FileName)) { result.ErrorMessage = $"Selected file, {inputFile.FileName}, does not have supported format CSV. Nothing has been uploaded"; return(result); } var uploadedFilePath = _fileService.StoreFile(inputFile); if (string.IsNullOrWhiteSpace(uploadedFilePath)) { result.ErrorMessage = "File failed to save to server"; return(result); } var fileContent = _fileService.ReadFile(uploadedFilePath); if (string.IsNullOrWhiteSpace(fileContent)) { result.ErrorMessage = "File had no content"; return(result); } var parsedFileContent = _parsingService.ParseCsv(fileContent, containsHeader); if (parsedFileContent == null) { result.ErrorMessage = "Failed to parse file content"; return(result); } result.Success = true; result.ParsedCsvContent = parsedFileContent; return(result); }
/// <summary> /// Validate, store and parse Csv File /// </summary> /// <param name="inputFile">IFormFile</param> /// <param name="isHeadedFile">bool</param> /// <returns>Successfully parsed data or error message - CsvHandleResult task</returns> public async Task <CsvHandleResult> ParseCsvFile(IFormFile inputFile, bool isHeadedFile) { var result = new CsvHandleResult(); // Check file is valid if (!_validationService.IsCsvFile(inputFile.FileName)) { result.ErrorMessage = $"Selected file, {inputFile.FileName}, does not have supported format CSV"; return(result); } // Store the file var uploadedFilePath = await _fileService.StoreFile(inputFile); if (string.IsNullOrWhiteSpace(uploadedFilePath)) { result.ErrorMessage = "File failed to save to server"; return(result); } // Parse the file var parsedFileContent = _parsingService.ParseCsv( uploadedFilePath, isHeadedFile); if (parsedFileContent == null) { result.ErrorMessage = "Failed to parse file content"; return(result); } result.Success = true; result.ParsedCsvContent = parsedFileContent; return(result); }