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

329 lines
22 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.HelperClasses.ImportCo;
using Kreta.BusinessLogic.Helpers.ImportExport;
using Kreta.BusinessLogic.Security;
using Kreta.BusinessLogic.Utils;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
using Kreta.Web.Areas.ImportExport.Models.AlkalmazottMunkaugyiAdatokImportExport;
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
using Kreta.Web.Classes;
using Kreta.Web.Helpers;
using Kreta.Web.Models.EditorTemplates;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.ImportExport.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
public class AlkalmazottMunkaugyiAdatokImportExportController : BaseImportExportController
{
#region Fields
private const string TovabbUrl = @"~/Alkalmazott/Alkalmazott";
#endregion Fields
#region Properties
public static string GridName => "AlkalmazottMunkaugyiAdatokGrid";
public static string GridRowTemplateName => "AlkalmazottMunkaugyiAdatokGridRowTemplate";
public static string JavascriptHelperClassName => "AlkalmazottMunkaugyiAdatokImportExportHelper";
public static string ControllerName => "AlkalmazottMunkaugyiAdatokImportExport";
#endregion Properties
#region Constructors
public AlkalmazottMunkaugyiAdatokImportExportController(IUploadFileValidator uploadFileValidator)
{
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
}
#endregion Constructors
public ActionResult Index()
{
var model = new AlkalmazottMunkaugyiAdatokImportExportModel()
{
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions
};
return View(model);
}
#region Sablon
public ActionResult DownloadTemplate()
{
MemoryStream memoryStream = new AlkalmazottMunkaugyiAdatokImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate();
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportAlkalmazottMunkaugyiAdatokResource.ImportSablonFileName };
}
#endregion Sablon
#region Export
[HttpPost]
[MvcValidateAjaxAntiForgeryToken]
public string Export()
{
MemoryStream memoryStream = new AlkalmazottMunkaugyiAdatokImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport();
return GetExportFileString(memoryStream);
}
[HttpPost]
[MvcValidateAjaxAntiForgeryToken]
public string NemImportalhatoSorokExport()
{
MemoryStream memoryStream = new AlkalmazottMunkaugyiAdatokImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
return GetExportFileString(memoryStream);
}
#endregion Export
#region Import
public JsonResult UploadFile(HttpPostedFileBase importFile)
{
UploadFileValidator.ValidateImportFile(importFile);
var errorResult = new List<string>();
Dictionary<int, string> importHeaderList = AlkalmazottMunkaugyiAdatokImportExportHelper.ImportHeaderList;
List<List<string>> importData = ImportExportHelper.GetImportDataFromExcel(importFile.InputStream, importHeaderList, out List<string> fileErrorResultList);
errorResult.AddRange(fileErrorResultList);
if (errorResult.Count > 0)
{
JsonResult errorJson = ThrowCustomError(errorResult);
return errorJson;
}
new AlkalmazottMunkaugyiAdatokImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, ClaimData.IsSzakkepzoIntezmeny);
return Json(null);
}
public ActionResult OpenImportPreviewPopup()
{
AlkalmazottMunkaugyiAdatokImportCo importCo = new AlkalmazottMunkaugyiAdatokImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
var importInfoModel = new AlkalmazottMunkaugyiAdatokImportInfoModel
{
ImportInfoSummaryList = new ImportInfoSummaryListModel
{
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
{
GetImportInfoSummary(importCo)
}
},
MainImportItemList = new AlkalmazottMunkaugyiAdatokImportItemListModel
{
ImportItemModelList = GetImportItemModelList(importCo)
},
NemImportalhatoItemList = new AlkalmazottMunkaugyiAdatokImportNemimportalhatoItemListModel
{
NemImportalhatoItemModelList = GetNemImportalhatoItemModelList(importCo.NemImportalhatoItemList)
}
};
var popUpModel = new PopUpModel(importInfoModel, ImportPreviewPopupName);
popUpModel.AddCancelBtn(popUpModel, "KretaWindowHelper.destroyAllWindow");
popUpModel.AddBtn(popUpModel, "ImportBtnOk", CommonResource.Importalas, $"{JavascriptHelperClassName}.import", "BtnOk", setDisabledAfterClick: true);
popUpModel.AddBtn(popUpModel, "NemImportalhatoSorokExportBtnOk", ImportExportCommonResource.NemImportalhatoSorokExportalasa, $"{JavascriptHelperClassName}.nemImportalhatoSorokExport", "BtnOk");
return PartialView(Constants.General.PopupView, popUpModel);
}
public ActionResult Import()
{
if (ModelState.IsValid)
{
AlkalmazottMunkaugyiAdatokImportCo importCo = new AlkalmazottMunkaugyiAdatokImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
new AlkalmazottMunkaugyiAdatokImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).Import(importCo.MainImportJsonItemList);
return Content(Url.Content(TovabbUrl));
}
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
private static ImportInfoSummaryModel GetImportInfoSummary(AlkalmazottMunkaugyiAdatokImportCo importCo)
{
List<AlkalmazottMunkaugyiAdatokCo> coList = importCo.AlkalmazottMunkaugyiAdatokCoList;
List<AlkalmazottMunkaugyiAdatokImportJsonItemCo> mainImportJsonItemList = importCo.MainImportJsonItemList;
int insertRowCount = mainImportJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert) ?? 0;
int updateRowCount = mainImportJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
int deleteRowCount = importCo.ImportMuvelet == (int)ImportMuveletEnum.DeleteAndInsert ? coList.Count(x => x.Importalt) : 0;
int unchangedRowCount = coList.Count - updateRowCount;
int invalidRowCount = importCo.NemImportalhatoItemList.Count;
var importInfoSummary = new ImportInfoSummaryModel
{
ImportName = ImportExportAlkalmazottMunkaugyiAdatokResource.ImportDefaultSheetName,
InsertRowCount = insertRowCount.ToString(),
UpdateRowCount = updateRowCount.ToString(),
DeleteRowCount = deleteRowCount.ToString(),
UnchangedRowCount = unchangedRowCount.ToString(),
InvalidRowCount = invalidRowCount.ToString()
};
return importInfoSummary;
}
private List<AlkalmazottMunkaugyiAdatokImportItemModel> GetImportItemModelList(AlkalmazottMunkaugyiAdatokImportCo importCo)
{
List<AlkalmazottMunkaugyiAdatokCo> coList = importCo.AlkalmazottMunkaugyiAdatokCoList;
var importItemModelList = new List<AlkalmazottMunkaugyiAdatokImportItemModel>();
List<AlkalmazottMunkaugyiAdatokImportJsonItemCo> mainImportJsonItemList = importCo.MainImportJsonItemList;
if (mainImportJsonItemList == null)
{
if (!(coList.Count > 0))
{
return importItemModelList;
}
mainImportJsonItemList = new List<AlkalmazottMunkaugyiAdatokImportJsonItemCo>();
}
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
foreach (AlkalmazottMunkaugyiAdatokImportJsonItemCo importJsonItem in mainImportJsonItemList)
{
importItemModelList.Add(new AlkalmazottMunkaugyiAdatokImportItemModel
{
PedagogusNeve = CommonUtils.GetDisplayableString(importJsonItem.PedagogusNeve, ClaimData.SelectedTanevID.Value),
PedagogusElotag = CommonUtils.GetDisplayableString(importJsonItem.PedagogusElotag, ClaimData.SelectedTanevID.Value),
PedagogusUtonev = CommonUtils.GetDisplayableString(importJsonItem.PedagogusUtonev, ClaimData.SelectedTanevID.Value),
PedagogusVezeteknev = CommonUtils.GetDisplayableString(importJsonItem.PedagogusVezeteknev, ClaimData.SelectedTanevID.Value),
PedagogusAnyjaNeve = CommonUtils.GetDisplayableString(importJsonItem.PedagogusAnyjaNeve, ClaimData.SelectedTanevID.Value),
SzuletesiDatum = CommonUtils.GetDisplayableString(importJsonItem.SzuletesiDatum, ClaimData.SelectedTanevID.Value),
SzuletesiHely = CommonUtils.GetDisplayableString(importJsonItem.SzuletesiHely, ClaimData.SelectedTanevID.Value),
OktatasiAzonosito = CommonUtils.GetDisplayableString(importJsonItem.OktatasiAzonosito, ClaimData.SelectedTanevID.Value),
AdoazonositoJel = CommonUtils.GetDisplayableString(importJsonItem.AdoazonositoJel, ClaimData.SelectedTanevID.Value),
BesorolasiFokozat = CommonUtils.GetDisplayableString((BesorolasiFokozatTipusEnum?)importJsonItem.BesorolasiFokozat, ClaimData.SelectedTanevID.Value),
Munkakor = CommonUtils.GetDisplayableString((MunkakorTipusEnum?)importJsonItem.Munkakor, ClaimData.SelectedTanevID.Value),
Munkaviszony = CommonUtils.GetDisplayableString((MunkaviszonyTipusEnum?)importJsonItem.Munkaviszony, ClaimData.SelectedTanevID.Value),
KotelezoOraszam = CommonUtils.GetDisplayableString(importJsonItem.KotelezoOraszam, ClaimData.SelectedTanevID.Value),
MunkaidoKedvezmenyOraszam = CommonUtils.GetDisplayableString(importJsonItem.MunkaidoKedvezmenyOraszam, ClaimData.SelectedTanevID.Value),
MunkaidoKedvezmenyOka = CommonUtils.GetDisplayableString((MunkaidoKedvezmenyOkaEnum?)importJsonItem.MunkaidoKedvezmenyOka, ClaimData.SelectedTanevID.Value),
AlkalmazasKezdete = CommonUtils.GetDisplayableString(importJsonItem.AlkalmazasKezdete, ClaimData.SelectedTanevID.Value),
FoglalkoztatasTipus = CommonUtils.GetDisplayableString((FoglalkoztatasTipusaEnum?)importJsonItem.FoglalkoztatasTipus, ClaimData.SelectedTanevID.Value),
VezetoiOraszamOka = CommonUtils.GetDisplayableString((VezetoiOraszamokTipusEnum?)importJsonItem.VezetoiOraszamOka, ClaimData.SelectedTanevID.Value),
FeladatellatasiHely = CommonUtils.GetDisplayableString(importJsonItem.FeladataellatasiHely, ClaimData.SelectedTanevID.Value),
IsTartosTavollet = CommonUtils.GetDisplayableString(importJsonItem.IsTartosTavollet, ClaimData.SelectedTanevID.Value),
IsBetoltetlenAllashely = CommonUtils.GetDisplayableString(importJsonItem.IsBetoltetlenAllashely, ClaimData.SelectedTanevID.Value),
IsKulsoAlkalmazott = CommonUtils.GetDisplayableString(importJsonItem.IsKulsoAlkalmazott, ClaimData.SelectedTanevID.Value),
IsFoallasu = CommonUtils.GetDisplayableString(importJsonItem.IsFoallasu, ClaimData.SelectedTanevID.Value),
IsNyugdijas = CommonUtils.GetDisplayableString(importJsonItem.IsNyugdijas, ClaimData.SelectedTanevID.Value),
IsSzakertoiVagyVizsgaelnokiTevekenysegu = CommonUtils.GetDisplayableString(importJsonItem.IsSzakertoiVagyVizsgaelnokiTevekenysegu, ClaimData.SelectedTanevID.Value),
IsSzakmaiTovabbkepzes = CommonUtils.GetDisplayableString(importJsonItem.IsSzakmaiTovabbkepzes, ClaimData.SelectedTanevID.Value),
IsSzakvizsga = CommonUtils.GetDisplayableString(importJsonItem.IsSzakvizsga, ClaimData.SelectedTanevID.Value),
IsAttanito = CommonUtils.GetDisplayableString(importJsonItem.IsAttanito, ClaimData.SelectedTanevID.Value),
IsAttanitoMasIntezmenynel = CommonUtils.GetDisplayableString(importJsonItem.IsAttanitoMasIntezmenynel, ClaimData.SelectedTanevID.Value),
IsTartosTavollevoHelyettesites = CommonUtils.GetDisplayableString(importJsonItem.IsTartosTavollevoHelyettesites, ClaimData.SelectedTanevID.Value),
IsSzakertoKutatotanar = CommonUtils.GetDisplayableString(importJsonItem.IsSzakerto, ClaimData.SelectedTanevID.Value),
Operation = importJsonItem.Operation
});
}
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
foreach (AlkalmazottMunkaugyiAdatokCo co in coList)
{
if (!mainImportJsonItemList.Select(x => x.Id).Contains(co.MunkaugyiAdatId))
{
importItemModelList.Add(new AlkalmazottMunkaugyiAdatokImportItemModel
{
PedagogusNeve = CommonUtils.GetDisplayableString(co.Nev, ClaimData.SelectedTanevID.Value),
PedagogusElotag = CommonUtils.GetDisplayableString(co.FelhasznaloElotag, ClaimData.SelectedTanevID.Value),
PedagogusVezeteknev = CommonUtils.GetDisplayableString(co.FelhasznaloVezeteknev, ClaimData.SelectedTanevID.Value),
PedagogusUtonev = CommonUtils.GetDisplayableString(co.FelhasznaloKeresztnev, ClaimData.SelectedTanevID.Value),
PedagogusAnyjaNeve = CommonUtils.GetDisplayableString(co.FelhasznaloAnyjaNeve, ClaimData.SelectedTanevID.Value),
SzuletesiDatum = CommonUtils.GetDisplayableString(co.FelhasznaloSzuletesiIdo, ClaimData.SelectedTanevID.Value),
SzuletesiHely = CommonUtils.GetDisplayableString(co.FelhasznaloSzuletesiHely, ClaimData.SelectedTanevID.Value),
OktatasiAzonosito = CommonUtils.GetDisplayableString(co.FelhasznaloOktatasiAzonosito, ClaimData.SelectedTanevID.Value),
AdoazonositoJel = CommonUtils.GetDisplayableString(co.AdoazonositoJel, ClaimData.SelectedTanevID.Value),
BesorolasiFokozat = CommonUtils.GetDisplayableString((BesorolasiFokozatTipusEnum?)co.BesorolasiFokozat, ClaimData.SelectedTanevID.Value),
Munkakor = CommonUtils.GetDisplayableString((MunkakorTipusEnum?)co.Munkakor, ClaimData.SelectedTanevID.Value),
Munkaviszony = CommonUtils.GetDisplayableString((MunkaviszonyTipusEnum?)co.FoglalkoztatasModja, ClaimData.SelectedTanevID.Value),
KotelezoOraszam = CommonUtils.GetDisplayableString(co.KotelezoOraszam, ClaimData.SelectedTanevID.Value),
MunkaidoKedvezmenyOraszam = CommonUtils.GetDisplayableString(co.MunkaidoKedvezmenyOraszam, ClaimData.SelectedTanevID.Value),
MunkaidoKedvezmenyOka = CommonUtils.GetDisplayableString((MunkaidoKedvezmenyOkaEnum?)co.MunkaidoKedvezmenyOka, ClaimData.SelectedTanevID.Value),
AlkalmazasKezdete = CommonUtils.GetDisplayableString(co.AlkalmazasKezdete, ClaimData.SelectedTanevID.Value),
FoglalkoztatasTipus = CommonUtils.GetDisplayableString((FoglalkoztatasTipusaEnum?)co.FoglalkoztatasTipusa, ClaimData.SelectedTanevID.Value),
VezetoiOraszamOka = CommonUtils.GetDisplayableString((VezetoiOraszamokTipusEnum?)co.VezetoiOraszamOka, ClaimData.SelectedTanevID.Value),
FeladatellatasiHely = CommonUtils.GetDisplayableString(co.FeladatellatasiHely, ClaimData.SelectedTanevID.Value),
IsTartosTavollet = CommonUtils.GetDisplayableString(co.IsTartosTavollet, ClaimData.SelectedTanevID.Value),
IsBetoltetlenAllashely = CommonUtils.GetDisplayableString(co.IsBetoltetlenAllashely, ClaimData.SelectedTanevID.Value),
IsKulsoAlkalmazott = CommonUtils.GetDisplayableString(co.IsKulsoAlkalmazott, ClaimData.SelectedTanevID.Value),
IsFoallasu = CommonUtils.GetDisplayableString(co.IsFoallasu, ClaimData.SelectedTanevID.Value),
IsNyugdijas = CommonUtils.GetDisplayableString(co.IsNyugdijas, ClaimData.SelectedTanevID.Value),
IsSzakertoiVagyVizsgaelnokiTevekenysegu = CommonUtils.GetDisplayableString(co.IsSzakertoiVagyVizsgaelnokiTevekenysegu, ClaimData.SelectedTanevID.Value),
IsSzakmaiTovabbkepzes = CommonUtils.GetDisplayableString(co.IsSzakmaiTovabbkepzes, ClaimData.SelectedTanevID.Value),
IsSzakvizsga = CommonUtils.GetDisplayableString(co.IsSzakvizsga, ClaimData.SelectedTanevID.Value),
IsAttanito = CommonUtils.GetDisplayableString(co.IsAttanito, ClaimData.SelectedTanevID.Value),
IsAttanitoMasIntezmenynel = CommonUtils.GetDisplayableString(co.IsAttanitoMasIntezmenynel, ClaimData.SelectedTanevID.Value),
IsTartosTavollevoHelyettesites = CommonUtils.GetDisplayableString(co.IsTartosTavollevoHelyettesites, ClaimData.SelectedTanevID.Value),
IsSzakertoKutatotanar = CommonUtils.GetDisplayableString(co.IsSzakerto, ClaimData.SelectedTanevID.Value),
Operation = importCo.ImportMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && co.Importalt ? (int)ImportItemOperationEnum.Delete : (int)ImportItemOperationEnum.Default
});
}
}
return importItemModelList.OrderBy(x => x.PedagogusNeve).ThenByDescending(x => x.OperationText).ToList();
}
private List<AlkalmazottMunkaugyiAdatokImportNemimportalhatoItemModel> GetNemImportalhatoItemModelList(List<AlkalmazottMunkaugyiAdatokImportItemCo> nemImportalhatoItemList)
{
var nemImportalhatoItemModelList = new List<AlkalmazottMunkaugyiAdatokImportNemimportalhatoItemModel>();
foreach (AlkalmazottMunkaugyiAdatokImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
{
nemImportalhatoItemModelList.Add(new AlkalmazottMunkaugyiAdatokImportNemimportalhatoItemModel
{
PedagogusNevImportData = nemImportalhatoItem.PedagogusNeveImportData,
PedagogusElotagImportData = nemImportalhatoItem.PedagogusNevElotagImportData,
PedagogusUtonevImportData = nemImportalhatoItem.PedagogusUtoneveImportData,
PedagogusVezeteknevImportData = nemImportalhatoItem.PedagogusVezetekneveImportData,
PedagogusAnyjaNeveImportData = nemImportalhatoItem.PedagogusAnyjaNeveImportData,
SzuletesiDatumImportData = nemImportalhatoItem.PedagogusSzuletesiDatumaImportData,
SzuletesiHelyImportData = nemImportalhatoItem.PedagogusSzuletesiHelyeImportData,
OktatasiAzonositoImportData = nemImportalhatoItem.PedagogusOktatasiAzonositoImportData,
AdoazonositoJelImportData = nemImportalhatoItem.AdoazonositoJelImportData,
BesorolasiFokozatImportData = nemImportalhatoItem.PedagogusFokozatImportData,
MunkakorImportData = nemImportalhatoItem.MunkakorImportData,
MunkaviszonyImportData = nemImportalhatoItem.FoglalkoztatasiJogviszonyImportData,
KotelezoOraszamImportData = nemImportalhatoItem.KotelezoOraszamaImportData,
MunkaidoKedvezmenyOraszamImportData = nemImportalhatoItem.MunkaidokedvezmenyOraszamaImportData,
MunkaidoKedvezmenyOkaImportData = nemImportalhatoItem.FeladattalTerheltOraszamOkaImportData,
AlkalmazasKezdeteImportData = nemImportalhatoItem.AlkalmazasKezdeteImportData,
FoglalkoztatasTipusImportData = nemImportalhatoItem.FoglalkoztatasTipusaImportData,
VezetoiOraszamOkaImportData = nemImportalhatoItem.VezetoiOraszamOkaImportData,
FeladatellatasiHelyImportData = nemImportalhatoItem.FeladatellatasiHelyImportData,
IsTartosHelyettesitesImportData = nemImportalhatoItem.TartosanTavollevoImportData,
IsBetoltetlenAllashelyImportData = nemImportalhatoItem.BetoltetlenAllashelyImportData,
IsKulsoAlkalmazottImportData = nemImportalhatoItem.KulsoAlkalmazottImportData,
IsFoallasuImportData = nemImportalhatoItem.FoallasuImportData,
IsNyugdijasImportData = nemImportalhatoItem.NyugdijasTovabbfoglalkoztatottImportData,
IsSzakertoiVagyVizsgaelnokiTevekenyseguImportData = nemImportalhatoItem.SzakertoiVagyVizsgaelnokiTevekenyseguImportData,
IsSzakmaiTovabbkepzesImportData = nemImportalhatoItem.SzakmaiTovabbkepzesImportData,
IsSzakvizsgaImportData = nemImportalhatoItem.SzakvizsgaImportData,
IsAttanitoImportData = nemImportalhatoItem.AttanitoIntezmenyenBelulImportData,
IsSzakertoKutatotanarImportData = nemImportalhatoItem.SzakertoImportData,
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
});
}
return nemImportalhatoItemModelList.OrderBy(x => x.PedagogusNevImportData).ToList();
}
#endregion Import
}
}