You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
2.2 KiB
48 lines
2.2 KiB
using Common.Models.ModelValidation;
|
|
using Common.Models.RequestResponse;
|
|
using log4net;
|
|
using Newtonsoft.Json;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Web.Http.Controllers;
|
|
using System.Web.Http.Filters;
|
|
|
|
namespace ThirdPartyAPIs.CustomFilter
|
|
{
|
|
public class ValidationActionFilter : ActionFilterAttribute
|
|
{
|
|
private readonly ILog _log = LogManager.GetLogger(typeof(ValidationActionFilter));
|
|
|
|
public override void OnActionExecuting(HttpActionContext actionContext)
|
|
{
|
|
var modelState = actionContext.ModelState;
|
|
if (!modelState.IsValid)
|
|
{
|
|
TPResponse jsonResponse = new TPResponse();
|
|
jsonResponse.ResponseCode = "104";
|
|
jsonResponse.Msg = "Model Not Valid";
|
|
List<FieldsValidation> modelList = new List<FieldsValidation>();
|
|
foreach (var item in modelState.Keys)
|
|
{
|
|
var err = modelState[item].Errors.ToList();
|
|
err.Select(x =>
|
|
{
|
|
var mes = (string.IsNullOrWhiteSpace(x.ErrorMessage) && string.IsNullOrEmpty(x.ErrorMessage) ? (!string.IsNullOrEmpty(x.Exception.Message) && !string.IsNullOrWhiteSpace(x.Exception.Message) ? x.Exception.Message : "") : x.ErrorMessage);
|
|
modelList.Add(new FieldsValidation() { Name = item.Split('.')[1], Message = mes });
|
|
return x;
|
|
}).ToList();
|
|
}
|
|
jsonResponse.Data = modelList;
|
|
var a = JsonConvert.SerializeObject(jsonResponse);
|
|
//var abc = actionContext.Request.CreateResponse(HttpStatusCode.BadRequest, jsonResponse);
|
|
//actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.BadRequest, jsonResponse);
|
|
//actionContext.Response = actionContext.Request
|
|
// .CreateErrorResponse(HttpStatusCode.BadRequest, a.ToString());
|
|
_log.Info("Fields Are Not Valid Data:" + a);
|
|
actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, a.ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|