using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Net; using System.Web.Mvc; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Classes.ComboBox; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.BusinessLogic.Security; using Kreta.Core; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Enums.ManualEnums.SystemSettings; using Kreta.Framework.Util; using Kreta.Resources; using Kreta.Web.Areas.Adminisztracio.Models; using Kreta.Web.Areas.TanuloErtekeles.Models.TanuloErtekeles; using Kreta.Web.Classes; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Error; using Kreta.Web.Models.EditorTemplates; using Kreta.Web.Security; namespace Kreta.Web.Areas.TanuloErtekeles.Controllers { [MvcRoleClaimsAuthorize(true)] [MvcRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue)] public class MagatartasSzorgalomController : BaseTanuloErtekelesController { #region Properties public static string StartPopupFormName => "MagatartasSzorgalomStartPopupForm"; public static string StartPopupId => "MagatartasSzorgalomStartPopupWindow"; public static string EditPopupFormName => "MagatartasSzorgalomEditPopupForm"; public static string EditPopupId => "MagatartasSzorgalomEditPopupWindow"; #endregion Properties private IKretaAuthorization Authorization { get; } public MagatartasSzorgalomController(IKretaAuthorization authorization) { Authorization = authorization; } [MvcRolePackageAuthorize(KretaClaimPackages.TanarAdhatMagatartasSzorgalomJegyet.ClaimValue)] public ActionResult IndexEvkoziTanar() { return IndexEvkozi(isTanarEvkozi: true); } public ActionResult IndexEvkoziOfo() { return IndexEvkozi(isTanarEvkozi: false); } private ActionResult IndexEvkozi(bool isTanarEvkozi) { MagatartasSzorgalomListModel model = GetMagatartasSzorgalomListModel((int)ErtekelesTipusEnum.evkozi_jegy_ertekeles, isTanarEvkozi); return View("Index", model); } public ActionResult IndexFeleviOfo() { return IndexFelevi(); } private ActionResult IndexFelevi() { MagatartasSzorgalomListModel model = GetMagatartasSzorgalomListModel((int)ErtekelesTipusEnum.felevi_jegy_ertekeles); return View("Index", model); } public ActionResult IndexEvvegiOfo() { return IndexEvvegi(); } private ActionResult IndexEvvegi() { MagatartasSzorgalomListModel model = GetMagatartasSzorgalomListModel((int)ErtekelesTipusEnum.evvegi_jegy_ertekeles); return View("Index", model); } public ActionResult IndexEgyebOfo() { return IndexEgyeb(); } private ActionResult IndexEgyeb() { MagatartasSzorgalomListModel model = GetMagatartasSzorgalomListModel(); return View("Index", model); } public ActionResult MagatartasSzorgalomGridDetail(MagatartasSzorgalomDetailModel model) { model.NamePrefix = "MagatartasSzorgalom"; model.IsAmiMagatartasErtekelheto = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue(RendszerBeallitasTipusEnum.magatartas_ertekeles_szabalyozasa); return PartialView("GridDetail", model); } [MvcRolePackageAuthorize(KretaClaimPackages.CsoportVezeto.ClaimValue, KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.TanarAdhatMagatartasSzorgalomJegyet.ClaimValue)] public ActionResult OpenStartPopup(int? tipusId) { int keresoAdatTipus = GetKeresoAdatTipus(); var model = new MagatartasSzorgalomStartPopupModel { MagatartasSzorgalomKeresoAdatTipus = keresoAdatTipus, MagatartasSzorgalomKeresoSzuro = ClaimData.IsOnlyTanar ? (int)MagatartasSzorgalomKeresoSzuroEnum.Ttf : (int)MagatartasSzorgalomKeresoSzuroEnum.Osztalyfonok, TipusId = tipusId, MagatartasSzorgalomKeresoSzuroList = GetMagatartasSzorgalomKeresoSzuroList(keresoAdatTipus), TipusList = GetTipusList(), OsztalyCsoportList = GetOsztalyCsoportList(), OsztalyCsoportListByFelhasznaloId = GetOsztalyCsoportListByFelhasznaloId(), OsztalyCsoportListByFoglalkozas = GetOsztalyCsoportListByFoglalkozas() }; return PartialView("Start_Popup", model); } [MvcRolePackageAuthorize(KretaClaimPackages.CsoportVezeto.ClaimValue, KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.TanarAdhatMagatartasSzorgalomJegyet.ClaimValue)] public ActionResult OpenEditPopup(int id, int ellatottFeladatTipusId) { if (!Authorization.IsValidMagatartasSzorgalom(id)) { throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.NincsJogaAzOldalMegtekintesehez); } var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var helper = new TanuloErtekelesHelper(connectionType); TanuloErtekelesCo tanuloErtekelesCo = helper.GetTanuloErtekelesCoById(id); var naplozarasDatum = new OrarendHelper(connectionType).GetNaplozarasDate(startDate: null); var systemSettingsHelper = new SystemSettingsHelper(connectionType); var magatartasSzorgalomEditModel = new MagatartasSzorgalomEditModel { IdEdit = tanuloErtekelesCo.Id.Value, TanuloIdEdit = tanuloErtekelesCo.TanuloId, DatumMinValueEdit = naplozarasDatum, OsztalyCsoportIdEdit = tanuloErtekelesCo.OsztalyCsoportId, ErtekeloNyomtatasiNevEdit = tanuloErtekelesCo.ErtekeloNyomtatasiNev, DatumEdit = tanuloErtekelesCo.Datum, TipusIdEdit = tanuloErtekelesCo.TipusId, EllatottFeladatTipusId = ellatottFeladatTipusId, IsAmiMagatartasErtekelheto = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.magatartas_ertekeles_szabalyozasa), TipusList = GetTipusList(), OsztalyzatList = GetOsztalyzatList(true), MagatartasOsztalyzatIdEdit = tanuloErtekelesCo.MagatartasOsztalyzatId, MagatartasSzovegEdit = tanuloErtekelesCo.MagatartasSzovegFormazott, MagatartasSzovegNemetEdit = tanuloErtekelesCo.MagatartasSzovegFormazottNemet, MagatartasSzovegHorvatEdit = tanuloErtekelesCo.MagatartasSzovegFormazottHorvat, MagatartasSzovegRomanEdit = tanuloErtekelesCo.MagatartasSzovegFormazottRoman, MagatartasSzovegSzerbEdit = tanuloErtekelesCo.MagatartasSzovegFormazottSzerb, MagatartasSzovegRovidNevEdit = tanuloErtekelesCo.MagatartasSzovegRovidNev, MagatartasErtekIdEdit = tanuloErtekelesCo.MagatartasErtekId, SzorgalomOsztalyzatIdEdit = tanuloErtekelesCo.SzorgalomOsztalyzatId, SzorgalomSzovegEdit = tanuloErtekelesCo.SzorgalomSzovegFormazott, SzorgalomSzovegNemetEdit = tanuloErtekelesCo.SzorgalomSzovegFormazottNemet, SzorgalomSzovegHorvatEdit = tanuloErtekelesCo.SzorgalomSzovegFormazottHorvat, SzorgalomSzovegRomanEdit = tanuloErtekelesCo.SzorgalomSzovegFormazottRoman, SzorgalomSzovegSzerbEdit = tanuloErtekelesCo.SzorgalomSzovegFormazottSzerb, SzorgalomSzovegRovidNevEdit = tanuloErtekelesCo.SzorgalomSzovegRovidNev, SzorgalomErtekIdEdit = tanuloErtekelesCo.SzorgalomErtekId, MagatartasErtekList = GetMagatartasErtekList(), SzorgalomErtekList = GetSzorgalomErtekList(), NemzetiDokumentumNyelvek = systemSettingsHelper.GetSystemSettingValue>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek) }; var popUpModel = new PopUpModel(magatartasSzorgalomEditModel, "Edit_Popup"); popUpModel.AddBtn(popUpModel, "MagatartasSzorgalomPopupCancelButton", CommonResource.Megse, "MagatartasSzorgalomHelper.editCancel", "BtnCancel"); popUpModel.AddBtn(popUpModel, "MagatartasSzorgalomPopupSaveButton", CommonResource.Mentes, "MagatartasSzorgalomHelper.editSave", "BtnOk"); popUpModel.AddBtn(popUpModel, "MagatartasSzorgalomPopupDeleteButton", CommonResource.Torles, "MagatartasSzorgalomHelper.editDeleteConfirmWindow", "BtnDelete"); return PartialView(Constants.General.PopupView, popUpModel); } public ActionResult OpenMondatbankSelectPopup(TanuloErtekelesMondatbankItemSelectModel model) { model.NemzetiDokumentumNyelvek = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek); int? evfolyamTipusId = null; if (model.MondatbankSelectPopupOsztalyCsoportId.IsEntityId()) { evfolyamTipusId = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyCsoportEvfolyamTipusId(model.MondatbankSelectPopupOsztalyCsoportId.Value); } var helper = new TanuloErtekelesMondatbankHelper(ConnectionTypeExtensions.GetSessionConnectionType()) { GridParameters = new GridParameters { OrderBy = "RovidNev ASC" } }; DataSet dataSet = helper.GetMondatbankSelectListData(model.MondatbankSelectPopupTanuloErtekelesTipusId, model.MondatbankSelectPopupTipusId, model.MondatbankSelectPopupTantargyId, evfolyamTipusId); List mondatbankItemRows = dataSet.Tables[0].Rows.Cast().ToList(); model.MondatbankItemSelectList = GetMondatbankItemSelectList(mondatbankItemRows); model.MondatbankItemList = GetMondatbankItemList(mondatbankItemRows); var popUpModel = new PopUpModel(model, "MondatbankItem_Select_Popup"); popUpModel.AddBtn(popUpModel, "MagatartasSzorgalomMondatbankSelectPopupCancelButton", CommonResource.Megse, "MagatartasSzorgalomHelper.mondatbankSelectPopupCancel", "BtnCancel"); popUpModel.AddBtn(popUpModel, "MagatartasSzorgalomMondatbankSelectPopupSelectButton", CommonResource.Kivalasztas, "MagatartasSzorgalomHelper.mondatbankSelectPopupSelect", "BtnOk"); return PartialView(Constants.General.PopupView, popUpModel); } private MagatartasSzorgalomListModel GetMagatartasSzorgalomListModel(int? tipusId = null, bool isTanarEvkozi = false) { int keresoAdatTipus = GetKeresoAdatTipus(); var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var ertekelesZarasDatuma = new OrarendHelper(connectionType).GetErtekelesZarasDatuma(); var lezartOsztalyokEsBontottCsoportjaik = new NaplozarasLogic(connectionType).GetLezartOsztalyokEsBontottCsoportjaik(); var systemSettingsHelper = new SystemSettingsHelper(connectionType); var model = new MagatartasSzorgalomListModel { NamePrefix = "MagatartasSzorgalom", TipusId = tipusId, Datum = DateTime.Today, DatumMinValue = ertekelesZarasDatuma, OsztalyCsoportId = ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Naplo) ? new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyfonokElsonekMegtalaltOsztalya(ClaimData.FelhasznaloId) : null, OsztalyzatList = GetOsztalyzatList(true).Select(x => new ExtendedSelectListItem(x)).ToList(), TipusList = GetTipusList(isTanarEvkozi), OsztalyCsoportList = GetOsztalyCsoportList(), OsztalyCsoportListByFelhasznaloId = GetOsztalyCsoportListByFelhasznaloId(), MagatartasSzorgalomKeresoAdatTipus = keresoAdatTipus, MagatartasErtekList = GetMagatartasErtekList(), SzorgalomErtekList = GetSzorgalomErtekList(), OsztalyCsoportListByFoglalkozas = GetOsztalyCsoportListByFoglalkozas(), IsAmiMagatartasErtekelheto = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.magatartas_ertekeles_szabalyozasa), NemzetiDokumentumNyelvek = systemSettingsHelper.GetSystemSettingValue>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek), LezartOsztalyCsoportok = lezartOsztalyokEsBontottCsoportjaik, }; return model; } private static int GetKeresoAdatTipus() { int keresoAdatTipus; if (ClaimData.IsSzuperOsztalyfonok) { keresoAdatTipus = (int)SystemSettingsMagatartasSzorgalomKeresesSzuroEnum.Mindenki; } else if (ClaimData.IsOnlyTanar) { keresoAdatTipus = (int)SystemSettingsMagatartasSzorgalomKeresesSzuroEnum.TTF; } else { keresoAdatTipus = (int)SystemSettingsMagatartasSzorgalomKeresesSzuroEnum.Osztalyfonok; } return keresoAdatTipus; } private List GetTipusList(bool isTanarEvkozi = false) { var enumList = new List { ErtekelesTipusEnum.evkozi_jegy_ertekeles }; //NOTE: Ha szaktanárok is adhatnak m/sz-at (rendszerbeállítás), akkor nekik csak évközi típus engedélyezett. if (!isTanarEvkozi) { List egyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(ClaimData.SelectedTanevID.Value, true).Select(x => x.Id).ToList(); enumList.AddRange(egyszerAdhatoErtekelesTipusIds.Select(egyszerAdhatoErtekelesTipusId => (ErtekelesTipusEnum)egyszerAdhatoErtekelesTipusId)); } IDictionary enumItemDictironaryToSelectList = enumList.EnumItemListToDictionary(ClaimData.SelectedTanevID.Value); List result = enumItemDictironaryToSelectList.ToSelectListItemList(); return result; } private static IEnumerable GetOsztalyCsoportListByFoglalkozas() { var osztalyCsoportHelper = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()); return osztalyCsoportHelper.GetOsztalyCsoportByFoglalkozasForDropDownList(); } private List GetMagatartasErtekList() { var result = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.MagatartasErtekelesTipus, ClaimData.SelectedTanevID.Value).ToSelectListItemList(); return result; } private List GetSzorgalomErtekList() { var result = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.SzorgalomErtekelesTipus, ClaimData.SelectedTanevID.Value).ToSelectListItemList(); return result; } private List GetMagatartasSzorgalomKeresoSzuroList(int magatartasSzorgalomKeresoAdatTipus) { if (magatartasSzorgalomKeresoAdatTipus == (int)SystemSettingsMagatartasSzorgalomKeresesSzuroEnum.Osztalyfonok) { return new List(); } var removeTipusList = new List(); if (magatartasSzorgalomKeresoAdatTipus == (int)SystemSettingsMagatartasSzorgalomKeresesSzuroEnum.Mindenki && ClaimData.IsOnlyTanar) { removeTipusList.Add(((int)MagatartasSzorgalomKeresoSzuroEnum.Osztalyfonok).ToString()); } else if (magatartasSzorgalomKeresoAdatTipus == (int)SystemSettingsMagatartasSzorgalomKeresesSzuroEnum.TTF) { removeTipusList.Add(((int)MagatartasSzorgalomKeresoSzuroEnum.Mindenki).ToString()); if (ClaimData.IsOnlyTanar) { removeTipusList.Add(((int)MagatartasSzorgalomKeresoSzuroEnum.Osztalyfonok).ToString()); } } else if (magatartasSzorgalomKeresoAdatTipus == (int)SystemSettingsMagatartasSzorgalomKeresesSzuroEnum.Osztalyfonok) { removeTipusList.Add(((int)MagatartasSzorgalomKeresoSzuroEnum.Mindenki).ToString()); removeTipusList.Add(((int)MagatartasSzorgalomKeresoSzuroEnum.Osztalyfonok).ToString()); } var result = FrameworkEnumExtensions.EnumToListManual().ToSelectListItemList(removeTipusList); return result; } } }