kreta/KretaWeb/Areas/Adminisztracio/Controllers/HelyettesitesekKezeleseController.cs
2024-03-13 00:33:46 +01:00

489 lines
36 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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