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,121 @@
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Mvc;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.ApiControllers;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Models;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
public class AdatszotarController : Controller
{
/// <summary>
/// Default view visszaadás
/// </summary>
/// <returns></returns>
public ActionResult Index()
=> View(nameof(Index), new AdatszotarSearchModel());
/// <summary>
/// Új adatszótár felviteli popup
/// </summary>
/// <param name="adatszotarTipus"></param>
/// <returns></returns>
public ActionResult OpenAdatszotarNewPopUp(int adatszotarTipusId)
{
if (Core.Constants.NemBovithetoAdatszotarTipusLista.Contains(adatszotarTipusId))
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.KivalasztottAdatszotarNemBovitheto);
}
var tipusok = GetAdatszotarTipusList(false);
var model = new AdatszotarGridModel();
model.AdatszotarTipusList = tipusok;
model.AdatszotarTipusNev = ((GeneratedAdatszotarTipusEnum)adatszotarTipusId).ToString();
model.AdatszotarTipusId = adatszotarTipusId;
model.Sorszam = GetAdatszotarSorszam((GeneratedAdatszotarTipusEnum)adatszotarTipusId);
model.ZaradekSzovegList = ZaradekSzovegModel.AdatszotarNyelvCoToZaradekSzovegModel();
if (adatszotarTipusId == (int)GeneratedAdatszotarTipusEnum.ErtekelesMod)
{
model.Suly = ErtekelesModCo.DefaultSuly;
}
var pm = new PopUpModel(model, "Adatszotar_Bevitel");
pm.AddCancelBtn(pm, "AdatszotarHelper.newCancel");
pm.AddOkBtn(pm, "AdatszotarHelper.newSave");
return PartialView(Constants.General.PopupView, pm);
}
/// <summary>
/// Adatszótár módosításkori popup
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ActionResult OpenAdatszotarModPopUp(int id)
{
AdatszotarGridModel model = new AdatszotarApiController().GetAdatszotarElem(id);
model.AdatszotarTipusList = GetAdatszotarTipusList();
var pm = new PopUpModel(model, "Adatszotar_Bevitel");
pm.AddCancelBtn(pm, "AdatszotarHelper.modifiedCancel");
pm.AddOkBtn(pm, "AdatszotarHelper.modifiedSave");
return PartialView(Constants.General.PopupView, pm);
}
/// <summary>
/// Adatszótár típus lista
/// </summary>
/// <param name="getDefaultValue"></param>
/// <returns></returns>
private List<SelectListItem> GetAdatszotarTipusList(bool getDefaultValue = true)
{
var tipusok = new AdatszotarHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetEditableAdatszotarTipusok().OrderBy(x => x.megnevezes).ToList();
var sli = new List<SelectListItem>();
if (getDefaultValue)
{
sli.Add(new SelectListItem() { Value = "-1", Text = CommonResource.KeremValasszon });
}
foreach ((int id, string megnevezes) in tipusok)
{
sli.Add(new SelectListItem() { Value = id.ToString(), Text = megnevezes });
}
return sli;
}
/// <summary>
/// Új adatszótár sorszám visszadása
/// </summary>
/// <param name="adatszotarTipus"></param>
/// <returns></returns>
private int? GetAdatszotarSorszam(GeneratedAdatszotarTipusEnum adatszotarTipus)
{
var helper = new AdatszotarHelper(ConnectionTypeExtensions.GetSessionConnectionType());
return helper.GetAdatszotarMaxSorszam(adatszotarTipus) + 1;
}
}
}

View file

@ -0,0 +1,100 @@
using System.Collections.Generic;
using System.Runtime.Caching;
using System.Text;
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Framework;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.ApiControllers;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Controllers.Logic;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
public class AktivTanevValtasaController : Controller
{
public ActionResult Index()
=> View("Index", new AktivTanevValtasaApiController().GetAktivTanevValtasaModel());
[HttpPost]
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public ActionResult AktivTanevValtasa(int? kiNemSoroltTanulokOsztaly, int? alkalmazottakAlapertekekkel)
{
if (ClaimData.KovTanevID.HasValue && (!alkalmazottakAlapertekekkel.HasValue || alkalmazottakAlapertekekkel.Value == 0))
{
if ((!kiNemSoroltTanulokOsztaly.HasValue || kiNemSoroltTanulokOsztaly.Value == 0))
{
try
{
var cache = MemoryCache.Default;
cache.Remove($"{ClaimData.IntezmenyAzonosito}_mobileIntezmenyAdatok");
new AdminHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).AktivTanevValtasa(ClaimData.SelectedTanevID.Value, ClaimData.KovTanevID.Value);
HttpContext.Items.Remove(nameof(UserContext));
new AdminHelper(ConnectionTypeExtensions.GetSystemConnectionType()).ElozoTanevesViewokTorlese(ClaimData.KovTanevID.Value);
MasterLayoutLogic.LogOut();
return new JsonResult()
{
Data = new
{
url = Url.Action("Index", "Login", new { area = "Adminisztracio" })
}
};
}
catch
{
return new HttpStatusCodeResult(500);
}
}
else
{
return new HttpStatusCodeResult(400);
}
}
else
{
return new HttpStatusCodeResult(406);
}
}
[HttpPost]
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public ActionResult AlkalmazottTorles(List<TanevValtasAlkalmazottTorlesGridModel> torlendoAlkalmazottak)
{
StringBuilder sb = new StringBuilder();
foreach (var item in torlendoAlkalmazottak)
{
try
{
new AlkalmazottHelper(ConnectionTypeExtensions.GetNextSessionConnectionType()).DeleteAlkalmazott(item.AlkalmazottId.Value);
}
catch
{
sb.AppendFormat(AdminisztracioResource.AlkalmazottTorlesNemSikerult, item.AlkalmazottNev);
continue;
}
}
if (sb.Length > 0)
{
sb.Append(AdminisztracioResource.FolytatjaTanevValtast);
throw new StatusError(500, sb.ToString());
}
else
{
return new JsonResult();
}
}
}
}

View file

@ -0,0 +1,491 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Configuration;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
using Kreta.Web.Utils;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
public class BelepesKezeloController : Controller
{
private static readonly IEnumerable<SzerepkorTipusEnum> EUgyinteztesPermissions = new List<SzerepkorTipusEnum>
{
SzerepkorTipusEnum.eUgyintezo,
SzerepkorTipusEnum.Alairo,
SzerepkorTipusEnum.Penztaros,
SzerepkorTipusEnum.PenzugyiAdmin,
SzerepkorTipusEnum.EtkezesiAdmin,
SzerepkorTipusEnum.EtkezesiEllenorzo,
SzerepkorTipusEnum.TeremberletJelenletEllenorzo,
SzerepkorTipusEnum.alkalmazott,
SzerepkorTipusEnum.BelepokartyaAdmin
};
private static readonly IEnumerable<SzerepkorTipusEnum> DKTPermissions = new List<SzerepkorTipusEnum> { SzerepkorTipusEnum.Naplo, SzerepkorTipusEnum.Ellenorzo, };
private static readonly IEnumerable<SzerepkorTipusEnum> ESLPermissions = new List<SzerepkorTipusEnum> { SzerepkorTipusEnum.FokuszMonitoring, };
private static readonly IEnumerable<SzerepkorTipusEnum> FokuszPermissions = new List<SzerepkorTipusEnum> { SzerepkorTipusEnum.Naplo, SzerepkorTipusEnum.FokuszMonitoring, };
private static readonly IEnumerable<SzerepkorTipusEnum> LeltarPermissions = new List<SzerepkorTipusEnum> { SzerepkorTipusEnum.LeltarConcerned, };
private static readonly IEnumerable<SzerepkorTipusEnum> eJelentkezesPermissions = new List<SzerepkorTipusEnum> { SzerepkorTipusEnum.Adminisztrator, };
private static readonly IEnumerable<SzerepkorTipusEnum> Permissions = new List<SzerepkorTipusEnum>
{
SzerepkorTipusEnum.eUgyintezo,
SzerepkorTipusEnum.Alairo,
SzerepkorTipusEnum.Penztaros,
SzerepkorTipusEnum.PenzugyiAdmin,
SzerepkorTipusEnum.EtkezesiAdmin,
SzerepkorTipusEnum.EtkezesiEllenorzo,
SzerepkorTipusEnum.TeremberletJelenletEllenorzo,
SzerepkorTipusEnum.FokuszMonitoring,
SzerepkorTipusEnum.IskolaEgeszsegugyiKoordinator,
SzerepkorTipusEnum.Vedono,
SzerepkorTipusEnum.Iskolaorvos,
SzerepkorTipusEnum.IskolaEgeszsegugyiAsszisztens,
SzerepkorTipusEnum.IskolaEgeszsegugyiLekerdezo,
SzerepkorTipusEnum.BelepokartyaAdmin,
SzerepkorTipusEnum.LeltarConcerned,
SzerepkorTipusEnum.Konyvtaros,
SzerepkorTipusEnum.FELTAR_EsetKezelo,
SzerepkorTipusEnum.FELTAR_EszkozMenedzser,
SzerepkorTipusEnum.KerdoivKitolto_KerdoivKezelo,
SzerepkorTipusEnum.FELTAR_EsetJovahagyo,
SzerepkorTipusEnum.FELTAR_EsetKozremukodo,
SzerepkorTipusEnum.FELTAR_Munkavegzo,
SzerepkorTipusEnum.FELTAR_SzerzodesMenedzser
};
private IIdpConfiguration IdpConfiguration { get; }
public BelepesKezeloController(IIdpConfiguration idpConfiguration)
{
IdpConfiguration = idpConfiguration ?? throw new ArgumentNullException(nameof(idpConfiguration));
}
public ActionResult Index()
{
var felhasznaloSzerepkorok = ClaimData.FelhasznaloSzerepkorok;
// NOTE: Ha a felhasználó szerepkörök között szerepel kréta adminisztrátor és amellett szervezethez köthető szerepkör(pl.: duális adminisztrátor),
// akkor azokat nem kell megjeleníteni, mert azok részei az intézményi kréta admin felületének/menüjének, ezért az ilyen szerepköröket kivesszük a listából.
if (felhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Adminisztrator) && felhasznaloSzerepkorok.Any(x => FelhasznaloHelper.SzervezetiPermissions.Contains(x.Key)))
{
foreach (var szerepkorTipusEnum in FelhasznaloHelper.SzervezetiPermissions)
{
felhasznaloSzerepkorok.Remove(szerepkorTipusEnum);
}
}
var allowedRoles = GetAllowedRoles(felhasznaloSzerepkorok);
ClaimManager.SetFelhasznaloSzerepkorClaim(allowedRoles.Any() ? allowedRoles.Select(x => x.Key).ToList() : felhasznaloSzerepkorok.Keys.Any() ? felhasznaloSzerepkorok.Select(x => x.Key).ToList() : new List<SzerepkorTipusEnum>(), GetEugyintezesESLPermissions(felhasznaloSzerepkorok));
if (ClaimData.JustLEPOrganization && !ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Adminisztrator))
{
var lepEloadasJegyzekHelper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var hasLepAccess = lepEloadasJegyzekHelper.HasLEPAccess(ClaimData.FelhasznaloId);
if (!hasLepAccess)
{
return Redirect(Url.Content(@"~/HibaOldal/IndexLEPNincsJog"));
}
return Redirect(Url.Content(@"~/LEPModul/EloadasokKezelese"));
}
// NOTE: Ha a belépett felhasználó szervezethez köthető alkalmazott(pl.: duális oktató), akkor semmi más ne jelenjen meg csak a szervezethez köthető elemek.
var isAlkalmazottSzervezeti = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).IsAlkalmazottSzervezeti(ClaimData.FelhasznaloId);
if (isAlkalmazottSzervezeti)
{
if (allowedRoles.Count == 1)
{
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
}
return View("Index", ModelBuilder(allowedRoles, false, false, false, false, false, false, false));
}
var isDktAktiv = IsDktAktiv(felhasznaloSzerepkorok);
var isEugyAktiv = IsEugyAktiv(felhasznaloSzerepkorok);
var isEslAktiv = IsESLAktiv(felhasznaloSzerepkorok);
var isFokuszAktiv = IsFokuszAktiv(felhasznaloSzerepkorok);
var isLeltarAktiv = IsLeltarAktiv(felhasznaloSzerepkorok);
var isKonyvtarAktiv = IsKonyvtarModulAktiv();
var isEJelentkezesAktiv = IsEJelentkezesAktiv(felhasznaloSzerepkorok);
if (allowedRoles.Any())
{
if (allowedRoles.Count == 1 && !isDktAktiv && !isEugyAktiv && !isEslAktiv && !isFokuszAktiv && !isLeltarAktiv && !isKonyvtarAktiv && !isEJelentkezesAktiv)
{
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
}
return View("Index", ModelBuilder(allowedRoles, isDktAktiv, isEugyAktiv, isEslAktiv, isFokuszAktiv, isLeltarAktiv, isKonyvtarAktiv, isEJelentkezesAktiv));
}
if (felhasznaloSzerepkorok.Keys.Count >= 2 && felhasznaloSzerepkorok.Keys.Any(x => Permissions.Contains(x)))
{
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
}
var intezmenyConfigHelper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (intezmenyConfigHelper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Konyvtar, IntezmenyConfigTipusEnum.IsEnabled))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Konyvtar, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
if (felhasznaloSzerepkorok.Keys.All(x => EUgyinteztesPermissions.Contains(x)))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Eugyintezes, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
if (felhasznaloSzerepkorok.Keys.All(x => x == SzerepkorTipusEnum.FokuszMonitoring))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.ESL, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
if (felhasznaloSzerepkorok.Keys.All(x => x == SzerepkorTipusEnum.LeltarConcerned))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Leltar, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return View("Index", ModelBuilder(allowedRoles, isDktAktiv, isEugyAktiv, isEslAktiv, isFokuszAktiv, isLeltarAktiv, isKonyvtarAktiv, isEJelentkezesAktiv));
}
public ActionResult ChangeRole(SzerepkorTipusEnum role)
{
var felhasznaloSzerepkorok = ClaimData.FelhasznaloSzerepkorok;
if (felhasznaloSzerepkorok.ContainsKey(role))
{
ClaimManager.SetFelhasznaloSzerepkorClaim(new List<SzerepkorTipusEnum> { role }, GetEugyintezesESLPermissions(felhasznaloSzerepkorok));
var isPedagogiaiSzakszolgalat = role == SzerepkorTipusEnum.Adminisztrator && new MukodesiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetMukodesiHelyekForFelhelyValaszto().Any(x => x.FelhelyId.IsEntityId());
return Json(new { Url = Url.Content(isPedagogiaiSzakszolgalat ? Constants.General.FelHelyValasztoPage : CommonExtensions.GetDefaultPage()), Success = true });
}
return Json(new { Success = false });
}
public ActionResult Eugyintezes()
{
if (IsEugyAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Eugyintezes, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult DKTTanar()
{
if (IsDktAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var intezmenyData = helper.GetIntezmenyiAdatok();
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyData.DKTTanarUrl, IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult DKTDiak()
{
if (IsDktAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var intezmenyData = helper.GetIntezmenyiAdatok();
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyData.DKTDiakUrl, IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult ESL()
{
if (IsESLAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.ESL, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult Fokusz()
{
if (IsFokuszAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Fokusz, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult Leltar()
{
if (IsLeltarAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Leltar, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult Konyvtar()
{
if (IsKonyvtarModulAktiv())
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Konyvtar, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult EJelentkezes()
{
if (IsEJelentkezesAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.eJelentkezes, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
private BelepesKezeloModel ModelBuilder(List<KeyValuePair<SzerepkorTipusEnum, string>> allowedRoles, bool isDktAktiv, bool isEugyAktiv, bool isEslAktiv, bool isFokuszAktiv, bool isLeltarAktiv, bool isKonyvtarAktiv, bool isEJelentkezesAktiv)
{
var model = new BelepesKezeloModel();
var shortname = ClaimData.OrganizationShortName;
model.OrganizationName = ClaimData.OrganizationCode + " - " + (string.IsNullOrWhiteSpace(shortname) ? ClaimData.OrganizationName : shortname);
model.UserName = $"{ClaimData.FelhasznaloNev} {(!string.IsNullOrWhiteSpace(ClaimData.GondviseloNeve) ? "(" + ClaimData.GondviseloNeve + ")" : "")}";
model.ProfilImgSrc = ProfileUtils.UserProfileImage;
foreach (var item in allowedRoles)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = item.Value, Szerepkor = item.Key, Tipus = BelepesKezeloModel.LehetosegTipus.Kreta });
}
if (isDktAktiv)
{
var naplo = false;
var ellenorzo = false;
foreach (var role in allowedRoles)
{
if (role.Key == SzerepkorTipusEnum.Naplo)
{
naplo = true;
}
if (role.Key == SzerepkorTipusEnum.Ellenorzo)
{
ellenorzo = true;
}
}
if (naplo)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "Digitális Kollaborációs Tér" + (ellenorzo ? " (Tanár)" : ""), Szerepkor = SzerepkorTipusEnum.Naplo, Tipus = BelepesKezeloModel.LehetosegTipus.DKT });
}
if (ellenorzo)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "Digitális Kollaborációs Tér" + (naplo ? " (Diák)" : ""), Szerepkor = SzerepkorTipusEnum.Ellenorzo, Tipus = BelepesKezeloModel.LehetosegTipus.DKT });
}
}
if (isEugyAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "e-Ügyintézés", Tipus = BelepesKezeloModel.LehetosegTipus.Eugy });
}
if (isEslAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "ESL", Tipus = BelepesKezeloModel.LehetosegTipus.ESL });
}
if (isFokuszAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "Fókusz", Tipus = BelepesKezeloModel.LehetosegTipus.Fokusz });
}
if (isLeltarAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "KRÉTA Leltár", Tipus = BelepesKezeloModel.LehetosegTipus.Leltar });
}
if (isKonyvtarAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "Könyvtár modul", Tipus = BelepesKezeloModel.LehetosegTipus.Konyvtar });
}
if (isEJelentkezesAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "e-Jelentkezés", Tipus = BelepesKezeloModel.LehetosegTipus.EJelentkezes });
}
model.CancelLinkText = StringResourcesUtil.GetString(2582); /* Kijelentkezés */
model.CancelLinkAction = "BelepesKezelo.logout()";
return model;
}
private bool IsDktAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
if (felhasznaloSzerepkorok.Keys.Any(x => DKTPermissions.Contains(x)) && !ClaimData.GondviseloId.HasValue)
{
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (helper.GetIntezmenyiAdatok().IsDKTAktiv)
{
return true;
}
}
return false;
}
private bool IsEugyAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Eugyintezes, IntezmenyConfigTipusEnum.IsEnabled))
{
if (ClaimData.GondviseloId.HasValue)
{
return !new GondviseloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).IsCsokkentettGondviselo(ClaimData.GondviseloId.Value);
}
if (felhasznaloSzerepkorok.Keys.Any(x => EUgyinteztesPermissions.Contains(x)) || felhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Adminisztrator))
{
if (ClaimData.IsDefaultAdminUser || ClaimData.BelepesiNev.ToUpper() == Constants.General.KretaTechnicalUserNev.ToUpper())
{
return false;
}
return true;
}
}
return false;
}
private bool IsESLAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
var fHelper = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var felhasznaloiJogosultsagok = fHelper.GetFelhasznaloiJogosultsagok(ClaimData.FelhasznaloId, (int)SzerepkorTipusEnum.Naplo);
if (felhasznaloSzerepkorok.Keys.Any(x => ESLPermissions.Contains(x)) || felhasznaloiJogosultsagok.Contains("Osztalyfonok") || felhasznaloiJogosultsagok.Contains("SzuperOsztalyfonok"))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.ESL, IntezmenyConfigTipusEnum.IsEnabled))
{
if (felhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Ellenorzo) || ClaimData.IsDefaultAdminUser)
{
return false;
}
return true;
}
return false;
}
return false;
}
private bool IsFokuszAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
if (felhasznaloSzerepkorok.Keys.Any(x => FokuszPermissions.Contains(x)))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Fokusz, IntezmenyConfigTipusEnum.IsEnabled))
{
if (felhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Ellenorzo) || ClaimData.IsDefaultAdminUser || ClaimData.IsPortas)
{
return false;
}
return true;
}
return false;
}
return false;
}
private bool IsLeltarAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
if (felhasznaloSzerepkorok.Keys.Any(x => LeltarPermissions.Contains(x)))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Leltar, IntezmenyConfigTipusEnum.IsEnabled))
{
return true;
}
return false;
}
return false;
}
private bool IsKonyvtarModulAktiv()
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (!ClaimData.GondviseloId.HasValue && helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Konyvtar, IntezmenyConfigTipusEnum.IsEnabled))
{
return true;
}
return false;
}
private bool IsEJelentkezesAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
if (felhasznaloSzerepkorok.Keys.Any(x => eJelentkezesPermissions.Contains(x)))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.eJelentkezes, IntezmenyConfigTipusEnum.IsEnabled))
{
if (felhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Adminisztrator) && !ClaimData.IsDefaultAdminUser)
{
return true;
}
return false;
}
return false;
}
return false;
}
private List<KeyValuePair<SzerepkorTipusEnum, string>> GetAllowedRoles(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
=> felhasznaloSzerepkorok.Where(x => !Constants.General.NotVisiblePermissions.Contains(x.Key)).ToList();
private List<SzerepkorTipusEnum> GetEugyintezesESLPermissions(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
=> Permissions.Where(x => felhasznaloSzerepkorok.Keys.Any(y => y == x)).ToList();
}
}

