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

196 lines
8.1 KiB
C#

using System;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core.Exceptions;
using Kreta.Core.FeatureToggle;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Classes;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
public class TanarImportController : Controller
{
private IFeatureContext FeatureContext { get; }
private IUploadFileValidator UploadFileValidator { get; }
public TanarImportController(IFeatureContext featureContext, IUploadFileValidator uploadFileValidator)
{
FeatureContext = featureContext ?? throw new ArgumentNullException(nameof(featureContext));
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
}
// GET: Adminisztracio/TanarImport
public ActionResult Index()
{
var model = new TanarKIRImportModel
{
KirLoginModel = new KIRLoginModel()
{
OmAzonosito = ClaimData.OrganizationCode,
},
KIRImportEnabled = FeatureContext.IsEnabled(Core.Constants.FeatureName.KIRImport),
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions
};
return View(model);
}
public ActionResult OpenKIRTanarImportPopup(TanarKIRImportModel model)
{
if (ModelState.IsValid)
{
try
{
var kirHelper = new KirHelper(ConnectionTypeExtensions.GetSessionConnectionType(), model.KirLoginModel.OmAzonosito, model.KirLoginModel.FelhasznaloNev, jelszo: model.KirLoginModel.Jelszo);
var tanaresTanuloKIRImportModel = new TanarKIRImportModel
{
TanevId = ClaimData.SelectedTanevID.Value,
FeladatellatasiHelyId = model.FeladatellatasiHelyId,
KIRImportModel = new KIRImportModel
{
OmAzonosito = model.KirLoginModel.OmAzonosito,
KirToken = kirHelper.KirToken,
TelephelyList = kirHelper.GetTelephelyList().ToSelectListItemList(),
FelhasznaloNev = model.KirLoginModel.FelhasznaloNev
},
KirLoginModel = new KIRLoginModel
{
OmAzonosito = model.KirLoginModel.OmAzonosito,
FelhasznaloNev = model.KirLoginModel.FelhasznaloNev
},
};
var pm = new PopUpModel(tanaresTanuloKIRImportModel, "KIRTanarImportModal");
pm.AddCancelBtn(pm, "KretaWindowHelper.destroyAllWindow");
pm.AddBtn(pm, "BtnKIRImport", 3486 /*Importálás*/, "KIRTanarImportHelper.KIRImport");
return PartialView(Constants.General.PopupView, pm);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
}
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
public ActionResult KIRImport(TanarKIRImportModel model, int feladatellatasiHelyId)
{
if (ModelState.IsValid)
{
var kirHelper = new KirHelper(ConnectionTypeExtensions.GetSessionConnectionType(), model.KIRImportModel.OmAzonosito, model.KIRImportModel.FelhasznaloNev, kirToken: model.KIRImportModel.KirToken);
var tanarList = kirHelper.GetPedagogusList(model.KIRImportModel.TelephelyKod.Value);
var egysegesImportHelper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
egysegesImportHelper.ExecuteKIRTanarImport(tanarList);
}
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
public ActionResult OpenTanarImportPopUp(int feladatellatasiHelyId)
{
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var tanarokFeltolteseModel = new TanarokFeltolteseModel
{
TanevId = ClaimData.SelectedTanevID.Value,
FeladatellatasiHelyId = feladatellatasiHelyId,
Errors = helper.TanarKIRAdatok.Validate()
};
var model = new PopUpModel(tanarokFeltolteseModel, "TanarokFeltolteseModal");
model.AddCancelBtn(model, "KretaWindowHelper.destroyAllWindow");
if (tanarokFeltolteseModel.Errors.Count == 0)
{
model.AddOkBtn(model, "KIRTanarFeltoltesHelper.Save");
}
return PartialView(Constants.General.PopupView, model);
}
public ActionResult UploadKIRTanarFile(HttpPostedFileBase importTanarFile)
{
UploadFileValidator.ValidateImportFile(importTanarFile);
try
{
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.ExecuteKIRTanarImportFile(importTanarFile.InputStream, importTanarFile.FileName, ClaimData.IsSzakkepzoIntezmeny);
}
catch (KretaInvalidFileFormatException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
catch (Exception e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
return Content(string.Empty);
}
public ActionResult SaveTanarok(int feladatellatasiHelyId)
{
if (ModelState.IsValid)
{
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
helper.SaveImportaltTanarok(feladatellatasiHelyId);
return Json(new { tovabbUrl = @"/Alkalmazott/Alkalmazott" });
}
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
public ActionResult GetPreLoadedTeachers(DataSourceRequest request)
{
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
return Json(helper.GetImportaltTanarok().ToDataSourceResult(), JsonRequestBehavior.AllowGet);
}
public ActionResult DownloadTemplate()
{
string filePath = Kreta.Web.Classes.Utils.GetExcelTemplateFilePath(Constants.ImportExport.AlkalmazottImportSablonNev);
if (filePath == null)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.FajlNemLetezik);
}
return File(filePath, Core.Constants.ContentTypes.Xlsx, Constants.ImportExport.AlkalmazottImportSablonNev);
}
public ActionResult ExportAktualisAdatok()
{
var memoryStream = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ExportTanarAktualisAdatok();
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = $"{AlkalmazottResource.Alkalmazottak_Export}.{Constants.ImportExport.FileFormatXlsx}" };
}
}
}