public override FixErrorContainer Validate()

in FixAntenna/NetCore/Validation/Validators/FieldsDefinitionsTypeValidator.cs [42:116]


		public override FixErrorContainer Validate(string msgType, IValidationFixMessage message,
			bool isContentValidation)
		{
			var fixMessage = (ValidationFixMessage)message;
			var errors = new FixErrorContainer();
			string versionOfMessage = null;
			var fieldList = fixMessage.FullFixMessage;

			if (fieldList.IsTagExists(8))
			{
				versionOfMessage = fieldList.GetTagValueAsString(8);
			}

			double fixVersion = 0;
			if (versionOfMessage != null)
			{
				fixVersion = Convert.ToDouble(versionOfMessage.Substring(versionOfMessage.Length - 3), CultureInfo.InvariantCulture);
			}

			var fieldsLength = fieldList.Length;
			for (var fieldCount = 0; fieldCount < fieldsLength; fieldCount++)
			{
				var tagValue = fieldList[fieldCount];
				var tag = tagValue.TagId;
				if (isContentValidation && IsHeaderOrTrailer(tag))
				{
					continue;
				}

				if (tagValue.Length == 0)
				{
					errors.Add(FixErrorBuilder.BuildError(FixErrorCode.TagSpecifiedWithoutValue, tagValue,
						fixMessage.GetMsgSeqNumber(), msgType, tag));
				}
				else
				{
					var fieldsdef = Util.GetFieldDef();
					var fieldDefSize = fieldsdef.Length;
					var allTags = Util.GetAllTags();
					for (var fieldDefCount = 0; fieldDefCount < fieldDefSize; fieldDefCount++)
					{
						if (allTags[fieldDefCount] == tag)
						{
							var fielddef = fieldsdef[fieldDefCount];
							var type = (FixTypesEnum)Enum.Parse(typeof(FixTypesEnum),
								PrepareType(fielddef.Type), true);
							try
							{
								if (IsInvalidTypeValue(type, tagValue, fixVersion))
								{
									errors.Add(FixErrorBuilder.BuildError(
										FixErrorCode.IncorrectDataFormatForValue, tagValue, fixMessage.GetMsgSeqNumber(),
										msgType, tag));
								}
								else if (!IsCorrectValue(type, tagValue, fielddef))
								{
									errors.Add(FixErrorBuilder.BuildError(
										FixErrorCode.ValueIncorrectOutOfRangeForTag, tagValue,
										fixMessage.GetMsgSeqNumber(), msgType, tag));
								}
							}
							catch (ArgumentException ex)
							{
								errors.Add(FixErrorBuilder.BuildError(FixErrorCode.IncorrectDataFormatForValue,
									tagValue, ex.Message));
							}

							break;
						}
					}
				}
			}

			return errors;
		}