using System.Collections.Generic;
using System.Web.Mvc;
using Kreta.BusinessLogic.Security;
using Kreta.Enums;
using Kreta.KretaServer.SystemSettings;
using Kreta.Web.Areas.TanuloErtekeles.Models.TanuloErtekeles;
using Kreta.Web.Security;

namespace Kreta.Web.Areas.TanuloErtekeles.Controllers
{
    [MvcRoleClaimsAuthorize(true)]
    [MvcRolePackageAuthorize(KretaClaimPackages.Tanulo.ClaimValue, KretaClaimPackages.Tanar.ClaimValue, KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Adminisztrator.ClaimValue)]
    public class TanuloErtekelesByTanuloController : BaseTanuloErtekelesController
    {
        public List<TanuloErtekelesByTanuloListModel> PartialViewModel(int? tanuloId, string namePrefix = null, List<int> oktatasiNevelesiFeladatIds = null, bool isOsztalyAtlagMegjelenik = false)
        {
            var model = new List<TanuloErtekelesByTanuloListModel>();

            if (oktatasiNevelesiFeladatIds == null || oktatasiNevelesiFeladatIds.Count < 1)
            {
                return model;
            }

            bool isJegyekAtlagaMegjelenik = SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Ertekelesnel_a_naplojegyek_atlaga_megjelenik, ClaimData.IntezmenyAzonosito, ClaimData.SelectedTanevID.Value);

            bool isOsztalyAtlagMegjelenikSystemSetting = SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyatlag_megjelenitese_az_ellenorzo_feluleten, ClaimData.IntezmenyAzonosito, ClaimData.SelectedTanevID.Value);

            foreach (int oktatasiNevelesiFeladatId in oktatasiNevelesiFeladatIds)
            {
                string feladatNamePrefix = namePrefix + oktatasiNevelesiFeladatId;

                model.Add(new TanuloErtekelesByTanuloListModel
                {
                    // TODO: jó lenne, ha egyértelműen látszódna a tényleges logika az IsNullOrWhiteSpace helyett
                    NamePrefix = string.IsNullOrWhiteSpace(feladatNamePrefix) ? "DefaultByTanulo" : feladatNamePrefix,
                    IsJegyekAtlagaMegjelenik = isJegyekAtlagaMegjelenik,
                    IsOsztalyAtlagMegjelenik = isOsztalyAtlagMegjelenikSystemSetting && isOsztalyAtlagMegjelenik,
                    TanuloId = tanuloId,
                    OktatasiNevelesiFeladatId = oktatasiNevelesiFeladatId
                });
            }

            return model;
        }

        public ActionResult TanuloErtekelesByTanuloGridDetail(TanuloErtekelesByTanuloDetailModel model, int oktatasiNevelesiFeladatId, string namePrefix = null)
        {
            // TODO: jó lenne, ha egyértelműen látszódna a tényleges logika az IsNullOrWhiteSpace helyett
            model.NamePrefix = string.IsNullOrWhiteSpace(namePrefix) ? "DefaultByTanulo" : namePrefix;
            model.OktatasiNevelesiFeladatId = oktatasiNevelesiFeladatId;
            return PartialView("GridDetail", model);
        }
    }
}