using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using FluentValidation;
using Jp.ApiCamService.Dtos;
namespace Jp.ApiCam.Infrastructures
{
///
/// 模型验证扩展类
///
public static class AbstractValidatorExtensions
{
///
/// 视图模型验证
///
/// 视图模型
/// 验证器
/// 视图模型类型
/// item1: true|false , item2: errormsg
public static Tuple ViewModelValidate(this IReadOnlyList viewModels) where TValidator : new()
{
bool isValid = true;
var errors = new StringBuilder();
for (var i = 0; i < viewModels.Count; i++)
{
var m = viewModels[i];
var validator = new TValidator() as AbstractValidator;
var validRes = validator.Validate(m);
if (!validRes.IsValid)
{
isValid = false;
errors.Append("索引[" + i + "] " + validRes.Errors.Select(x => x.PropertyName + ":" + x.ErrorMessage).Aggregate((a, b) => a + " 、" + b) + "。");
}
}
return new Tuple(isValid, new ResponseInfoDto(0, errors.ToString()));
}
}
}