View file

@ -0,0 +1,30 @@
using System.Collections.Generic;
using System.Web.Mvc;
using Kreta.BusinessLogic.Security;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageAuthorize(KretaClaimPackages.DiakolimpiaKezelo.ClaimValue)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
public class DiakolimpiaController : Controller
{
public ActionResult Index()
{
var model = new DiakolimpiaSearchModel();
return View("Index", model);
}
public ActionResult GetFeladhelySorszamPopUp(List<int> tanulok)
{
PopUpModel pm = new PopUpModel(new DataForMdszModel { Tanulok = tanulok }, "GetFeladhelySorszamPopUp");
pm = pm.AddCancelBtn(pm, "KretaWindowHelper.destroyAllWindow");
pm = pm.AddBtn(pm, "Kuldes", CommonResource.Kuldes, "DiakolimpiaHelper.sendSelectedData");
return PartialView(Constants.General.PopupView, pm);
}
}
}

View file

@ -0,0 +1,82 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core.Elearning.Nexius;
using Kreta.Framework;
using Kreta.KretaServer.Caching;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
using Nexius.IdentityProvider.Model.External.V1;
using Nexius.IdentityProvider.Model.Lti;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsDefaultAdminUser.ClaimValue)]
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Naplo.ClaimValue, KretaClaimPackages.Ellenorzo.ClaimValue)]
public class ELearningController : Controller
{
readonly INexiusCourseService nexiusCourseService;
public ELearningController(INexiusCourseService nexiusCourseService)
{
this.nexiusCourseService = nexiusCourseService;
}
public ActionResult Index()
{
var cache = SDAServer.Instance.CacheManager.AquireCache<ElearningCache>();
var model = new List<NexiusListItemModel>();
var isGondviselo = ClaimData.IsTanuloOrGondviselo && ClaimData.GondviseloId != null;
var isTanulo = ClaimData.IsTanuloOrGondviselo && ClaimData.GondviseloId == null;
var courseIdList = new ElearningElerhetosegHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetElearningElerhetosegList(isGondviselo, isTanulo, (int)ClaimData.FelhasznaloSzerepkor, ClaimData.FelhasznaloSzerepCsomagok, ClaimData.GondviseloId);
var courses = cache.GetCourses(courseIdList, nexiusCourseService);
var courseResults = nexiusCourseService.GetUserCourseResults(GetFelhasznaloAzonosito());
CourseResult courseResult;
NexiusListItemModel listItem;
foreach (var course in courses)
{
listItem = new NexiusListItemModel() { Course = course.Value };
courseResult = courseResults.FirstOrDefault(x => x.Activities.CourseObjectId == course.Value.CourseObject.Id);
if (courseResult != null)
{
listItem.CourseResult = courseResult;
}
else
{
listItem.CourseResult = new CourseResult();
listItem.CourseResult.Activities = new LtiCourseResultModel();
listItem.CourseResult.Activities.Progress = 0;
listItem.CourseResult.Activities.Measure = 0;
listItem.CourseResult.Activities.ResultEndTime = DateTime.MaxValue;
listItem.CourseResult.Activities.TotalTime = 0;
}
model.Add(listItem);
}
return View(model);
}
private string GetFelhasznaloAzonosito()
{
if (ClaimData.GondviseloId.HasValue)
{
return new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetGondviseloEgyediAzonosito(ClaimData.GondviseloId.Value);
}
else
{
return new FelhasznaloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetFelhasznaloEgyediAzonosito(ClaimData.FelhasznaloId);
}
}
}
}

View file

@ -0,0 +1,51 @@
using System.Web.Mvc;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.ReCaptcha;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[AllowAnonymous]
public class ElfelejtettJelszoController : Controller
{
public ActionResult Index()
{
return View(new ElfelejtettJelszoModel());
}
[HttpPost]
public JsonResult LinkKuldes(ElfelejtettJelszoModel model)
{
if (!ModelState.IsValid)
{
Response.StatusCode = 400;
Response.TrySkipIisCustomErrors = true;
var modelErrors = ModelState.AllErrors();
return Json(modelErrors);
}
try
{
var captcha = ReCaptchaValidator.Validate(model.ReCaptcha);
if (!captcha.Success)
{
return Json(new IsSuccessResponseCo(false, string.Join(",", captcha.ErrorCodes)));
}
new JelszoModositasLinkHelper(ConnectionTypeExtensions.GetOrganizationConnectionType()).JelszoValtoztatoLinkGeneralasEsKuldes(model.BejelentkezesiNev, model.EmailCim);
}
catch (KretaJelszoModositasException e)
{
return Json(new IsSuccessResponseCo(false, e.Message));
}
return Json(new IsSuccessResponseCo(true, AdminisztracioResource.SikeresElfelejtettJelszoFeedback));
}
}
}

View file

@ -0,0 +1,13 @@
using System.Web.Mvc;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[AllowAnonymous]
public class EmailKezelesController : Controller
{
public ActionResult Index(string data)
{
return View("Index", (object)data);
}
}
}

View file

@ -0,0 +1,46 @@
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
public class FelHelyValasztoController : Controller
{
public ActionResult Index()
{
var model = new FelHelyValasztoModel();
MukodesiHelyHelper helper = new MukodesiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var list = helper.GetMukodesiHelyekForFelhelyValaszto();
foreach (var item in list)
{
model.FelhelyList.Add(new SelectListItem
{
Text = item.MukodesiHelyNev + (string.IsNullOrWhiteSpace(item.FelhelyNev) ? "" : " - " + item.FelhelyNev),
Value = string.Format("{0}_{1}", item.MukodesiHelyID.ToString(), item.FelhelyId.ToString())
});
}
return View(model);
}
public ActionResult SetFelHelyToClaim(string mukodesifelhelyId)
{
if (!string.IsNullOrWhiteSpace(mukodesifelhelyId))
{
int felhelyId;
if (int.TryParse(mukodesifelhelyId.Split('_')[1], out felhelyId) && felhelyId > 0)
{
ClaimManager.AddClaim(KretaClaimTypes.FelhelySzuro, felhelyId.ToString());
}
return Json(new { Url = Url.Content(CommonExtensions.GetDefaultPage()), Success = true });
}
return Json(new { Success = false });
}
}
}

View file

@ -0,0 +1,42 @@
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Enums;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Areas.Alkalmazott.Helpers;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageAuthorize(KretaClaimPackages.IsFeltarAlkalmazott.ClaimValue)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
public class FeltarAlkalmazottController : Controller
{
public ActionResult Index()
{
var feltarAlkalmazottModel = new FeltarAlkalmazottModel();
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var helper = new TanarHelper(connectionType);
var tanarAdatCO = helper.GetTanarAdatok(ClaimData.FelhasznaloId);
feltarAlkalmazottModel.AltalanosSzerzodesiFeltetelekLetoltese = new FeltarAlkalmazottHelper(connectionType).FeltarASZFUrl();
feltarAlkalmazottModel.IsAlkalmazottMunkakorTipusJogosult = new AlkalmazottMunkaugyiAdatokHelper(connectionType).HasAlkalmazottAlkalmazottMunkaKorTipus();
feltarAlkalmazottModel.IsRendelkezikOktatasiAzonosotioval = !string.IsNullOrWhiteSpace(tanarAdatCO.OktatasiAzonosito);
if (feltarAlkalmazottModel.IsAlkalmazottMunkakorTipusJogosult && feltarAlkalmazottModel.IsRendelkezikOktatasiAzonosotioval)
{
feltarAlkalmazottModel.AlapadatModel = AlkalmazottViewHelper.ConvertCOToAlapadatModel(tanarAdatCO);
}
return View(feltarAlkalmazottModel);
}
public ActionResult Atjelentkezes()
{
return Redirect(new EszkozIgenylesHelper(ConnectionTypeExtensions.GetSessionConnectionType()).EszkozUgyintezesUrl());
}
}
}

View file

@ -0,0 +1,54 @@
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Enums;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
[MvcRolePackageAuthorize(KretaClaimPackages.IsFeltarGondviselo.ClaimValue)]
public class FeltarGondviseloController : Controller
{
public ActionResult Index()
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var gondviseloHelper = new GondviseloHelper(connectionType);
var feltarGondviseloHelper = new FeltarGondviseloHelper(connectionType);
var tanuloHelper = new TanuloHelper(connectionType);
var co = gondviseloHelper.GetGondviselo4TAdatok(ClaimData.GondviseloId.Value);
var feltarGondviseloModel = new FeltarGondviseloModel(co)
{
AltalanosSzerzodesiFeltetelekLetoltese = feltarGondviseloHelper.FeltarASZFGondviseloUrl(),
IsTorvenyesKepviselo = !gondviseloHelper.IsCsokkentettGondviselo(ClaimData.GondviseloId.Value) && tanuloHelper.GetTanuloGondviseloById(ClaimData.GondviseloId.Value).IsTorvenyesKepviselo
};
var osztalyId = feltarGondviseloHelper.GetTanuloOsztalyaEszkozigenyles(ClaimData.FelhasznaloId);
if (osztalyId.HasValue)
{
var osztalyCsoportHelper = new OsztalyCsoportHelper(connectionType);
var kepzesiForma = osztalyCsoportHelper.GetOsztalyKepzesiFormajaByOsztalyId(osztalyId.Value);
var tantervJellegId = new TanuloHelper(connectionType).GetTanuloiAdatok(ClaimData.FelhasznaloId, ClaimData.KovTanevID, ClaimData.IsSelectedTanev20_21OrLater, ClaimData.IsSelectedTanev21_22OrLater, osztalyId, (int)OktNevelesiKategoriaEnum.NevelesOktatas).TanterviJellegId;
feltarGondviseloModel.IsNappaliRendszeruIskolaiOktatas =
(ClaimData.IsSzakkepzoIntezmeny && (tantervJellegId == (int)TanterviJellegEnum.nappali_rendszeru_iskolai_oktatas))
|| (!ClaimData.IsSzakkepzoIntezmeny && (kepzesiForma == (int)TanterviJellegEnum.nappali_rendszeru_iskolai_oktatas));
}
if (!ClaimData.FeltarGondviseloEnabled)
{
feltarGondviseloModel.IsEditable = false;
}
return View(feltarGondviseloModel);
}
public ActionResult Atjelentkezes()
{
return Redirect(new EszkozIgenylesHelper(ConnectionTypeExtensions.GetSessionConnectionType()).EszkozUgyintezesUrl());
}
}
}

View file

