public override ValidatorResult Validate(MessageModel message) { ValidatorResult toReturn = base.Validate(message); if (message.PayloadAsJArray != null) { if (message.PayloadAsJArray.Any()) { int itemIdx = 0; IEnumerable <IPayloadPropertyValidator> payloadPropertyValidators = new List <IPayloadPropertyValidator>() { new ProductIdValidator(), new ProductQuantityValidator() }; message.PayloadAsJArray.ForEach(t => { IEnumerable <ValidatorResult> results = payloadPropertyValidators.Select(v => v.Validate(t as JObject)); toReturn.Concat(results.Where(r => r.Messages.Any()).Select(r => new ValidatorResult() { IsValid = r.IsValid, Messages = r.Messages.Select(m => $"[Item {itemIdx}] {m}") })); itemIdx++; }); } else { toReturn.Concat(new ValidatorResult() { IsValid = false, Messages = new List <string>() { "The payload collection is empty" } }); } } else { toReturn.Concat(new ValidatorResult() { IsValid = false, Messages = new List <string>() { "The payload is not a collection of items" } }); } return(toReturn); }
public override ValidatorResult Validate(MessageModel message) { ValidatorResult toReturn = base.Validate(message); toReturn.Concat(message.PayloadAsJObject != null ? this.PayloadPropertyValidators.Select(v => v.Validate(message.PayloadAsJObject)) : new List <ValidatorResult>() { new ValidatorResult() { IsValid = false, Messages = new List <string>() { "There is no payload from this message" } } }); return(toReturn); }