using System.Collections.Generic;
using System.Data;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Web.Areas.Feljegyzes.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
using Newtonsoft.Json;

namespace Kreta.Web.Areas.Feljegyzes.ApiControllers
{
    [ApiRoleClaimsAuthorize(true)]
    [ApiRolePackageAuthorize(KretaClaimPackages.Tanar.ClaimValue, KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue)]
    public class OsszefuggoSzakGyakApiController : ApiController
    {
        public DataSourceResult GetOsszefuggoSzakGyakGrid(string data, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))]
            DataSourceRequest request)
        {
            var model = JsonConvert.DeserializeObject<OsszefuggoSzakGyakSearchModel>(data);

            if (model.CsoportIdSearch == null || model.TantargyIdSearch == null)
            {
                return new DataSourceResult();
            }

            var helper = new OsszefuggoSzakGyakHelper(ConnectionTypeExtensions.GetSessionConnectionType())
            {
                GridParameters = Converter.GridParameter(request)
            };
            DataSet dataSet = helper.GetOsszefuggoSzakGyakGrid(model.CsoportIdSearch.Value, model.TantargyIdSearch.Value);

            return dataSet.ToDataSourceResult();
        }

        [HttpPost]
        public HttpResponseMessage Save(List<OsszefuggoSzakGyakGridModel> modelList)
        {
            var coList = new List<OsszefuggoSzakGyakGridCo>();
            foreach (var item in modelList)
            {
                coList.Add(item.ToCo());
            }

            var helper = new OsszefuggoSzakGyakHelper(ConnectionTypeExtensions.GetSessionConnectionType());
            helper.SaveOsszefuggoSzakGyakGrid(coList);

            return new HttpResponseMessage(HttpStatusCode.OK);
        }
    }
}