@ -0,0 +1,20 @@
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.Gondviselo.ClaimValue, KretaClaimPackages.CsokkentettGondviselo.ClaimValue)]
[MvcRolePackageAuthorize(KretaClaimPackages.IsFeltarTanulo.ClaimValue)]
public class FeltarTanuloController : Controller
{
public ActionResult Index()
{
return View();
}
}
}

View file

@ -0,0 +1,75 @@
using System.Collections.Generic;
using System.Web.Mvc;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Utils;
using Kreta.Enums;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Areas.Nyomtatvanyok.Logic;
using Kreta.Web.Classes;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.ReCaptcha;
using Kreta.Web.Models;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[AllowAnonymous]
[MvcCsokkentettGondviseloAccess]
public class GondviseloJelszoIgenyloController : Controller
{
public ActionResult Index()
{
return View(new GondviseloJelszoIgenyloModel
{
FormSettings = new List<string>() {
CimElerhetosegConstant.CimSectionVisible,
CimElerhetosegConstant.EmailSectionVisible,
CimElerhetosegConstant.IsNew,
CimElerhetosegConstant.AllandoLakcimCimTipus
},
TanulovalEgyezik = false,
IsGondviseloJelszoIgenylo = true,
CimTipus = (int)CimTipusEnum.allando_lakcim,
ComboBoxApiControllerName = Constants.ApiControllers.GondviseloJelszoIgenyloApi,
EmailcimKotelezo = true
});
}
[HttpPost]
public JsonResult GondviseloJelszoIgenyles(GondviseloJelszoIgenyloModel model)
{
if (!model.AdatvedelmiTajekozatatoCheck)
{
ModelState.AddModelError("AdatvedelmiTajekozatatoCheck", ErrorResource.AdatvedelmiElfogadasHibaUzenet);
}
if (!ModelState.IsValid)
{
Response.StatusCode = 400;
Response.TrySkipIisCustomErrors = true;
var modelErrors = ModelState.AllErrors();
return Json(modelErrors);
}
var captcha = ReCaptchaValidator.Validate(model.ReCaptcha);
if (!captcha.Success)
{
return Json(new IsSuccessResponseCo(false, string.Join(",", captcha.ErrorCodes)));
}
using (var loginManager = new LoginManager())
{
var result = loginManager.GondviseloJelszoIgenyles(model.ConvertToCo());
return Json(result);
}
}
public string PdfLetoltes(GondviseloJelszoIgenyloModel model)
{
return NyomtatvanyokLogic.GetFileLetoltesUrlGondviseo(model.ConvertToCo(), CommonUtils.GetAktualisTanevId(ClaimData.FelhasznaloId));
}
}
}

View file

