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

262 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mime;
using System.Text;
using System.Web;
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Core.Iktato.Poszeidon.Factory.Interface;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Resources;
using Kreta.Web.Areas.Intezmeny.ApiControllers;
using Kreta.Web.Areas.Intezmeny.Models;
using Kreta.Web.Controllers;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.TabStrip;
using Kreta.Web.ModelBinder.Mvc;
using Kreta.Web.Models;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Intezmeny.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
[MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue)]
public class IntezmenyController : Controller
{
private IIktatoRepositoryFactory IktatoRepositoryFactory { get; }
private IktatoServiceConfiguration IktatoServiceConfiguration { get; }
private readonly IJiraHelper JiraHelper;
public IntezmenyController(IJiraHelper jiraHelper, IIktatoRepositoryFactory iktatoRepositoryFactory, IktatoServiceConfiguration iktatoServiceConfiguration)
{
IktatoRepositoryFactory = iktatoRepositoryFactory;
IktatoServiceConfiguration = iktatoServiceConfiguration;
JiraHelper = jiraHelper;
}
[MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue)]
[MvcRolePackageDenyAuthorize(TanevEnum.Mind, KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
public ActionResult Index()
{
IntezmenyApiController api = new IntezmenyApiController(JiraHelper);
IntezmenyModel model = api.GetIntezmeny(IktatoRepositoryFactory, IktatoServiceConfiguration);
return View("Index", model);
}
[MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Ellenorzo.ClaimValue)]
public ActionResult IntezmenyFeladatEllatasiHelyDetailGrid(int? id)
{
return PartialView("IntezmenyFeladatEllatasiHelyDetailGrid", id);
}
public ActionResult ModIntezmenyPopUp()
{
IntezmenyApiController api = new IntezmenyApiController(JiraHelper);
IntezmenyModel model = api.GetIntezmeny(IktatoRepositoryFactory, IktatoServiceConfiguration);
model.FormSettings = new List<string>() {
CimElerhetosegConstant.CimSectionVisible,
CimElerhetosegConstant.TartozkodasiHelyCimTipus,
CimElerhetosegConstant.SeparatorRowHide,
CimElerhetosegConstant.CsakMagyarorszag
};
model.TanulovalEgyezik = false;
PopUpModel pm = new PopUpModel(model, "Intezmeny_Bevitel");
pm = pm.AddCancelBtn(pm, "IntezmenyHelper.modIntezmenyPopUpCancel");
pm = pm.AddOkBtn(pm, "IntezmenyHelper.modIntezmenyPopUpSave");
return PartialView(Constants.General.PopupView, pm);
}
[MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue)]
public ActionResult GetIntezmenyAdatokPartial()
{
IntezmenyApiController api = new IntezmenyApiController(JiraHelper);
IntezmenyInfoModel intezmenyInfoModel = new IntezmenyInfoModel(api.GetIntezmeny(IktatoRepositoryFactory, IktatoServiceConfiguration));
return PartialView("Intezmeny_AdatokInfo_Partial", intezmenyInfoModel.info);
}
[MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Ellenorzo.ClaimValue)]
public ActionResult InfoMukodesiHelyPopUp(int pID)
{
IntezmenyApiController api = new IntezmenyApiController(JiraHelper);
MukodesiHelyModel model = api.GetMukodesiHely(pID);
PopUpModel pm = new PopUpModel(model, "MukodesiHely_Info");
pm = pm.AddCancelBtn(pm, "IntezmenyHelper.infoMukodesiHelyPopUpCancel");
return PartialView(Constants.General.PopupView, pm);
}
public ActionResult ModMukodesiHelyPopUp(int? pID)
{
IntezmenyApiController api = new IntezmenyApiController(JiraHelper);
MukodesiHelyModel model = pID.HasValue ? api.GetMukodesiHely(pID.Value) : new MukodesiHelyModel();
model.FormSettings = new List<string>() {
CimElerhetosegConstant.CimSectionVisible,
CimElerhetosegConstant.TartozkodasiHelyCimTipus,
CimElerhetosegConstant.SeparatorRowHide,
CimElerhetosegConstant.CsakMagyarorszag
};
model.TanulovalEgyezik = false;
model.Orszag = (int)OrszagTipusEnum.Magyarorszag;
PopUpModel pm = new PopUpModel(model, "MukodesiHely_Bevitel");
pm = pm.AddCancelBtn(pm, "IntezmenyHelper.modMukodesiHelyPopUpCancel");
pm = pm.AddOkBtn(pm, "IntezmenyHelper.modMukodesiHelyPopUpSave");
return PartialView(Constants.General.PopupView, pm);
}
public ActionResult ModFeladatPopUp(FeladatellatasiHelyModel panelFeladatellatasiHelyModel)
{
IntezmenyApiController api = new IntezmenyApiController(JiraHelper);
if (panelFeladatellatasiHelyModel.ID.HasValue)
{
panelFeladatellatasiHelyModel = api.GetFeladatellatasiHely(panelFeladatellatasiHelyModel.ID.Value);
}
panelFeladatellatasiHelyModel.FeladatList = new ComboBoxHelperApiController().GetOktatasiNevelesiFeladatList(false);
SelectListItem aktItem = new SelectListItem();
if (panelFeladatellatasiHelyModel.FeladatTipus.HasValue)
{
aktItem = panelFeladatellatasiHelyModel.FeladatList.Where(x => x.Value == panelFeladatellatasiHelyModel.FeladatTipus.Value.ToString()).FirstOrDefault();
}
// "Működés helyhez egy típusból csak egyet lehessen felvenni, ne duplikálódjon"
panelFeladatellatasiHelyModel.FeladatList = api.GetFeladatListByMukodesiHelyId(panelFeladatellatasiHelyModel.MukodesiHelyID);
if (!string.IsNullOrWhiteSpace(aktItem.Value) && !string.IsNullOrWhiteSpace(aktItem.Text))
{
panelFeladatellatasiHelyModel.FeladatList.Add(aktItem);
}
var oktatasNevelesiFeladatHelper = new OktatasNevelesiFeladatHelper(ConnectionTypeExtensions.GetSessionConnectionType());
panelFeladatellatasiHelyModel.IsAMIModuleActive = oktatasNevelesiFeladatHelper.IsAMIModuleActive();
panelFeladatellatasiHelyModel.IsKollegiumModuleActive = oktatasNevelesiFeladatHelper.IsKollegiumModuleActive();
panelFeladatellatasiHelyModel.IsEGYMIModuleActive = oktatasNevelesiFeladatHelper.IsEGYMIModuleActive();
PopUpModel pm = new PopUpModel(panelFeladatellatasiHelyModel, "FeladatellatasiHely_Bevitel");
pm = pm.AddCancelBtn(pm, "IntezmenyHelper.modFeladatPopUpCancel");
pm = pm.AddOkBtn(pm, "IntezmenyHelper.modFeladatPopUpSave");
return PartialView(Constants.General.PopupView, pm);
}
[MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue)]
public ActionResult OpenFeladatellatasiHelyTab(int feladellHelyID)
{
FeladatellatasiHelyModel fmodel = new FeladatellatasiHelyModel()
{
ID = feladellHelyID
};
fmodel.TabList = GetTabItems(fmodel);
PopUpModel pm = new PopUpModel(fmodel, "FeladatellatasiHelyAdatokTab");
pm.AddCancelBtn(pm, "IntezmenyHelper.cancelFeladatellatasiHelyAdatok");
return PartialView(Constants.General.PopupView, pm);
}
[MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue)]
public ActionResult OpenFeladatellatasiHely_AlapadatokTab(int id)
{
IntezmenyApiController api = new IntezmenyApiController(JiraHelper);
FeladatellatasiHelyModel fmodel = api.GetFeladatellatasiHelyAlapadatok(id);
return PartialView("FeladatellatasiHely_AlapadatokTab", fmodel);
}
[MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue)]
public ActionResult OpenFeladatellatasiHely_OsztalycsoportokTab(int id)
{
FeladatellatasiHelyModel fmodel = new FeladatellatasiHelyModel()
{
ID = id
};
return PartialView("FeladatellatasiHely_OsztalyokTab", fmodel);
}
[MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue)]
public ActionResult OpenFeladatellatasiHely_AlkalmazottakTab(int id)
{
FeladatellatasiHelyModel fmodel = new FeladatellatasiHelyModel()
{
ID = id
};
return PartialView("FeladatellatasiHely_AlkalmazottakTab", fmodel);
}
public ActionResult IntezmenyiDokumentumPartial(IntezmenyiDokumentumModel model)
{
IntezmenyApiController api = new IntezmenyApiController(JiraHelper);
var filledModel = api.GetIntezmenyiDokumentumModel(model.Tipus, IktatoRepositoryFactory, IktatoServiceConfiguration);
return PartialView("Intezmeny_Dokumentum_Partial", filledModel);
}
public List<TabStripItemModel> GetTabItems(FeladatellatasiHelyModel model)
{
var items = new List<TabStripItemModel>();
items.Add(new TabStripItemModel { ItemId = "1", ItemName = StringResourcesUtil.GetString(161) /*Alapadatok*/, Area = "Intezmeny", Controller = "Intezmeny", Action = "openFeladatellatasiHely_AlapadatokTab", RouteParameters = new Dictionary<string, string> { { "Id", model.ID.ToString() } } });
items.Add(new TabStripItemModel { ItemId = "2", ItemName = StringResourcesUtil.GetString(3858) /*Kapcsolódó osztályok/csoportok*/, Area = "Intezmeny", Controller = "Intezmeny", Action = "openFeladatellatasiHely_OsztalycsoportokTab", RouteParameters = new Dictionary<string, string> { { "Id", model.ID.ToString() } } });
items.Add(new TabStripItemModel { ItemId = "3", ItemName = StringResourcesUtil.GetString(3859) /*Kapcsolódó alkalmazottak*/, Area = "Intezmeny", Controller = "Intezmeny", Action = "openFeladatellatasiHely_AlkalmazottakTab", RouteParameters = new Dictionary<string, string> { { "Id", model.ID.ToString() } } });
return items;
}
#region Export
public ActionResult ExportMukodesiHelyekAdatai()
{
var bytes = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetMukodesiHelyekAdataiExcelExport();
return new FileContentResult(bytes, MediaTypeNames.Application.Octet)
{
FileDownloadName = HttpUtility.UrlEncode(IntezmenyResource.MukodesiHelyekAdataiExportFileName, Encoding.UTF8),
};
}
#endregion
[HttpPost]
public ActionResult UploadFile([ModelBinder(typeof(AlapdokumentumFileUploadBinder))] IEnumerable<System.Web.HttpPostedFileBase> files, string dokumentumTipus)
{
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.InsertDokumentum(IktatoRepositoryFactory, IktatoServiceConfiguration, files, (Enums.DokumentumTipusEnum)System.Enum.Parse(typeof(Enums.DokumentumTipusEnum), dokumentumTipus));
return Content("");
}
public ActionResult DownloadFile(string id)
{
try
{
var phelper = new PoszeidonHelper(ConnectionTypeExtensions.GetSessionConnectionType(), IktatoRepositoryFactory, IktatoServiceConfiguration);
var (fajlnev, tartalom) = phelper.Lekeres(id.ToString());
return new FileContentResult(tartalom, MediaTypeNames.Application.Octet)
{
FileDownloadName = HttpUtility.UrlEncode(fajlnev, Encoding.UTF8),
};
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.NotFound, ex.Message, ex);
}
}
}
}