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

332 lines
14 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web.Mvc;
using System.Xml.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Security;
using Kreta.BusinessLogic.Utils;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Controllers.Logic;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Modal;
using Kreta.Web.Models;
using Kreta.Web.Models.Builder;
using Kreta.Web.Security;
namespace Kreta.Web.Controllers
{
[MvcRoleClaimsAuthorize(true)]
public class LayoutController : Controller
{
public static bool SuccessFeedBackWindowNeeded => new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.SuccessFeedBack_Disable);
public JsonResult LogOut()
{
MasterLayoutLogic.LogOut();
var loginUrl = Url.Action("Index", "Login", new { Area = "Adminisztracio" });
/* return Redirect(loginUrl); kellene majd használni */
return Json(new { Url = loginUrl });
}
[HttpPost]
public ActionResult Excel_Export_Save(string contentType, string base64, string fileName)
{
var fileContents = Convert.FromBase64String(base64);
return File(fileContents, contentType, fileName);
}
[HttpPost]
public ActionResult Pdf_Export_Save(string contentType, string base64, string fileName)
{
var fileContents = Convert.FromBase64String(base64);
return File(fileContents, contentType, fileName);
}
public ActionResult GetRemainingTime()
{
return Content(SessionHandler.GetRemainingTime().ToString());
}
public void ExtendSessionTime()
{
/*Funkciója van! ne töröld ki.*/
/*Minden hívás frissíti az időt ez nem csinál semmít ez csak azért kell hogy legyen mit hívni.*/
}
public ActionResult GetLayoutInformation(string url)
{
var model = new LayoutModel();
var builder = new LayoutModelBuilder();
var olvasatlanUzenetekSzama = "0";//eugyintezesClient.GetOlvasatlanUzenetek(ClaimData.IntezmenyAzonosito, ClaimData.FelhasznaloId).ToString();
builder.SetBase(olvasatlanUzenetekSzama, model, url);
return Json(model);
}
[HttpPost]
[MvcValidateAjaxAntiForgeryToken]
public void ClientError(ClientErrorModel clientError)
{
var error = new ClientError(clientError);
#if !DEBUG
Kreta.Framework.SDAServer.Instance.Logger.ExceptionThrown(error);
#endif
}
[OutputCache(Duration = 800, VaryByParam = "SzerepkorId;FelhasznaloId;SelectedTanevId")]
public ActionResult Menu(string SzerepkorId, string FelhasznaloId, int SelectedTanevId)
{
return PartialView("_NavigationBar");
}
[HttpPost]
public bool ChangeSelectedTanev(int selectedTanevId)
{
ClaimData.SelectedTanevID = selectedTanevId;
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
new AdminHelper(connectionType).RefreshUserContextSelectedTanev();
var tanevHelper = new TanevHelper(connectionType);
if (!ClaimData.IsAdministrator && !ClaimData.IsArchivIntezmeny)
{
ClaimData.FelhasznaloId = tanevHelper.GetFelhasznaloIdBySelectedTanevIdAndFelhasznaloId(ClaimData.FelhasznaloId).First(x => x.TanevId == ClaimData.SelectedTanevID).FelhasznaloId;
}
List<string> list = new List<string>();
if (selectedTanevId == ClaimData.AktivTanevID.Value)
{
list = ParseSiteMapXml("activeyear");
}
else if (ClaimData.KovTanevID.HasValue && selectedTanevId == ClaimData.KovTanevID.Value)
{
list = ParseSiteMapXml("nextyear");
}
else
{
list = ParseSiteMapXml("prevyear");
}
var intezmenyAdatok = new IntezmenyHelper(connectionType).GetIntezmenyiAdatok();
ClaimData.RefreshOrganizationFullAddress(intezmenyAdatok);
ClaimData.OrganizationName = intezmenyAdatok.Nev;
ClaimData.OrganizationShortName = intezmenyAdatok.RovidNev ?? string.Empty;
ClaimData.OrganizationCode = intezmenyAdatok.OMKod;
ClaimData.IsBeiratkozasVeglegesitve = intezmenyAdatok.IsBeiratkozasVeglegesitve;
ClaimData.LicenceDatum = intezmenyAdatok.LicenceDatum;
ClaimData.JustLEPOrganization = intezmenyAdatok.IsCsakLepKezelo;
ClaimData.IsSzirIntezmeny = intezmenyAdatok.IsSzirIntezmeny;
ClaimData.IsArchivIntezmeny = intezmenyAdatok.IsArchivIntezmeny;
ClaimData.IsSzakkepzoIntezmeny = intezmenyAdatok.IsSzakkepzo;
var selectedTanev = tanevHelper.GetTanevInfo();
ClaimData.IsSelectedTanev20_21OrLater = CommonUtils.IsSelectedTanev20_21OrLater(selectedTanev);
ClaimData.IsSelectedTanev21_22OrLater = CommonUtils.IsSelectedTanev21_22OrLater(selectedTanev);
ClaimData.IsSelectedTanevIsElozo = CommonUtils.IsSelectedTanevIsElozo(selectedTanev);
var url = Request.UrlReferrer.AbsolutePath;
var requestController = url.Substring(url.LastIndexOf("/") + 1);
return list.Contains(requestController) || ClaimData.IsArchivIntezmeny;
}
public List<string> ParseSiteMapXml(string attribute)
{
XElement xelement = XElement.Load(Server.MapPath("~/Menu/MapMvc.sitemap"));
var xmlSelect = xelement.Descendants()
.SelectMany(sel => sel.Elements())
.Where(sel => sel.Attribute("controller") != null &&
(sel.Attribute(attribute) != null || (sel.Attribute("nextyear") == null && sel.Attribute("activeyear") == null && sel.Attribute("prevyear") == null))
)
.Select(nd => new
{
controller = nd.Attribute("controller")
});
List<string> list = new List<string>();
foreach (var item in xmlSelect)
{
list.Add(item.controller.Value);
}
return list;
}
public ActionResult DashboardUzenetPopup(int popupId, string egyediAzonosito)
{
if (popupId == 0 || string.IsNullOrWhiteSpace(egyediAzonosito))
{
return new EmptyResult();
}
var model = ConvertDashboardItemToModel(new AdminHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetDashboardPopupUzenet(ClaimData.GondviseloId, popupId, egyediAzonosito).Tables[0].Rows[0]);
return PartialView("DashboardUzenetPopup", model);
}
public ActionResult UpdateDashboardPopupClose(int popupId, string egyediAzonosito)
{
new AdminHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).UpdateDashboardPopupClose(popupId);
// Következő bejelentkezésig nem dobjuk fel ezt a popup-ot:
var popupCookie = HttpContext.Request.Cookies["DisplayedPopups"];
popupCookie.Value += "|" + egyediAzonosito;
popupCookie.HttpOnly = true;
popupCookie.Secure = true;
popupCookie.SameSite = System.Web.SameSiteMode.None;
HttpContext.Response.SetCookie(popupCookie);
return new EmptyResult();
}
public ActionResult UpdateDashboardPopupConfirm(int popupId)
{
new AdminHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).UpdateDashboardPopupConfirm(popupId);
return new EmptyResult();
}
public string UpdateDashboardPopupNext(int popupId)
{
var redirectUrl = new AdminHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).UpdateDashboardPopupNext(popupId);
return redirectUrl;
}
private static AdminDashboardPopupItemModel ConvertDashboardItemToModel(DataRow row)
{
return new AdminDashboardPopupItemModel()
{
DashboardUzenetFelhasznaloId = SDAConvert.ToInt32(row["ID"]),
EgyediAzonosito = SDAConvert.ToString(row["C_EGYEDIAZONOSITO"]),
EgyediMuvelet = SDAConvert.ToString(row["C_EGYEDIMUVELET"]),
Name = SDAConvert.ToString(row["C_CIM"]),
Content = SDAConvert.ToString(row["C_TARTALOM"]),
Type = (AdminDashboardTipusEnum)SDAConvert.ToInt32(row["C_DASHBOARDUZENETKATEGORIAID"]),
MegjelenitesekSzama = SDAConvert.ToInt32(row["C_MEGJELENITESEKSZAMA"]),
};
}
[MvcRolePackageDenyAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue)]
public ActionResult OpenIskolaorUzenetKuldesPopup()
{
var helper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var telefonszam = helper.GetTelefonszamItemCoList(ClaimData.FelhasznaloId).FirstOrDefault(x => x.Alapertelmezett)?.Telefonszam ?? "";
var iskolaorLista = helper.GetIskolaor().Select(x => new IskolaorAdatModel
{
IskolaorID = x.Id,
IskolaorTelefonszam = x.AlapertelmezettTelefonszam,
IskolaorIdpAzonosito = x.IdpEgyediAzonosito.ToString(),
IskolaorNev = x.Nev,
});
var list = new List<SelectListItem>();
foreach (var item in iskolaorLista)
{
list.Add(new SelectListItem
{
Text = item.IskolaorNev,
Value = item.IskolaorID.ToString(),
});
}
var model = new IskolaorPopupModel
{
IntezmenyAzonosito = ClaimData.IntezmenyAzonosito,
KuldoID = ClaimData.FelhasznaloId.ToString(),
KuldoNev = ClaimData.FelhasznaloNev,
KuldoTelefonszam = telefonszam,
IskolaorList = list,
IskolaorAdatModelList = iskolaorLista.ToList(),
IskolaorTelefonszam = list.Count == 1 ? iskolaorLista.First().IskolaorTelefonszam : null,
Sablon1Button = new ModalButtonModel
{
Text = IskolaorResource.VeszelybenVan,
EventName = "IskolaorHelper.addSablonText",
Name = "sablon1",
},
Sablon2Button = new ModalButtonModel
{
Text = IskolaorResource.BalesetTortent,
EventName = "IskolaorHelper.addSablonText",
Name = "sablon2",
},
Sablon3Button = new ModalButtonModel
{
Text = IskolaorResource.TuzVan,
EventName = "IskolaorHelper.addSablonText",
Name = "sablon3",
},
Sablon4Button = new ModalButtonModel
{
Text = IskolaorResource.VerekedesTortent,
EventName = "IskolaorHelper.addSablonText",
Name = "sablon4",
},
Sablon5Button = new ModalButtonModel
{
Text = IskolaorResource.ADiakokOsszeverekedtek,
EventName = "IskolaorHelper.addSablonText",
Name = "sablon5",
},
Sablon6Button = new ModalButtonModel
{
Text = IskolaorResource.Tanteremben,
EventName = "IskolaorHelper.addSablonText",
Name = "sablon6",
},
Sablon7Button = new ModalButtonModel
{
Text = IskolaorResource.AzOsztalyteremben,
EventName = "IskolaorHelper.addSablonText",
Name = "sablon7",
},
Sablon8Button = new ModalButtonModel
{
Text = IskolaorResource.AFolyoson,
EventName = "IskolaorHelper.addSablonText",
Name = "sablon8",
},
Sablon9Button = new ModalButtonModel
{
Text = IskolaorResource.AzUdvaron,
EventName = "IskolaorHelper.addSablonText",
Name = "sablon9",
},
Sablon10Button = new ModalButtonModel
{
Text = IskolaorResource.AzEmeleten,
EventName = "IskolaorHelper.addSablonText",
Name = "sablon10",
},
Sablon11Button = new ModalButtonModel
{
Text = IskolaorResource.AzEtkezoben,
EventName = "IskolaorHelper.addSablonText",
Name = "sablon11",
},
UzenetKuldesButton = new ModalButtonModel
{
Text = IskolaorResource.UzenetElkuldese,
EventName = "IskolaorHelper.sendUzenet",
Name = "uzenetElkuldeseButton",
}
};
return PartialView("IskolaorUzenetKuldesPopup", model);
}
public string GetBankszamlaVezetoBankNeve(string bankszamlaSzam)
{
return new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetBankszamlaVezetoBankNeve(bankszamlaSzam);
}
}
}