@ -0,0 +1,489 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Web.Mvc;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.ApiControllers;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.TabStrip;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class HelyettesitesekKezeleseController : Controller
{
public ActionResult Index()
{
var model = new HelyettesitesekKezeleseModel();
var helper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
model.HetirendJson = helper.GetHetirendek();
model.NaptariHetekHetirendJson = helper.GetNaptariHetekHetirendek();
var calendarMinMaxCo = helper.GetCalendarMinMax();
model.CalendarMinTime = calendarMinMaxCo.CalendarMin;
model.CalendarMaxTime = calendarMinMaxCo.CalendarMax;
model.CsengetesiRendMinTime = new TimeSpan();
model.CsengetesiRendMaxTime = new TimeSpan(0, 25, 0);
model.TanarId = 0; //Ne jelenjen meg semmi sem a calendarban
model.TabList = GetHelyettesitesekKezeleseTabs();
return View("Index", model);
}
public List<TabStripItemModel> GetHelyettesitesekKezeleseTabs(CalendarModel calendarModel = null)
{
var list = new List<TabStripItemModel>
{
new TabStripItemModel
{
ItemId = "0",
ItemName = StringResourcesUtil.GetString(4260) /*Tanórai helyettesítések*/,
Area = "Adminisztracio",
Controller = "HelyettesitesekKezelese",
Action = "GetTanoraiHelyettesitesek",
RouteParameters = new Dictionary<string, string>
{
{"index", "0"}
}
},
new TabStripItemModel
{
ItemId = "1",
ItemName = StringResourcesUtil.GetString(4261) /*Napirend helyettesítések*/,
Area = "Adminisztracio",
Controller = "HelyettesitesekKezelese",
Action = "GetTanoranKivuliHelyettesitesek",
RouteParameters = new Dictionary<string, string>
{
{"index", "1"}
}
}
};
return list;
}
public ActionResult GetTanoraiHelyettesitesek(int index = 0)
{
var model = new HelyettesitesekKezeleseOrarendModel
{
Index = index
};
return View("TanoraiHelyettesitesek_Tab", model);
}
public ActionResult GetTanoranKivuliHelyettesitesek(int index = 1)
{
var model = new HelyettesitesekKezeleseOrarendModel
{
Index = index
};
return View("TanoranKivuliHelyettesitesek_Tab", model);
}
public ActionResult OpenHelyettesitesPopUp(CalendarModel model)
{
try
{
var felhasznalokOnlyAlkalmazottSzerepkorIds = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetFelhasznaloIdsOnlyAlkalmazottSzerepkor();
PopUpModel popUpModel;
if (model.OraType == CalendarOraTypeEnum.TanitasiOra || model.OraType == CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas)
{
var nemMegtartottHelyettesitesBevitelModel = new NemMegtartottHelyettesitesBevitelModel
{
HelyettesitesBevitelCalendarEventId = model.EventId,
HelyettesitesBevitelOraKezdeteDate = model.Start,
HelyettesitesBevitelOraVegeDate = model.End
};
var helper = new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var tanoraCo = helper.GetTanorakAdatok(model.EventId);
if (!tanoraCo.AdminAltalKiirt)
{
return null;
}
popUpModel = new PopUpModel(nemMegtartottHelyettesitesBevitelModel, "ElmaradtOra_Info");
popUpModel = popUpModel.AddBtn(popUpModel, "HelyettesitesBevitelCancel", CommonResource.Megse, "HelyettesitesBevitelHelper.ElmaradtOraCancel");
popUpModel = popUpModel.AddBtn(popUpModel, "HelyettesitesBevitelNemMegtartottHelyettesites", CommonResource.Torles, "HelyettesitesBevitelHelper.NemMegtartottOraTorlese");
ModelState.Clear();
return PartialView(Constants.General.PopupView, popUpModel);
}
//NOTE: Ahhoz, hogy az oldal gyorsan töltődjön be, egyszer szedjük le a szűrési feltételhez kapcsolatos co-kat és azokon végezzük el a szűréseket mind a 10 listához!
var orarendiOra = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOrarendiOraById(model.EventId);
var oraDatum = model.Start.Date;
var startDate = new DateTime(model.Start.Date.Year, model.Start.Date.Month, model.Start.Date.Day, orarendiOra.OraKezdete.Hour, orarendiOra.OraKezdete.Minute, orarendiOra.OraKezdete.Second);
var endDate = new DateTime(model.Start.Date.Year, model.Start.Date.Month, model.Start.Date.Day, orarendiOra.OraVege.Hour, orarendiOra.OraVege.Minute, orarendiOra.OraVege.Second);
var nemkotottMunkaido = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemKotottMunkaIdoHelyettesiteshez(startDate, endDate);
//NOTE: 00. - MINDEN SZŰRÉSRE ÉRVÉNYES
// A helyettesítés napján jogviszonnyal rendelkező alkalmazottak
// A helyettesítés napján nem tartósan távol levő alkalmazottak
// A helyettesítés napján nem betöltetlen álláshelyű alkalmazottak
// A tanár nem helyettesítheti a saját óráját
var alkalmazottCoList = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottCoList()
.Where(x => (!x.AlkalmazasKezdeteDate.HasValue || x.AlkalmazasKezdeteDate <= oraDatum) &&
(!x.AlkalmazasMegszuneseDate.HasValue || oraDatum <= x.AlkalmazasMegszuneseDate) &&
!x.IsTartosanTavolLevo &&
!x.IsBetoltetlenAllashely &&
x.Id != orarendiOra.TanarId).OrderBy(x => x.FelhasznaloNyomtatasiNev).ToList();
var tanarCoList = alkalmazottCoList.Where(z => !felhasznalokOnlyAlkalmazottSzerepkorIds.Contains(z.Id)).ToList();
//NOTE: Előszedjük a vizsgálatokhoz, minden erre az időpontra(napirendnél nem vesszük figyelembe az óra sorszámát, mert nincs) felvett órarendi órát és tanítási órat a hozzájuk tartozó helyettesítésekkel a sp_GetOrarend tárolteljárást használva!
// Ha órarendi óra, akkor meg kell vizsgálnunk, hogy...
// ...nem egyezik-e meg a kiválasztott órával.
// ...beleesik-e az érvényességi időbe a kiválasztott óra.
// Ha tanítási óra, akkor meg kell vizsgálnunk, hogy...
// ...meg lett-e tarva.
var orarendiEsTanitasiOraList = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOrarendiEsTanitasiOrakByDays(model.Start, model.End, OrarendTipusEnum.Minden)
.Where(x => ((x.OraTipus == nameof(CalendarOraTypeEnum.OrarendiOra) &&
x.Id != orarendiOra.ID &&
x.OraErvenyessegKezdete <= oraDatum && (!x.OraErvenyessegVege.HasValue || oraDatum <= x.OraErvenyessegVege)) ||
(x.OraTipus == nameof(CalendarOraTypeEnum.TanitasiOra) &&
x.IsMegtartott)) &&
x.OraKezdete.HasValue && x.OraVege.HasValue &&
((x.OraKezdete.Value <= model.Start && x.OraVege.Value > model.Start)
|| (x.OraKezdete.Value > model.Start && x.OraKezdete.Value < model.End)
|| (x.OraVege.Value >= model.End && x.OraKezdete.Value < model.End))).ToList();
//NOTE: Előszedjük a vizsgálatokhoz, a tantárgyfelosztásokat!
var tantargyfelosztasCoList = new TantargyFelosztasHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTantargyfelosztasCoList();
//NOTE: Előszedjük a vizsgálatokhoz, az osztályokat és csoportokat!
var osztalyCoList = new OsztalyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyCoList();
var csoportCoList = new CsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetCsoportCoList();
var osztalyCsoportId = orarendiOra.OsztalyCsoportId.Value;
var isOsztaly = osztalyCoList.Any(x => x.Id == osztalyCsoportId);
var osztalyIdList = new List<int>();
List<int> csoportIdList;
if (isOsztaly)
{
//NOTE: Ha osztály előszedjük az osztály id-t és a hozzá tartozó bontott csoportok id-ját!
osztalyIdList = osztalyCoList.Where(x => x.Id == osztalyCsoportId).Select(x => x.Id).ToList();
csoportIdList = csoportCoList.Where(x => x.OsztalyBontasId == osztalyCsoportId || x.Id == osztalyCsoportId).Select(x => x.Id).ToList();
}
else
{
//NOTE: Ha csoport...
var osztalyBontasId = csoportCoList.Single(x => x.Id == osztalyCsoportId).OsztalyBontasId;
if (osztalyBontasId.IsEntityId())
{
//NOTE: ...és van osztálybontása, akkor előszedjük a hozzá tartozó osztály id-t és az ahhoz tartozó bontott csoportok id-ját!
osztalyIdList = osztalyCoList.Where(x => x.Id == osztalyBontasId).Select(x => x.Id).ToList();
csoportIdList = csoportCoList.Where(x => x.OsztalyBontasId.IsEntityId() && osztalyIdList.Contains(x.OsztalyBontasId.Value)).Select(x => x.Id).ToList();
}
else
{
//NOTE: ...és nincs osztálybontása, akkor csak simán előszedjük a csoport id-t!
csoportIdList = csoportCoList.Where(x => x.Id == osztalyCsoportId).Select(x => x.Id).ToList();
}
}
//NOTE: Össze union-ozzuk, az osztályok és csoportok id-ját, a szűrésekhez!
var osztalyCsoportIdList = osztalyIdList.Union(csoportIdList).ToList();
var helyettesitesBevitelModel = new HelyettesitesBevitelModel
{
HelyettesitesBevitelCalendarEventId = model.EventId,
HelyettesitesBevitelHelyettesitesId = model.HelyettesitesId,
HelyettesitesBevitelCalendarOraType = model.OraType,
HelyettesitesBevitelOraKezdeteDate = model.Start,
HelyettesitesBevitelOraVegeDate = model.End,
HelyettesitesBevitelHelyettesitesGyakorisagTipus = (int)HelyettesitesGyakorisagTipusEnum.Egyedi,
HelyettesitesBevitelTartosHelyettesitesVegeDate = DateTime.Today,
HelyettesitesBevitelHelyettesitesTipusId = (int)HelyettesitesTipusEnum.szakszeru_helyettesites,
HelyettesitesOsztalybanSzakosTanarList = GetHelyettesitesOsztalybanSzakosTanarList(tanarCoList, orarendiEsTanitasiOraList, tantargyfelosztasCoList, osztalyCsoportIdList, orarendiOra.TantargyId.Value, nemkotottMunkaido),
HelyettesitesNemOsztalybanSzakosTanarList = GetHelyettesitesNemOsztalybanSzakosTanarList(tanarCoList, orarendiEsTanitasiOraList, tantargyfelosztasCoList, osztalyCsoportIdList, orarendiOra.TantargyId.Value, nemkotottMunkaido),
HelyettesitesOsztalybanNemSzakosTanarList = GetHelyettesitesOsztalybanNemSzakosTanarList(tanarCoList, orarendiEsTanitasiOraList, tantargyfelosztasCoList, osztalyCsoportIdList, orarendiOra.TantargyId.Value, nemkotottMunkaido),
HelyettesitesNemOsztalybanNemSzakosTanarList = GetHelyettesitesNemOsztalybanNemSzakosTanarList(tanarCoList, orarendiEsTanitasiOraList, tantargyfelosztasCoList, osztalyCsoportIdList, orarendiOra.TantargyId.Value, nemkotottMunkaido),
OsszevonasOsztalybanSzakosTanarList = GetOsszevonasOsztalybanSzakosTanarList(tanarCoList, orarendiEsTanitasiOraList, tantargyfelosztasCoList, osztalyCsoportIdList, orarendiOra.TantargyId.Value, nemkotottMunkaido),
OsszevonasNemOsztalybanSzakosTanarList = GetOsszevonasNemOsztalybanSzakosTanarList(tanarCoList, orarendiEsTanitasiOraList, tantargyfelosztasCoList, osztalyCsoportIdList, orarendiOra.TantargyId.Value, nemkotottMunkaido),
OsszevonasOsztalybanNemSzakosTanarList = GetOsszevonasOsztalybanNemSzakosTanarList(tanarCoList, orarendiEsTanitasiOraList, tantargyfelosztasCoList, osztalyCsoportIdList, orarendiOra.TantargyId.Value, nemkotottMunkaido),
OsszevonasNemOsztalybanNemSzakosTanarList = GetOsszevonasNemOsztalybanNemSzakosTanarList(tanarCoList, orarendiEsTanitasiOraList, tantargyfelosztasCoList, osztalyCsoportIdList, orarendiOra.TantargyId.Value, nemkotottMunkaido),
FelugyeletTanarList = GetFelugyeletTanarList(alkalmazottCoList),
OsszesTanarList = GetOsszesTanarList(alkalmazottCoList),
IsTulora = orarendiOra.Tulora,
HelyettesitesTitle = $"{OrarendResource.HelyettesitesFelviteleEsModositasa} - {orarendiOra.TanarAlkalmazottNev ?? orarendiOra.TanarNev} - {orarendiOra.TantargyNev} - {orarendiOra.OsztalyCsoportNev}"
};
if (model.HelyettesitesId.IsEntityId())
{
var api = new HelyettesitesekKezeleseApiController();
var data = api.GetHelyettesitesBevitelData(model.HelyettesitesId.Value);
helyettesitesBevitelModel.HelyettesitesBevitelHelyettesitesId = data.HelyettesitesBevitelHelyettesitesId;
helyettesitesBevitelModel.HelyettesitesBevitelGroupId = data.HelyettesitesBevitelGroupId;
helyettesitesBevitelModel.HelyettesitesBevitelTanarId = data.HelyettesitesBevitelTanarId;
helyettesitesBevitelModel.HelyettesitesBevitelTanarNev = data.HelyettesitesBevitelTanarNev;
helyettesitesBevitelModel.HelyettesitesBevitelHelyettesitesTipusId = data.HelyettesitesBevitelHelyettesitesTipusId;
helyettesitesBevitelModel.HelyettesitesBevitelHelyettesitesOka = data.HelyettesitesBevitelHelyettesitesOka;
}
popUpModel = new PopUpModel(helyettesitesBevitelModel, "Helyettesites_Bevitel");
popUpModel = popUpModel.AddBtn(popUpModel, "HelyettesitesBevitelCancel", CommonResource.Megse, "HelyettesitesBevitelHelper.HelyettesitesCancel");
popUpModel = popUpModel.AddBtn(popUpModel, "HelyettesitesBevitelSave", CommonResource.Mentes, "HelyettesitesBevitelHelper.HelyettesitesSave");
popUpModel = model.HelyettesitesId.IsEntityId() ? popUpModel.AddBtn(popUpModel, "HelyettesitesBevitelDelete", CommonResource.Torles, "HelyettesitesBevitelHelper.HelyettesitesDelete") : popUpModel.AddBtn(popUpModel, "HelyettesitesBevitelNemMegtartottHelyettesites", OrarendResource.ElmaradtOra, "HelyettesitesBevitelHelper.SaveNemMegtartottHelyettesites");
popUpModel = popUpModel.AddBtn(popUpModel, "OpenOracserePopUp", CommonResource.Oracsere, "HelyettesitesBevitelHelper.OpenOracserePopUp");
ModelState.Clear();
return PartialView(Constants.General.PopupView, popUpModel);
}
catch (BlException ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
}
//NOTE: 01. - HELYETTESÍTÉS - Osztályban tanító, szakos helyettesítő
// Van beállítva pedagógus fokozata (nem Na)
// Adott órában van lyukas órája, azaz nincs órarendi órája, tanítási órája és helyettesítése a tanárnak
// A helyettesítendő óra osztályához (vagy csoportjához) van rögzített tantárgyfelosztás eleme (az osztályoknál az osztálybontott csoportokat is vegyük figyelembe)
// A helyettesítendő óra tantárgyával van rögzített tantárgyfelosztás eleme
private List<SelectListItem> GetHelyettesitesOsztalybanSzakosTanarList(List<AlkalmazottItemCo> tanarCoList, List<OrarendiOraTanitasiOraCo> orarendiEsTanitasiOraList, List<TantargyfelosztasItemCo> tantargyfelosztasCoList, List<int> osztalyCsoportIdList, int tantargyId, List<NevOktLeNemKotottMunkaidoItemHelyettesitesCO> nemkotottMunkaido)
{
var tanarCo = tanarCoList.Where(tanar => orarendiEsTanitasiOraList.All(orarendiEsTanitasiOra => orarendiEsTanitasiOra.HelyettesitoTanarId.IsEntityId() ? orarendiEsTanitasiOra.HelyettesitoTanarId.Value != tanar.Id : orarendiEsTanitasiOra.TanarId != tanar.Id)
&& tantargyfelosztasCoList.Any(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id && osztalyCsoportIdList.Any(x => x == tantargyfelosztas.OsztalyCsoportId))
&& tantargyfelosztasCoList.Any(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id && tantargyfelosztas.TantargyId == tantargyId)
&& !nemkotottMunkaido.Select(x => x.TanarId).Contains(tanar.Id));
if (!ClaimData.IsNszfhIntezmeny)
{
tanarCo = tanarCo.Where(tanar => tanar.BesorolasiFokozatTipusId.IsEntityId() && tanar.BesorolasiFokozatTipusId.Value != (int)BesorolasiFokozatTipusEnum.na);
}
var tanarDictionay = CreateAlkalmazottDictionary(tanarCo);
var result = tanarDictionay.ToSelectListItemList();
return result;
}
//NOTE: 02. - HELYETTESÍTÉS - Osztályban nem tanító, szakos
// Van beállítva pedagógus fokozata (nem Na)
// Adott órában van lyukas órája, azaz nincs órarendi órája, tanítási órája és helyettesítése a tanárnak
// A helyettesítendő óra osztályához (vagy csoportjához) nincs rögzített tantárgyfelosztás eleme (az osztályoknál az osztálybontott csoportokat is vegyük figyelembe)
// A helyettesítendő óra tantárgyával van rögzített tantárgyfelosztás eleme
private List<SelectListItem> GetHelyettesitesNemOsztalybanSzakosTanarList(List<AlkalmazottItemCo> tanarCoList, List<OrarendiOraTanitasiOraCo> orarendiEsTanitasiOraList, List<TantargyfelosztasItemCo> tantargyfelosztasCoList, List<int> osztalyCsoportIdList, int tantargyId, List<NevOktLeNemKotottMunkaidoItemHelyettesitesCO> nemkotottMunkaido)
{
var tanarCo = tanarCoList.Where(tanar => orarendiEsTanitasiOraList.All(orarendiEsTanitasiOra => orarendiEsTanitasiOra.HelyettesitoTanarId.IsEntityId() ? orarendiEsTanitasiOra.HelyettesitoTanarId.Value != tanar.Id : orarendiEsTanitasiOra.TanarId != tanar.Id)
&& tantargyfelosztasCoList.Where(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id).All(tantargyfelosztas => osztalyCsoportIdList.All(x => x != tantargyfelosztas.OsztalyCsoportId))
&& tantargyfelosztasCoList.Any(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id && tantargyfelosztas.TantargyId == tantargyId)
&& !nemkotottMunkaido.Select(x => x.TanarId).Contains(tanar.Id));
if (!ClaimData.IsNszfhIntezmeny)
{
tanarCo = tanarCo.Where(tanar => tanar.BesorolasiFokozatTipusId.IsEntityId() && tanar.BesorolasiFokozatTipusId.Value != (int)BesorolasiFokozatTipusEnum.na);
}
var tanarDictionay = CreateAlkalmazottDictionary(tanarCo);
var result = tanarDictionay.ToSelectListItemList();
return result;
}
//NOTE: 03. - HELYETTESÍTÉS - Osztályban tanító, nem szakos
// Van beállítva pedagógus fokozata (nem Na)
// Adott órában van lyukas órája, azaz nincs órarendi órája, tanítási órája és helyettesítése a tanárnak
// A helyettesítendő óra osztályához (vagy csoportjához) van rögzített tantárgyfelosztás eleme (az osztályoknál az osztálybontott csoportokat is vegyük figyelembe)
// A helyettesítendő óra tantárgyával nincs rögzített tantárgyfelosztás eleme
private List<SelectListItem> GetHelyettesitesOsztalybanNemSzakosTanarList(List<AlkalmazottItemCo> tanarCoList, List<OrarendiOraTanitasiOraCo> orarendiEsTanitasiOraList, List<TantargyfelosztasItemCo> tantargyfelosztasCoList, List<int> osztalyCsoportIdList, int tantargyId, List<NevOktLeNemKotottMunkaidoItemHelyettesitesCO> nemkotottMunkaido)
{
var tanarCo = tanarCoList.Where(tanar => orarendiEsTanitasiOraList.All(orarendiEsTanitasiOra => orarendiEsTanitasiOra.HelyettesitoTanarId.IsEntityId() ? orarendiEsTanitasiOra.HelyettesitoTanarId.Value != tanar.Id : orarendiEsTanitasiOra.TanarId != tanar.Id)
&& tantargyfelosztasCoList.Any(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id && osztalyCsoportIdList.Any(x => x == tantargyfelosztas.OsztalyCsoportId))
&& tantargyfelosztasCoList.Where(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id).All(tantargyfelosztas => tantargyfelosztas.TantargyId != tantargyId)
&& !nemkotottMunkaido.Select(x => x.TanarId).Contains(tanar.Id));
if (!ClaimData.IsNszfhIntezmeny)
{
tanarCo = tanarCo.Where(tanar => tanar.BesorolasiFokozatTipusId.IsEntityId() && tanar.BesorolasiFokozatTipusId.Value != (int)BesorolasiFokozatTipusEnum.na);
}
var tanarDictionay = CreateAlkalmazottDictionary(tanarCo);
var result = tanarDictionay.ToSelectListItemList();
return result;
}
//NOTE: 04. - HELYETTESÍTÉS - Osztályban nem tanító, nem szakos
// Van beállítva pedagógus fokozata (nem Na)
// Adott órában van lyukas órája, azaz nincs órarendi órája, tanítási órája és helyettesítése a tanárnak
// A helyettesítendő óra osztályához (vagy csoportjához) nincs rögzített tantárgyfelosztás eleme (az osztályoknál az osztálybontott csoportokat is vegyük figyelembe)
// A helyettesítendő óra tantárgyával nincs rögzített tantárgyfelosztás eleme
private List<SelectListItem> GetHelyettesitesNemOsztalybanNemSzakosTanarList(List<AlkalmazottItemCo> tanarCoList, List<OrarendiOraTanitasiOraCo> orarendiEsTanitasiOraList, List<TantargyfelosztasItemCo> tantargyfelosztasCoList, List<int> osztalyCsoportIdList, int tantargyId, List<NevOktLeNemKotottMunkaidoItemHelyettesitesCO> nemkotottMunkaido)
{
var tanarCo = tanarCoList.Where(tanar => orarendiEsTanitasiOraList.All(orarendiEsTanitasiOra => orarendiEsTanitasiOra.HelyettesitoTanarId.IsEntityId() ? orarendiEsTanitasiOra.HelyettesitoTanarId.Value != tanar.Id : orarendiEsTanitasiOra.TanarId != tanar.Id)
&& tantargyfelosztasCoList.Where(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id).All(tantargyfelosztas => osztalyCsoportIdList.All(x => x != tantargyfelosztas.OsztalyCsoportId))
&& tantargyfelosztasCoList.Where(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id).All(tantargyfelosztas => tantargyfelosztas.TantargyId != tantargyId)
&& !nemkotottMunkaido.Select(x => x.TanarId).Contains(tanar.Id)
&& tanar.BesorolasiFokozatTipusId.IsEntityId() && tanar.BesorolasiFokozatTipusId.Value != (int)BesorolasiFokozatTipusEnum.na);
var tanarDictionay = CreateAlkalmazottDictionary(tanarCo);
var result = tanarDictionay.ToSelectListItemList();
return result;
}
//NOTE: 05. - ÖSSZEVONÁS - Osztályban tanító, szakos helyettesítő
// Van beállítva pedagógus fokozata (nem Na)
// Adott órában nincs lyukas órája, azaz vagy órarendi órája vagy tanítási órája vagy helyettesítése van a tanárnak
// A helyettesítendő óra osztályához (vagy csoportjához) van rögzített tantárgyfelosztás eleme (az osztályoknál az osztálybontott csoportokat is vegyük figyelembe)
// A helyettesítendő óra tantárgyával van rögzített tantárgyfelosztás eleme
private List<SelectListItem> GetOsszevonasOsztalybanSzakosTanarList(List<AlkalmazottItemCo> tanarCoList, List<OrarendiOraTanitasiOraCo> orarendiEsTanitasiOraList, List<TantargyfelosztasItemCo> tantargyfelosztasCoList, List<int> osztalyCsoportIdList, int tantargyId, List<NevOktLeNemKotottMunkaidoItemHelyettesitesCO> nemkotottMunkaido)
{
var tanarCo = tanarCoList.Where(tanar => (orarendiEsTanitasiOraList.Any(orarendiEsTanitasiOra => orarendiEsTanitasiOra.HelyettesitoTanarId.IsEntityId() ? orarendiEsTanitasiOra.HelyettesitoTanarId.Value == tanar.Id : orarendiEsTanitasiOra.TanarId == tanar.Id) || nemkotottMunkaido.Any(x => x.TanarId == tanar.Id && !x.Megtartott))
&& tantargyfelosztasCoList.Any(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id && osztalyCsoportIdList.Any(x => x == tantargyfelosztas.OsztalyCsoportId))
&& tantargyfelosztasCoList.Any(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id && tantargyfelosztas.TantargyId == tantargyId));
if (!ClaimData.IsNszfhIntezmeny)
{
tanarCo = tanarCo.Where(tanar => tanar.BesorolasiFokozatTipusId.IsEntityId() && tanar.BesorolasiFokozatTipusId.Value != (int)BesorolasiFokozatTipusEnum.na);
}
var tanarDictionay = CreateAlkalmazottDictionary(tanarCo);
var result = tanarDictionay.ToSelectListItemList();
return result;
}
//NOTE: 06. - ÖSSZEVONÁS - Osztályban nem tanító, szakos
// Van beállítva pedagógus fokozata (nem Na)
// Adott órában nincs lyukas órája, azaz vagy órarendi órája vagy tanítási órája vagy helyettesítése van a tanárnak
// A helyettesítendő óra osztályához (vagy csoportjához) nincs rögzített tantárgyfelosztás eleme (az osztályoknál az osztálybontott csoportokat is vegyük figyelembe)
// A helyettesítendő óra tantárgyával van rögzített tantárgyfelosztás eleme
private List<SelectListItem> GetOsszevonasNemOsztalybanSzakosTanarList(List<AlkalmazottItemCo> tanarCoList, List<OrarendiOraTanitasiOraCo> orarendiEsTanitasiOraList, List<TantargyfelosztasItemCo> tantargyfelosztasCoList, List<int> osztalyCsoportIdList, int tantargyId, List<NevOktLeNemKotottMunkaidoItemHelyettesitesCO> nemkotottMunkaido)
{
var tanarCo = tanarCoList.Where(tanar => (orarendiEsTanitasiOraList.Any(orarendiEsTanitasiOra => orarendiEsTanitasiOra.HelyettesitoTanarId.IsEntityId() ? orarendiEsTanitasiOra.HelyettesitoTanarId.Value == tanar.Id : orarendiEsTanitasiOra.TanarId == tanar.Id) || nemkotottMunkaido.Any(x => x.TanarId == tanar.Id && !x.Megtartott))
&& tantargyfelosztasCoList.Where(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id).All(tantargyfelosztas => osztalyCsoportIdList.All(x => x != tantargyfelosztas.OsztalyCsoportId))
&& tantargyfelosztasCoList.Any(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id && tantargyfelosztas.TantargyId == tantargyId));
if (!ClaimData.IsNszfhIntezmeny)
{
tanarCo = tanarCo.Where(tanar => tanar.BesorolasiFokozatTipusId.IsEntityId() && tanar.BesorolasiFokozatTipusId.Value != (int)BesorolasiFokozatTipusEnum.na);
}
var tanarDictionay = CreateAlkalmazottDictionary(tanarCo);
var result = tanarDictionay.ToSelectListItemList();
return result;
}
//NOTE: 07. - ÖSSZEVONÁS - Osztályban tanító, nem szakos
// Van beállítva pedagógus fokozata (nem Na)
// Adott órában nincs lyukas órája, azaz vagy órarendi órája vagy tanítási órája vagy helyettesítése van a tanárnak
// A helyettesítendő óra osztályához (vagy csoportjához) van rögzített tantárgyfelosztás eleme (az osztályoknál az osztálybontott csoportokat is vegyük figyelembe)
// A helyettesítendő óra tantárgyával nincs rögzített tantárgyfelosztás eleme
private List<SelectListItem> GetOsszevonasOsztalybanNemSzakosTanarList(List<AlkalmazottItemCo> tanarCoList, List<OrarendiOraTanitasiOraCo> orarendiEsTanitasiOraList, List<TantargyfelosztasItemCo> tantargyfelosztasCoList, List<int> osztalyCsoportIdList, int tantargyId, List<NevOktLeNemKotottMunkaidoItemHelyettesitesCO> nemkotottMunkaido)
{
var tanarCo = tanarCoList.Where(tanar => (orarendiEsTanitasiOraList.Any(orarendiEsTanitasiOra => orarendiEsTanitasiOra.HelyettesitoTanarId.IsEntityId() ? orarendiEsTanitasiOra.HelyettesitoTanarId.Value == tanar.Id : orarendiEsTanitasiOra.TanarId == tanar.Id) || nemkotottMunkaido.Any(x => x.TanarId == tanar.Id && !x.Megtartott))
&& tantargyfelosztasCoList.Any(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id && osztalyCsoportIdList.Any(x => x == tantargyfelosztas.OsztalyCsoportId))
&& tantargyfelosztasCoList.Where(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id).All(tantargyfelosztas => tantargyfelosztas.TantargyId != tantargyId));
if (!ClaimData.IsNszfhIntezmeny)
{
tanarCo = tanarCo.Where(tanar => tanar.BesorolasiFokozatTipusId.IsEntityId() && tanar.BesorolasiFokozatTipusId.Value != (int)BesorolasiFokozatTipusEnum.na);
}
var tanarDictionay = CreateAlkalmazottDictionary(tanarCo);
var result = tanarDictionay.ToSelectListItemList();
return result;
}
//NOTE: 08. - ÖSSZEVONÁS - Osztályban nem tanító, nem szakos
// Van beállítva pedagógus fokozata (nem Na)
// Adott órában nincs lyukas órája, azaz vagy órarendi órája vagy tanítási órája vagy helyettesítése van a tanárnak
// A helyettesítendő óra osztályához (vagy csoportjához) nincs rögzített tantárgyfelosztás eleme (az osztályoknál az osztálybontott csoportokat is vegyük figyelembe)
// A helyettesítendő óra tantárgyával nincs rögzített tantárgyfelosztás eleme
private List<SelectListItem> GetOsszevonasNemOsztalybanNemSzakosTanarList(List<AlkalmazottItemCo> tanarCoList, List<OrarendiOraTanitasiOraCo> orarendiEsTanitasiOraList, List<TantargyfelosztasItemCo> tantargyfelosztasCoList, List<int> osztalyCsoportIdList, int tantargyId, List<NevOktLeNemKotottMunkaidoItemHelyettesitesCO> nemkotottMunkaido)
{
var tanarCo = tanarCoList.Where(tanar => (orarendiEsTanitasiOraList.Any(orarendiEsTanitasiOra => orarendiEsTanitasiOra.HelyettesitoTanarId.IsEntityId() ? orarendiEsTanitasiOra.HelyettesitoTanarId.Value == tanar.Id : orarendiEsTanitasiOra.TanarId == tanar.Id) || nemkotottMunkaido.Any(x => x.TanarId == tanar.Id && !x.Megtartott))
&& tantargyfelosztasCoList.Where(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id).All(tantargyfelosztas => osztalyCsoportIdList.All(x => x != tantargyfelosztas.OsztalyCsoportId))
&& tantargyfelosztasCoList.Where(tantargyfelosztas => tantargyfelosztas.TanarId == tanar.Id).All(tantargyfelosztas => tantargyfelosztas.TantargyId != tantargyId));
if (!ClaimData.IsNszfhIntezmeny)
{
tanarCo = tanarCo.Where(tanar => tanar.BesorolasiFokozatTipusId.IsEntityId() && tanar.BesorolasiFokozatTipusId.Value != (int)BesorolasiFokozatTipusEnum.na);
}
var tanarDictionay = CreateAlkalmazottDictionary(tanarCo);
var result = tanarDictionay.ToSelectListItemList();
return result;
}
//NOTE: 09. - FELÜGYELET - Egyéb alkalmazott (nem pedagógus)
// Nincs beállítva pedagógus fokozata (ahol Na a beállított érték)
// NINCS SZŰRÉS LYUKAS ÓRÁKRA
// NINCS SZŰRÉS OSZTÁLYCSOPORTHOZ TARTOZÓ TTF SZŰRÉSRE
// NINCS SZŰRÉS TANTÁRGYHOZ TARTOZÓ TTF SZŰRÉSRE
private List<SelectListItem> GetFelugyeletTanarList(List<AlkalmazottItemCo> tanarCoList)
{
var tanarDictionay = CreateAlkalmazottDictionary(tanarCoList
.Where(tanar => !tanar.BesorolasiFokozatTipusId.IsEntityId() || tanar.BesorolasiFokozatTipusId.Value == (int)BesorolasiFokozatTipusEnum.na));
var result = tanarDictionay.ToSelectListItemList();
return result;
}
//NOTE: 10. - ÖSSZES PEDAGÓGUS
// Van beállítva pedagógus fokozata (nem Na)
// NINCS SZŰRÉS LYUKAS ÓRÁKRA
// NINCS SZŰRÉS OSZTÁLYCSOPORTHOZ TARTOZÓ TTF SZŰRÉSRE
// NINCS SZŰRÉS TANTÁRGYHOZ TARTOZÓ TTF SZŰRÉSRE
private List<SelectListItem> GetOsszesTanarList(List<AlkalmazottItemCo> tanarCoList)
{
var tanarDictionay = CreateAlkalmazottDictionary(tanarCoList
.Where(tanar => tanar.BesorolasiFokozatTipusId.IsEntityId() && tanar.BesorolasiFokozatTipusId.Value != (int)BesorolasiFokozatTipusEnum.na));
var result = tanarDictionay.ToSelectListItemList();
return result;
}
private IDictionary<string, string> CreateAlkalmazottDictionary(IEnumerable<AlkalmazottItemCo> tanarCoList)
{
return tanarCoList.ToDictionary(x => x.Id.ToString(), x => $"{x.FelhasznaloNyomtatasiNev}{(string.IsNullOrWhiteSpace(x.FelhasznaloOktatasiAzonosito) ? Core.Constants.General.HianyzoOktatasiAzonositoJeloles : $" ({x.FelhasznaloOktatasiAzonosito})")}");
}
public ActionResult OpenOracserePopUp(int helyettesitesreKivalasztottTanarId)
{
var oracsereModel = new OracsereModel();
var helper = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
oracsereModel.HelyettesitesreKivalasztottTanarNeve = helper.GetNyomtatasiNev(helyettesitesreKivalasztottTanarId);
var tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var tanev = tanevHelper.GetTanevInfo();
oracsereModel.TanevElsoNapja = tanev.KezdoNap;
oracsereModel.TanevUtolsoNapja = tanev.UtolsoNap;
var popUpModel = new PopUpModel(oracsereModel, "Oracsere_PopUp");
popUpModel.AddCancelBtn(popUpModel, "HelyettesitesBevitelHelper.OracsereCancel");
popUpModel.AddBtn(popUpModel, "OracsereSaveButton", CommonResource.Mentes, "HelyettesitesBevitelHelper.SaveOracsere");
return PartialView(Constants.General.PopupView, popUpModel);
}
}
}

