This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,349 @@
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<bool>(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<bool>(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<List<int>>(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<List<int>>(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<DataRow> mondatbankItemRows = dataSet.Tables[0].Rows.Cast<DataRow>().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<bool>(RendszerBeallitasTipusEnum.magatartas_ertekeles_szabalyozasa),
NemzetiDokumentumNyelvek = systemSettingsHelper.GetSystemSettingValue<List<int>>(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<SelectListItem> GetTipusList(bool isTanarEvkozi = false)
{
var enumList = new List<ErtekelesTipusEnum>
{
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<int> egyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(ClaimData.SelectedTanevID.Value, true).Select(x => x.Id).ToList();
enumList.AddRange(egyszerAdhatoErtekelesTipusIds.Select(egyszerAdhatoErtekelesTipusId => (ErtekelesTipusEnum)egyszerAdhatoErtekelesTipusId));
}
IDictionary<string, string> enumItemDictironaryToSelectList = enumList.EnumItemListToDictionary(ClaimData.SelectedTanevID.Value);
List<SelectListItem> result = enumItemDictironaryToSelectList.ToSelectListItemList();
return result;
}
private static IEnumerable<ExtraDataComboBoxListItem> GetOsztalyCsoportListByFoglalkozas()
{
var osztalyCsoportHelper = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
return osztalyCsoportHelper.GetOsztalyCsoportByFoglalkozasForDropDownList();
}
private List<SelectListItem> GetMagatartasErtekList()
{
var result = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.MagatartasErtekelesTipus, ClaimData.SelectedTanevID.Value).ToSelectListItemList();
return result;
}
private List<SelectListItem> GetSzorgalomErtekList()
{
var result = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.SzorgalomErtekelesTipus, ClaimData.SelectedTanevID.Value).ToSelectListItemList();
return result;
}
private List<SelectListItem> GetMagatartasSzorgalomKeresoSzuroList(int magatartasSzorgalomKeresoAdatTipus)
{
if (magatartasSzorgalomKeresoAdatTipus == (int)SystemSettingsMagatartasSzorgalomKeresesSzuroEnum.Osztalyfonok)
{
return new List<SelectListItem>();
}
var removeTipusList = new List<string>();
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<MagatartasSzorgalomKeresoSzuroEnum>().ToSelectListItemList(removeTipusList);
return result;
}
}
}