private async Task ValidateColumnsAsync(IAdminObject migrationObject, IParser parser, List <ImportJobError> violations) { if (migrationObject != null && parser != null) { var missingColumns = new List <String>(); var requiredColumns = (await migrationObject.GetColumnsAsync()).Select(x => x.ColumnName).ToList(); var loadFileColumns = parser.ParseColumns(); foreach (var requiredColumn in requiredColumns) { if (!loadFileColumns.Contains(requiredColumn)) { missingColumns.Add(requiredColumn); } } if (missingColumns.Any()) { var formattedMissingColumnList = String.Join(Constant.CommaSeparator, missingColumns); violations.Add(new ImportJobError() { Message = String.Format(Constant.ErrorMessages.MissingColumnsError, formattedMissingColumnList), LineNumber = null, Type = Constant.ImportUtilityJob.ErrorType.FileLevel }); } } }
private async Task ValidateFileDoesNotContainExtraColumnsAsync(IAdminObject migrationObject, IParser parser, String migrationObjectType, List <ImportJobError> violations) { if (migrationObject != null && parser != null) { var requiredColumns = (await migrationObject.GetColumnsAsync()).Select(x => x.ColumnName).ToList(); var loadFileColumns = parser.ParseColumns(); var extraColumns = loadFileColumns.Except(requiredColumns); if (extraColumns.Any()) { var formattedExtraColumnList = String.Join(Constant.CommaSeparator, extraColumns); violations.Add(new ImportJobError() { Message = String.Format(Constant.ErrorMessages.ExtraColumnsError, migrationObjectType, formattedExtraColumnList), LineNumber = null, Type = Constant.ImportUtilityJob.ErrorType.FileLevel }); } } }
public async Task WriteColumnHeadersToExportFileAsync(FileInfo tempFileInfo, String objectTypeEnum) { try { using (StreamWriter streamWriter = tempFileInfo.AppendText()) //creates file if it does not already exists { IAdminObject migrationObject = await Utility.GetImportObjectSelectionAsync(objectTypeEnum); String[] headers = (await migrationObject.GetColumnsAsync()).Select(x => x.ColumnName).ToArray(); String csvFormattedColumns = await Utility.FormatCsvLineAsync(headers); //write header await streamWriter.WriteLineAsync(csvFormattedColumns); } } catch (Exception ex) { throw new AdminMigrationUtilityException(Constant.ErrorMessages.WritingColumnHeadersToExportFileError, ex); } }