View file

@ -0,0 +1,105 @@
using System.Net;
using System.Web.Mvc;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core.Exceptions;
using Kreta.Enums;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class HelyettesitesekListajaController : Controller
{
public ActionResult Index()
{
var model = new HelyettesitesekListajaSearchModel() { FeladatEllatasiHelyId = ClaimData.FelhelySzuro };
return View(model);
}
public ActionResult OpenHelyettesitesInfoPopUp(string id, bool naplozott)
{
try
{
HelyettesitesInfoModel helyettesitesInfoModel;
if (!int.TryParse(id, out int searchId))
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAMuveletSoran);
}
if (naplozott)
{
var helper = new TanoraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
TanoraCO tanoraCo = helper.GetTanorakAdatok(searchId);
helyettesitesInfoModel = new HelyettesitesInfoModel
{
Datum = tanoraCo.Datum.ToShortDateString(),
Oraszam = tanoraCo.Oraszam,
HetNapja = tanoraCo.HetNapjaNev,
Hetirend = tanoraCo.HetirendNev,
Foglalkozas = tanoraCo.FoglalkozasNev,
OsztalyCsoport = tanoraCo.OsztalyCsoportNev,
Tantargy = tanoraCo.TantargyNev,
Tanar = tanoraCo.TanarNev,
Terem = tanoraCo.TeremNev,
Megtartott = tanoraCo.Megtartott.HasValue && tanoraCo.Megtartott.Value ? CommonResource.Igen : CommonResource.Nem,
Sorszamozando = tanoraCo.Sorszamozando.GetDisplayName(),
OraKezdete = tanoraCo.OraKezd.ToString("HH:mm"),
OraVege = tanoraCo.OraVeg.ToString("HH:mm"),
Tema = tanoraCo.Tema,
HaziFeladat = tanoraCo.HaziFeladat,
HelyettesitesOka = tanoraCo.HelyettesitesOka,
HelyettesitesTipusa = tanoraCo.HelyettesitesTipus.GetDisplayName<HelyettesitesTipusEnum>(ClaimData.SelectedTanevID.Value),
HelyettesitesElrendelesenekIdopontja = tanoraCo.HelyettesitesElrendelesenekIdopontja?.ToString(Core.Constants.ToStringPattern.HungarianDateTimeWithoutSeconds),
LegutobbiModositasIdopontja = tanoraCo.LegutobbiModositasIdopontja.ToString(Core.Constants.ToStringPattern.HungarianDateTimeWithoutSeconds),
NaplozasIdopontja = tanoraCo.BejegyIdo.ToString(Core.Constants.ToStringPattern.HungarianDateTimeWithoutSeconds)
};
}
else
{
var helper = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
TanoraCO tanoraCo = helper.GetHelyettesitesAdatok(searchId);
helyettesitesInfoModel = new HelyettesitesInfoModel
{
Datum = tanoraCo.Datum.ToShortDateString(),
Oraszam = tanoraCo.Oraszam,
HetNapja = tanoraCo.HetNapjaNev,
Hetirend = tanoraCo.HetirendNev,
Foglalkozas = tanoraCo.FoglalkozasNev,
OsztalyCsoport = tanoraCo.OsztalyCsoportNev,
Tantargy = tanoraCo.TantargyNev,
Tanar = tanoraCo.HelyettesitoTanarNev,
Terem = tanoraCo.TeremNev,
Megtartott = tanoraCo.Megtartott.HasValue && tanoraCo.Megtartott.Value ? CommonResource.Igen : CommonResource.Nem,
Sorszamozando = tanoraCo.Sorszamozando.GetDisplayName(),
OraKezdete = tanoraCo.OraKezd.ToString("HH:mm"),
OraVege = tanoraCo.OraVeg.ToString("HH:mm"),
Tema = tanoraCo.Tema,
HelyettesitesOka = tanoraCo.Megjegyzes,
HelyettesitesTipusa = tanoraCo.HelyettesitesTipus.GetDisplayName<HelyettesitesTipusEnum>(ClaimData.SelectedTanevID.Value),
HelyettesitesElrendelesenekIdopontja = tanoraCo.HelyettesitesElrendelesenekIdopontja?.ToString(Core.Constants.ToStringPattern.HungarianDateTimeWithoutSeconds),
};
}
var popUpModel = new PopUpModel(helyettesitesInfoModel, "Info_PopUp");
popUpModel.AddCancelBtn(popUpModel, "HelyettesitesekListajaHelper.helyettesitesInfoCancel");
return PartialView(Constants.General.PopupView, popUpModel);
}
catch (BlException ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
}
}
}

View file

@ -0,0 +1,54 @@
using System.Web.Mvc;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.ReCaptcha;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[AllowAnonymous]
public class JelszoValtoztatoController : Controller
{
public ActionResult Index(string guid)
{
var model = new JelszoValtoztatoModel { Guid = guid };
try
{
model.IsSzulDatumValidacio = new JelszoLinkHelper(ConnectionTypeExtensions.GetOrganizationConnectionType(), guid).IsSzulDatumValidacio();
}
catch (KretaJelszoModositasException e)
{
model.ErrorMessage = e.Message;
}
return View(model);
}
public JsonResult SaveJelszo(JelszoValtoztatoModel model)
{
if (!ModelState.IsValid)
{
Response.StatusCode = 400;
Response.TrySkipIisCustomErrors = true;
var modelErrors = ModelState.AllErrors();
return Json(modelErrors);
}
var captcha = ReCaptchaValidator.Validate(model.ReCaptcha);
if (!captcha.Success)
{
return Json(new IsSuccessResponseCo(false, string.Join(",", captcha.ErrorCodes)));
}
IsSuccessResponseCo response = new JelszoLinkHelper(ConnectionTypeExtensions.GetOrganizationConnectionType(), model.Guid).SaveJelszo(model.ConvertToCo());
return Json(response);
}
}
}

View file

