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

245 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Mvc;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Intezmeny.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Intezmeny.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
public class TanevRendjeController : Controller
{
// GET: Intezmeny/TanevRendje
public ActionResult Index()
{
string defaultCsengetesirend;
var csengetesirendList = GetCsengetesiRendList();
if (csengetesirendList.Exists(x => x.Selected))
{
defaultCsengetesirend = csengetesirendList.Where(x => x.Selected).FirstOrDefault().Value;
}
else if (csengetesirendList.Count == 1)
{
defaultCsengetesirend = csengetesirendList.FirstOrDefault().Value;
}
else
{
defaultCsengetesirend = string.Empty;
}
var tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var tanevCO = tanevHelper.GetTanevInfo();
var model = new TanevRendjeIndexModel()
{
HetirendList = GetSortedHetirendIdList(),
DefaultHetirendValue = ((int)HetiRendTipusEnum.MindegyikHet).ToString(),
DefaultCsengetesiRendValue = defaultCsengetesirend,
TanevKezdoNap = tanevCO.KezdoNap,
TanevUtolsoNap = tanevCO.UtolsoNap,
};
return View(model);
}
#region PopUp actions
public ActionResult OpenNewTanevRendjePopUp(DateTime? tanevRendjeDatum)
{
var tanevRendjeModel = new TanevRendjeModel
{
OsszesCsop = true,
NapTipusaList = GetNapTipusaList(true),
CsengetesiRendList = GetCsengetesiRendList(),
IsElteroNapModosithato = true
};
if (tanevRendjeDatum.HasValue)
{
tanevRendjeModel.Datum = tanevRendjeDatum.Value.Date;
tanevRendjeModel.ElteroOrarendSzerintiTanitasNapDatum = tanevRendjeDatum.Value.Date;
}
var tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var tanevCO = tanevHelper.GetTanevInfo();
tanevRendjeModel.TanevKezdoNap = tanevCO.KezdoNap;
tanevRendjeModel.TanevUtolsoNap = tanevCO.UtolsoNap;
if (tanevRendjeDatum.HasValue)
{
if ((tanevRendjeDatum.Value.Date < tanevCO.KezdoNap) || (tanevRendjeDatum.Value.Date > tanevCO.UtolsoNap))
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.ADatumCsakAKivalasztottTanevbeEsoIdoszakLehet);
}
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
tanevRendjeModel.CsengetesiRend = tanevrendHelper.GetTanevrendDefaultCsengetesiRend(tanevCO.Id);
var model = new PopUpModel(tanevRendjeModel, "New_PopUp");
model.AddCancelBtn(model, "TanevRendjeHelper.newTanevRendjeCancel");
model.AddOkBtn(model, "TanevRendjeHelper.newTanevRendjeSave");
return PartialView(Constants.General.PopupView, model);
}
public ActionResult OpenModifyTanevRendjePopUp(int tanevRendjeId)
{
TanevrendCO co;
var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
co = helper.GetTanevrendById(tanevRendjeId);
var nemodosithato = co.NapTip == (int)NapTipusEnum.elso_tanitasi_nap || co.NapTip == (int)NapTipusEnum.elso_felev_vege || co.NapTip == (int)NapTipusEnum.utolso_tanitasi_nap || co.NapTip == (int)NapTipusEnum.utolso_tanitasi_nap_a_vegzos_evfolyamokon;
var tanevRendjeModel = new TanevRendjeModel
{
TanevRendjeId = co.ID,
Datum = co.Datum,
NapTipusa = co.NapTip,
Nap = co.Nap,
Hetirend = co.Hetirend,
OsszesCsop = co.OsszesCsop,
CsengetesiRend = co.CsengetesiRend,
Megjegyzes = co.Megjegyzes,
UresOrarend = co.UresOrarend,
ElteroOrarendSzerintiTanitasNapDatum = co.ElteroOrarendSzerintiTanitasNapDatum.HasValue ? co.ElteroOrarendSzerintiTanitasNapDatum : co.Datum,
IsElteroNapModosithato = co.IsElteroNapModosithato,
NapTipusaList = GetNapTipusaList(!nemodosithato, co.NapTip),
CsengetesiRendList = GetCsengetesiRendList()
};
var tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var tanevCO = tanevHelper.GetTanevInfo();
tanevRendjeModel.TanevKezdoNap = tanevCO.KezdoNap;
tanevRendjeModel.TanevUtolsoNap = tanevCO.UtolsoNap;
var model = new PopUpModel(tanevRendjeModel, "New_PopUp");
model.AddCancelBtn(model, "TanevRendjeHelper.modifyTanevRendjeCancel");
model.AddOkBtn(model, "TanevRendjeHelper.modifyTanevRendjeSave");
return PartialView(Constants.General.PopupView, model);
}
public ActionResult OpenTanevRendjeInfoPopUp(int tanevRendjeId)
{
TanevRendjeInfoModel tanevRendjeInfoModel;
var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
TanevrendCO tanevrendCO = helper.GetTanevrendById(tanevRendjeId);
tanevRendjeInfoModel = new TanevRendjeInfoModel
{
TanevNeve = tanevrendCO.TanevNeve,
Datum = tanevrendCO.Datum.ToShortDateString(),
NapTipusa = tanevrendCO.NapTip.GetDisplayName<NapTipusEnum>(ClaimData.SelectedTanevID.Value),
Nap = (tanevrendCO.Nap.IsEntityId()) ? tanevrendCO.Nap.GetDisplayName<HetNapjaTipusEnum>(ClaimData.SelectedTanevID.Value) : string.Empty,
Hetirend = tanevrendCO.Hetirend.GetDisplayName<HetiRendTipusEnum>(tanevrendCO.Tanev),
Csoportok = tanevrendCO.Csoportok,
CsengetesiRend = helper.GetTanevrendValueString(tanevrendCO.Tanev, tanevrendCO.CsengetesiRend),
Megjegyzes = tanevrendCO.Megjegyzes,
UresOrarend = tanevrendCO.UresOrarend,
ElteroOrarendSzerintiTanitasNapDatum = tanevrendCO.ElteroOrarendSzerintiTanitasNapDatum.ToShortDateString()
};
var model = new PopUpModel(tanevRendjeInfoModel, "Info_PopUp");
model.AddCancelBtn(model, "TanevRendjeHelper.tanevRendjeInfoCancel");
return PartialView(Constants.General.PopupView, model);
}
public ActionResult OpenSetHetirendPopUp()
{
var model = new PopUpModel(null, "SetHetirend_PopUp");
model.AddCancelBtn(model, "TanevRendjeHelper.setHetirendCancel");
model.AddOkBtn(model, "TanevRendjeHelper.validationHetirendHelyettesites");
return PartialView(Constants.General.PopupView, model);
}
public ActionResult OpenDeleteTanevRendjePopUp(int tanevRendjeId)
{
var model = new PopUpModel(tanevRendjeId, "DeleteConfirm_PopUp");
model.AddCancelBtn(model, "TanevRendjeHelper.deleteTanevRendjeCancel");
model.AddDeleteBtn(model, "TanevRendjeHelper.deleteTanevRendje");
return PartialView(Constants.General.PopupView, model);
}
#endregion
#region DropDownList data
public static List<SelectListItem> GetTanevList()
{
IDictionary<string, string> dictionary;
var helper = new TanevHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
dictionary = helper.GetTanevekForDDL(string.Empty);
return dictionary.ToSelectListItemList();
}
public static List<SelectListItem> GetNapTipusaList(bool isNewTanevRendje, int? currentNaptipus = null)
{
IDictionary<string, string> dictionary = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.NapTipus, ClaimData.SelectedTanevID.Value, true);
// Új felvételekor bizonyos kiemelt típusok közül nem lehet felvenni egynél többet (pl: Első tanítási nap, Utolsó tanítási nap, stb...), ezért ezeket kiszedi a DropDownListből, ha már van felvéve egy adott kiemelt típusú esemény.
if (isNewTanevRendje)
{
List<int> marFelvettKiemeltEsemenyek;
TanevrendHelper helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
marFelvettKiemeltEsemenyek = helper.GetMarFelvettKiemeltTanevEsemenyek();
foreach (int id in marFelvettKiemeltEsemenyek)
{
if (currentNaptipus == null || currentNaptipus != id)
{
dictionary.Remove(id.ToString());
}
}
}
dictionary.Remove(((int)NapTipusEnum.OsszefuggoSzakmaiGyakorlatiNap).ToString());
return dictionary.ToSelectListItemList();
}
public static List<SelectListItem> GetCsengetesiRendList()
{
IDictionary<string, string> dictionary;
var helper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
dictionary = helper.GetCsengetesiRendForDDL(string.Empty);
return dictionary.ToSelectListItemList();
}
#endregion
public static List<int> GetSortedHetirendIdList() => new NaptariHetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSortedHetirendIdList();
public static List<SelectListItem> GetNapList()
{
IDictionary<string, string> dictionary = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.HetNapjaTipus, ClaimData.SelectedTanevID.Value, true);
return dictionary.ToSelectListItemList();
}
}
}