Ejemplo n.º 1
0
        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());
        }