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,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);
}
}
}