示例#1
0
        public RowRecord Add(IExcelRow row, ISheet sheet, IExcelRowParseResult parseResult)
        {
            if (row == null)
            {
                throw new ArgumentNullException(nameof(row));
            }
            if (sheet == null)
            {
                throw new ArgumentNullException(nameof(sheet));
            }

            var excelFileRecord = sheet.Parent as ExcelFileRecord;

            if (excelFileRecord == null)
            {
                throw new ArgumentException("could not cast container as ExcelFileRecord");
            }
            var sheetRecord = sheet as SheetRecord;

            if (sheetRecord == null)
            {
                throw new ArgumentException("could not cast sheet as SheetRecord");
            }

            var rowRecord = new RowRecord(row, sheetRecord, parseResult);

            db.Add(rowRecord);
            return(rowRecord);
        }
示例#2
0
        public virtual async Task <IdInStoreValidationResult> ValidateIds(IExcelRowParseResult parseResult, IExcelRowParseRequest request)
        {
            var result = new IdInStoreValidationResult();

            if (!parseResult.InvalidIdValue.Value)
            {
                var found = await repo.RowRecordExists(request.Row.Sheet, parseResult.UserDefinedId.Value);

                if (found.HasValue)
                {
                    result.IdDuplicate = true;
                }
            }

            if (parseResult.ForeignUserDefinedId.HasValue)
            {
                var found = await repo.RowRecordExists(request.Row.Sheet.Parent.Sheets.FirstOrDefault(x => x.Index == 0)
                                                       , parseResult.ForeignUserDefinedId.Value);

                if (!found.HasValue)
                {
                    result.ForeignIdNotFound = true;
                }
                else
                {
                    result.ForeignId = found.Value;
                }
            }

            return(result);
        }
示例#3
0
 public void FillParseResult(IExcelRowParseResult parseResult)
 {
     UserDefinedId         = parseResult.UserDefinedId;
     ForeignUserDefinedId  = parseResult.ForeignUserDefinedId;
     InvalidIdValue        = parseResult.InvalidIdValue;
     InvalidForeignIdValue = parseResult.InvalidForeignIdValue;
     InvalidCells          = parseResult.InvalidCells;
     IdDuplicate           = parseResult.IdDuplicate;
     ForeignIdNotFound     = parseResult.ForeignIdNotFound;
     ForeignId             = parseResult.ForeignId;
     RowAsData             = parseResult.RowAsData;
     ParseOk = !parseResult.HasErrors();
 }
示例#4
0
 public RowRecord(IExcelRow row, SheetRecord sheet, IExcelRowParseResult parseResult)
 {
     FillData(row, sheet);
     FillParseResult(parseResult);
 }
 public static bool HasErrors(this IExcelRowParseResult result) =>
 result.InvalidIdValue.IsInvalidNullable() || result.InvalidForeignIdValue.IsInvalidNullable() ||
 result.IdDuplicate.IsInvalidNullable() || result.ForeignIdNotFound.IsInvalidNullable() ||
 (result.InvalidCells != null && result.InvalidCells.Length > 0);