private async Task ValidateDateOfChange(UpdateApprenticeshipStatusCommand command, Validation.ValidationResult validationResult) { if (command.ChangeType == ChangeStatusType.Stop) // Only need to validate date for stop currently { var response = await _mediator.SendAsync(new GetApprenticeshipQueryRequest { AccountId = command.EmployerAccountId, ApprenticeshipId = command.ApprenticeshipId }); if (response.Apprenticeship.IsWaitingToStart(_currentDateTime)) { if (!command.DateOfChange.Equals(response.Apprenticeship.StartDate)) { validationResult.AddError(nameof(command.DateOfChange), "Date must the same as start date if training hasn't started"); throw new InvalidRequestException(validationResult.ValidationDictionary); } } else { if (command.DateOfChange > _currentDateTime.Now.Date) { validationResult.AddError(nameof(command.DateOfChange), "Date must be a date in the past"); throw new InvalidRequestException(validationResult.ValidationDictionary); } if (response.Apprenticeship.StartDate > command.DateOfChange) { validationResult.AddError(nameof(command.DateOfChange), "Date cannot be earlier than training start date"); throw new InvalidRequestException(validationResult.ValidationDictionary); } } } }
private (SCHEMA2 Model, Validation.ValidationResult Validation) _Read(BYTES jsonUtf8Bytes) { Guard.NotNull(jsonUtf8Bytes, nameof(jsonUtf8Bytes)); var root = new SCHEMA2(); var vcontext = new Validation.ValidationResult(root, this.Validation); var reader = new Utf8JsonReader(jsonUtf8Bytes); if (!reader.Read()) { vcontext.AddError(new Validation.ModelException(root, "Json is empty")); return(null, vcontext); } try { root.Deserialize(ref reader); root.OnDeserializationCompleted(); } catch (JsonException rex) { vcontext.AddError(new Validation.SchemaException(root, rex)); return(null, vcontext); } // schema validation root.ValidateReferences(vcontext.GetContext()); var ex = vcontext.Errors.FirstOrDefault(); if (ex != null) { return(null, vcontext); } // resolve external dependencies root._ResolveSatelliteDependencies(this); // full validation if (this.Validation != VALIDATIONMODE.Skip) { root.Validate(vcontext.GetContext()); ex = vcontext.Errors.FirstOrDefault(); if (ex != null) { return(null, vcontext); } } return(root, vcontext); }
private (SCHEMA2 Model, Validation.ValidationResult Validation) _ReadGLB(Stream stream) { Guard.NotNull(stream, nameof(stream)); IReadOnlyDictionary <uint, Byte[]> chunks = null; try { chunks = BinarySerialization.ReadBinaryFile(stream); } catch (System.IO.EndOfStreamException /*ex*/) { var vr = new Validation.ValidationResult(null, this.Validation); vr.AddError(new Validation.SchemaException(null, "Unexpected EOF")); return(null, vr); } catch (Validation.SchemaException ex) { var vr = new Validation.ValidationResult(null, this.Validation); vr.AddError(ex); return(null, vr); } var context = this; if (chunks.ContainsKey(BinarySerialization.CHUNKBIN)) { // clone self var binChunk = chunks[BinarySerialization.CHUNKBIN]; context = new ReadContext(context); context._BinaryChunk = binChunk; } var jsonChunk = chunks[BinarySerialization.CHUNKJSON]; return(context._Read(jsonChunk)); }
private static (MODEL Model, Validation.ValidationResult Validation) _Read(TextReader textReader, ReadSettings settings) { Guard.NotNull(textReader, nameof(textReader)); Guard.NotNull(settings, nameof(settings)); using (var reader = new JsonTextReader(textReader)) { var root = new MODEL(); var vcontext = new Validation.ValidationResult(root); if (!reader.Read()) { vcontext.AddError(new Validation.ModelException(root, "Json is empty")); return(null, vcontext); } try { root.Deserialize(reader); } catch (JsonReaderException rex) { vcontext.AddError(new Validation.SchemaException(root, rex)); return(null, vcontext); } // schema validation root.ValidateReferences(vcontext.GetContext(root)); var ex = vcontext.Errors.FirstOrDefault(); if (ex != null) { return(null, vcontext); } // resolve external references foreach (var buffer in root._buffers) { buffer._ResolveUri(settings.FileReader); } foreach (var image in root._images) { image._ResolveUri(settings.FileReader); } // full validation if (!settings.SkipValidation) { root.Validate(vcontext.GetContext(root)); ex = vcontext.Errors.FirstOrDefault(); if (ex != null) { return(null, vcontext); } } return(root, vcontext); } }
private (SCHEMA2 Model, Validation.ValidationResult Validation) _Read(ReadOnlyMemory <Byte> jsonUtf8Bytes) { var root = new SCHEMA2(); var vcontext = new Validation.ValidationResult(root, this.Validation); if (jsonUtf8Bytes.IsEmpty) { vcontext.AddError(new Validation.SchemaException(null, "JSon is empty.")); } var reader = new Utf8JsonReader(jsonUtf8Bytes.Span); try { if (!reader.Read()) { vcontext.AddError(new Validation.SchemaException(root, "Json is empty")); return(null, vcontext); } root.Deserialize(ref reader); root.OnDeserializationCompleted(); } catch (JsonException rex) { vcontext.AddError(new Validation.SchemaException(root, rex)); return(null, vcontext); } // binary chunk check foreach (var b in root.LogicalBuffers) { b.OnValidateBinaryChunk(vcontext.GetContext(root), this._BinaryChunk); } // schema validation root.ValidateReferences(vcontext.GetContext()); var ex = vcontext.Errors.FirstOrDefault(); if (ex != null) { return(null, vcontext); } // resolve external dependencies root._ResolveSatelliteDependencies(this); // full validation if (this.Validation != VALIDATIONMODE.Skip) { root.Validate(vcontext.GetContext()); ex = vcontext.Errors.FirstOrDefault(); if (ex != null) { return(null, vcontext); } } return(root, vcontext); }