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.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.BusinessLogic.Security; using Kreta.BusinessLogic.Utils; using Kreta.Core; using Kreta.Core.ConnectionType; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Enums.ManualEnums.SystemSettings; using Kreta.Framework.Util; using Kreta.KretaServer.SystemSettings; 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; using Kreta.Web.Utils; namespace Kreta.Web.Areas.TanuloErtekeles.Controllers { [MvcRoleClaimsAuthorize(true)] [MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)] [MvcRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue, KretaClaimPackages.IsDualisKepzohelyiOktato.ClaimValue)] [Attributes.KretaGlobalLanguageChangeActionFilter(LanguageCode = "hu-Dualis")] public class DualisErtekelesController : BaseTanuloErtekelesController { #region Properties public static string StartPopupFormName => "ErtekelesStartPopupForm"; public static string StartPopupId => "ErtekelesStartPopupWindow"; public static string EditPopupFormName => "ErtekelesEditPopupForm"; public static string EditPopupId => "ErtekelesEditPopupWindow"; public static string FotargyAltargyGridName => "FotargyAltargyGrid"; #endregion Properties private IKretaAuthorization Authorization { get; } public bool IsDualisKepzesEnabled => new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType()).GetIntezmenyConfig(IntezmenyConfigModulEnum.DualisKepzes, IntezmenyConfigTipusEnum.IsEnabled); public DualisErtekelesController(IKretaAuthorization authorization) { Authorization = authorization; } public ActionResult IndexEvkozi() { if (!Authorization.IsValidDualisOktato()) { return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty })); } ErtekelesListModel model = GetErtekelesListModel((int)ErtekelesTipusEnum.evkozi_jegy_ertekeles); model.ErtekelesModId = (int)ErtekelesModEnum.gyakorlati_feladat; return View("~/Areas/TanuloErtekeles/Views/Ertekeles/Index.cshtml", model); } public ActionResult ErtekelesGridDetail(ErtekelesDetailModel model) { model.NamePrefix = "Ertekeles"; var helper = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType()); bool hasFotargyAltargy = helper.HasTantargyFotargyAltargy(model.TantargyId); model.HasFotargyAltargy = hasFotargyAltargy; return PartialView("~/Areas/TanuloErtekeles/Views/Ertekeles/GridDetail.cshtml", model); } [MvcRolePackageAuthorize(KretaClaimPackages.Tanar.ClaimValue, KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Naplo.ClaimValue)] public ActionResult NaplozasErtekelesGridDetail(ErtekelesDetailModel model) { model.NamePrefix = "NaplozasErtekeles"; var helper = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType()); bool hasFotargyAltargy = helper.HasTantargyFotargyAltargy(model.TantargyId); model.HasFotargyAltargy = hasFotargyAltargy; return PartialView("GridDetail", model); } internal ErtekelesListModel NaplozasPartialViewModel() { return GetErtekelesListModel((int)ErtekelesTipusEnum.evkozi_jegy_ertekeles); } public ActionResult OpenStartPopup(int? tipusId) { var helper = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType()); DataSet ertekelesFoglalkozasData = helper.GetErtekelesFoglalkozasData(IsDualisKepzesEnabled); DataSet ertekelesFotargyiFoglalkozasData = helper.GetErtekelesFotargyiFoglalkozasData(); var foglalkozasList = GetFoglalkozasList(ertekelesFoglalkozasData); var fotargyiFoglalkozasList = GetFoglalkozasList(ertekelesFotargyiFoglalkozasData); var ertekelesFoglalkozasItemList = GetErtekelesFoglalkozasList(ertekelesFoglalkozasData); var ertekelesFotargyiFoglalkozasItemList = GetErtekelesFoglalkozasList(ertekelesFotargyiFoglalkozasData); var keresoAdatTipus = GetKeresoAdatTipus(); var model = new ErtekelesStartPopupModel { ErtekelesKeresoAdatTipus = keresoAdatTipus, ErtekelesKeresoSzuro = (int)ErtekelesKeresoSzuroEnum.Ttf, TipusId = (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles, ErtekelesKeresoSzuroList = GetErtekelesKeresoSzuroList(keresoAdatTipus, ertekelesFotargyiFoglalkozasItemList.Any()), TipusList = GetTipusList(), FoglalkozasList = foglalkozasList, ErtekelesFoglalkozasItemModelList = ertekelesFoglalkozasItemList, FotargyiFoglalkozasList = fotargyiFoglalkozasList, ErtekelesFotargyiFoglalkozasItemModelList = ertekelesFotargyiFoglalkozasItemList, OsztalyCsoportList = GetOsztalyCsoportList(), OsztalyCsoportListByFelhasznaloId = GetOsztalyCsoportListByFelhasznaloId(), TantargyList = GetTantargyList(), IsFromSzervezet = IsDualisKepzesEnabled }; return PartialView("~/Areas/TanuloErtekeles/Views/Ertekeles/Start_Popup.cshtml", model); } [MvcRolePackageAuthorize(KretaClaimPackages.Tanar.ClaimValue, KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Naplo.ClaimValue)] public ActionResult OpenEditPopup(int id) { if (!Authorization.IsValidErtekeles(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(ConnectionTypeExtensions.GetSessionConnectionType()); var ertekelesEditModel = new ErtekelesEditModel { IdEdit = tanuloErtekelesCo.Id.Value, TanuloIdEdit = tanuloErtekelesCo.TanuloId, DatumMinValueEdit = naplozarasDatum, OsztalyCsoportIdEdit = tanuloErtekelesCo.OsztalyCsoportId, ErtekeloNyomtatasiNevEdit = tanuloErtekelesCo.ErtekeloNyomtatasiNev, DatumEdit = tanuloErtekelesCo.Datum, TipusIdEdit = tanuloErtekelesCo.TipusId, TipusList = GetTipusList(), OsztalyzatList = GetOsztalyzatList(true), TantargyIdEdit = tanuloErtekelesCo.TantargyId, ErtekelesModIdEdit = tanuloErtekelesCo.ErtekelesModId, ErtekelesTemaEdit = tanuloErtekelesCo.ErtekelesTema, ErtekelesTemaNemetEdit = tanuloErtekelesCo.ErtekelesTemaNemet, ErtekelesTemaHorvatEdit = tanuloErtekelesCo.ErtekelesTemaHorvat, ErtekelesTemaRomanEdit = tanuloErtekelesCo.ErtekelesTemaRoman, ErtekelesTemaSzerbEdit = tanuloErtekelesCo.ErtekelesTemaSzerb, ErtekelesOsztalyzatIdEdit = tanuloErtekelesCo.ErtekelesOsztalyzatId, ErtekelesSzovegEdit = tanuloErtekelesCo.ErtekelesSzovegFormazott, ErtekelesSzovegNemetEdit = tanuloErtekelesCo.ErtekelesSzovegFormazottNemet, ErtekelesSzovegHorvatEdit = tanuloErtekelesCo.ErtekelesSzovegFormazottHorvat, ErtekelesSzovegRomanEdit = tanuloErtekelesCo.ErtekelesSzovegFormazottRoman, ErtekelesSzovegSzerbEdit = tanuloErtekelesCo.ErtekelesSzovegFormazottSzerb, ErtekelesSzovegRovidNevEdit = tanuloErtekelesCo.ErtekelesSzovegRovidNev, ErtekelesSzazalekEdit = tanuloErtekelesCo.ErtekelesSzazalek, ErtekelesModList = GetErtekelesModList(), IsFromSzervezet = IsDualisKepzesEnabled, NemzetiDokumentumNyelvek = systemSettingsHelper.GetSystemSettingValue>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek) }; var popUpModel = new PopUpModel(ertekelesEditModel, "~/Areas/TanuloErtekeles/Views/Ertekeles/Edit_Popup.cshtml"); popUpModel.AddBtn(popUpModel, "ErtekelesPopupCancelButton", CommonResource.Megse, "ErtekelesHelper.editCancel", "BtnCancel"); popUpModel.AddBtn(popUpModel, "ErtekelesPopupSaveButton", CommonResource.Mentes, "ErtekelesHelper.editSave", "BtnOk"); popUpModel.AddBtn(popUpModel, "ErtekelesPopupDeleteButton", CommonResource.Torles, "ErtekelesHelper.editDeleteConfirmWindow", "BtnDelete"); return PartialView(Constants.General.PopupView, popUpModel); } public ActionResult OpenMondatbankSelectPopup(TanuloErtekelesMondatbankItemSelectModel model) { var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()); model.NemzetiDokumentumNyelvek = systemSettingsHelper.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, "ErtekelesMondatbankSelectPopupCancelButton", CommonResource.Megse, "ErtekelesHelper.mondatbankSelectPopupCancel", "BtnCancel"); popUpModel.AddBtn(popUpModel, "ErtekelesMondatbankSelectPopupSelectButton", CommonResource.Kivalasztas, "ErtekelesHelper.mondatbankSelectPopupSelect", "BtnOk"); return PartialView(Constants.General.PopupView, popUpModel); } [MvcRolePackageAuthorize(KretaClaimPackages.Tanar.ClaimValue, KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Naplo.ClaimValue)] public string GetAtlag(int osztalyCsoportId, int tantargyId, DateTime? datum) { var helper = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = helper.GetAtlag(osztalyCsoportId, tantargyId, ProfileUtils.AtlagMegjelenitesTipusa, ProfileUtils.AtlagbaBeleszamitoOsztalyTipusa, datum); return result; } private ErtekelesListModel GetErtekelesListModel(int? tipusId = null) { var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var systemSettingsHelper = new SystemSettingsHelper(connectionType); List ertekeleseknelMegjelenoSpecialisGombokLathatosagaList = systemSettingsHelper.GetSystemSettingValue>(RendszerBeallitasTipusEnum.Ertekeleseknel_Megjeleno_Specialis_Gombok_Lathatosaga); var helper = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType()); List ertekelesFoglalkozasItemList = GetErtekelesFoglalkozasList(helper.GetErtekelesFoglalkozasData(IsDualisKepzesEnabled)); List ertekelesFotargyiFoglalkozasItemList = GetErtekelesFoglalkozasList(helper.GetErtekelesFotargyiFoglalkozasData()); bool isJegyekAtlagaMegjelenik = SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.Ertekelesnel_a_naplojegyek_atlaga_megjelenik, ClaimData.IntezmenyAzonosito, ClaimData.SelectedTanevID.Value); var ertekelesZarasDatuma = new OrarendHelper(connectionType).GetErtekelesZarasDatuma(); var lezartOsztalyokEsBontottCsoportjaik = new NaplozarasLogic(connectionType).GetLezartOsztalyokEsBontottCsoportjaik(); var model = new ErtekelesListModel { NamePrefix = "Ertekeles", TipusId = tipusId, Datum = DateTime.Today, DatumMinValue = ertekelesZarasDatuma, OsztalyCsoportId = null, OsztalyzatList = GetOsztalyzatWithSpecialisList(ertekeleseknelMegjelenoSpecialisGombokLathatosagaList), MentesitettOsztalyzatList = GetMentesitettOsztalyzatWithSpecialisList(ertekeleseknelMegjelenoSpecialisGombokLathatosagaList), TipusList = GetTipusList(), OsztalyCsoportList = GetOsztalyCsoportList(), OsztalyCsoportListByFelhasznaloId = GetOsztalyCsoportListByFelhasznaloId(), IsNaploErtekeles = false, ErtekelesModId = null, ErtekelesTema = null, ErtekelesTemaText = null, TemaList = new List(), IsJegyekAtlagaMegjelenik = isJegyekAtlagaMegjelenik, FoglalkozasId = null, TantargyId = null, ErtekelesKeresoAdatTipus = GetKeresoAdatTipus(), ErtekelesModList = GetErtekelesModList(), ErtekelesFoglalkozasItemModelList = ertekelesFoglalkozasItemList, ErtekelesFotargyiFoglalkozasItemModelList = ertekelesFotargyiFoglalkozasItemList, EgyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(ClaimData.SelectedTanevID.Value, true).Select(x => x.Id).ToList(), NemzetiDokumentumNyelvek = systemSettingsHelper.GetSystemSettingValue>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek), LezartOsztalyCsoportok = lezartOsztalyokEsBontottCsoportjaik, ControllerName = Constants.Controllers.DualisErtekeles, ApiControllerName = Constants.ApiControllers.DualisErtekelesApi }; if (IsDualisKepzesEnabled) { model.SzervezetTipusEnum = SzervezetTipusEnum.Dualis; } return model; } private static int GetKeresoAdatTipus() { int ertekelesKeresoAdatTipus; if (ClaimData.IsSzuperOsztalyfonok) { ertekelesKeresoAdatTipus = (int)SystemSettingsErtekelesKeresesSzuroEnum.Mindenki; } else { var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()); ertekelesKeresoAdatTipus = (int)systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Ertekelesek_oldalon_levo_keresok_alapertelemezett_feltoltese_ezek_alapjan); } return ertekelesKeresoAdatTipus; } private static List GetFoglalkozasList(DataSet ertekelesFogalkozasData) { var result = new List(); foreach (DataRow row in ertekelesFogalkozasData.Tables[0].Rows) { result.Add(new SelectListItem { Value = SDAConvert.ToInt32(row["ID"]).ToString(), Text = SDAConvert.ToString(row["Nev"]) }); } return result; } private static List GetErtekelesFoglalkozasList(DataSet dataSet) { var itemList = new List(); foreach (DataRow row in dataSet.Tables[0].Rows) { itemList.Add(new ErtekelesFoglalkozasItemModel { FoglalkozasId = SDAConvert.ToNullableInt32(row["ID"]), OsztalyCsoportId = SDAConvert.ToNullableInt32(row["OsztalyCsoportId"]), TantargyId = SDAConvert.ToNullableInt32(row["TantargyId"]) }); } return itemList; } private List GetErtekelesKeresoSzuroList(int ertekelesKeresoAdatTipus, bool showFotargyi) { var removeTipusList = new List(); if (ertekelesKeresoAdatTipus == (int)SystemSettingsErtekelesKeresesSzuroEnum.Mindenki && ClaimData.IsOnlyTanar) { removeTipusList.Add(((int)ErtekelesKeresoSzuroEnum.Osztalyfonok).ToString()); } else if (ertekelesKeresoAdatTipus == (int)SystemSettingsErtekelesKeresesSzuroEnum.Osztalyfonok) { removeTipusList.Add(((int)ErtekelesKeresoSzuroEnum.Mindenki).ToString()); if (ClaimData.IsOnlyTanar) { removeTipusList.Add(((int)ErtekelesKeresoSzuroEnum.Osztalyfonok).ToString()); } } else if (ertekelesKeresoAdatTipus == (int)SystemSettingsErtekelesKeresesSzuroEnum.TTF) { removeTipusList.Add(((int)ErtekelesKeresoSzuroEnum.Mindenki).ToString()); removeTipusList.Add(((int)ErtekelesKeresoSzuroEnum.Osztalyfonok).ToString()); } if (!showFotargyi) { removeTipusList.Add(((int)ErtekelesKeresoSzuroEnum.Fotargyi).ToString()); } var result = FrameworkEnumExtensions.EnumToListManual().ToSelectListItemList(removeTipusList); return result; } private List GetTipusList() { return ((int)GeneratedAdatszotarTipusEnum.ErtekelesTipus).GetItemsByType(ClaimData.SelectedTanevID.Value, true).ToSelectItemList(); } private List GetErtekelesModList() { return ((int)GeneratedAdatszotarTipusEnum.ErtekelesMod).GetItemsByType(ClaimData.SelectedTanevID.Value, true).ToSelectItemList(); } private static List GetTantargyList() { List selectListItemList = new TantargyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTantargyakForComboBox(); return selectListItemList.OrderBy(x => x.Text).ToList(); } private List GetOsztalyzatWithSpecialisList(List ertekeleseknelMegjelenoSpecialisGombokLathatosagaList) { List selectListItemList = GetOsztalyzatList(true); List extendedSelectListItemList = selectListItemList.Select(x => new ExtendedSelectListItem(x) { Tooltip = int.Parse(x.Value).GetDisplayName(ClaimData.SelectedTanevID.Value) }).ToList(); var nemIrtValue = (int)SpecialisErtekelesOsztalyzatEnum.NemIrt; if (ertekeleseknelMegjelenoSpecialisGombokLathatosagaList.Contains(nemIrtValue)) { extendedSelectListItemList.Add(new ExtendedSelectListItem { Value = nemIrtValue.ToString(), Text = TanuloErtekelesResource.NemIrtRovidNev, Tooltip = TanuloErtekelesResource.NemIrt }); } var dicseretValue = (int)SpecialisErtekelesOsztalyzatEnum.Dicseret; if (ertekeleseknelMegjelenoSpecialisGombokLathatosagaList.Contains(dicseretValue)) { extendedSelectListItemList.Add(new ExtendedSelectListItem { Value = dicseretValue.ToString(), Text = TanuloErtekelesResource.DicseretRovidNev, Tooltip = TanuloErtekelesResource.Dicseret }); } var kitunoValue = (int)SpecialisErtekelesOsztalyzatEnum.Kituno; if (ertekeleseknelMegjelenoSpecialisGombokLathatosagaList.Contains(kitunoValue)) { extendedSelectListItemList.Add(new ExtendedSelectListItem { Value = kitunoValue.ToString(), Text = TanuloErtekelesResource.KitunoRovidNev, Tooltip = TanuloErtekelesResource.Kituno }); } var mentesitveValue = (int)SpecialisErtekelesOsztalyzatEnum.Mentesitve; if (ertekeleseknelMegjelenoSpecialisGombokLathatosagaList.Contains(mentesitveValue)) { extendedSelectListItemList.Add(new ExtendedSelectListItem { Value = mentesitveValue.ToString(), Text = TanuloErtekelesResource.MentesitveRovidNev, Tooltip = TanuloErtekelesResource.Mentesitve }); } return extendedSelectListItemList; } private List GetMentesitettOsztalyzatWithSpecialisList(List ertekeleseknelMegjelenoSpecialisGombokLathatosagaList) { var extendedSelectListItemList = new List(); var mentesitveValue = (int)SpecialisErtekelesOsztalyzatEnum.Mentesitve; if (ertekeleseknelMegjelenoSpecialisGombokLathatosagaList.Contains(mentesitveValue)) { extendedSelectListItemList = new List { new ExtendedSelectListItem { Value = mentesitveValue.ToString(), Text = TanuloErtekelesResource.MentesitveRovidNev, Tooltip = TanuloErtekelesResource.Mentesitve } }; } return extendedSelectListItemList; } public JsonResult GetErtekelesKorlatozasok(int tantargyId) { var (isOsztalyzattalErtekelheto, isSzovegesenErtekelheto, isSzazalekosanErtekelheto) = new TantargyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetErtekelesKorlatozasok(tantargyId); return Json(new { isOsztalyzattalErtekelheto, isSzazalekosanErtekelheto, isSzovegesenErtekelheto }, JsonRequestBehavior.AllowGet); } } }