@ -0,0 +1,234 @@
using System;
using System.Data;
using System.IO;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Core.FeatureToggle;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Classes;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
public class KIRTanuloImportController : Controller
{
private IFeatureContext FeatureContext { get; }
private IUploadFileValidator UploadFileValidator { get; }
public KIRTanuloImportController(IFeatureContext featureContext, IUploadFileValidator uploadFileValidator)
{
FeatureContext = featureContext ?? throw new ArgumentNullException(nameof(featureContext));
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
}
// GET: Adminisztracio/KIRTanuloImport
public ActionResult Index()
{
var model = new TanuloKIRImportModel
{
KirLoginModel = new KIRLoginModel()
{
OmAzonosito = ClaimData.OrganizationCode,
},
TanevId = ClaimData.SelectedTanevID.Value,
KIRImportEnabled = FeatureContext.IsEnabled(Core.Constants.FeatureName.KIRImport),
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
IsSzakkepzoIntezmeny = ClaimData.IsSzakkepzoIntezmeny,
};
return View(model);
}
public ActionResult OpenKIRTanuloImportPopup(TanuloKIRImportModel model)
{
if (ModelState.IsValid)
{
try
{
var kirHelper = new KirHelper(ConnectionTypeExtensions.GetSessionConnectionType(), model.KirLoginModel.OmAzonosito, model.KirLoginModel.FelhasznaloNev, jelszo: model.KirLoginModel.Jelszo);
var tanarestanuloKirImportModel = new TanuloKIRImportModel
{
TanevId = ClaimData.SelectedTanevID.Value,
KIRImportModel = new KIRImportModel
{
OmAzonosito = model.KirLoginModel.OmAzonosito,
FelhasznaloNev = model.KirLoginModel.FelhasznaloNev,
KirToken = kirHelper.KirToken,
TelephelyList = kirHelper.GetTelephelyList().ToSelectListItemList()
},
KirLoginModel = new KIRLoginModel
{
OmAzonosito = model.KirLoginModel.OmAzonosito,
FelhasznaloNev = model.KirLoginModel.FelhasznaloNev
},
};
var pm = new PopUpModel(tanarestanuloKirImportModel, "KIRTanuloImportModal");
pm.AddCancelBtn(pm, "KretaWindowHelper.destroyAllWindow");
pm.AddBtn(pm, "BtnKIRImport", 3486 /*Importálás*/, "KIRTanuloImportHelper.KIRImport");
return PartialView(Constants.General.PopupView, pm);
}
catch (Exception e)
{
StatusError error = new StatusError(HttpStatusCode.BadRequest, e.Message);
throw error;
}
}
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
public ActionResult KIRImport(TanuloKIRImportModel model)
{
if (ModelState.IsValid)
{
var kirHelper = new KirHelper(ConnectionTypeExtensions.GetSessionConnectionType(), model.KIRImportModel.OmAzonosito, model.KIRImportModel.FelhasznaloNev, kirToken: model.KIRImportModel.KirToken);
var tanuloList = kirHelper.GetTanuloList(model.KIRImportModel.TelephelyKod.Value);
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
var anotherYearId = Kreta.Web.Classes.Utils.GetAnotherYearId();
new EgysegesImportHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).ExecuteKIRTanuloImport(tanuloList, anotherYearId, ClaimData.IsKovTanev);
}
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
public ActionResult OpenTanuloImportPopUp(bool? isJuttatasUpdate)
{
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var tanulokFelolteseModel = new TanulokFeltolteseModel
{
TanevId = ClaimData.SelectedTanevID.Value,
Errors = helper.TanuloKIRAdatok.Validate(),
IsJuttatasUpdate = isJuttatasUpdate,
IsSzakkepzoIntezmeny = ClaimData.IsSzakkepzoIntezmeny,
};
var model = new PopUpModel(tanulokFelolteseModel, "TanulokFeltolteseModal");
model.AddCancelBtn(model, "KretaWindowHelper.destroyAllWindow");
if (tanulokFelolteseModel.Errors.Count == 0)
{
model.AddOkBtn(model, "KIRTanuloFeltoltesHelper.Save");
}
return PartialView(Constants.General.PopupView, model);
}
public ActionResult UploadKIRTanuloFile(HttpPostedFileBase importTanuloFile)
{
UploadFileValidator.ValidateImportFile(importTanuloFile);
try
{
TantervHelper helper = new TantervHelper(ConnectionTypeExtensions.GetSessionConnectionType());
DataSet tantervDataSet = helper.TantervKereses();
if (!tantervDataSet.Tables[0].Rows.Count.IsNotNullAndPositive())
{
throw new BlException(ImportExportOrarendResource.TantervNotFound);
}
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
var anotherYearId = Kreta.Web.Classes.Utils.GetAnotherYearId();
new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ExecuteKIRTanuloImportFile(importTanuloFile.ContentLength, importTanuloFile.InputStream, importTanuloFile.FileName, anotherYearId, ClaimData.IsKovTanev, ClaimData.IsSzakkepzoIntezmeny);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
catch (InvalidDataException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
catch (KretaInvalidFileFormatException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
catch (Exception e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
return Content(string.Empty);
}
public ActionResult SaveTanulok(bool? isJuttatasUpdate)
{
if (ModelState.IsValid)
{
try
{
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
helper.SaveImportaltTanulok(isJuttatasUpdate ?? false);
return Json(new { tovabbUrl = @"/Tanulo/Tanulo" });
}
catch (BlException)
{
throw;
}
catch (SDA.DataProvider.UniqueKeyViolationException)
{
/*A fájlban szereplő oktatási azonosítóval már szerepel diák az adatbázisban*/
StatusError error = new StatusError(HttpStatusCode.BadRequest, StringResourcesUtils.GetString(4852));
throw error;
}
}
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
public ActionResult GetPreLoadedStudents(DataSourceRequest request)
{
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
return Json(helper.GetImportaltTanulok().ToDataSourceResult(), JsonRequestBehavior.AllowGet);
}
public ActionResult DownloadTemplate()
{
string filePath = Kreta.Web.Classes.Utils.GetExcelTemplateFilePath(Constants.ImportExport.TanuloImportSablonNev);
if (filePath == null)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.FajlNemLetezik);
}
return File(filePath, Core.Constants.ContentTypes.Xlsx, Constants.ImportExport.TanuloImportSablonNev);
}
public ActionResult ExportAktualisAdatok()
{
var memoryStream = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ExportTanuloAktualisAdatok();
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = $"{TanuloResource.TanulokExport}.{Constants.ImportExport.FileFormatXlsx}" };
}
}
}

View file

@ -0,0 +1,287 @@
using System;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.FeatureToggle;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Framework.Security;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Classes;
using Kreta.Web.Configuration;
using Kreta.Web.Controllers.Logic;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.ReCaptcha;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[AllowAnonymous]
public class LoginController : Controller
{
private IIdpConfiguration IdpConfiguration { get; }
private IFeatureContext FeatureContext { get; }
public LoginController(IIdpConfiguration idpConfiguration, IFeatureContext featureContext)
{
IdpConfiguration = idpConfiguration ?? throw new ArgumentNullException(nameof(idpConfiguration));
FeatureContext = featureContext ?? throw new ArgumentNullException(nameof(featureContext));
}
public ActionResult Index()
{
if (IdpConfiguration.LoginEnabled)
{
return RedirectToAction("Index", "Home", new { Area = string.Empty });
}
var model = BuildModel();
var mainVersion = KretaVersion.Instance.MainVersion;
var assemblyCreationDate = KretaVersion.Instance.AssemblyCreationDateTime.ToShortDateString();
var commitNumber = KretaVersion.Instance.CommitNumber;
var nextUpdateDateTimeText = new AdminHelper(ConnectionTypeExtensions.GetOrganizationConnectionType()).GetKovTelepitesDatum().ToString("yyyy.MM.dd. HH:mm");
ViewBag.Version = $"{CommonResource.Version}: {mainVersion} ({assemblyCreationDate}) <br/> {commitNumber}";
ViewBag.NextUpdateDateTimeText = nextUpdateDateTimeText;
LogOut();
return View(model);
}
public ActionResult LostPasswordPopUp()
{
var popUpModel = new PopUpModel(new LostPasswordModel(), "LostPasswordPopUp");
popUpModel = popUpModel.AddCancelBtn(popUpModel, "KretaWindowHelper.destroyAllWindow");
popUpModel = popUpModel.AddOkBtn(popUpModel, "LoginHelper.requestNewPassword");
return PartialView(Constants.General.PopupView, popUpModel);
}
public ActionResult PasswordReset(LostPasswordModel model)
{
var result = Content(ErrorResource.AzUjJelszotElkuldtukAMegadottEmailCimre);
return result;
}
private const string ErrorCodeAccountError = "AccountError";
public ActionResult LoginCheck(LoginModel model)
{
if (IdpConfiguration.LoginEnabled)
{
return HttpNotFound();
}
LogOut();
LoginInfo loginInfo = null;
bool isAccountOk;
if (!new IntezmenyHelper(ConnectionTypeExtensions.GetOrganizationConnectionType()).IsSuccessAuthorizedDate())
{
return LoginResult(success: false, AdminisztracioResource.TelepitesMiattBelepesNemLehetseges, ErrorCodeAccountError, string.Empty);
}
if (string.IsNullOrWhiteSpace(model.UserName))
{
return LoginResult(success: false, ErrorResource.AFelhasznalonevMegadasaKotelezo, ErrorCodeAccountError, string.Empty);
}
//recaptcha validation
if (model.ReCaptchaIsEnabled)
{
var captcha = ReCaptchaValidator.Validate(model.ReCaptcha);
if (!captcha.Success)
{
return LoginResult(success: false, ErrorResource.ABelepeshezACaptchaKozetelezo, ErrorCodeAccountError, string.Empty);
}
}
//NOTE: Account lekérdezése
try
{
using (var loginManager = new LoginManager())
{
loginInfo = loginManager.CheckLogin(model.UserName.Trim(), model.Password, GetClientIP());
isAccountOk = loginInfo != null;
if (isAccountOk && !loginInfo.IsDeniedArchivIntezmenyUser)
{
throw new ArchivBelepesException("-");
}
}
}
catch (SecurityException)
{
isAccountOk = false;
}
catch (DataIntegrityException)
{
isAccountOk = false;
}
catch (NextTanevBelepesException)
{
return LoginResult(success: false, ErrorResource.KovTanevBelepesError, ErrorCodeAccountError, string.Empty);
}
catch (ArchivBelepesException)
{
return LoginResult(success: false, ErrorResource.ArchivBelepesError, ErrorCodeAccountError, string.Empty);
}
catch (Exception ex)
{
SDAServer.Instance.Logger.ExceptionThrown(ex);
return LoginResult(success: false, ErrorResource.IsmeretlenHibaTortent, ErrorCodeAccountError, string.Empty);
}
//NOTE: Ha nem jók a bejelentkezési adatok
if (!isAccountOk || loginInfo.PasswordState == PasswordState.INVALID)
{
return LoginResult(success: false, ErrorResource.HibasFelhasznalonevVagyJelszo, ErrorCodeAccountError, string.Empty, loginInfo?.MeghiusultBelepes);
}
if (loginInfo.IsDeniedSzirIntezmenyUser)
{
return LoginResult(success: false, ErrorResource.HibasFelhasznalonevVagyJelszo, ErrorCodeAccountError, string.Empty, loginInfo.MeghiusultBelepes);
}
//NOTE: Végleges login
var isLoginSuccess = Login(loginInfo, out var loginMessageString);
if (HttpContext.Request.Headers.AllKeys.Contains(nameof(KliensTipusEnum.Mobile), StringComparer.Ordinal))
{
ClaimData.KliensTipusa = KliensTipusEnum.Mobile;
}
// Dashboard popup üzenetekhez:
var popupCookie = new HttpCookie("DisplayedPopups")
{
HttpOnly = true,
SameSite = SameSiteMode.None,
Secure = true
};
HttpContext.Response.Cookies.Add(popupCookie);
return LoginResult(isLoginSuccess, isLoginSuccess ? ErrorResource.SikeresBejelentkezes : loginMessageString, isLoginSuccess ? "Ok" : ErrorCodeAccountError, string.Empty, loginInfo.MeghiusultBelepes);
}
public void LogOut()
{
MasterLayoutLogic.LogOut();
}
public ActionResult ChangeLanguage(int id)
{
ClaimData.LCID = id;
return RedirectToAction("Index");
}
private LoginModel BuildModel()
{
var connectionType = ConnectionTypeExtensions.GetOrganizationConnectionType();
var dsDashboard = CommonUtils.GetLoginDashboardUzenet(connectionType);
var csokkentettGondviseloEnable = new SystemSettingsHelper(connectionType).GetSystemSettingValue<bool>(Enums.RendszerBeallitasTipusEnum.Csokkentett_gondviselok_kezelese);
var ds = new IntezmenyHelper(connectionType).GetOrganizationNameAndCode();
var model = new LoginModel
{
IntezmenyNeve = ds.Tables[0].Rows[0][0].ToString(),
IntezmenyOMkod = ds.Tables[0].Rows[0][1].ToString(),
LejartLicence = string.Equals(ds.Tables[0].Rows[0][2].ToString(), "T", StringComparison.OrdinalIgnoreCase),
NextUpdateHeader = dsDashboard.Tables[0].Rows[0]["C_CIM"].ToString(),
NextUpdateMessage = dsDashboard.Tables[0].Rows[0]["C_TARTALOM"].ToString(),
CsokkentettGondviseloEnable = csokkentettGondviseloEnable,
IsSzirIntezmeny = ds.Tables[0].Rows[0].Field<bool>("IsSzirIntezmeny_BOOL"),
IsArchivIntezmeny = ds.Tables[0].Rows[0].Field<bool>("IsArchivIntezmeny_BOOL"),
IdpLogoutUrl = IdpConfiguration.LogoutUrl,
ReCaptchaIsEnabled = false
};
return model;
}
private JsonResult LoginResult(bool success, string errorMessage, string errorCode, string warningMessage, int? failedLoginCounter = 0)
{
var result = Json(new LoginResultModel { Success = success, ErrorMessage = errorMessage, ErrorCode = errorCode, WarningMessage = warningMessage, FailedLoginCounter = failedLoginCounter });
return result;
}
private bool Login(LoginInfo loginInfo, out string loginMessageString)
{
loginMessageString = string.Empty;
try
{
using (var loginManager = new LoginManager())
{
loginInfo = loginManager.Login(loginInfo);
}
}
catch (SecurityException)
{
if (ApplicationData.KretaDebug)
{
throw;
}
loginMessageString = ErrorResource.HibasFelhasznalonevVagyJelszo;
return false;
}
catch (DataIntegrityException)
{
if (ApplicationData.KretaDebug)
{
throw;
}
loginMessageString = ErrorResource.NemLetezikAFelhasznalohozJelszo;
return false;
}
catch (Exception ex)
{
if (ApplicationData.KretaDebug)
{
throw;
}
SDAServer.Instance.Logger.ExceptionThrown(ex);
loginMessageString = ErrorResource.IsmeretlenHibaTortent;
return false;
}
//NOTE: Ha nem sikerült bejelentkeznie
if (loginInfo == null)
{
loginMessageString = ErrorResource.HibasFelhasznalonevVagyJelszo;
return false;
}
return true;
}
private string GetClientIP()
{
var clientIp = HttpContext.Request.UserHostAddress.Trim();
try
{
var xForwardedFor = HttpContext.Request.Headers["X-Forwarded-For"];
if (!string.IsNullOrWhiteSpace(xForwardedFor))
{
clientIp = xForwardedFor;
}
return clientIp;
}
catch
{
return clientIp;
}
}
}
}

View file

@ -0,0 +1,49 @@
using System.Web.Mvc;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Enums;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class NevOktLeNemKotottMunkaidoListajaController : Controller
{
public ActionResult Index()
{
return View(new NevOktLeNemKotottMunkaidoSearchModel() { FeladatEllatasiHelyId = ClaimData.FelhelySzuro });
}
public ActionResult OpenInfoPopup(int nevOktLeNemKotottMunkaidoId)
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var helper = new NemKotottMunkaidoHelper(connectionType);
var felhasznaloHelper = new FelhasznaloHelper(connectionType);
var nemKotottMunkaidoCO = helper.GetNemKotottMunkaidoById(nevOktLeNemKotottMunkaidoId);
var infoModel = new NevOktLeNemKotottMunkaidoInfoModel
{
Hetirend = nemKotottMunkaidoCO.HetirendId.GetDisplayName<HetiRendTipusEnum>(ClaimData.SelectedTanevID.Value),
Kategoria = nemKotottMunkaidoCO.TorvenyKategoriaId.GetDisplayName<TevekenysegTipusEnum>(ClaimData.SelectedTanevID.Value),
Kezdete = nemKotottMunkaidoCO.Kezdete.ToString(Core.Constants.ToStringPattern.HungarianDateTimeWithoutSeconds),
Megjegyzes = nemKotottMunkaidoCO.Megjegyzes,
Megtartott = nemKotottMunkaidoCO.Megtartott.GetDisplayName(),
NaplozottMegjegyzes = nemKotottMunkaidoCO.NaplozottMegjegyzes,
TanarNeve = felhasznaloHelper.GetNyomtatasiNev(nemKotottMunkaidoCO.TanarId),
TulajdonosNeve = felhasznaloHelper.GetNyomtatasiNev(nemKotottMunkaidoCO.TulajId),
Vege = nemKotottMunkaidoCO.Vege.ToString(Core.Constants.ToStringPattern.HungarianDateTimeWithoutSeconds),
};
var model = new PopUpModel(infoModel, "Info_PopUp");
model.AddCancelBtn(model, "NevOktLeNemKotottMunkaidoHelper.infoCancel");
return PartialView(Constants.General.PopupView, model);
}
}
}

View file

