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}" }; } } }