protected override void OnValidRecord( ValidateRecordEventArgs e ) { if( _Activity.Mode != ImportMode.Smart ) { int supplierId = (int)e.Record[ "SupplierID" ]; if( !_supplierId.HasValue ) { //Прайсклинер тоже ставит лок _priceCleaner.ClearData( supplierId, _CurrentReport.Counters ); _supplierId = supplierId; //Проверка в списке собственных складов var cnt = LockerManager.CheckOwnStore(supplierId, _Connection); //Если поставщик находится в собственных складах наличия то пытаемся получить лок на базу данных, если не получаем то вываливаемся с исключением if (cnt > 0 && LockerManager.AquireCheckLock(_Connection) < 0) { //Если здесь вываливаемся, то попадаем throw new Exception(); } } //импорт прайс-листов: ид поставщика должен быть у всех одинаковый if( _supplierId != supplierId ) { e.AddValidationErrorDetail( new CustomValidationErrorDetail( "SupplierID - не совпадает с первой строкой файла" ) ); } } }
protected virtual bool OnValidateRecord(DataReaderBase.RecordValuesCollection values) { if (ValidateRecord != null) { var details = ValidateCurrentRecord(); var args = new ValidateRecordEventArgs( (IDataRecord)_reader, values, this ); foreach( var validationErrorDetail in details ) args.AddValidationErrorDetail( validationErrorDetail ); ValidateRecord(this, args); return !args.IsValid || args.SkipRecord; } return true; }
private void OnValidateRecord( object sender, ValidateRecordEventArgs e ) { _CurrentReport.TotalCount++; if( e.IsValid ) { OnValidRecord( e ); } if( !e.IsValid ) { _CurrentReport.AddError( e.Error ); } }
protected virtual void OnValidRecord( ValidateRecordEventArgs e ) { }