@ -0,0 +1,228 @@
using System;
using System.Linq;
using System.Net;
using System.Web.Mvc;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Security;
using Kreta.Core.FeatureToggle;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Web.Areas.Adminisztracio.Helpers;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Controllers;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Modal;
using Kreta.Web.Models;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
using Kreta.Web.Utils;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Naplo.ClaimValue, KretaClaimPackages.Ellenorzo.ClaimValue)]
public class ProfilController : Controller
{
/// <summary>
/// Default view visszaadás
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var model = new ProfilModel
{
IsElerhetosegAdatokSzerkeszthetoek = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.tanulok_es_gondviselok_szerkesztheti_sajat_elerhetosegi_adataikat)
};
return View("Index", model);
}
[HttpPost]
public ActionResult GenerateNewEgyhaztartasbanElokRow(EgyhaztartasbanElokRowModel model)
{
return View("EgyHaztartasbanLevokRow", model);
}
private readonly IFeatureContext FeatureContext;
public ProfilController(IFeatureContext featureContext)
{
FeatureContext = featureContext;
}
public SajatAdatlapInfoModel GetDataForInfo(int id)
{
if (ClaimManager.HasPackage(KretaClaimPackages.Naplo.ClaimValue) || ClaimManager.HasPackage(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Naplo.ClaimValue))
{
return new ProfilHelper().GetTanarSajatAdatlapDataForInfo(id);
}
if (ClaimManager.HasPackage(KretaClaimPackages.Ellenorzo.ClaimValue))
{
if (ClaimData.GondviseloId.HasValue)
{
return new ProfilHelper().GetGondviseloSajatAdatlapDataForInfo(ClaimData.GondviseloId.Value, Request.Url.Host);
}
return new ProfilHelper().GetTanuloSajatAdatlapDataForInfo(id, Request.Url.Host);
}
throw new Exception();
}
[MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Naplo.ClaimValue, KretaClaimPackages.Ellenorzo.ClaimValue)]
public ActionResult SajatAdatlapPopUp()
{
SajatAdatlapInfoModel alkalmazottModel = GetDataForInfo(ClaimData.FelhasznaloId);
alkalmazottModel.HideControlsForAlkalmazott = true;
var model = new PopUpModel(alkalmazottModel, "Info_SajatAdatlap");
model.Buttons.Add(new ModalButtonModel() { Name = "BtnSajatAdatlapBezaras", Text = Resources.CommonResource.Bezaras, EventName = "SajatAdatlapHelper.closeSajatAdatlapPopUp" });
return PartialView(Constants.General.PopupView, model);
}
public ActionResult LoadJelszoModositas()
{
var model = new ProfilModel
{
JelszoValtoztatasNemLehetseges = ClaimManager.GetClaimIdentity().HasClaim(KretaClaimTypes.Resource, KretaClaimPackages.Ellenorzo.Resources.A_felhasznalok_nem_valtoztathatjak_meg_a_jelszavukat_az_elektronikus_ellenorzoben)
};
return PartialView("JelszoModositas_Bevitel", model);
}
public ActionResult LoadProfilkepFeltoltes()
{
var model = new ProfilModel();
return PartialView("ProfilkepFeltoltes_Bevitel", model);
}
public ActionResult LoadTippekBeallitasa()
{
var model = new TippModel();
model.TippekElrejtese = ProfileUtils.HideTips;
model.EmailHelyettesites = ProfileUtils.EmailHelyettesites;
model.HianyzokAutoKitoltes = ProfileUtils.IsHianyzokAutoKitoltesEnabled;
model.FogadooraEmail = ProfileUtils.FogadooraEmail;
model.FogadooraEmailUj = ProfileUtils.FogadooraEmailUj;
model.FogadooraEmailJelentkezes = ProfileUtils.FogadooraEmailJelentkezes;
model.FogadooraEmailJelentkezesLemondas = ProfileUtils.FogadooraEmailJelentkezesLemondas;
model.FogadooraEmlekeztetoEmailJelentkezes = ProfileUtils.FogadooraEmlekeztetoEmailJelentkezes;
model.FogadooraEmailTorles = ProfileUtils.FogadooraEmailTorles;
model.FogadooraEmail3Nappal = ProfileUtils.FogadooraEmail3Nappal;
model.FogadooraEmail1Nappal = ProfileUtils.FogadooraEmail1Nappal;
model.NemNaplozottTanorakEmail = ProfileUtils.NemNaplozottTanorakEmail;
model.AtlagMegjelenitesTipusa = (int)ProfileUtils.AtlagMegjelenitesTipusa;
model.AtlagbaBeleszamitoOsztalyTipusa = (int)ProfileUtils.AtlagbaBeleszamitoOsztalyTipusa;
model.AtlagMegjelenitesTipusaList = new ComboBoxHelperEnumApiController(FeatureContext).GetAtlagMegjelenitesTipusList();
model.AtlagbaBeleszamitoOsztalyTipusaList = new ComboBoxHelperEnumApiController(FeatureContext).GetAtlagbaBeleszamitoOsztalyTipusList();
model.HaladasiNaploFulTipusa = (int)ProfileUtils.HaladasiNaploFulTipusa;
model.HaladasiNaploFulTipusaList = new ComboBoxHelperEnumApiController(FeatureContext).GetHaladasiNaploFulTipusList();
model.HaladasiNaploNezetTipusa = (int)ProfileUtils.HaladasiNaploNezetTipusa;
model.HaladasiNaploNezetTipusaList = new ComboBoxHelperEnumApiController(FeatureContext).GetHaladasiNaploNezetTipusList();
model.HetirendMegjeleniteseBelepeskor = ProfileUtils.HetirendMegjeleniteseBelepeskor;
return PartialView("Tippek_Beallitas", model);
}
public ActionResult LoadElerhetosegekSzerk()
{
var elerhetosegek = new FelhasznaloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetElerhetosegek(ClaimData.FelhasznaloId);
var model = ConvertElerhetosegekModCoToModel(elerhetosegek);
return PartialView("ElerhetosegekModositas_Bevitel", model);
}
public ActionResult LoadElerhetosegek()
{
var elerhetosegek = new FelhasznaloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetElerhetosegek(ClaimData.FelhasznaloId);
var model = ConvertElerhetosegekModCoToModel(elerhetosegek);
return PartialView("ElerhetosegekMegjelenitese", model);
}
public ActionResult LoadGondviseloAdatokSzerk()
{
var model = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetGondviseloElerhetosegAdatok(ClaimData.GondviseloId.Value);
return PartialView("GondviseloAdatokSzerkesztese", ConvertGondviseloAdatokModCOToModel(model));
}
public ActionResult LoadGondviseloAdatok()
{
var model = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetGondviseloElerhetosegAdatok(ClaimData.GondviseloId.Value);
return PartialView("GondviseloAdatokMegjelenitese", ConvertGondviseloAdatokModCOToModel(model));
}
public ActionResult LoadGondviselo4TSzerkesztese()
{
if (!ClaimData.FeltarGondviseloEnabled)
{
return PartialView("Empty");
}
var co = new GondviseloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetGondviselo4TAdatok(ClaimData.GondviseloId.Value);
return PartialView("Gondviselo4TAdatokSzerkesztese", new Gondviselo4TAdatokModel(co));
}
[HttpPost]
[MvcValidateAjaxAntiForgeryToken]
public ActionResult TippBeallitasokMentese(TippModel model)
{
ProfileUtils.HideTips = model.TippekElrejtese;
ProfileUtils.EmailHelyettesites = model.EmailHelyettesites;
ProfileUtils.IsHianyzokAutoKitoltesEnabled = model.HianyzokAutoKitoltes;
ProfileUtils.FogadooraEmail = model.FogadooraEmail;
ProfileUtils.FogadooraEmailUj = model.FogadooraEmailUj;
ProfileUtils.FogadooraEmailJelentkezes = model.FogadooraEmailJelentkezes;
ProfileUtils.FogadooraEmailJelentkezesLemondas = model.FogadooraEmailJelentkezesLemondas;
ProfileUtils.FogadooraEmlekeztetoEmailJelentkezes = model.FogadooraEmlekeztetoEmailJelentkezes;
ProfileUtils.FogadooraEmailTorles = model.FogadooraEmailTorles;
ProfileUtils.FogadooraEmail3Nappal = model.FogadooraEmail3Nappal;
ProfileUtils.FogadooraEmail1Nappal = model.FogadooraEmail1Nappal;
ProfileUtils.NemNaplozottTanorakEmail = model.NemNaplozottTanorakEmail;
ProfileUtils.AtlagMegjelenitesTipusa = (AtlagMegjelenitesTipus)model.AtlagMegjelenitesTipusa;
ProfileUtils.AtlagbaBeleszamitoOsztalyTipusa = (AtlagbaBeleszamitoOsztalyTipus)model.AtlagbaBeleszamitoOsztalyTipusa;
ProfileUtils.HaladasiNaploFulTipusa = (HaladasiNaploFulTipus)model.HaladasiNaploFulTipusa;
ProfileUtils.HaladasiNaploNezetTipusa = (HaladasiNaploNezetTipus)model.HaladasiNaploNezetTipusa;
ProfileUtils.HetirendMegjeleniteseBelepeskor = model.HetirendMegjeleniteseBelepeskor;
ProfileUtils.SaveUserProfileDocument();
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
private GondviseloAdatokModModel ConvertGondviseloAdatokModCOToModel(GondviseloAdatokModCO co)
{
return new GondviseloAdatokModModel
{
AktEmail = co.AktEmail,
AktTelefon = co.AktTelefon
};
}
private ElerhetosegekModel ConvertElerhetosegekModCoToModel(ElerhetosegekModCO co)
{
return new ElerhetosegekModel
{
Email = co.Email.Select(e => new EmailElerhetosegModel
{
Alapertelmezett = e.Alapertelmezett,
EmailCim_Input = e.EmailCim,
Tipus = e.Tipus,
Id = e.Id,
Status = e.Status
}).ToList(),
Telefon = co.Telefon.Select(t => new TelefonElerhetosegModel
{
Alapertelmezett = t.Alapertelmezett,
Telefonszam = t.Telefonszam,
Tipus = t.Tipus,
Id = t.Id,
Status = t.Status
}).ToList()
};
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,231 @@
using System.Collections.Generic;
using System.Web.Mvc;
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.Framework;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.ApiControllers;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class SystemSettingsController : Controller
{
#region Properties
public static string TanuloErtekelesMondatbankPopupName => "TanuloErtekelesMondatbank_Popup";
public static string TanuloErtekelesMondatbankGridName => "TanuloErtekelesMondatbankGrid";
public static string TanuloErtekelesMondatbankItemEditPopupName => "TanuloErtekelesMondatbankItem_Edit_Popup";
public static string TanuloErtekelesMondatbankItemEditFormName => "TanuloErtekelesMondatbankItemEditForm";
public static string TanuloErtekelesMondatbankItemTobbesEditPopupName => "TanuloErtekelesMondatbankItem_TobbesEdit_Popup";
private static string AMIGroupName = StringResourcesUtil.GetString(2087);
private static string HRModul = "HRModul";
private static string TavolletGroupName = StringResourcesUtil.GetString(8867);
#endregion Properties
// GET: Adminisztracio/SystemSettings
public ActionResult Index()
{
var model = new SystemSettingsModel
{
ChildModels = new List<PanelBarChildModel>(),
PanelName = "SystemSettingsPanel",
ExpandMode = Kendo.Mvc.UI.PanelBarExpandMode.Multiple,
Animation = true
};
model.IsIntezmenySzakkepzoJuttatas = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetIntezmenyiAdatok().IsSzakkepzoJuttatas;
var icHelper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
var hrIsEnabled = icHelper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.HRModul, IntezmenyConfigTipusEnum.IsEnabled);
using (var api = new SystemSettingsApiController())
{
var groupSettings = api.GetSystemSettings();
foreach (var group in groupSettings.Values)
{
if (!ClaimData.HasAmi && group.Title == AMIGroupName)
continue;
if (!hrIsEnabled && group.Title == TavolletGroupName)
continue;
List<object> childSettings = new List<object>();
foreach (var setting in group.Childs.Values)
{
childSettings.Add(setting);
}
model.ChildModels.Add(new PanelBarChildModel { PartialViewName = "SystemSettingsPanelBar", PartialViewTitle = group.Title, Data = childSettings, Enabled = group.Enabled });
}
}
var specialisBeallitasokModel = new SpecialisBeallitasokModel
{
ChildModels = new List<PanelBarChildModel>(),
PanelName = "SpecialisBeallitasokPanel",
ExpandMode = Kendo.Mvc.UI.PanelBarExpandMode.Multiple,
Animation = true
};
specialisBeallitasokModel.ChildModels.Add(new PanelBarChildModel { PartialViewName = "SpecialisBeallitasokPanelBar", PartialViewTitle = SystemSettingsResource.SpecialisBeallitasok });
model.SpecialisBeallitasokModel = specialisBeallitasokModel;
var rendszerszintuTorlesiLehetosegekModel = new RendszerszintuTorlesiLehetosegekModel
{
ChildModels = new List<PanelBarChildModel>(),
PanelName = "RendszerszintuTorlesPanel",
ExpandMode = Kendo.Mvc.UI.PanelBarExpandMode.Multiple,
Animation = true
};
rendszerszintuTorlesiLehetosegekModel.ChildModels.Add(new PanelBarChildModel { PartialViewName = "RendszerszintuTorlesPanelBar", PartialViewTitle = SystemSettingsResource.RendszerszintuTorlesiLehetosegek });
model.RendszerszintuTorlesiLehetosegekModel = rendszerszintuTorlesiLehetosegekModel;
if (model.IsIntezmenySzakkepzoJuttatas)
{
var juttatasBeallitasokModel = new JuttatasBeallitasokModel
{
ChildModels = new List<PanelBarChildModel>(),
PanelName = "JuttatasBeallitasokPanel",
ExpandMode = Kendo.Mvc.UI.PanelBarExpandMode.Multiple,
Animation = true,
};
juttatasBeallitasokModel.ChildModels.Add(new PanelBarChildModel { PartialViewName = "JuttatasBeallitasokPanelBar", PartialViewTitle = SystemSettingsResource.JuttatasBeallitasok });
model.JuttatasBeallitasokModel = juttatasBeallitasokModel;
}
return View(model);
}
[HttpGet]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
public ActionResult OpenCsoportTipusListWindow()
{
PopUpModel pm = new PopUpModel(null, "CsoportTipusList_Edit_Popup");
pm = pm.AddCancelBtn(pm, "SettingsHelper.csoportTipusListWindowClose");
pm = pm.AddBtn(pm, "saveCsoportTipusList", CommonResource.Mentes, "SettingsHelper.saveCsoportTipusList");
return PartialView(Constants.General.PopupView, pm);
}
[HttpGet]
public ActionResult OpenGradeWeightWindow()
{
SystemSettingsApiController api = new SystemSettingsApiController();
var model = api.GetGradeWeights();
PopUpModel pm = new PopUpModel(model, "SetGradeWeights_Bevitel");
pm = pm.AddCancelBtn(pm, "SettingsHelper.gradeWeightsWindowClose");
pm = pm.AddBtn(pm, "saveGradeWeights", CommonResource.Mentes, "SettingsHelper.saveGradeWeights");
return PartialView(Constants.General.PopupView, pm);
}
public ActionResult FejlecSzerkesztoPopUp()
{
PopUpModel pm;
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var model = new FejlecLablecSzerkesztoModel(helper.GetIntezmenyFejlec()) { IsFejlec = true };
pm = CreateFejlecLablecModel(model);
return PartialView(Constants.General.PopupView, pm);
}
public ActionResult LablecSzerkesztoPopUp()
{
PopUpModel pm;
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var model = new FejlecLablecSzerkesztoModel(helper.GetIntezmenyLablec());
pm = CreateFejlecLablecModel(model);
return PartialView(Constants.General.PopupView, pm);
}
private PopUpModel CreateFejlecLablecModel(FejlecLablecSzerkesztoModel model)
{
var pm = new PopUpModel(model, "FejlecLablecSzerkeszto");
pm = pm.AddCancelBtn(pm, "function(){FejlecLablecSzerkesztoHelper.Cancel();}");
pm = pm.AddDeleteBtn(pm, "function(){FejlecLablecSzerkesztoHelper.Torles();}");
pm = pm.AddOkBtn(pm, "function(){FejlecLablecSzerkesztoHelper.Mentes();}");
pm = pm.AddBtn(pm, "generate", CommonResource.Elonezet, "function(){FejlecLablecSzerkesztoHelper.Generalas();}");
return pm;
}
#region Tanuló Értékelés Mondatbank
[HttpGet]
[MvcValidateAjaxAntiForgeryToken]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
public ActionResult OpenTanuloErtekelesMondatbankPopup()
{
PopUpModel popUpModel = new PopUpModel(new TanuloErtekelesMondatbankSearchModel(), TanuloErtekelesMondatbankPopupName);
popUpModel = popUpModel.AddBtn(popUpModel, "TanuloErtekelesMondatbankCancelButton", CommonResource.Megse, "TanuloErtekelesMondatbankHelper.tanuloErtekelesMondatbankPopupCancel", "BtnCancel");
return PartialView(Constants.General.PopupView, popUpModel);
}
[HttpPost]
[MvcValidateAjaxAntiForgeryToken]
public ActionResult OpenTanuloErtekelesMondatbankItemEditPopup(int? id)
{
bool isModify = id.IsEntityId();
TanuloErtekelesMondatbankItemModel model;
if (isModify)
{
var helper = new TanuloErtekelesMondatbankHelper(ConnectionTypeExtensions.GetSessionConnectionType());
model = new TanuloErtekelesMondatbankItemModel(helper.GetTanuloErtekelesMondatbankItemById(id.Value));
}
else
{
model = new TanuloErtekelesMondatbankItemModel();
}
var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType());
model.NemzetiDokumentumNyelvek = systemSettingsHelper.GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek);
var popupModel = new PopUpModel(model, TanuloErtekelesMondatbankItemEditPopupName);
popupModel = popupModel.AddCancelBtn(popupModel, "TanuloErtekelesMondatbankHelper.tanuloErtekelesMondatbankItemEditPopupCancel");
popupModel = popupModel.AddOkBtn(popupModel, "TanuloErtekelesMondatbankHelper.tanuloErtekelesMondatbankItemEditPopupSave");
if (isModify)
{
popupModel.AddDeleteBtn(popupModel, "TanuloErtekelesMondatbankHelper.tanuloErtekelesMondatbankItemEditPopupDelete");
}
return PartialView(Constants.General.PopupView, popupModel);
}
public ActionResult OpenTobbesModTanuloErtekelesMondatbankPopUp(List<int> idList)
{
var model = new TanuloErtekelesMondatbankTobbesItemModel
{
SelectedIdList = idList,
};
var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType());
model.NemzetiDokumentumNyelvek = systemSettingsHelper.GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek);
var popupModel = new PopUpModel(model, TanuloErtekelesMondatbankItemTobbesEditPopupName);
popupModel = popupModel.AddCancelBtn(popupModel, "TanuloErtekelesMondatbankHelper.tanuloErtekelesMondatbankItemEditPopupCancel");
popupModel = popupModel.AddOkBtn(popupModel, "TanuloErtekelesMondatbankHelper.tanuloErtekelesMondatbankItemTobbesEditPopupSave");
return PartialView(Constants.General.PopupView, popupModel);
}
#endregion Tanuló Értékelés Mondatbank
}
}

