using System.Web.Http;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Web.Areas.Tanulo.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
using Newtonsoft.Json;

namespace Kreta.Web.Areas.Tanulo.ApiControllers
{
    [ApiRoleClaimsAuthorize(true)]
    [ApiRolePackageAuthorize(KretaClaimPackages.CsoportVezeto.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue)]
    public class CsoportTanuloiAdatokApiController : ApiController
    {
        public DataSourceResult GetTanuloiAlapadatokGrid(string data, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
        {
            var model = JsonConvert.DeserializeObject<TanuloiAdatokModel>(data);
            var tanuloId = model?.TanuloId;
            var osztalyCsoportId = model?.OsztalyCsoportId;
            var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
            DataSourceResult result = tanuloId.IsEntityId() ?
                helper.GetTanuloiAlapadatokGrid(tanuloId.Value, osztalyCsoportId.Value).ToDataSourceResult() :
                new DataSourceResult();
            return result;
        }

        public DataSourceResult GetTanuloiTanugyiadatokGrid(string data, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
        {
            var model = JsonConvert.DeserializeObject<TanuloiAdatokModel>(data);
            var tanuloId = model?.TanuloId;
            var osztalyCsoportId = model?.OsztalyCsoportId;
            var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
            DataSourceResult result = tanuloId.IsEntityId() ?
                helper.GetTanuloiTanugyiadatokGrid(tanuloId.Value, osztalyCsoportId.Value).ToDataSourceResult() :
                new DataSourceResult();
            return result;
        }

        public DataSourceResult GetTanuloiEgyebAdatokGrid(string data, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
        {
            var model = JsonConvert.DeserializeObject<TanuloiAdatokModel>(data);
            var tanuloId = model?.TanuloId;
            var osztalyCsoportId = model?.OsztalyCsoportId;
            var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
            DataSourceResult result = tanuloId.IsEntityId() ?
                helper.GetTanuloiEgyebAdatokGrid(tanuloId.Value, osztalyCsoportId).ToDataSourceResult() :
                new DataSourceResult();
            return result;
        }

        public DataSourceResult GetTanuloiGondviseloAdatokGrid(string data, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
        {
            var model = JsonConvert.DeserializeObject<TanuloiAdatokModel>(data);
            var tanuloId = model?.TanuloId;
            var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
            DataSourceResult result = tanuloId.IsEntityId() ?
                helper.GetTanuloiGondviseloAdatokGrid(tanuloId.Value).ToDataSourceResult() :
                new DataSourceResult();
            return result;
        }
    }
}