234 lines
9.8 KiB
C#
234 lines
9.8 KiB
C#
using System;
|
|
using System.Data;
|
|
using System.IO;
|
|
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.BusinessLogic.Utils;
|
|
using Kreta.Core;
|
|
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 KIRTanuloImportController : Controller
|
|
{
|
|
private IFeatureContext FeatureContext { get; }
|
|
|
|
private IUploadFileValidator UploadFileValidator { get; }
|
|
|
|
public KIRTanuloImportController(IFeatureContext featureContext, IUploadFileValidator uploadFileValidator)
|
|
{
|
|
FeatureContext = featureContext ?? throw new ArgumentNullException(nameof(featureContext));
|
|
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
|
}
|
|
|
|
// GET: Adminisztracio/KIRTanuloImport
|
|
public ActionResult Index()
|
|
{
|
|
var model = new TanuloKIRImportModel
|
|
{
|
|
KirLoginModel = new KIRLoginModel()
|
|
{
|
|
OmAzonosito = ClaimData.OrganizationCode,
|
|
},
|
|
TanevId = ClaimData.SelectedTanevID.Value,
|
|
KIRImportEnabled = FeatureContext.IsEnabled(Core.Constants.FeatureName.KIRImport),
|
|
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
|
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
|
IsSzakkepzoIntezmeny = ClaimData.IsSzakkepzoIntezmeny,
|
|
};
|
|
|
|
return View(model);
|
|
}
|
|
|
|
public ActionResult OpenKIRTanuloImportPopup(TanuloKIRImportModel model)
|
|
{
|
|
if (ModelState.IsValid)
|
|
{
|
|
try
|
|
{
|
|
var kirHelper = new KirHelper(ConnectionTypeExtensions.GetSessionConnectionType(), model.KirLoginModel.OmAzonosito, model.KirLoginModel.FelhasznaloNev, jelszo: model.KirLoginModel.Jelszo);
|
|
var tanarestanuloKirImportModel = new TanuloKIRImportModel
|
|
{
|
|
TanevId = ClaimData.SelectedTanevID.Value,
|
|
KIRImportModel = new KIRImportModel
|
|
{
|
|
OmAzonosito = model.KirLoginModel.OmAzonosito,
|
|
FelhasznaloNev = model.KirLoginModel.FelhasznaloNev,
|
|
KirToken = kirHelper.KirToken,
|
|
TelephelyList = kirHelper.GetTelephelyList().ToSelectListItemList()
|
|
},
|
|
KirLoginModel = new KIRLoginModel
|
|
{
|
|
OmAzonosito = model.KirLoginModel.OmAzonosito,
|
|
FelhasznaloNev = model.KirLoginModel.FelhasznaloNev
|
|
},
|
|
};
|
|
|
|
var pm = new PopUpModel(tanarestanuloKirImportModel, "KIRTanuloImportModal");
|
|
pm.AddCancelBtn(pm, "KretaWindowHelper.destroyAllWindow");
|
|
pm.AddBtn(pm, "BtnKIRImport", 3486 /*Importálás*/, "KIRTanuloImportHelper.KIRImport");
|
|
|
|
return PartialView(Constants.General.PopupView, pm);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
StatusError error = new StatusError(HttpStatusCode.BadRequest, e.Message);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
|
}
|
|
|
|
public ActionResult KIRImport(TanuloKIRImportModel model)
|
|
{
|
|
if (ModelState.IsValid)
|
|
{
|
|
var kirHelper = new KirHelper(ConnectionTypeExtensions.GetSessionConnectionType(), model.KIRImportModel.OmAzonosito, model.KIRImportModel.FelhasznaloNev, kirToken: model.KIRImportModel.KirToken);
|
|
|
|
var tanuloList = kirHelper.GetTanuloList(model.KIRImportModel.TelephelyKod.Value);
|
|
|
|
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
|
|
|
|
var anotherYearId = Kreta.Web.Classes.Utils.GetAnotherYearId();
|
|
new EgysegesImportHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).ExecuteKIRTanuloImport(tanuloList, anotherYearId, ClaimData.IsKovTanev);
|
|
}
|
|
|
|
return new HttpStatusCodeResult(HttpStatusCode.OK);
|
|
}
|
|
|
|
public ActionResult OpenTanuloImportPopUp(bool? isJuttatasUpdate)
|
|
{
|
|
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
|
|
|
|
var tanulokFelolteseModel = new TanulokFeltolteseModel
|
|
{
|
|
TanevId = ClaimData.SelectedTanevID.Value,
|
|
Errors = helper.TanuloKIRAdatok.Validate(),
|
|
IsJuttatasUpdate = isJuttatasUpdate,
|
|
IsSzakkepzoIntezmeny = ClaimData.IsSzakkepzoIntezmeny,
|
|
};
|
|
|
|
var model = new PopUpModel(tanulokFelolteseModel, "TanulokFeltolteseModal");
|
|
model.AddCancelBtn(model, "KretaWindowHelper.destroyAllWindow");
|
|
|
|
if (tanulokFelolteseModel.Errors.Count == 0)
|
|
{
|
|
model.AddOkBtn(model, "KIRTanuloFeltoltesHelper.Save");
|
|
}
|
|
|
|
return PartialView(Constants.General.PopupView, model);
|
|
}
|
|
|
|
public ActionResult UploadKIRTanuloFile(HttpPostedFileBase importTanuloFile)
|
|
{
|
|
UploadFileValidator.ValidateImportFile(importTanuloFile);
|
|
|
|
try
|
|
{
|
|
TantervHelper helper = new TantervHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
|
|
DataSet tantervDataSet = helper.TantervKereses();
|
|
if (!tantervDataSet.Tables[0].Rows.Count.IsNotNullAndPositive())
|
|
{
|
|
throw new BlException(ImportExportOrarendResource.TantervNotFound);
|
|
}
|
|
|
|
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
|
|
|
|
var anotherYearId = Kreta.Web.Classes.Utils.GetAnotherYearId();
|
|
new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ExecuteKIRTanuloImportFile(importTanuloFile.ContentLength, importTanuloFile.InputStream, importTanuloFile.FileName, anotherYearId, ClaimData.IsKovTanev, ClaimData.IsSzakkepzoIntezmeny);
|
|
}
|
|
catch (BlException e)
|
|
{
|
|
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
|
|
}
|
|
catch (InvalidDataException e)
|
|
{
|
|
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
|
|
}
|
|
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 SaveTanulok(bool? isJuttatasUpdate)
|
|
{
|
|
if (ModelState.IsValid)
|
|
{
|
|
try
|
|
{
|
|
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
|
|
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
|
|
helper.SaveImportaltTanulok(isJuttatasUpdate ?? false);
|
|
|
|
return Json(new { tovabbUrl = @"/Tanulo/Tanulo" });
|
|
}
|
|
catch (BlException)
|
|
{
|
|
throw;
|
|
}
|
|
catch (SDA.DataProvider.UniqueKeyViolationException)
|
|
{
|
|
/*A fájlban szereplő oktatási azonosítóval már szerepel diák az adatbázisban*/
|
|
StatusError error = new StatusError(HttpStatusCode.BadRequest, StringResourcesUtils.GetString(4852));
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
|
}
|
|
|
|
public ActionResult GetPreLoadedStudents(DataSourceRequest request)
|
|
{
|
|
var helper = new EgysegesImportHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
|
|
|
|
helper.GridParameters = Converter.GridParameter(request);
|
|
return Json(helper.GetImportaltTanulok().ToDataSourceResult(), JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
public ActionResult DownloadTemplate()
|
|
{
|
|
string filePath = Kreta.Web.Classes.Utils.GetExcelTemplateFilePath(Constants.ImportExport.TanuloImportSablonNev);
|
|
|
|
if (filePath == null)
|
|
{
|
|
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.FajlNemLetezik);
|
|
}
|
|
|
|
return File(filePath, Core.Constants.ContentTypes.Xlsx, Constants.ImportExport.TanuloImportSablonNev);
|
|
}
|
|
|
|
public ActionResult ExportAktualisAdatok()
|
|
{
|
|
var memoryStream = new EgysegesImportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ExportTanuloAktualisAdatok();
|
|
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = $"{TanuloResource.TanulokExport}.{Constants.ImportExport.FileFormatXlsx}" };
|
|
}
|
|
}
|
|
}
|