View file

@ -0,0 +1,209 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Configuration;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
using Kreta.Web.Utils;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
public class SzerepkorValasztoController : Controller
{
private static readonly IEnumerable<SzerepkorTipusEnum> EUgyinteztesPermissions = new List<SzerepkorTipusEnum>
{
SzerepkorTipusEnum.eUgyintezo,
SzerepkorTipusEnum.Alairo,
SzerepkorTipusEnum.Penztaros,
SzerepkorTipusEnum.PenzugyiAdmin,
SzerepkorTipusEnum.EtkezesiAdmin,
SzerepkorTipusEnum.EtkezesiEllenorzo,
SzerepkorTipusEnum.TeremberletJelenletEllenorzo,
SzerepkorTipusEnum.BelepokartyaAdmin
};
private static readonly IEnumerable<SzerepkorTipusEnum> Permissions = new List<SzerepkorTipusEnum>
{
SzerepkorTipusEnum.eUgyintezo,
SzerepkorTipusEnum.Alairo,
SzerepkorTipusEnum.Penztaros,
SzerepkorTipusEnum.PenzugyiAdmin,
SzerepkorTipusEnum.EtkezesiAdmin,
SzerepkorTipusEnum.EtkezesiEllenorzo,
SzerepkorTipusEnum.TeremberletJelenletEllenorzo,
SzerepkorTipusEnum.FokuszMonitoring,
SzerepkorTipusEnum.IskolaEgeszsegugyiKoordinator,
SzerepkorTipusEnum.Vedono,
SzerepkorTipusEnum.Iskolaorvos,
SzerepkorTipusEnum.IskolaEgeszsegugyiAsszisztens,
SzerepkorTipusEnum.IskolaEgeszsegugyiLekerdezo,
SzerepkorTipusEnum.BelepokartyaAdmin,
SzerepkorTipusEnum.LeltarConcerned,
SzerepkorTipusEnum.Konyvtaros,
SzerepkorTipusEnum.FELTAR_EsetKezelo,
SzerepkorTipusEnum.FELTAR_EszkozMenedzser,
SzerepkorTipusEnum.KerdoivKitolto_KerdoivKezelo,
SzerepkorTipusEnum.Dualis_Admin,
SzerepkorTipusEnum.FELTAR_EsetJovahagyo,
SzerepkorTipusEnum.FELTAR_EsetKozremukodo,
SzerepkorTipusEnum.FELTAR_Munkavegzo,
SzerepkorTipusEnum.FELTAR_SzerzodesMenedzser
};
private IIdpConfiguration IdpConfiguration { get; }
public SzerepkorValasztoController(IIdpConfiguration idpConfiguration)
{
IdpConfiguration = idpConfiguration ?? throw new ArgumentNullException(nameof(idpConfiguration));
}
public ActionResult Index()
{
var felhasznaloSzerepkorok = ClaimData.FelhasznaloSzerepkorok;
// NOTE: Ha a felhasználó szerepkörök között szerepel kréta adminisztrátor és amellett szervezethez köthető szerepkör(pl.: duális adminisztrátor),
// akkor azokat nem kell megjeleníteni, mert azok részei az intézményi kréta admin felületének/menüjének, ezért az ilyen szerepköröket kivesszük a listából.
if (felhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Adminisztrator) && felhasznaloSzerepkorok.Any(x => FelhasznaloHelper.SzervezetiPermissions.Contains(x.Key)))
{
foreach (var szerepkorTipusEnum in FelhasznaloHelper.SzervezetiPermissions)
{
felhasznaloSzerepkorok.Remove(szerepkorTipusEnum);
}
}
var allowedRoles = GetAllowedRoles(felhasznaloSzerepkorok);
if (ClaimData.JustLEPOrganization && !ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Adminisztrator))
{
var lepEloadasJegyzekHelper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var hasLepAccess = lepEloadasJegyzekHelper.HasLEPAccess(ClaimData.FelhasznaloId);
if (!hasLepAccess)
{
return Redirect(Url.Content(@"~/HibaOldal/IndexLEPNincsJog"));
}
var role = allowedRoles[0];
ClaimManager.SetFelhasznaloSzerepkorClaim(new List<SzerepkorTipusEnum> { role.Key }, GetEugyintezesESLPermissions(felhasznaloSzerepkorok));
return Redirect(Url.Content(@"~/LEPModul/EloadasokKezelese"));
}
// NOTE: Ha a belépett felhasználó szervezethez köthető alkalmazott(pl.: duális oktató), akkor semmi más ne jelenjen meg csak a szervezethez köthető elemek.
var isAlkalmazottSzervezeti = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).IsAlkalmazottSzervezeti(ClaimData.FelhasznaloId);
if (isAlkalmazottSzervezeti)
{
if (allowedRoles.Count == 1)
{
var role = allowedRoles[0];
ClaimManager.SetFelhasznaloSzerepkorClaim(new List<SzerepkorTipusEnum> { role.Key }, GetEugyintezesESLPermissions(felhasznaloSzerepkorok));
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
}
return View("Index", ModelBuilder(allowedRoles));
}
if (allowedRoles.Any())
{
if (allowedRoles.Count == 1)
{
var role = allowedRoles[0];
ClaimManager.SetFelhasznaloSzerepkorClaim(new List<SzerepkorTipusEnum> { role.Key }, GetEugyintezesESLPermissions(felhasznaloSzerepkorok));
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
}
return View("Index", ModelBuilder(allowedRoles));
}
if (felhasznaloSzerepkorok.Keys.Count >= 2 && felhasznaloSzerepkorok.Keys.Any(x => Permissions.Contains(x)))
{
var role = allowedRoles[0];
ClaimManager.SetFelhasznaloSzerepkorClaim(new List<SzerepkorTipusEnum> { role.Key }, GetEugyintezesESLPermissions(felhasznaloSzerepkorok));
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
}
var intezmenyConfigHelper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (intezmenyConfigHelper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Konyvtar, IntezmenyConfigTipusEnum.IsEnabled))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Konyvtar, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
if (felhasznaloSzerepkorok.Keys.All(x => EUgyinteztesPermissions.Contains(x)))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Eugyintezes, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
if (felhasznaloSzerepkorok.Keys.All(x => x == SzerepkorTipusEnum.FokuszMonitoring))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.ESL, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
if (felhasznaloSzerepkorok.Keys.All(x => x == SzerepkorTipusEnum.LeltarConcerned))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Leltar, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return View("Index", ModelBuilder(allowedRoles));
}
public ActionResult ChangeRole(SzerepkorTipusEnum role)
{
var felhasznaloSzerepkorok = ClaimData.FelhasznaloSzerepkorok;
if (felhasznaloSzerepkorok.ContainsKey(role))
{
ClaimManager.SetFelhasznaloSzerepkorClaim(new List<SzerepkorTipusEnum> { role }, GetEugyintezesESLPermissions(felhasznaloSzerepkorok));
var isPedagogiaiSzakszolgalat = role == SzerepkorTipusEnum.Adminisztrator && new MukodesiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetMukodesiHelyekForFelhelyValaszto().Any(x => x.FelhelyId.IsEntityId());
return Json(new { Url = Url.Content(isPedagogiaiSzakszolgalat ? Constants.General.FelHelyValasztoPage : CommonExtensions.GetDefaultPage()), Success = true });
}
return Json(new { Success = false });
}
private SzerepkorValasztoModel ModelBuilder(List<KeyValuePair<SzerepkorTipusEnum, string>> allowedRoles)
{
var model = new SzerepkorValasztoModel();
var shortname = ClaimData.OrganizationShortName;
model.OrganizationName = ClaimData.OrganizationCode + " - " + (string.IsNullOrWhiteSpace(shortname) ? ClaimData.OrganizationName : shortname);
model.UserName = $"{ClaimData.FelhasznaloNev} {(!string.IsNullOrWhiteSpace(ClaimData.GondviseloNeve) ? "(" + ClaimData.GondviseloNeve + ")" : "")}";
model.ProfilImgSrc = ProfileUtils.UserProfileImage;
var currentRole = ClaimData.FelhasznaloSzerepkor;
foreach (var item in allowedRoles)
{
model.Roles.Add(new UserRoles { Name = item.Value, Szerepkor = item.Key, IsActive = item.Key.Equals(currentRole) });
}
if (currentRole.Equals(SzerepkorTipusEnum.Nincs_beallitva))
{
model.CancelLinkText = StringResourcesUtil.GetString(2582); /* Kijelentkezés */
model.CancelLinkAction = "RoleChange.logout()";
}
else
{
model.CancelLinkText = StringResourcesUtil.GetString(3059); /* Mégse */
model.CancelLinkAction = "RoleChange.back()";
}
return model;
}
private List<KeyValuePair<SzerepkorTipusEnum, string>> GetAllowedRoles(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
=> felhasznaloSzerepkorok.Where(x => !Constants.General.NotVisiblePermissions.Contains(x.Key)).ToList();
private List<SzerepkorTipusEnum> GetEugyintezesESLPermissions(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
=> Permissions.Where(x => felhasznaloSzerepkorok.Keys.Any(y => y == x)).ToList();
}
}

View file

@ -0,0 +1,196 @@
using System;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core.Exceptions;
using Kreta.Core.FeatureToggle;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Classes;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
public class TanarImportController : Controller
{
private IFeatureContext FeatureContext { get; }
private IUploadFileValidator UploadFileValidator { get; }
public TanarImportController(IFeatureContext featureContext, IUploadFileValidator uploadFileValidator)
{
FeatureContext = featureContext ?? throw new ArgumentNullException(nameof(featureContext));
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
}
// GET: Adminisztracio/TanarImport
public ActionResult Index()
{
var model = new TanarKIRImportModel
{
KirLoginModel = new KIRLoginModel()
{
OmAzonosito = ClaimData.OrganizationCode,
},
KIRImportEnabled = FeatureContext.IsEnabled(Core.Constants.FeatureName.KIRImport),
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions
};
return View(model);
}
public ActionResult OpenKIRTanarImportPopup(TanarKIRImportModel model)
{
if (ModelState.IsValid)
{
try
{
var kirHelper = new KirHelper(ConnectionTypeExtensions.GetSessionConnectionType(), model.KirLoginModel.OmAzonosito, model.KirLoginModel.FelhasznaloNev, jelszo: model.KirLoginModel.Jelszo);
var tanaresTanuloKIRImportModel = new TanarKIRImportModel
{
TanevId = ClaimData.SelectedTanevID.Value,
FeladatellatasiHelyId = model.FeladatellatasiHelyId,
KIRImportModel = new KIRImportModel
{
OmAzonosito = model.KirLoginModel.OmAzonosito,
KirToken = kirHelper.KirToken,
TelephelyList = kirHelper.GetTelephelyList().ToSelectListItemList(),
FelhasznaloNev = model.KirLoginModel.FelhasznaloNev
},
KirLoginModel = new KIRLoginModel
{
OmAzonosito = model.KirLoginModel.OmAzonosito,
FelhasznaloNev = model.KirLoginModel.FelhasznaloNev
},
};
var pm = new PopUpModel(tanaresTanuloKIRImportModel, "KIRTanarImportModal");
pm.AddCancelBtn(pm, "KretaWindowHelper.destroyAllWindow");
pm.AddBtn(pm, "BtnKIRImport", 3486 /*Importálás*/, "KIRTanarImportHelper.KIRImport");
return PartialView(Constants.General.PopupView, pm);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
}
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
public ActionResult KIRImport(TanarKIRImportModel model, int feladatellatasiHelyId)
{
if (ModelState.IsValid)
{
var kirHelper = new KirHelper(ConnectionTypeExtensions.GetSessionConnectionType(), model.KIRImportModel.OmAzonosito, model.KIRImportModel.FelhasznaloNev, kirToken: model.KIRImportModel.KirToken);
var tanarList = kirHelper.GetPedagogusList(model.KIRImportModel.TelephelyKod.Value);
var egysegesImportHelper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
egysegesImportHelper.ExecuteKIRTanarImport(tanarList);
}
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
public ActionResult OpenTanarImportPopUp(int feladatellatasiHelyId)
{
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var tanarokFeltolteseModel = new TanarokFeltolteseModel
{
TanevId = ClaimData.SelectedTanevID.Value,
FeladatellatasiHelyId = feladatellatasiHelyId,
Errors = helper.TanarKIRAdatok.Validate()
};
var model = new PopUpModel(tanarokFeltolteseModel, "TanarokFeltolteseModal");
model.AddCancelBtn(model, "KretaWindowHelper.destroyAllWindow");
if (tanarokFeltolteseModel.Errors.Count == 0)
{
model.AddOkBtn(model, "KIRTanarFeltoltesHelper.Save");
}
return PartialView(Constants.General.PopupView, model);
}
public ActionResult UploadKIRTanarFile(HttpPostedFileBase importTanarFile)
{
UploadFileValidator.ValidateImportFile(importTanarFile);
try
{
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.ExecuteKIRTanarImportFile(importTanarFile.InputStream, importTanarFile.FileName, ClaimData.IsSzakkepzoIntezmeny);
}
catch (KretaInvalidFileFormatException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
catch (Exception e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
return Content(string.Empty);
}
public ActionResult SaveTanarok(int feladatellatasiHelyId)
{
if (ModelState.IsValid)
{
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
helper.SaveImportaltTanarok(feladatellatasiHelyId);
return Json(new { tovabbUrl = @"/Alkalmazott/Alkalmazott" });
}
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
public ActionResult GetPreLoadedTeachers(DataSourceRequest request)
{
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
return Json(helper.GetImportaltTanarok().ToDataSourceResult(), JsonRequestBehavior.AllowGet);
}
public ActionResult DownloadTemplate()
{
string filePath = Kreta.Web.Classes.Utils.GetExcelTemplateFilePath(Constants.ImportExport.AlkalmazottImportSablonNev);
if (filePath == null)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.FajlNemLetezik);
}
return File(filePath, Core.Constants.ContentTypes.Xlsx, Constants.ImportExport.AlkalmazottImportSablonNev);
}
public ActionResult ExportAktualisAdatok()
{
var memoryStream = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ExportTanarAktualisAdatok();
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = $"{AlkalmazottResource.Alkalmazottak_Export}.{Constants.ImportExport.FileFormatXlsx}" };
}
}
}