using System;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.IO;
using System.Text;
using Newtonsoft.Json;

namespace MEU.API.MiddleWare
{
    public class CustomModelBinder: IModelBinder 
    {
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            
            var request = bindingContext.HttpContext.Request;

            using (var reader = new StreamReader(request.Body, Encoding.UTF8))
            {
                try
                {
                    var bodyString = reader.ReadToEnd();
                    var resultObject = JsonConvert.DeserializeObject<object>(bodyString);
                    RequestParams.setParam(bindingContext.FieldName, resultObject);
                    var result = JsonConvert.DeserializeObject(bodyString, bindingContext.ModelType);
                    bindingContext.Result = ModelBindingResult.Success(result);
                }
                catch (Exception ex)
                {
                }
              
            }

            return Task.CompletedTask;
        }
    }
}