226 lines
10 KiB
C#
226 lines
10 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Web.Mvc;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
|
using Kreta.BusinessLogic.Interfaces;
|
|
using Kreta.BusinessLogic.Security;
|
|
using Kreta.Enums;
|
|
using Kreta.Enums.ManualEnums;
|
|
using Kreta.Framework;
|
|
using Kreta.Resources;
|
|
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;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace Kreta.Web.Areas.Orarend.Controllers
|
|
{
|
|
[MvcRoleClaimsAuthorize(true)]
|
|
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
|
|
[MvcRolePackageAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue)]
|
|
public class InformaciokOrarendController : Controller
|
|
{
|
|
private readonly IFileServiceHelper fileServiceHelper;
|
|
private IKretaAuthorization Authorization { get; }
|
|
|
|
public InformaciokOrarendController(IKretaAuthorization authorization, IFileServiceHelper fileServiceHelper)
|
|
{
|
|
Authorization = authorization ?? throw new ArgumentNullException(nameof(authorization));
|
|
this.fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
|
|
}
|
|
|
|
[MvcRolePackageAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue, KretaClaimPackages.CsokkentettGondviselo.ClaimValue)]
|
|
public ActionResult Index()
|
|
{
|
|
var model = new InformaciokOrarendModel();
|
|
|
|
var helper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
var hetesekHelper = new HetesekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
model.HetirendJson = helper.GetHetirendek();
|
|
model.NaptariHetekHetirendJson = helper.GetNaptariHetekHetirendek();
|
|
|
|
var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
|
|
if (ClaimData.IsTanuloOrGondviselo && systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.hetesek_megjelenitese_az_elektronikus_ellenorzoben))
|
|
{
|
|
List<int> osztalyCsoportIdList = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetTanuloOsztalyIdList(ClaimData.FelhasznaloId);
|
|
var hetHelper = new NaptariHetHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
model.AktualisHetSorszam = hetHelper.GetNaptariHetSorszamByDate(DateTime.Now);
|
|
|
|
if (osztalyCsoportIdList.Any())
|
|
{
|
|
var tanulok = hetesekHelper.GetHetesSzovegHetsorszammal(osztalyCsoportIdList);
|
|
|
|
var serializerSettings = new JsonSerializerSettings();
|
|
serializerSettings.StringEscapeHandling = StringEscapeHandling.EscapeNonAscii;
|
|
|
|
model.HetesekJson = JsonConvert.SerializeObject(tanulok, serializerSettings);
|
|
model.HetesekJson = model.HetesekJson.Replace("\x7F", "\\u007f");
|
|
}
|
|
}
|
|
|
|
var co = helper.GetCalendarMinMax();
|
|
model.CalendarMinTime = co.CalendarMin;
|
|
model.CalendarMaxTime = co.CalendarMax;
|
|
model.IsOraTemaTooltip = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Tanora_Tema_Az_Ellenorzoben);
|
|
|
|
return View("Index", model);
|
|
}
|
|
|
|
[HttpPost]
|
|
public ActionResult GetOrarendEvent(int eventId, bool isTanitasiOra_BOOL, DateTime haziFeladatRogzitesDatuma, int? tanuloId = null, string megoldva = null)
|
|
{
|
|
CalendarModel calendar = new CalendarModel();
|
|
|
|
calendar.EventId = eventId;
|
|
calendar.OraType = isTanitasiOra_BOOL ? CalendarOraTypeEnum.TanitasiOra : CalendarOraTypeEnum.OrarendiOra;
|
|
calendar.Start = haziFeladatRogzitesDatuma;
|
|
|
|
return OrarendEvent(calendar, tanuloId, megoldva);
|
|
}
|
|
|
|
public ActionResult OrarendEvent(CalendarModel calendarModel, int? tanuloId = null, string megoldva = null)
|
|
{
|
|
if (calendarModel.OraType == CalendarOraTypeEnum.TanevRendjeEsemeny ||
|
|
calendarModel.OraType == CalendarOraTypeEnum.UresOra)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
var model = new InformaciokOra();
|
|
var pm = new PopUpModel(model, "OraAdatok_Info");
|
|
model.TabList = GetDetailTabs(calendarModel, tanuloId, megoldva);
|
|
pm = pm.AddCancelBtn(pm, "InformaciokOrarend.detailOraInfoCancel");
|
|
return PartialView(Constants.General.PopupView, pm);
|
|
}
|
|
|
|
public List<TabStripItemModel> GetDetailTabs(CalendarModel calendarModel, int? tanuloId = null, string megoldva = null)
|
|
{
|
|
List<TabStripItemModel> list = new List<TabStripItemModel>();
|
|
|
|
list.Add(new TabStripItemModel()
|
|
{
|
|
ItemId = "1",
|
|
ItemName = StringResourcesUtil.GetString(3331) /*Óra adatai*/,
|
|
Area = "Orarend",
|
|
Controller = "InformaciokOrarend",
|
|
Action = "GetOraAdatok",
|
|
RouteParameters = new Dictionary<string, string>() {
|
|
{ "Id", calendarModel.EventId.ToString() },
|
|
{ "EventType", ((int)calendarModel.OraType).ToString() },
|
|
{ "Date" , calendarModel.Start.Date.ToString() }
|
|
}
|
|
});
|
|
|
|
var routeParameters = new Dictionary<string, string>() {
|
|
{ "Id", calendarModel.EventId.ToString() },
|
|
{ "EventType", ((int)calendarModel.OraType).ToString() },
|
|
{ "Date" , calendarModel.Start.Date.ToString() }
|
|
};
|
|
|
|
if (tanuloId != null)
|
|
routeParameters.Add("TanuloId", tanuloId.ToString());
|
|
|
|
if (!string.IsNullOrWhiteSpace(megoldva))
|
|
routeParameters.Add("Megoldva", megoldva.ToString());
|
|
|
|
list.Add(new TabStripItemModel()
|
|
{
|
|
ItemId = "2",
|
|
ItemName = OrarendResource.HaziFeladat,
|
|
Area = "Orarend",
|
|
Controller = "InformaciokOrarend",
|
|
Action = "GetHaziFeladat_Tab",
|
|
RouteParameters = routeParameters
|
|
});
|
|
|
|
return list;
|
|
}
|
|
public ActionResult GetHaziFeladat_Tab(int id, CalendarOraTypeEnum eventType, DateTime date, int? tanuloId = null, string megoldva = null)
|
|
{
|
|
if (!Authorization.IsValidEvent(id, eventType, date))
|
|
{
|
|
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.NincsJogaAzOldalMegtekintesehez);
|
|
}
|
|
|
|
var model = GetHaziFeladatok(id, eventType, date);
|
|
|
|
return PartialView("TanuloHaziFeladat_Tab", model);
|
|
}
|
|
|
|
public ActionResult GetOraAdatok(int id, CalendarOraTypeEnum eventType, DateTime date)
|
|
{
|
|
if (!Authorization.IsValidEvent(id, eventType, date))
|
|
{
|
|
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.NincsJogaAzOldalMegtekintesehez);
|
|
}
|
|
|
|
var model = GetOraAdatai(id, eventType, date);
|
|
return PartialView("Info_TanuloOraAdatok_Tab", model);
|
|
}
|
|
|
|
private InformaciokOraAdatai GetOraAdatai(int eventId, CalendarOraTypeEnum eventType, DateTime date)
|
|
{
|
|
int? orarendiOraId = null;
|
|
int? tanitasiOraId = null;
|
|
var model = new InformaciokOraAdatai();
|
|
model.IsTanora = eventType == CalendarOraTypeEnum.TanitasiOra;
|
|
if (model.IsTanora)
|
|
{
|
|
tanitasiOraId = eventId;
|
|
|
|
MulasztasHelper h = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
|
|
|
|
var mulasztas = h.GetTanuloTanoraiMulasztasa(ClaimData.FelhasznaloId, tanitasiOraId.Value);
|
|
model.MulasztasText = string.IsNullOrWhiteSpace(mulasztas) ? "-" : mulasztas;
|
|
}
|
|
else
|
|
{
|
|
orarendiOraId = eventId;
|
|
}
|
|
|
|
var helper = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
|
|
var adatok = helper.GetTanuloOraAdatai(orarendiOraId, tanitasiOraId, date);
|
|
|
|
var openBoardHelper = new OpenBoardHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType(), fileServiceHelper);
|
|
|
|
// Helyettesítés csak akkor látható tanulónál, ha be van kapcsolva a rendszerbeállításokba, vagy már naplózott az óra.
|
|
var isHelyettesitesLathato = new SystemSettingsHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.helyettesites_lathatosaga_az_ellenorzoben);
|
|
|
|
model.IsHelyettesitoTanarLathato = isHelyettesitesLathato || model.IsTanora;
|
|
|
|
model.Targy = adatok.Targy;
|
|
model.HelyettesitoTanar = adatok.HelyettesitoTanar;
|
|
model.Megtartott = adatok.Megtartott;
|
|
model.OsztalyNev = adatok.OsztalyNev;
|
|
model.Tanar = adatok.Tanar;
|
|
model.Tema = adatok.Tema;
|
|
model.Terem = adatok.Terem;
|
|
model.Oraszam = adatok.Oraszam;
|
|
model.Datum = date.ToShortDateString();
|
|
model.SzamonkeresMegnevezes = adatok.SzamonkeresMegnevezes;
|
|
model.SzamonkeresMod = adatok.SzamonkeresMod;
|
|
model.OraTartam = string.Format("{0} - {1}", adatok.OraKezdet, adatok.OraVege);
|
|
model.OpenBoardFiles = openBoardHelper.GetFeltoltottFajlokToTanuloOraAdat(date, orarendiOraId, tanitasiOraId);
|
|
return model;
|
|
}
|
|
|
|
private TanuloHaziFeladatTabModel GetHaziFeladatok(int eventId, CalendarOraTypeEnum oraType, DateTime date)
|
|
{
|
|
try
|
|
{
|
|
return new TanuloHaziFeladatTabModel(new DktFeladatHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetHaziFeladatTabCo(eventId, oraType, date, ClaimData.IsTanuloOrGondviselo));
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAMuveletSoran) { UnHandledException = e };
|
|
}
|
|
}
|
|
}
|
|
}
|