public ApplicationScreeningResponse ParseApplicationResponse(string businessFileContent, string associatesFileContent) { CsvHelper.Configuration.Configuration config = new CsvHelper.Configuration.Configuration(); config.SanitizeForInjection = true; config.IgnoreBlankLines = true; config.TrimOptions = CsvHelper.Configuration.TrimOptions.Trim; config.ShouldSkipRecord = record => { return(record.All(string.IsNullOrEmpty)); }; // fix for unexpected spaces in header config.PrepareHeaderForMatch = (string header, int index) => header = header.Trim().ToLower(); TextReader businessTextReader = new StringReader(businessFileContent); var businessCsv = new CsvReader(businessTextReader, config); businessCsv.Configuration.RegisterClassMap <CsvBusinessImportMap>(); TextReader associatesTextReader = new StringReader(associatesFileContent); var associatesCsv = new CsvReader(associatesTextReader, config); associatesCsv.Configuration.RegisterClassMap <CsvAssociateImportMap>(); try { CsvBusinessImport businessImport = businessCsv.GetRecords <CsvBusinessImport>().ToList().First(); List <CsvAssociateImport> associatesImport = associatesCsv.GetRecords <CsvAssociateImport>().ToList(); ApplicationScreeningResponse response = new ApplicationScreeningResponse() { RecordIdentifier = businessImport.LcrbBusinessJobId.PadLeft(6, '0'), Result = businessImport.Result, Associates = new List <Associate>() }; foreach (var associate in associatesImport) { response.Associates.Add(new Associate() { SpdJobId = associate.LcrbAssociateJobId, LastName = associate.Last, FirstName = associate.First, MiddleName = associate.Middle }); } return(response); } catch (Exception e) { _logger.LogError("Error parsing worker response."); _logger.LogError("Message:"); _logger.LogError(e.Message); // return an empty list so we continue processing other files. return(new ApplicationScreeningResponse()); } }
public ActionResult SendApplicationScreeningResponse([FromBody] ApplicationScreeningResponse result, string applicationId) { result.Result = result.Result.ToUpper(); if (result.Result != "PASS" && result.Result != "FAIL") { return(BadRequest()); } result.RecordIdentifier = applicationId; List <ApplicationScreeningResponse> payload = new List <ApplicationScreeningResponse>() { result }; //Send the result to CARLA BackgroundJob.Enqueue(() => new CarlaUtils(Configuration, _loggerFactory, _sharepoint).ProcessResults(null)); _logger.LogInformation($"Started send Application Screening result for job: {result.RecordIdentifier}"); return(Ok()); }