private static void CheckAdw(string columnName, string listCode, int row, CellValidator validator, string codeValue) { if (string.IsNullOrEmpty(codeValue)) { return; } var codeColumn = new PatColumn { ColumnName = columnName, DataType = CommonConstants.DataTypeText, ListCode = listCode }; var errorMessage = string.Empty; if (!validator.CheckAdw(codeColumn, codeValue, ref errorMessage)) { AddOutcomeError(row, validator.Errors, errorMessage); } }
public IEnumerable <CellValidationError> ValidateFile(Stream stream, IAdwRepository adw) { LoadStandardHeadings(); var validator = new CellValidator(adw); // by default the CsvReader will skip empty lines using (var csv = new CsvReader(new StreamReader(stream), true)) { var columns = csv.GetFieldHeaders(); // these are the standard headings // Check for missing columns validator.Errors.AddRange(MissingColumns(columns.ToList())); // Check that the Headings are correct validator.Errors.AddRange(HeadingErrors(columns.ToList())); // if we have heading errors dont try to go any further if (validator.Errors.Count > 0) { goto EndOfValidation; } var r = 1; while (csv.ReadNextRecord()) { if (CsvHelper.EmptyLine(csv, columns.Length)) { continue; } // process the single row r++; //var questionType = string.Empty; //var questionText = string.Empty; //var answerColumn = string.Empty; //for each column of the row for (var c = 0; c < columns.Length; c++) { var val = csv[c]; var patColumn = SelectStandardColumn(columns[c]); //if ( patColumn.ColumnName.Equals( CommonConstants.QuestionColumn_QuestionType ) ) // questionType = val; //if ( patColumn.ColumnName.Equals( CommonConstants.QuestionColumn_QuestionText ) ) // questionText = val; //if ( patColumn.ColumnName.Equals( CommonConstants.QuestionColumn_AnswerColumn ) ) // answerColumn = val; if (validator.DataIsValid(column: patColumn, value: val, rowNumber: r)) { continue; } // test the number of errors against an arbitary limit if (!validator.Errors.Count.Equals(UploadValidationErrorLimit)) { continue; } validator.Errors.Add(new CellValidationError { OptionalMessage = ErrorLimitMessage() }); goto EndOfValidation; } } } EndOfValidation: return(validator.Errors); }
public IEnumerable <CellValidationError> ValidateFile(string fileName, IAdwRepository adw, bool includesOutcomes) { LoadStandardHeadings(includesOutcomes); var validator = new CellValidator(adw); // by default the CsvReader will skip empty lines using (var csv = new CsvReader(new StreamReader(fileName), true)) { var columns = csv.GetFieldHeaders(); // these are the standard headings // Check for missing columns validator.Errors.AddRange(MissingColumns(columns.ToList())); // Check that the Headings are correct validator.Errors.AddRange(HeadingErrors(columns.ToList())); // if we have heading errors dont try to go any further if (validator.Errors.Count > 0) { goto EndOfValidation; } var r = 1; while (csv.ReadNextRecord()) { if (CsvHelper.EmptyLine(csv, columns.Length)) { continue; } // process the review (single row) r++; //for each column of the row for (var c = 0; c < columns.Length; c++) { var val = csv[c]; var patColumn = SelectStandardColumn(columns[c]); if (validator.DataIsValid(column: patColumn, value: val, rowNumber: r)) { continue; } // test the number of errors against an arbitary limit if (!validator.Errors.Count.Equals(UploadValidationErrorLimit)) { continue; } validator.Errors.Add(new CellValidationError { OptionalMessage = ErrorLimitMessage() }); goto EndOfValidation; } // If there is outcome data check the outcome rules still are valid if (includesOutcomes) { CheckOutcomeData(csv, columns, r, validator); } } } EndOfValidation: return(validator.Errors); }
private static void CheckOutcomeData(CsvReader csv, IList <string> columns, int row, CellValidator validator) { // first extract the 4 outcome fields var assessmentCode = string.Empty; var assessmentAction = string.Empty; var recoveryReason = string.Empty; var outcomeCode = string.Empty; for (var i = 0; i < columns.Count; i++) { if (columns[i].Equals(CommonConstants.OutcomeColumnAssessmentCode)) { assessmentCode = csv[i]; } else if (columns[i].Equals(CommonConstants.OutcomeColumnRecoveryReasonCode)) { recoveryReason = csv[i]; } else if (columns[i].Equals(CommonConstants.OutcomeColumnAssessmentActionCode)) { assessmentAction = csv[i]; } else if (columns[i].Equals(CommonConstants.OutcomeColumnOutcomeCode)) { outcomeCode = csv[i]; } } // now we have 4 upload outcome values for a potential review CheckAdw(CommonConstants.OutcomeColumnOutcomeCode, DataConstants.AdwListCodeForOutcomeCodes, row, validator, outcomeCode); CheckAdw(CommonConstants.OutcomeColumnAssessmentActionCode, DataConstants.AdwListCodeForAssessmentActionCodes, row, validator, assessmentAction); CheckAdw(CommonConstants.OutcomeColumnRecoveryReasonCode, DataConstants.AdwListCodeForRecoveryReasonCodes, row, validator, recoveryReason); CheckAdw(CommonConstants.OutcomeColumnAssessmentCode, DataConstants.AdwListCodeForAssessmentCodes, row, validator, assessmentCode); // BR-PAUPL-0025 if (!string.IsNullOrEmpty(recoveryReason)) { if (string.IsNullOrEmpty(assessmentCode)) { AddOutcomeError(row, validator.Errors, "Recovery reason cannot exist without a Assessment code"); } } if (!string.IsNullOrEmpty(assessmentAction)) { if (string.IsNullOrEmpty(recoveryReason)) { AddOutcomeError(row, validator.Errors, "Assessment Action cannot exist without Recovery Reason"); } } if (string.IsNullOrEmpty(outcomeCode)) { return; } if (string.IsNullOrEmpty(assessmentCode)) { AddOutcomeError(row, validator.Errors, "Final outcome cannot exist without Assessment code"); } }