using System.Collections.Generic;
using System.Web.Http;
using System.Web.Http.Results;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Classes.ComboBox;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Utils;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Web.Helpers;
using Kreta.Web.Security;

namespace Kreta.Web.Areas.Adminisztracio.ApiControllers
{
    [AllowAnonymous]
    [ApiCsokkentettGondviseloAccess]
    public class GondviseloJelszoIgenyloApiController : ApiController
    {
        public JsonResult<List<ComboBoxListItem>> GetKozteruletJellegList([DataSourceRequest] DataSourceRequest request)
        {

            List<ComboBoxListItem> items = ((int)GeneratedAdatszotarTipusEnum.KozteruletJelleg).GetItemsByType(CommonUtils.GetAktualisTanevId(ClaimData.FelhasznaloId), true).ToComboBoxItemList();

            return Json(items);
        }

        public JsonResult<List<TelepulesListCO>> GetHelysegNevList([DataSourceRequest] DataSourceRequest request)
        {
            var helper = new TelepulesHelper(ConnectionTypeExtensions.GetOrganizationConnectionType());
            helper.GridParameters = null;
            var helperResult = helper.GetTelepulesek();

            return Json(helperResult);
        }

        public JsonResult<List<IranyitoszamListCO>> GetIranyitoszamList([DataSourceRequest] DataSourceRequest request, string serverFilter = "")
        {
            var helper = new TelepulesHelper(ConnectionTypeExtensions.GetOrganizationConnectionType());
            helper.GridParameters = null;
            var dictionary = helper.GetIranyitoszamok(serverFilter);

            return Json(dictionary);
        }

        public JsonResult<List<ComboBoxListItem>> GetOrszagList([DataSourceRequest] DataSourceRequest request)
        {
            return Json(((int)GeneratedAdatszotarTipusEnum.OrszagTipus).GetItemsByType(CommonUtils.GetAktualisTanevId(ClaimData.FelhasznaloId), true).ToComboBoxItemList());
        }

        [HttpPost]
        [ApiValidateAjaxAntiForgeryToken]
        public JsonResult<List<TelepulesListCO>> GetHelysegNevByIranyitoszamList(string iranyitoSzam)
        {
            var helper = new TelepulesHelper(ConnectionTypeExtensions.GetOrganizationConnectionType());
            helper.GridParameters = null;
            var helperResult = helper.GetTelepulesek(iranyitoSzam);

            return Json(helperResult);
        }

        public JsonResult<List<ComboBoxListItem>> GetRokonsagiFokList([DataSourceRequest] DataSourceRequest request)
        {
            List<ComboBoxListItem> items = ((int)GeneratedAdatszotarTipusEnum.RokonsagiFok).GetItemsByType(CommonUtils.GetAktualisTanevId(ClaimData.FelhasznaloId), true).ToComboBoxItemList(new List<int> { (int)RokonsagiFokEnum.egyeb_nem_rokoni_kapcsolat, (int)RokonsagiFokEnum.egyeb_rokoni_kapcsolat });

            return Json(items);
        }

        public JsonResult<List<ComboBoxListItem>> GetEmailTipusList([DataSourceRequest] DataSourceRequest request)
        {
            List<ComboBoxListItem> items = ((int)GeneratedAdatszotarTipusEnum.EmailTipus).GetItemsByType(CommonUtils.GetAktualisTanevId(ClaimData.FelhasznaloId), true).ToComboBoxItemList(new List<int> { (int)EmailTipusEnum.PublikusEmailcim });

            return Json(items);
        }

        public JsonResult<List<IranyitoszamTelepulesListCO>> GetIranyitoszamokEsTelepulesek([DataSourceRequest] DataSourceRequest request)
        {
            var helper = new TelepulesHelper(ConnectionTypeExtensions.GetOrganizationConnectionType());
            var list = helper.GetIranyitoszamokEsTelepulesek();

            return Json(list);
        }
    }
}