init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,329 @@
|
|||
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
|
||||
}
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Classes;
|
||||
using Kreta.Web.Helpers.Error;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class BaseImportExportController : Controller
|
||||
{
|
||||
#region Properties
|
||||
|
||||
public static string ImportFileName => "ImportFile";
|
||||
|
||||
public static string ImportForm => "ImportForm";
|
||||
public static string ExportForm => "ExportForm";
|
||||
|
||||
public static string ImportPreviewPopupName => "ImportPreviewPopup";
|
||||
public static string ImportPopupTabStripName => "ImportPopupTabStrip";
|
||||
|
||||
public static string OsszefoglalasGridName => "OsszefoglalasGrid";
|
||||
public static string NemImportalhatoSorokGridName => "NemImportalhatoSorokGrid";
|
||||
|
||||
protected IUploadFileValidator UploadFileValidator { get; set; }
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Sablon
|
||||
|
||||
protected FilePathResult GetExcelTemplate(string fileName)
|
||||
{
|
||||
string filePath = Kreta.Web.Classes.Utils.GetExcelTemplateImportExportFilePath(fileName);
|
||||
|
||||
if (filePath == null)
|
||||
{
|
||||
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.FajlNemLetezik);
|
||||
}
|
||||
|
||||
FilePathResult result = File(filePath, Core.Constants.ContentTypes.Xlsx, fileName);
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
public string GetExportFileString(MemoryStream memoryStream)
|
||||
{
|
||||
if (memoryStream != null)
|
||||
{
|
||||
return Convert.ToBase64String(memoryStream.ToArray());
|
||||
}
|
||||
|
||||
return ImportExportCommonResource.NincsElegendoAdatARendszerbenAzExportalashoz;
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
public JsonResult ThrowCustomError(List<string> messageList)
|
||||
{
|
||||
Response.TrySkipIisCustomErrors = true;
|
||||
Response.StatusCode = (int)HttpStatusCode.BadRequest;
|
||||
return Json(messageList);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,684 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Core.Exceptions;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.OrarendImportExport;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TantargyfelosztasImportExport;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TeremImportExport;
|
||||
using Kreta.Web.Helpers;
|
||||
using Kreta.Web.Models.EditorTemplates;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class BaseOrarendImportExportController : BaseTantargyfelosztasImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"~/Orarend/AdminTanariOrarend";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string TeremGridName => "TeremGrid";
|
||||
public static string TeremGridRowTemplateName => "TeremGridRowTemplate";
|
||||
|
||||
public static string GridName => "OrarendGrid";
|
||||
public static string GridRowTemplateName => "OrarendGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "OrarendImportExportHelper";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
protected OrarendImportExportModel GetImportExportModel()
|
||||
{
|
||||
TanevCO tanevCo = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanevInfo();
|
||||
var oraErvenyessegMinDate = tanevCo.KezdoNap;
|
||||
var oraErvenyessegMaxDate = tanevCo.UtolsoTanitasiNap;
|
||||
|
||||
if (ClaimData.IsActivTanev)
|
||||
{
|
||||
oraErvenyessegMaxDate = tanevCo.UtolsoNap;
|
||||
}
|
||||
|
||||
var today = DateTime.Today;
|
||||
DateTime oraErvenyessegKezdeteValue;
|
||||
if (oraErvenyessegMinDate > today)
|
||||
{
|
||||
oraErvenyessegKezdeteValue = oraErvenyessegMinDate;
|
||||
}
|
||||
else if (oraErvenyessegMaxDate < today)
|
||||
{
|
||||
oraErvenyessegKezdeteValue = oraErvenyessegMaxDate;
|
||||
}
|
||||
else
|
||||
{
|
||||
oraErvenyessegKezdeteValue = today;
|
||||
}
|
||||
|
||||
var model = new OrarendImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
||||
AscAllowedFileExtensions = UploadFileValidator.Configuration.AscImportAllowedFileExtensions,
|
||||
OraErvenyessegKezdeteValue = oraErvenyessegKezdeteValue,
|
||||
OraErvenyessegMinDate = oraErvenyessegMinDate,
|
||||
OraErvenyessegMaxDate = oraErvenyessegMaxDate,
|
||||
OrarendExportKezdete = oraErvenyessegMinDate,
|
||||
OrarendExportVege = oraErvenyessegMaxDate
|
||||
};
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
#region Export
|
||||
|
||||
protected string GetExport(OrarendImportFileUploadCo orarendImportFileUploadCo, DateTime? orarendExportKezdete, DateTime? orarendExportVege, bool isIdoszakonKivuliElemekMegjelenitese, bool isEgyediNapOrainakKihagyasa)
|
||||
{
|
||||
var errorResult = new List<string>();
|
||||
if (!orarendExportKezdete.HasValue)
|
||||
{
|
||||
errorResult.Add(ErrorResource.OrarendErvenyessegKezdeteMegadasaKotelezo);
|
||||
}
|
||||
|
||||
if (!orarendExportVege.HasValue)
|
||||
{
|
||||
errorResult.Add(ErrorResource.OrarendErvenyessegVegeMegadasaKotelezo);
|
||||
}
|
||||
|
||||
if (errorResult.Count > 0)
|
||||
{
|
||||
return string.Join("<br />", errorResult);
|
||||
}
|
||||
|
||||
//NOTE: Az OraErvenyessegVege 00:00-t tartalmaz, de aznap napközben még lehet óra, ezért a következő nap 00:00 időpont a jó és azt mentjük a db-be!
|
||||
orarendExportVege = orarendExportVege.Value.AddDays(1);
|
||||
MemoryStream memoryStream = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport(orarendImportFileUploadCo, orarendExportKezdete.Value, orarendExportVege.Value, isIdoszakonKivuliElemekMegjelenitese, isEgyediNapOrainakKihagyasa);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
protected JsonResult UploadFile(OrarendImportExportFileUploadModel orarendImportExportFileUploadModel)
|
||||
{
|
||||
var orarendImportFileUploadCo = new OrarendImportFileUploadCo
|
||||
{
|
||||
OrarendImportMuvelet = orarendImportExportFileUploadModel.OrarendImportMuvelet,
|
||||
OrarendImportTipus = orarendImportExportFileUploadModel.OrarendImportTipus,
|
||||
IsNapirendImport = orarendImportExportFileUploadModel.IsNapirendImport,
|
||||
IsTtfImport = orarendImportExportFileUploadModel.IsTtfImport,
|
||||
IsOraszamUpdate = orarendImportExportFileUploadModel.IsOraszamUpdate,
|
||||
IsOsszefuggoSzakmaiGyakorlat = orarendImportExportFileUploadModel.IsOsszefuggoSzakmaiGyakorlat,
|
||||
OrarendiOraLezarasDateTime = orarendImportExportFileUploadModel.OraErvenyessegKezdete
|
||||
};
|
||||
|
||||
switch (orarendImportExportFileUploadModel.OrarendImportTipus)
|
||||
{
|
||||
case (int)OrarendImportTipusEnum.Import:
|
||||
case (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport:
|
||||
UploadFileValidator.ValidateImportFile(orarendImportExportFileUploadModel.ImportFile);
|
||||
break;
|
||||
|
||||
case (int)OrarendImportTipusEnum.AscImport:
|
||||
UploadFileValidator.ValidateAscImportFile(orarendImportExportFileUploadModel.ImportFile);
|
||||
break;
|
||||
}
|
||||
|
||||
var errorResult = new List<string>();
|
||||
if (orarendImportExportFileUploadModel.FeladatellatasiHelyId == null)
|
||||
{
|
||||
errorResult.Add(ErrorResource.FeladatellatasiHelyMegadasaKotelezo);
|
||||
}
|
||||
|
||||
if (!orarendImportExportFileUploadModel.IsTtfImport && orarendImportExportFileUploadModel.IsOraszamUpdate)
|
||||
{
|
||||
errorResult.Add(ErrorResource.IfNotIsTtfImportIsOraszamUpdate);
|
||||
}
|
||||
|
||||
string korabbiMessage;
|
||||
string kesobbiMessage;
|
||||
|
||||
TanevCO tanevCo = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanevInfo();
|
||||
orarendImportFileUploadCo.OraErvenyessegMinDate = tanevCo.KezdoNap;
|
||||
orarendImportFileUploadCo.OraErvenyessegMaxDate = tanevCo.UtolsoTanitasiNap;
|
||||
orarendImportFileUploadCo.OraErvenyessegVegzosMaxDate = tanevCo.UtolsoTanitasiNapVegzos;
|
||||
|
||||
//NOTE: Aktív tanévben vagyunk, összefüggő szakmai gyakorlat és valamelyik excel import van, akkor le kell ellenőriznünk,
|
||||
// hogy megfelelőek-e a testreszabásokban lévő összefüggő szakmai gyakorlat kezdő és vég dátumok, illetve ezek lesznek a max és min érvényességi idők.
|
||||
if (ClaimData.IsActivTanev &&
|
||||
orarendImportFileUploadCo.IsOsszefuggoSzakmaiGyakorlat &&
|
||||
(orarendImportFileUploadCo.OrarendImportTipus == (int)OrarendImportTipusEnum.Import || orarendImportFileUploadCo.OrarendImportTipus == (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport))
|
||||
{
|
||||
var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
|
||||
orarendImportFileUploadCo.OraErvenyessegMinDate = systemSettingsHelper.GetSystemSettingValue<DateTime>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum);
|
||||
orarendImportFileUploadCo.OraErvenyessegMaxDate = systemSettingsHelper.GetSystemSettingValue<DateTime>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum);
|
||||
|
||||
korabbiMessage = ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatKezdete;
|
||||
kesobbiMessage = ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatVege;
|
||||
errorResult.AddRange(ValidateOsszefuggoSzakmaiGyakorlatKezdeteVege(orarendImportFileUploadCo.OraErvenyessegMinDate, orarendImportFileUploadCo.OraErvenyessegMaxDate));
|
||||
}
|
||||
else
|
||||
{
|
||||
korabbiMessage = ImportExportCommonResource.ElsoTanitasiNap;
|
||||
kesobbiMessage = ImportExportCommonResource.UtolsoTanitasiNap;
|
||||
}
|
||||
|
||||
var fileErrorResultList = new List<string>();
|
||||
switch (orarendImportFileUploadCo.OrarendImportTipus)
|
||||
{
|
||||
case (int)OrarendImportTipusEnum.Import:
|
||||
orarendImportExportFileUploadModel.OraErvenyessegVege = orarendImportFileUploadCo.OraErvenyessegMaxDate;
|
||||
errorResult.AddRange(ValidateOraErvenyessegKezdete(orarendImportExportFileUploadModel, orarendImportFileUploadCo.OraErvenyessegMinDate, korabbiMessage, orarendImportFileUploadCo.OraErvenyessegMaxDate, kesobbiMessage));
|
||||
|
||||
if (!errorResult.Any())
|
||||
{
|
||||
Dictionary<int, string> importHeaderList = !orarendImportExportFileUploadModel.IsNapirendImport ? OrarendImportExportHelper.ImportHeaderList : OrarendImportExportHelper.ImportHeaderListNapirend;
|
||||
orarendImportFileUploadCo.ImportData = ImportExportHelper.GetImportDataFromExcel(orarendImportExportFileUploadModel.ImportFile.InputStream, importHeaderList, out fileErrorResultList);
|
||||
if (orarendImportFileUploadCo.ImportData != null)
|
||||
{
|
||||
foreach (List<string> importDataRow in orarendImportFileUploadCo.ImportData)
|
||||
{
|
||||
importDataRow.Insert(0, orarendImportExportFileUploadModel.OraErvenyessegVege.ToConvertableDateString());
|
||||
importDataRow.Insert(0, orarendImportExportFileUploadModel.OraErvenyessegKezdete.ToConvertableDateString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport:
|
||||
if (!errorResult.Any())
|
||||
{
|
||||
Dictionary<int, string> importHeaderList = !orarendImportExportFileUploadModel.IsNapirendImport ? OrarendImportExportHelper.ImportHeaderListOraErvenyessegiIdovel : OrarendImportExportHelper.ImportHeaderListNapirendOraErvenyessegiIdovel;
|
||||
orarendImportFileUploadCo.ImportData = ImportExportHelper.GetImportDataFromExcel(orarendImportExportFileUploadModel.ImportFile.InputStream, importHeaderList, out fileErrorResultList);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case (int)OrarendImportTipusEnum.AscImport:
|
||||
orarendImportExportFileUploadModel.OraErvenyessegVege = orarendImportFileUploadCo.OraErvenyessegMaxDate;
|
||||
errorResult.AddRange(ValidateOraErvenyessegKezdete(orarendImportExportFileUploadModel, orarendImportFileUploadCo.OraErvenyessegMinDate, korabbiMessage, orarendImportFileUploadCo.OraErvenyessegMaxDate, kesobbiMessage));
|
||||
|
||||
if (!errorResult.Any())
|
||||
{
|
||||
try
|
||||
{
|
||||
orarendImportFileUploadCo.ImportData = AscImportExportHelper.GetOrarendImportDataFromAsc(orarendImportExportFileUploadModel.ImportFile.InputStream, orarendImportExportFileUploadModel.OraErvenyessegKezdete.ToConvertableDateString(), orarendImportExportFileUploadModel.OraErvenyessegVege.ToConvertableDateString());
|
||||
}
|
||||
catch (BlException e)
|
||||
{
|
||||
errorResult.Add(e.Message.Replace(Core.Constants.General.Sortores, $"{Core.Constants.General.Sortores}- "));
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
errorResult.AddRange(fileErrorResultList);
|
||||
|
||||
if (errorResult.Count > 0)
|
||||
{
|
||||
JsonResult errorJson = ThrowCustomError(errorResult);
|
||||
return errorJson;
|
||||
}
|
||||
|
||||
//NOTE: FeladatellatasiHelyId.Value nem lehet null a korábbi vizsgálatok miatt!
|
||||
orarendImportFileUploadCo.FeladatellatasiHelyId = orarendImportExportFileUploadModel.FeladatellatasiHelyId.Value;
|
||||
new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(orarendImportFileUploadCo, ClaimData.IsActivTanev);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
private List<string> ValidateOsszefuggoSzakmaiGyakorlatKezdeteVege(DateTime osszefuggoSzakmaiGyakorlatKezdetDatum, DateTime osszefuggoSzakmaiGyakorlatVegDatum)
|
||||
{
|
||||
var errorList = new List<string>();
|
||||
|
||||
var helper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
TanevCO tanevCo = helper.GetTanevInfo();
|
||||
DateTime tanevKezdoNapDate = tanevCo.KezdoNap;
|
||||
DateTime tanevUtolsoNapDate = tanevCo.UtolsoNap;
|
||||
|
||||
if (osszefuggoSzakmaiGyakorlatKezdetDatum > osszefuggoSzakmaiGyakorlatVegDatum)
|
||||
{
|
||||
errorList.Add($@"{ImportExportOrarendResource.AzOsszefuggoSzakmaiGyakorlatKezdeteNemLehetKesobbiDatumMintAVege} {ImportExportOrarendResource.EztABeallitastANyilvantartasMenuTestreszabasMenupontjabanAzEnaploKorlatozasainakBeallitasanalModosithatja}");
|
||||
}
|
||||
else if (tanevKezdoNapDate > osszefuggoSzakmaiGyakorlatKezdetDatum || tanevUtolsoNapDate < osszefuggoSzakmaiGyakorlatVegDatum)
|
||||
{
|
||||
errorList.Add($@"{ImportExportOrarendResource.AzOsszefuggoSzakmaiGyakorlatKezdoEsVegDatumanakATanevElsoTanitasiNapjaEsATanevUtolsoNapjaKozeKellEsnie}");
|
||||
}
|
||||
|
||||
return errorList;
|
||||
}
|
||||
|
||||
private static List<string> ValidateOraErvenyessegKezdete(OrarendImportExportFileUploadModel orarendImportExportFileUploadModel, DateTime oraErvenyessegMinDate, string korabbiMessage, DateTime oraErvenyessegMaxDate, string kesobbiMessage)
|
||||
{
|
||||
var errorList = new List<string>();
|
||||
|
||||
if (orarendImportExportFileUploadModel.OraErvenyessegKezdete == null)
|
||||
{
|
||||
errorList.Add(ImportExportOrarendResource.RequiredOrarendErvenyessegenekKezdete);
|
||||
}
|
||||
else if (orarendImportExportFileUploadModel.OraErvenyessegKezdete < oraErvenyessegMinDate)
|
||||
{
|
||||
errorList.Add(string.Format(ImportExportCommonResource.InvalidKorabbiDatum, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete, orarendImportExportFileUploadModel.OraErvenyessegKezdete.Value.ToString(Core.Constants.ToStringPattern.HungarianDate), korabbiMessage.ToLowerInvariant(), oraErvenyessegMinDate.ToString(Core.Constants.ToStringPattern.HungarianDate)));
|
||||
}
|
||||
else if (orarendImportExportFileUploadModel.OraErvenyessegKezdete > oraErvenyessegMaxDate)
|
||||
{
|
||||
errorList.Add(string.Format(ImportExportCommonResource.InvalidKesobbiDatum, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete, orarendImportExportFileUploadModel.OraErvenyessegKezdete.Value.ToString(Core.Constants.ToStringPattern.HungarianDate), kesobbiMessage.ToLowerInvariant(), oraErvenyessegMaxDate.ToString(Core.Constants.ToStringPattern.HungarianDate)));
|
||||
}
|
||||
|
||||
return errorList;
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
SessionConnectionType sessionConnectionType = ConnectionTypeExtensions.GetSessionConnectionType();
|
||||
OrarendImportCo importCo = new OrarendImportExportHelper(sessionConnectionType).ImportCo;
|
||||
List<TantargyItemCo> tantargyCoList = new TantargyHelper(sessionConnectionType).GetTantargyCoList();
|
||||
List<OsztalyItemCo> osztalyCoList = new OsztalyHelper(sessionConnectionType).GetOsztalyCoList();
|
||||
List<CsoportItemCo> csoportCoList = new CsoportHelper(sessionConnectionType).GetCsoportCoList();
|
||||
List<TantargyfelosztasItemCo> tantargyfelosztasCoList = new TantargyFelosztasHelper(sessionConnectionType).GetTantargyfelosztasCoList();
|
||||
List<TeremItemCo> teremCoList = new TeremHelper(sessionConnectionType).GetTeremCoList(isImportValidation:true);
|
||||
List<OrarendItemCo> orarendCoList = new OrarendHelper(sessionConnectionType).GetOrarendCoList().Where(x => x.IsTanoranKivuliFoglalkozas == importCo.IsNapirendImport).ToList();
|
||||
|
||||
bool isTtfImport = importCo.IsTtfImport;
|
||||
var importInfoModel = new OrarendImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetTantargyImportInfoSummary(importCo.TantargyImportJsonItemList, tantargyCoList),
|
||||
GetOsztalyImportInfoSummary(importCo.OsztalyImportJsonItemList, osztalyCoList),
|
||||
GetCsoportImportInfoSummary(importCo.CsoportImportJsonItemList, csoportCoList),
|
||||
GetTantargyfelosztasImportInfoSummary(importCo, tantargyfelosztasCoList, isTtfImport),
|
||||
GetTeremImportInfoSummary(importCo.TeremImportJsonItemList, teremCoList),
|
||||
GetOrarendImportInfoSummary(importCo, orarendCoList)
|
||||
}
|
||||
},
|
||||
TantargyImportItemList = new TantargyImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTantargyImportItemModelList(importCo.TantargyImportJsonItemList, tantargyCoList)
|
||||
},
|
||||
OsztalyImportItemList = new OsztalyImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetOsztalyImportItemModelList(importCo.OsztalyImportJsonItemList, osztalyCoList)
|
||||
},
|
||||
CsoportImportItemList = new CsoportImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetCsoportImportItemModelList(importCo.CsoportImportJsonItemList, csoportCoList)
|
||||
},
|
||||
TantargyfelosztasImportItemList = new TantargyfelosztasImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTantargyfelosztasImportItemModelList(importCo, tantargyfelosztasCoList, isTtfImport)
|
||||
},
|
||||
TeremImportItemList = new TeremImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTeremImportItemModelList(importCo.TeremImportJsonItemList, teremCoList)
|
||||
},
|
||||
MainImportItemList = new OrarendImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetOrarendImportItemModelList(importCo, orarendCoList)
|
||||
},
|
||||
NemImportalhatoItemList = new OrarendImportNemImportalhatoItemListModel
|
||||
{
|
||||
NemImportalhatoItemModelList = GetNemImportalhatoItemModelList(importCo.NemImportalhatoItemList),
|
||||
OrarendImportTipus = importCo.OrarendImportTipus,
|
||||
IsNapirendImport = importCo.IsNapirendImport
|
||||
}
|
||||
};
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetTantargyfelosztasImportInfoSummary(OrarendImportCo importCo, List<TantargyfelosztasItemCo> tantargyfelosztasCoList, bool isTtfImport)
|
||||
{
|
||||
List<TantargyfelosztasImportJsonItemCo> importJsonItemList = importCo.TantargyfelosztasImportJsonItemList;
|
||||
|
||||
string insertRowCount = "-";
|
||||
string deleteRowCount = "-";
|
||||
string updateRowCount = "-";
|
||||
string unchangedRowCount = tantargyfelosztasCoList.Count.ToString();
|
||||
if (isTtfImport)
|
||||
{
|
||||
insertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0";
|
||||
deleteRowCount = importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.DeleteAndInsert ? tantargyfelosztasCoList.Count(x => x.Importalt).ToString() : "0";
|
||||
if (importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.DeleteAndInsert)
|
||||
{
|
||||
unchangedRowCount = tantargyfelosztasCoList.Count(x => !x.Importalt).ToString();
|
||||
}
|
||||
updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update).ToString() ?? "-";
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportOrarendResource.Tantargyfelosztas,
|
||||
InsertRowCount = insertRowCount,
|
||||
UpdateRowCount = updateRowCount,
|
||||
DeleteRowCount = deleteRowCount,
|
||||
UnchangedRowCount = unchangedRowCount,
|
||||
InvalidRowCount = "-"
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetTeremImportInfoSummary(List<TeremImportJsonItemCo> importJsonItemList, List<TeremItemCo> teremCoList)
|
||||
{
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportOrarendResource.Terem,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = "-",
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = teremCoList.Count.ToString(),
|
||||
InvalidRowCount = "-"
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private ImportInfoSummaryModel GetOrarendImportInfoSummary(OrarendImportCo importCo, List<OrarendItemCo> coList)
|
||||
{
|
||||
List<OrarendImportJsonItemCo> importJsonItemList = importCo.MainImportJsonItemList;
|
||||
int updateRowCount = 0;
|
||||
int deleteRowCount = 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.OrarendImportMuvelet)
|
||||
{
|
||||
case (int)OrarendImportMuveletEnum.UpdateAndInsert:
|
||||
//NOTE: A korábban elvégzett műveletek miatt a importCo.OrarendiOraLezarasDateTime nem lehet null!
|
||||
updateRowCount = coList.Count(x => (x.OraErvenyessegVege == null ||
|
||||
x.OraErvenyessegVege.Value.Date > importCo.OrarendiOraLezarasDateTime.Value) &&
|
||||
x.OraErvenyessegVege != x.OraErvenyessegKezdete &&
|
||||
x.OraErvenyessegKezdete < importCo.OrarendiOraLezarasDateTime);
|
||||
|
||||
deleteRowCount = coList.Count(x => x.Importalt &&
|
||||
x.OraErvenyessegVege != x.OraErvenyessegKezdete &&
|
||||
x.OraErvenyessegKezdete >= importCo.OrarendiOraLezarasDateTime);
|
||||
unchangedRowCount = coList.Count - (updateRowCount + deleteRowCount);
|
||||
break;
|
||||
|
||||
case (int)OrarendImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)OrarendImportMuveletEnum.DeleteAndInsert:
|
||||
deleteRowCount = coList.Count(x => x.Importalt && x.OraErvenyessegVege != x.OraErvenyessegKezdete);
|
||||
unchangedRowCount = coList.Count - deleteRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportOrarendResource.Orarend,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = deleteRowCount.ToString(),
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = importCo.NemImportalhatoItemList.Count.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private List<TantargyfelosztasImportItemModel> GetTantargyfelosztasImportItemModelList(OrarendImportCo importCo, List<TantargyfelosztasItemCo> coList, bool isTtfImport)
|
||||
{
|
||||
var importItemModelList = new List<TantargyfelosztasImportItemModel>();
|
||||
List<TantargyfelosztasImportJsonItemCo> importJsonItemList = importCo.TantargyfelosztasImportJsonItemList;
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (coList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<TantargyfelosztasImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (TantargyfelosztasImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TantargyfelosztasImportItemModel
|
||||
{
|
||||
Nev = importJsonItem.Nev ?? string.Empty,
|
||||
OsztalyCsoportNev = importJsonItem.OsztalyCsoportNev ?? string.Empty,
|
||||
TanarNev = importJsonItem.TanarNev,
|
||||
TantargyNev = importJsonItem.TantargyNev ?? string.Empty,
|
||||
Oraszam = importJsonItem.Oraszam,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TantargyfelosztasItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
var operation = isTtfImport && importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.DeleteAndInsert && co.Importalt ?
|
||||
(int)ImportItemOperationEnum.Delete :
|
||||
(int)ImportItemOperationEnum.Default;
|
||||
importItemModelList.Add(new TantargyfelosztasImportItemModel
|
||||
{
|
||||
Nev = co.Nev ?? string.Empty,
|
||||
OsztalyCsoportNev = co.OsztalyCsoportNev ?? string.Empty,
|
||||
TanarNev = co.TanarNev,
|
||||
TantargyNev = co.TantargyNev ?? string.Empty,
|
||||
Oraszam = co.Oraszam,
|
||||
Operation = operation
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Nev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<TeremImportItemModel> GetTeremImportItemModelList(List<TeremImportJsonItemCo> importJsonItemList, List<TeremItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<TeremImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (coList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<TeremImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (TeremImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TeremImportItemModel
|
||||
{
|
||||
Nev = importJsonItem.Nev,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TeremItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Nev).Contains(co.Nev))
|
||||
{
|
||||
importItemModelList.Add(new TeremImportItemModel
|
||||
{
|
||||
Nev = co.Nev,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Nev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<OrarendImportItemModel> GetOrarendImportItemModelList(OrarendImportCo importCo, List<OrarendItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<OrarendImportItemModel>();
|
||||
List<OrarendImportJsonItemCo> importJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (coList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<OrarendImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (OrarendImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new OrarendImportItemModel
|
||||
{
|
||||
HetirendTipusNev = importJsonItem.HetirendTipusNev,
|
||||
HetNapjaTipusNev = importJsonItem.HetNapjaTipusId.GetDisplayName<HetNapjaTipusEnum>(ClaimData.SelectedTanevID.Value),
|
||||
OraSorszam = importJsonItem.OraSorszam,
|
||||
OraKezdete = importJsonItem.OraKezdete,
|
||||
OraVege = importJsonItem.OraVege,
|
||||
OsztalyCsoportNev = importJsonItem.OsztalyCsoportNev,
|
||||
TantargyNev = importJsonItem.TantargyNev,
|
||||
TanarNev = importJsonItem.TanarNev,
|
||||
TeremNev = importJsonItem.TeremNev,
|
||||
OraErvenyessegKezdete = importJsonItem.OraErvenyessegKezdete,
|
||||
OraErvenyessegVege = importJsonItem.OraErvenyessegVege,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (OrarendItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
int operation;
|
||||
//Ha UpdateAndInsert van, de korábbi az óra érvényesség kezdete a lezárás dátumánál, akkor update-eljük(lezárjuk) az órarendi órákat.
|
||||
if (importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.UpdateAndInsert &&
|
||||
//NOTE: A korábban elvégzett műveletek miatt a orarendImportCo.OrarendiOraLezarasDateTime nem lehet null!
|
||||
(co.OraErvenyessegVege == null || co.OraErvenyessegVege.Value.Date > importCo.OrarendiOraLezarasDateTime.Value) &&
|
||||
co.OraErvenyessegVege != co.OraErvenyessegKezdete &&
|
||||
co.OraErvenyessegKezdete < importCo.OrarendiOraLezarasDateTime)
|
||||
{
|
||||
operation = (int)ImportItemOperationEnum.Update;
|
||||
}
|
||||
//Ha UpdateAndInsert van, de későbbi vagy egyenlő az óra érvényesség kezdete a lezárás dátumánál, akkor töröljük az importált órarendi órákat.
|
||||
else if (importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.UpdateAndInsert &&
|
||||
co.Importalt &&
|
||||
co.OraErvenyessegVege != co.OraErvenyessegKezdete &&
|
||||
co.OraErvenyessegKezdete >= importCo.OrarendiOraLezarasDateTime)
|
||||
{
|
||||
operation = (int)ImportItemOperationEnum.Delete;
|
||||
}
|
||||
//Ha DeleteAndInsert van, akkor töröljük az importált órarendi órákat.
|
||||
else if (importCo.OrarendImportMuvelet == (int)OrarendImportMuveletEnum.DeleteAndInsert &&
|
||||
co.Importalt &&
|
||||
co.OraErvenyessegVege != co.OraErvenyessegKezdete)
|
||||
{
|
||||
operation = (int)ImportItemOperationEnum.Delete;
|
||||
}
|
||||
//Különben "Nem történt változás"-t állítunk be
|
||||
else
|
||||
{
|
||||
operation = (int)ImportItemOperationEnum.Default;
|
||||
}
|
||||
|
||||
importItemModelList.Add(new OrarendImportItemModel
|
||||
{
|
||||
HetirendTipusNev = co.HetirendTipusNev,
|
||||
HetNapjaTipusNev = co.HetNapjaTipusId.GetDisplayName<HetNapjaTipusEnum>(ClaimData.SelectedTanevID.Value),
|
||||
OraSorszam = co.OraSorszam,
|
||||
OraKezdete = co.OraKezdete,
|
||||
OraVege = co.OraVege,
|
||||
OsztalyCsoportNev = co.OsztalyCsoportNev,
|
||||
TantargyNev = co.TantargyNev,
|
||||
TanarNev = co.TanarNev,
|
||||
TeremNev = co.TeremNev,
|
||||
OraErvenyessegKezdete = co.OraErvenyessegKezdete,
|
||||
//NOTE: Az OraErvenyessegVege 00:00-t tartalmaz, de aznap napközben még lehet óra, ezért a következő nap 00:00 időpont a jó és azt mentjük a db-be!
|
||||
// Ezért megjelenítéskor az eggyel korábbi napot jelenítjük meg!
|
||||
OraErvenyessegVege = co.OraErvenyessegVege?.AddDays(-1),
|
||||
Operation = operation
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.HetirendTipusNev)
|
||||
.ThenBy(x => x.HetNapjaTipusNev)
|
||||
.ThenBy(x => x.OraSorszam)
|
||||
.ThenBy(x => x.OraKezdete)
|
||||
.ThenBy(x => x.OraVege)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<OrarendImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<OrarendImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<OrarendImportNemImportalhatoItemModel>();
|
||||
foreach (OrarendImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new OrarendImportNemImportalhatoItemModel
|
||||
{
|
||||
OraErvenyessegKezdeteImportData = nemImportalhatoItem.OraErvenyessegKezdeteImportData,
|
||||
OraErvenyessegVegeImportData = nemImportalhatoItem.OraErvenyessegVegeImportData,
|
||||
HetirendImportData = nemImportalhatoItem.HetirendImportData,
|
||||
NapImportData = nemImportalhatoItem.NapImportData,
|
||||
OraImportData = nemImportalhatoItem.OraImportData,
|
||||
FoglalkozasKezdeteImportData = nemImportalhatoItem.FoglalkozasKezdeteImportData,
|
||||
FoglalkozasVegeImportData = nemImportalhatoItem.FoglalkozasVegeImportData,
|
||||
OsztalyNevImportData = nemImportalhatoItem.OsztalyNevImportData,
|
||||
CsoportNevImportData = nemImportalhatoItem.CsoportNevImportData,
|
||||
TantargyNevImportData = nemImportalhatoItem.TantargyNevImportData,
|
||||
TanarNevImportData = nemImportalhatoItem.TanarNevImportData,
|
||||
HelyisegImportData = nemImportalhatoItem.HelyisegImportData,
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList
|
||||
.OrderBy(x => x.HetirendImportData)
|
||||
.ThenBy(x => x.NapImportData)
|
||||
.ThenBy(x => x.OraImportData)
|
||||
.ThenBy(x => x.FoglalkozasKezdeteImportData)
|
||||
.ThenBy(x => x.FoglalkozasVegeImportData)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var helper = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
OrarendImportCo importCo = helper.ImportCo;
|
||||
helper.Import(new { ImportJson = importCo }, importCo.OrarendImportMuvelet, importCo.IsNapirendImport, importCo.OrarendiOraLezarasDateTime);
|
||||
|
||||
return Content(Url.Content(TovabbUrl));
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,246 @@
|
|||
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;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Core;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TanmenetImportExport;
|
||||
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.AktTanev, KretaClaimPackages.Tanar.ClaimValue)]
|
||||
public abstract class BaseTanmenetImportExportController : BaseImportExportController
|
||||
{
|
||||
#region Properties
|
||||
|
||||
public static string GridName => "TanmenetGrid";
|
||||
public static string GridRowTemplateName => "TanmenetGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "TanmenetImportExportHelper";
|
||||
|
||||
protected IKretaAuthorization Authorization { get; }
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public BaseTanmenetImportExportController(IUploadFileValidator uploadFileValidator, IKretaAuthorization authorization)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
Authorization = authorization ?? throw new ArgumentNullException(nameof(authorization));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
MemoryStream memoryStream = new TanmenetImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate();
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportTanmenetResource.ImportSablonFileName };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export(int? exportTantargyfelosztasId)
|
||||
{
|
||||
var errorResult = new List<string>();
|
||||
if (!exportTantargyfelosztasId.IsEntityId())
|
||||
{
|
||||
errorResult.Add(ImportExportTanmenetResource.InvalidFoglalkozas);
|
||||
}
|
||||
|
||||
if (errorResult.Count > 0)
|
||||
{
|
||||
return string.Join("<br />", errorResult);
|
||||
}
|
||||
|
||||
MemoryStream memoryStream = new TanmenetImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport(exportTantargyfelosztasId.Value);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new TanmenetImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
[NonAction]
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int? tantargyfelosztasId, bool isFromSzervezet)
|
||||
{
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
|
||||
var errorResult = new List<string>();
|
||||
|
||||
if (tantargyfelosztasId == null)
|
||||
{
|
||||
errorResult.Add(ImportExportTanmenetResource.InvalidFoglalkozas);
|
||||
}
|
||||
|
||||
Dictionary<int, string> importHeaderList = TanmenetImportExportHelper.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 TanmenetImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, tantargyfelosztasId.Value, isFromSzervezet);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
TanmenetImportCo importCo = new TanmenetImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
List<TanmenetItemCo> coList = new TanmenetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanmenetCoList(ClaimData.FelhasznaloId).Where(x => x.TantargyfelosztasId == importCo.Tantargyfelosztas.Id).ToList();
|
||||
|
||||
var importInfoModel = new TanmenetImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetImportInfoSummary(importCo, coList)
|
||||
}
|
||||
},
|
||||
MainImportItemList = new TanmenetImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetImportItemModelList(importCo, coList)
|
||||
},
|
||||
NemImportalhatoItemList = new TanmenetImportNemImportalhatoItemListModel
|
||||
{
|
||||
NemImportalhatoItemModelList = GetNemImportalhatoItemModelList(importCo.NemImportalhatoItemList)
|
||||
}
|
||||
};
|
||||
|
||||
var popUpModel = new PopUpModel(importInfoModel, $"~/Areas/ImportExport/Views/TanmenetImportExport/{ImportPreviewPopupName}.cshtml");
|
||||
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);
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetImportInfoSummary(TanmenetImportCo importCo, List<TanmenetItemCo> coList)
|
||||
{
|
||||
List<TanmenetImportJsonItemCo> mainImportJsonItemList = importCo.MainImportJsonItemList;
|
||||
int insertRowCount = mainImportJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert) ?? 0;
|
||||
int deleteRowCount = coList.Count;
|
||||
int invalidRowCount = importCo.NemImportalhatoItemList.Count;
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTanmenetResource.ImportDefaultSheetName,
|
||||
InsertRowCount = insertRowCount.ToString(),
|
||||
UpdateRowCount = "-",
|
||||
DeleteRowCount = deleteRowCount.ToString(),
|
||||
UnchangedRowCount = "-",
|
||||
InvalidRowCount = invalidRowCount.ToString()
|
||||
};
|
||||
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private List<TanmenetImportItemModel> GetImportItemModelList(TanmenetImportCo importCo, List<TanmenetItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<TanmenetImportItemModel>();
|
||||
List<TanmenetImportJsonItemCo> mainImportJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (mainImportJsonItemList == null)
|
||||
{
|
||||
if (!(coList.Count > 0))
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
mainImportJsonItemList = new List<TanmenetImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (TanmenetImportJsonItemCo importJsonItem in mainImportJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TanmenetImportItemModel
|
||||
{
|
||||
OraSorszam = importJsonItem.OraSorszam.ToString(),
|
||||
Tema = importJsonItem.Tema ?? string.Empty,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TanmenetItemCo co in coList)
|
||||
{
|
||||
if (!mainImportJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new TanmenetImportItemModel
|
||||
{
|
||||
OraSorszam = co.OraSorszam.ToString(),
|
||||
Tema = co.Tema ?? string.Empty,
|
||||
Operation = (int)ImportItemOperationEnum.Delete
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => int.Parse(x.OraSorszam)).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<TanmenetImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<TanmenetImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<TanmenetImportNemImportalhatoItemModel>();
|
||||
foreach (TanmenetImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new TanmenetImportNemImportalhatoItemModel
|
||||
{
|
||||
OraszamImportData = nemImportalhatoItem.OraszamImportData,
|
||||
TemaImportData = nemImportalhatoItem.TemaImportData,
|
||||
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.OraszamImportData).ToList();
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
protected ActionResult Import(string tovabbUrl)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var helper = new TanmenetImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
TanmenetImportCo importCo = helper.ImportCo;
|
||||
helper.Import(new { ImportJson = importCo }, importCo.ImportMuvelet, importCo.Tantargyfelosztas.TantargyId, importCo.Tantargyfelosztas.OsztalyCsoportId);
|
||||
|
||||
return Content(Url.Content(tovabbUrl));
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,196 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class BaseTantargyfelosztasImportExportController : BaseImportExportController
|
||||
{
|
||||
#region Public properties
|
||||
|
||||
public static string TantargyGridName => "TantargyGrid";
|
||||
public static string TantargyGridRowTemplateName => "TantargyGridRowTemplate";
|
||||
|
||||
public static string OsztalyGridName => "OsztalyGrid";
|
||||
public static string OsztalyGridRowTemplateName => "OsztalyGridRowTemplate";
|
||||
|
||||
public static string CsoportGridName => "CsoportGrid";
|
||||
public static string CsoportGridRowTemplateName => "CsoportGridRowTemplate";
|
||||
|
||||
public static string TantargyfelosztasGridName => "TantargyfelosztasGrid";
|
||||
public static string TantargyfelosztasGridRowTemplateName => "TantargyfelosztasGridRowTemplate";
|
||||
|
||||
#endregion Public properties
|
||||
|
||||
#region Import
|
||||
|
||||
protected static ImportInfoSummaryModel GetTantargyImportInfoSummary(List<TantargyImportJsonItemCo> importJsonItemList, List<TantargyItemCo> coList)
|
||||
{
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTantargyfelosztasResource.Tantargy,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = "-",
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = coList.Count.ToString(),
|
||||
InvalidRowCount = "-"
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected static ImportInfoSummaryModel GetOsztalyImportInfoSummary(List<OsztalyImportJsonItemCo> importJsonItemList, List<OsztalyItemCo> coList)
|
||||
{
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTantargyfelosztasResource.Osztaly,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = "-",
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = coList.Count.ToString(),
|
||||
InvalidRowCount = "-"
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected static ImportInfoSummaryModel GetCsoportImportInfoSummary(List<CsoportImportJsonItemCo> importJsonItemList, List<CsoportItemCo> coList)
|
||||
{
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTantargyfelosztasResource.Csoport,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = "-",
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = coList.Count.ToString(),
|
||||
InvalidRowCount = "-"
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected List<TantargyImportItemModel> GetTantargyImportItemModelList(List<TantargyImportJsonItemCo> importJsonItemList, List<TantargyItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<TantargyImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (coList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<TantargyImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (TantargyImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TantargyImportItemModel
|
||||
{
|
||||
Nev = importJsonItem.Nev,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TantargyItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Nev).Contains(co.Nev))
|
||||
{
|
||||
importItemModelList.Add(new TantargyImportItemModel
|
||||
{
|
||||
Nev = co.Nev,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Nev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
protected List<OsztalyImportItemModel> GetOsztalyImportItemModelList(List<OsztalyImportJsonItemCo> importJsonItemList, List<OsztalyItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<OsztalyImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (coList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<OsztalyImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (OsztalyImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new OsztalyImportItemModel
|
||||
{
|
||||
Nev = importJsonItem.OsztalyCsoportNev,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (OsztalyItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.OsztalyCsoportNev).Contains(co.Nev))
|
||||
{
|
||||
importItemModelList.Add(new OsztalyImportItemModel
|
||||
{
|
||||
Nev = co.Nev,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Nev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
protected List<CsoportImportItemModel> GetCsoportImportItemModelList(List<CsoportImportJsonItemCo> importJsonItemList, List<CsoportItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<CsoportImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (coList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<CsoportImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (CsoportImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new CsoportImportItemModel
|
||||
{
|
||||
Nev = importJsonItem.OsztalyCsoportNev,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (CsoportItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.OsztalyCsoportNev).Contains(co.Nev))
|
||||
{
|
||||
importItemModelList.Add(new CsoportImportItemModel
|
||||
{
|
||||
Nev = co.Nev,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Nev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,282 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Mime;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.EszkozImportExport;
|
||||
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, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class EszkozImportExportController : BaseImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"~/Intezmeny/Eszkozok";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string GridName => "EszkozGrid";
|
||||
public static string GridRowTemplateName => "EszkozGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "EszkozImportExportHelper";
|
||||
|
||||
public static string ConrtollerName => "EszkozImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public EszkozImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
if (!ClaimData.EszkozKezelesEnabled)
|
||||
{
|
||||
return new RedirectResult("/");
|
||||
}
|
||||
|
||||
var model = new EszkozImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions
|
||||
};
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
//TODO: CommonExportLogic-ba kiszervezni ezeket...
|
||||
MemoryStream memoryStream = new EszkozImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate();
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportEszkozResource.ImportSablonFileName };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public ActionResult Export()
|
||||
{
|
||||
using (var ms = new EszkozImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport())
|
||||
{
|
||||
return new FileContentResult(ms.ToArray(), MediaTypeNames.Application.Octet)
|
||||
{
|
||||
FileDownloadName = HttpUtility.UrlEncode(ImportExportEszkozResource.ExportFileName, Encoding.UTF8),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new EszkozImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int importMuvelet)
|
||||
{
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
|
||||
var errorResult = new List<string>();
|
||||
|
||||
Dictionary<int, string> importHeaderList = EszkozImportExportHelper.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 EszkozImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, importMuvelet);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
EszkozImportCo importCo = new EszkozImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
IList<EszkozItemCo> coList = importCo.EszkozCoList;
|
||||
|
||||
var importInfoModel = new EszkozImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetImportInfoSummary(importCo, coList)
|
||||
}
|
||||
},
|
||||
MainImportItemList = new EszkozImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetImportItemModelList(importCo, coList)
|
||||
},
|
||||
NemImportalhatoItemList = new EszkozImportNemImportalhatoItemListModel
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetImportInfoSummary(EszkozImportCo importCo, IList<EszkozItemCo> coList)
|
||||
{
|
||||
List<EszkozImportJsonItemCo> 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;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.DeleteAndInsert:
|
||||
unchangedRowCount = coList.Count(x => !x.Importalt);
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
|
||||
default:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
}
|
||||
|
||||
int invalidRowCount = importCo.NemImportalhatoItemList.Count;
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportEszkozResource.ImportDefaultSheetName,
|
||||
InsertRowCount = insertRowCount.ToString(),
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = deleteRowCount.ToString(),
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = invalidRowCount.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private List<EszkozImportItemModel> GetImportItemModelList(EszkozImportCo importCo, IList<EszkozItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<EszkozImportItemModel>();
|
||||
List<EszkozImportJsonItemCo> mainImportJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (mainImportJsonItemList == null)
|
||||
{
|
||||
if (!(coList.Count > 0))
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
mainImportJsonItemList = new List<EszkozImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (EszkozImportJsonItemCo importJsonItem in mainImportJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new EszkozImportItemModel
|
||||
{
|
||||
Nev = importJsonItem.Nev,
|
||||
TeremNev = importJsonItem.TeremNev,
|
||||
TipusNev = importJsonItem.TipusId.GetDisplayName<EszkozTipusEnum>(ClaimData.SelectedTanevID.Value),
|
||||
Darabszam = importJsonItem.Darabszam.ToString(),
|
||||
FelelosNev = importJsonItem.FelelosNev ?? string.Empty,
|
||||
LeltariSzam = importJsonItem.LeltariSzam ?? string.Empty,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (EszkozItemCo co in coList)
|
||||
{
|
||||
if (!mainImportJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new EszkozImportItemModel
|
||||
{
|
||||
Nev = co.Nev,
|
||||
TeremNev = co.TeremNev,
|
||||
TipusNev = co.TipusNev,
|
||||
Darabszam = co.Darabszam.ToString(),
|
||||
FelelosNev = co.FelelosNev ?? string.Empty,
|
||||
LeltariSzam = co.LeltariSzam ?? string.Empty,
|
||||
Operation = importCo.ImportMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && co.Importalt ? (int)ImportItemOperationEnum.Delete : (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Nev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<EszkozImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<EszkozImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<EszkozImportNemImportalhatoItemModel>();
|
||||
foreach (EszkozImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new EszkozImportNemImportalhatoItemModel
|
||||
{
|
||||
EszkozNeveImportData = nemImportalhatoItem.EszkozNeveImportData,
|
||||
HelyisegImportData = nemImportalhatoItem.HelyisegImportData,
|
||||
EszkozTipusImportData = nemImportalhatoItem.EszkozTipusImportData,
|
||||
DarabszamImportData = nemImportalhatoItem.DarabszamImportData,
|
||||
EszkozSzemelyiFeleloseImportData = nemImportalhatoItem.EszkozSzemelyiFeleloseImportData,
|
||||
LeltariSzamImportData = nemImportalhatoItem.LeltariSzamImportData,
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.EszkozNeveImportData).ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var sessionConnectionType = ConnectionTypeExtensions.GetSessionConnectionType();
|
||||
EszkozImportCo importCo = new EszkozImportExportHelper(sessionConnectionType).ImportCo;
|
||||
new ImportExportHelper(sessionConnectionType).Import(new { ImportJson = importCo }, importCo.ImportMuvelet);
|
||||
return Content(Url.Content(TovabbUrl));
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,401 @@
|
|||
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.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Core;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.FelhasznaloBelepesImportExport;
|
||||
using Kreta.Web.Areas.Tanulo.Helper;
|
||||
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.IsSzirIntezmeny.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class FelhasznaloBelepesImportExportController : BaseImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrlAlkalmazott = @"/Alkalmazott/Alkalmazott";
|
||||
private const string TovabbUrlTanulo = @"/Tanulo/Tanulo";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string GridName => "FelhasznaloGrid";
|
||||
public static string GridRowTemplateName => "FelhasznaloGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "FelhasznaloImportExportHelper";
|
||||
|
||||
public static string ConrtollerName => "FelhasznaloBelepesImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public FelhasznaloBelepesImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
#region Index
|
||||
|
||||
public ActionResult AlkalmazottIndex()
|
||||
{
|
||||
var model = new FelhasznaloBelepesImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
||||
FelhasznaloBelepesExportImportTipusEnum = FelhasznaloBelepesExportImportTipusEnum.Alkalmazott,
|
||||
ExportFelhasznaloBelepesExportImportTipusEnum = FelhasznaloBelepesExportImportTipusEnum.Alkalmazott,
|
||||
NemImportalhatoSorokFileName = ImportExportFelhasznaloBelepesResource.NemImportalhatoSorokFileNameAlkalmazott,
|
||||
ExportFileName = ImportExportFelhasznaloBelepesResource.ExportFileNameAlkalmazott,
|
||||
ImportalasText = ImportExportFelhasznaloBelepesResource.ImportalasAlkalmazott,
|
||||
TovabbText = ImportExportFelhasznaloBelepesResource.TovabbAlkamazott
|
||||
};
|
||||
return View("Index", model);
|
||||
}
|
||||
|
||||
public ActionResult TanuloIndex()
|
||||
{
|
||||
var model = new FelhasznaloBelepesImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
||||
FelhasznaloBelepesExportImportTipusEnum = FelhasznaloBelepesExportImportTipusEnum.Tanulo,
|
||||
ExportFelhasznaloBelepesExportImportTipusEnum = FelhasznaloBelepesExportImportTipusEnum.Tanulo,
|
||||
NemImportalhatoSorokFileName = ImportExportFelhasznaloBelepesResource.NemImportalhatoSorokFileNameTanulo,
|
||||
ExportFileName = ImportExportFelhasznaloBelepesResource.ExportFileNameTanulo,
|
||||
ImportalasText = ImportExportFelhasznaloBelepesResource.ImportalasTanulo,
|
||||
TovabbText = ImportExportFelhasznaloBelepesResource.TovabbTanulo
|
||||
};
|
||||
return View("Index", model);
|
||||
}
|
||||
|
||||
public ActionResult GondviseloIndex()
|
||||
{
|
||||
var model = new FelhasznaloBelepesImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
||||
FelhasznaloBelepesExportImportTipusEnum = FelhasznaloBelepesExportImportTipusEnum.Gondviselo,
|
||||
ExportFelhasznaloBelepesExportImportTipusEnum = FelhasznaloBelepesExportImportTipusEnum.Gondviselo,
|
||||
NemImportalhatoSorokFileName = ImportExportFelhasznaloBelepesResource.NemImportalhatoSorokFileNameGondviselo,
|
||||
ExportFileName = ImportExportFelhasznaloBelepesResource.ExportFileNameGondviselo,
|
||||
ImportalasText = ImportExportFelhasznaloBelepesResource.ImportalasGondviselo,
|
||||
TovabbText = ImportExportFelhasznaloBelepesResource.TovabbTanulo,
|
||||
IsEmailKuldes = true,
|
||||
IsGeneraltFileLetoltes = true
|
||||
};
|
||||
return View("Index", model);
|
||||
}
|
||||
|
||||
#endregion Index
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate(FelhasznaloBelepesExportImportTipusEnum tipusEnum)
|
||||
{
|
||||
MemoryStream memoryStream = new FelhasznaloBelepesImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate(tipusEnum);
|
||||
string fileDownloadName;
|
||||
switch (tipusEnum)
|
||||
{
|
||||
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
|
||||
fileDownloadName = ImportExportFelhasznaloBelepesResource.ImportSablonFileNameAlkalmazott;
|
||||
break;
|
||||
|
||||
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
|
||||
fileDownloadName = ImportExportFelhasznaloBelepesResource.ImportSablonFileNameTanulo;
|
||||
break;
|
||||
|
||||
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
|
||||
fileDownloadName = ImportExportFelhasznaloBelepesResource.ImportSablonFileNameGondviselo;
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new Exception();
|
||||
}
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = fileDownloadName };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export(FelhasznaloBelepesExportImportTipusEnum exportFelhasznaloBelepesExportImportTipusEnum)
|
||||
{
|
||||
MemoryStream memoryStream = new FelhasznaloBelepesImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport(exportFelhasznaloBelepesExportImportTipusEnum);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport(FelhasznaloBelepesExportImportTipusEnum felhasznaloBelepesExportImportTipusEnum)
|
||||
{
|
||||
MemoryStream memoryStream = new FelhasznaloBelepesImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport(felhasznaloBelepesExportImportTipusEnum);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int importMuvelet, FelhasznaloBelepesExportImportTipusEnum felhasznaloBelepesExportImportTipusEnum, bool isGeneraltFileLetoltes = false, bool isEmailKuldes = false)
|
||||
{
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
|
||||
var errorResult = new List<string>();
|
||||
|
||||
var helper = new FelhasznaloBelepesImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
Dictionary<int, string> importHeaderList = helper.DetailsByEnum(felhasznaloBelepesExportImportTipusEnum).ExcelHeaderList;
|
||||
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;
|
||||
}
|
||||
|
||||
var anotherYearId = Kreta.Web.Classes.Utils.GetAnotherYearId();
|
||||
helper.SetImportCo(importData, importMuvelet, felhasznaloBelepesExportImportTipusEnum, isGeneraltFileLetoltes, isEmailKuldes, anotherYearId, ClaimData.IsKovTanev, ClaimData.IsSzakkepzoIntezmeny);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
FelhasznaloBelepesImportCo importCo = new FelhasznaloBelepesImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
|
||||
var containerMainGridTabName = GetImportName(importCo.TipusEnum);
|
||||
var importInfoModel = new FelhasznaloBelepesImportInfoModel
|
||||
{
|
||||
ContainerMainGridTabName = containerMainGridTabName,
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetImportInfoSummary(importCo)
|
||||
}
|
||||
},
|
||||
MainImportItemList = new FelhasznaloBelepesImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetImportItemModelList(importCo),
|
||||
TipusEnum = importCo.TipusEnum
|
||||
},
|
||||
NemImportalhatoItemList = new FelhasznaloBelepesImportNemImportalhatoItemListModel
|
||||
{
|
||||
NemImportalhatoItemModelList = GetNemImportalhatoItemModelList(importCo.NemImportalhatoItemList),
|
||||
TipusEnum = importCo.TipusEnum
|
||||
}
|
||||
};
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetImportInfoSummary(FelhasznaloBelepesImportCo importCo)
|
||||
{
|
||||
var coList = importCo.FelhasznaloBelepesCoList.Where(x => x.TipusEnum == importCo.TipusEnum).ToList();
|
||||
List<FelhasznaloBelepesImportJsonItemCo> 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;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.DeleteAndInsert:
|
||||
unchangedRowCount = coList.Count(x => !x.Importalt);
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount - insertRowCount;
|
||||
break;
|
||||
|
||||
default:
|
||||
unchangedRowCount = coList.Count - insertRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
int invalidRowCount = importCo.NemImportalhatoItemList.Count;
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = GetImportName(importCo.TipusEnum),
|
||||
InsertRowCount = insertRowCount.ToString(),
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = deleteRowCount.ToString(),
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = invalidRowCount.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private List<FelhasznaloBelepesImportItemModel> GetImportItemModelList(FelhasznaloBelepesImportCo importCo)
|
||||
{
|
||||
List<FelhasznaloBelepesItemCo> coList = importCo.FelhasznaloBelepesCoList.Where(x => x.TipusEnum == importCo.TipusEnum).ToList();
|
||||
var importItemModelList = new List<FelhasznaloBelepesImportItemModel>();
|
||||
List<FelhasznaloBelepesImportJsonItemCo> mainImportJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (mainImportJsonItemList == null)
|
||||
{
|
||||
if (!(coList.Count > 0))
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
mainImportJsonItemList = new List<FelhasznaloBelepesImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (FelhasznaloBelepesImportJsonItemCo importJsonItem in mainImportJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new FelhasznaloBelepesImportItemModel
|
||||
{
|
||||
Elotag = importJsonItem.Elotag ?? string.Empty,
|
||||
Vezeteknev = importJsonItem.Vezeteknev,
|
||||
Keresztnev = importJsonItem.Keresztnev,
|
||||
OktatasiAzonosito = importJsonItem.OktatasiAzonosito,
|
||||
SzuletesiIdo = importJsonItem.SzuletesiIdo,
|
||||
GondviseloNev = importJsonItem.GondviseloNev ?? string.Empty,
|
||||
GondviseloRokonsagiFokNev = importJsonItem.GondviseloRokonsagiFokId.HasValue ? importJsonItem.GondviseloRokonsagiFokId.GetDisplayName<Enums.RokonsagiFokEnum>(ClaimData.SelectedTanevID.Value) : string.Empty,
|
||||
BejelentkezesiNev = importJsonItem.BejelentkezesiNev ?? string.Empty,
|
||||
Jelszo = importJsonItem.JelszoPlainText,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (FelhasznaloBelepesItemCo co in coList)
|
||||
{
|
||||
if (co.Id.IsEntityId() && !mainImportJsonItemList.Select(x => x.Id).Contains(co.Id) ||
|
||||
!co.Id.IsEntityId() && !mainImportJsonItemList.Any(x =>
|
||||
x.AlkalmazottId == co.AlkalmazottId &&
|
||||
x.TanuloId == co.TanuloId &&
|
||||
x.GondviseloId == co.GondviseloId))
|
||||
{
|
||||
importItemModelList.Add(new FelhasznaloBelepesImportItemModel
|
||||
{
|
||||
Elotag = co.FelhasznaloElotag ?? string.Empty,
|
||||
Vezeteknev = co.FelhasznaloVezeteknev,
|
||||
Keresztnev = co.FelhasznaloKeresztnev,
|
||||
OktatasiAzonosito = co.FelhasznaloOktatasiAzonosito,
|
||||
SzuletesiIdo = co.FelhasznaloSzuletesiIdo,
|
||||
GondviseloNev = co.GondviseloNev ?? string.Empty,
|
||||
GondviseloRokonsagiFokNev = co.GondviseloRokonsagiFokNev ?? string.Empty,
|
||||
BejelentkezesiNev = co.BejelentkezesiNev ?? string.Empty,
|
||||
Jelszo = co.HasJelszo ? new string('*', Core.Constants.General.JelszoMinimumKarakterekSzama) : string.Empty,
|
||||
Operation = importCo.ImportMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && co.Importalt ? (int)ImportItemOperationEnum.Delete : (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Vezeteknev).ThenBy(x => x.Keresztnev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<FelhasznaloBelepesImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<FelhasznaloBelepesImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<FelhasznaloBelepesImportNemImportalhatoItemModel>();
|
||||
foreach (FelhasznaloBelepesImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new FelhasznaloBelepesImportNemImportalhatoItemModel
|
||||
{
|
||||
NeveImportData = nemImportalhatoItem.NeveImportData,
|
||||
OktatasiAzonositoImportData = nemImportalhatoItem.OktatasiAzonositoImportData,
|
||||
SzuletesiDatumaImportData = nemImportalhatoItem.SzuletesiDatumaImportData,
|
||||
GondviseloNeveImportData = nemImportalhatoItem.GondviseloNeveImportData,
|
||||
GondviseloRokonsagiFokaImportData = nemImportalhatoItem.GondviseloRokonsagiFokaImportData,
|
||||
FelhasznaloNeveImportData = nemImportalhatoItem.FelhasznaloNeveImportData,
|
||||
JelszavaImportData = nemImportalhatoItem.JelszavaImportData,
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.NeveImportData).ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
FelhasznaloBelepesImportCo importCo = new FelhasznaloBelepesImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
new ImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).Import(new { ImportJson = importCo }, importCo.ImportMuvelet);
|
||||
|
||||
string tovabbUrl = importCo.TipusEnum == FelhasznaloBelepesExportImportTipusEnum.Alkalmazott ? TovabbUrlAlkalmazott : TovabbUrlTanulo;
|
||||
|
||||
if (importCo.TipusEnum == FelhasznaloBelepesExportImportTipusEnum.Gondviselo &&
|
||||
(importCo.IsEmailKuldes || importCo.IsGeneraltFileLetoltes))
|
||||
{
|
||||
var hozzaferesGeneralasaHelper = new HozzaferesGeneralasaHelper(ConnectionTypeExtensions.GetOrganizationConnectionType());
|
||||
|
||||
var belepesiAdatokListCo = new BelepesiAdatokListCO();
|
||||
var file = string.Empty;
|
||||
foreach (FelhasznaloBelepesImportJsonItemCo belepesAdatCo in importCo.MainImportJsonItemList)
|
||||
{
|
||||
hozzaferesGeneralasaHelper.UjGondviseloBelepesiAdatokPdfGeneralasEsEmailKuldes(belepesAdatCo.TanuloId.Value, belepesAdatCo.GondviseloId.Value, importCo.IsEmailKuldes, belepesiAdatokListCo, belepesAdatCo.BejelentkezesiNev, belepesAdatCo.JelszoPlainText);
|
||||
}
|
||||
|
||||
if (importCo.IsGeneraltFileLetoltes)
|
||||
{
|
||||
var nevmodel = new NyomtatvanyNevGeneralasModel { TanevID = ClaimData.AktivTanevID };
|
||||
var fileName = CommonExtensions.NevGeneralas("BelepesiAdatok", nevmodel);
|
||||
|
||||
file = BelepesiAdatokPdfLogic.GetFileLetoltesUrl(hozzaferesGeneralasaHelper.ConvertBelepesiAdatokCoToDataset(belepesiAdatokListCo, false), Core.Constants.FrxNames.HozzatartozoJelszoAdatok, fileName);
|
||||
}
|
||||
|
||||
return Json(new { belepesiAdatokListCo.EmailErrors, file, tovabbUrl });
|
||||
}
|
||||
|
||||
return Json(new { tovabbUrl });
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
|
||||
private static string GetImportName(FelhasznaloBelepesExportImportTipusEnum tipusEnum)
|
||||
{
|
||||
string containerMainGridTabName;
|
||||
switch (tipusEnum)
|
||||
{
|
||||
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
|
||||
containerMainGridTabName = ImportExportFelhasznaloBelepesResource.AlkalmazottFelhasznaloBelepesiAdatok;
|
||||
break;
|
||||
|
||||
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
|
||||
containerMainGridTabName = ImportExportFelhasznaloBelepesResource.TanuloFelhasznaloBelepesiAdatok;
|
||||
break;
|
||||
|
||||
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
|
||||
containerMainGridTabName = ImportExportFelhasznaloBelepesResource.GondviseloFelhasznaloBelepesiAdatok;
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
return containerMainGridTabName;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,594 @@
|
|||
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.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.GondviseloImportExport;
|
||||
using Kreta.Web.Areas.Tanulo.Helper;
|
||||
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)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class GondviseloImportExportController : BaseImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"/Tanulo/Tanulo";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string TelefonszamGridName => "TelefonszamGrid";
|
||||
public static string TelefonszamGridRowTemplateName => "TelefonszamGridRowTemplate";
|
||||
|
||||
public static string EmailGridName => "EmailGrid";
|
||||
public static string EmailGridRowTemplateName => "EmailGridRowTemplate";
|
||||
|
||||
public static string CimGridName => "CimGrid";
|
||||
public static string CimGridRowTemplateName => "CimGridRowTemplate";
|
||||
|
||||
public static string GridName => "GondviseloGrid";
|
||||
public static string GridRowTemplateName => "GondviseloGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "GondviseloImportExportHelper";
|
||||
|
||||
public static string ConrtollerName => "GondviseloImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public GondviseloImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
var model = new GondviseloImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
||||
BelepesiAdatokKikuldeseEmailben = ClaimData.IsActivTanev ? true : (bool?)null,
|
||||
FajlLetolteseHozzaferesGeneralasaUtan = ClaimData.IsActivTanev ? true : (bool?)null,
|
||||
};
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
MemoryStream memoryStream = new GondviseloImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate();
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportGondviseloResource.ImportSablonFileName };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export()
|
||||
{
|
||||
MemoryStream memoryStream = new GondviseloImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new GondviseloImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int importMuvelet, bool fajlLetolteseHozzaferesGeneralasaUtan, bool belepesiAdatokKikuldeseEmailben)
|
||||
{
|
||||
if (!ClaimData.IsActivTanev)
|
||||
{
|
||||
fajlLetolteseHozzaferesGeneralasaUtan = false;
|
||||
belepesiAdatokKikuldeseEmailben = false;
|
||||
}
|
||||
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
|
||||
var errorResult = new List<string>();
|
||||
|
||||
Dictionary<int, string> importHeaderList = GondviseloImportExportHelper.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 GondviseloImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, importMuvelet, fajlLetolteseHozzaferesGeneralasaUtan, belepesiAdatokKikuldeseEmailben, ClaimData.IsSzirIntezmeny);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
GondviseloImportCo importCo = new GondviseloImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
List<GondviseloItemCo> coList = importCo.GondviseloCoList;
|
||||
|
||||
var importInfoModel = new GondviseloImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetEmailImportInfoSummary(importCo, coList.Select(x => x.EmailList.FirstOrDefault()).Where(x => x != null).ToList()),
|
||||
GetTelefonImportInfoSummary(importCo, coList.Select(x => x.TelefonList.FirstOrDefault()).Where(x => x != null).ToList()),
|
||||
GetCimImportInfoSummary(importCo, coList.Select(x => x.AllandoLakcim).Where(x => x != null).ToList()),
|
||||
GetGondviseloImportInfoSummary(importCo, coList)
|
||||
}
|
||||
},
|
||||
TelefonImportItemList = new TelefonImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTelefonImportItemModelList(importCo.TelefonGondviseloImportJsonItemList, coList)
|
||||
},
|
||||
EmailImportItemList = new EmailImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetEmailImportItemModelList(importCo.EmailGondviseloImportJsonItemList, coList)
|
||||
},
|
||||
CimImportItemList = new CimImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetCimImportItemModelList(importCo.CimGondviseloImportJsonItemList, coList)
|
||||
},
|
||||
MainImportItemList = new GondviseloImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetGondviseloImportItemModelList(importCo, coList)
|
||||
},
|
||||
NemImportalhatoItemList = new GondviseloImportNemImportalhatoItemListModel
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
protected static ImportInfoSummaryModel GetTelefonImportInfoSummary(GondviseloImportCo importCo, List<TelefonItemCo> coList)
|
||||
{
|
||||
List<TelefonGondviseloImportJsonItemCo> importJsonItemList = importCo.TelefonGondviseloImportJsonItemList;
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportGondviseloResource.Telefon,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = importCo.NemImportalhatoItemList.Count.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected static ImportInfoSummaryModel GetEmailImportInfoSummary(GondviseloImportCo importCo, List<EmailItemCo> coList)
|
||||
{
|
||||
List<EmailGondviseloImportJsonItemCo> importJsonItemList = importCo.EmailGondviseloImportJsonItemList;
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportGondviseloResource.Email,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = importCo.NemImportalhatoItemList.Count.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected static ImportInfoSummaryModel GetCimImportInfoSummary(GondviseloImportCo importCo, List<CimItemCo> coList)
|
||||
{
|
||||
List<CimGondviseloImportJsonItemCo> importJsonItemList = importCo.CimGondviseloImportJsonItemList;
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportGondviseloResource.Cim,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = importCo.NemImportalhatoItemList.Count.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetGondviseloImportInfoSummary(GondviseloImportCo importCo, IList<GondviseloItemCo> coList)
|
||||
{
|
||||
List<GondviseloImportJsonItemCo> importJsonItemList = importCo.MainImportJsonItemList;
|
||||
int insertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert) ?? 0;
|
||||
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
int invalidRowCount = importCo.NemImportalhatoItemList.Count;
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportGondviseloResource.ImportDefaultSheetName,
|
||||
InsertRowCount = insertRowCount.ToString(),
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = invalidRowCount.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected List<TelefonImportItemModel> GetTelefonImportItemModelList(List<TelefonGondviseloImportJsonItemCo> importJsonItemList, List<GondviseloItemCo> gondviseloItemCoList)
|
||||
{
|
||||
var importItemModelList = new List<TelefonImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (gondviseloItemCoList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<TelefonGondviseloImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (TelefonGondviseloImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TelefonImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = importJsonItem.FelhasznaloElotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = importJsonItem.FelhasznaloVezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = importJsonItem.FelhasznaloKeresztnev ?? string.Empty,
|
||||
GondviseloNev = importJsonItem.Nev ?? string.Empty,
|
||||
GondviseloRokonsagiFokNev = importJsonItem.RokonsagiFokNev ?? string.Empty,
|
||||
TipusNev = importJsonItem.TipusNev ?? string.Empty,
|
||||
Telefonszam = importJsonItem.Telefonszam ?? string.Empty,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TelefonItemCo co in gondviseloItemCoList.Select(x => x.TelefonList.FirstOrDefault()).Where(x => x != null))
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new TelefonImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = co.FelhasznaloElotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = co.FelhasznaloVezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = co.FelhasznaloKeresztnev ?? string.Empty,
|
||||
GondviseloNev = co.GondviseloNev ?? string.Empty,
|
||||
GondviseloRokonsagiFokNev = co.GondviseloRokonsagiFokNev ?? string.Empty,
|
||||
TipusNev = co.TipusNev ?? string.Empty,
|
||||
Telefonszam = co.Telefonszam ?? string.Empty,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.FelhasznaloVezeteknev)
|
||||
.ThenBy(x => x.FelhasznaloKeresztnev)
|
||||
.ThenBy(x => x.GondviseloNev)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
protected List<EmailImportItemModel> GetEmailImportItemModelList(List<EmailGondviseloImportJsonItemCo> importJsonItemList, List<GondviseloItemCo> gondviseloItemCoList)
|
||||
{
|
||||
var importItemModelList = new List<EmailImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (gondviseloItemCoList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<EmailGondviseloImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (EmailGondviseloImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new EmailImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = importJsonItem.FelhasznaloElotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = importJsonItem.FelhasznaloVezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = importJsonItem.FelhasznaloKeresztnev ?? string.Empty,
|
||||
GondviseloNev = importJsonItem.Nev ?? string.Empty,
|
||||
GondviseloRokonsagiFokNev = importJsonItem.RokonsagiFokNev ?? string.Empty,
|
||||
TipusNev = importJsonItem.TipusNev ?? string.Empty,
|
||||
EmailCim = importJsonItem.EmailCim ?? string.Empty,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (EmailItemCo co in gondviseloItemCoList.Select(x => x.EmailList.FirstOrDefault()).Where(x => x != null))
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new EmailImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = co.FelhasznaloElotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = co.FelhasznaloVezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = co.FelhasznaloKeresztnev ?? string.Empty,
|
||||
GondviseloNev = co.GondviseloNev ?? string.Empty,
|
||||
GondviseloRokonsagiFokNev = co.GondviseloRokonsagiFokNev ?? string.Empty,
|
||||
TipusNev = co.TipusNev ?? string.Empty,
|
||||
EmailCim = co.EmailCim ?? string.Empty,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.FelhasznaloVezeteknev)
|
||||
.ThenBy(x => x.FelhasznaloKeresztnev)
|
||||
.ThenBy(x => x.GondviseloNev)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
protected List<CimImportItemModel> GetCimImportItemModelList(List<CimGondviseloImportJsonItemCo> importJsonItemList, List<GondviseloItemCo> gondviseloItemCoList)
|
||||
{
|
||||
var importItemModelList = new List<CimImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (gondviseloItemCoList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<CimGondviseloImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (CimGondviseloImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new CimImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = importJsonItem.FelhasznaloElotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = importJsonItem.FelhasznaloVezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = importJsonItem.FelhasznaloKeresztnev ?? string.Empty,
|
||||
GondviseloNev = importJsonItem.Nev ?? string.Empty,
|
||||
GondviseloRokonsagiFokNev = importJsonItem.RokonsagiFokNev ?? string.Empty,
|
||||
TipusNev = importJsonItem.TipusNev ?? string.Empty,
|
||||
Ajto = importJsonItem.Ajto ?? string.Empty,
|
||||
Emelet = importJsonItem.Emelet ?? string.Empty,
|
||||
Hazszam = importJsonItem.Hazszam ?? string.Empty,
|
||||
Iranyitoszam = importJsonItem.Iranyitoszam ?? string.Empty,
|
||||
Kozterulet = importJsonItem.Kozterulet ?? string.Empty,
|
||||
KozteruletJellegNev = importJsonItem.KozterulegJellegeNev ?? string.Empty,
|
||||
Telepules = importJsonItem.Helyseg ?? string.Empty,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (CimItemCo co in gondviseloItemCoList.Select(x => x.AllandoLakcim).Where(x => x != null))
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new CimImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = Kreta.BusinessLogic.Extensions.NameExtensions.CleanElotag(co.FelhasznaloElotag) ?? string.Empty,
|
||||
FelhasznaloVezeteknev = co.FelhasznaloVezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = co.FelhasznaloKeresztnev ?? string.Empty,
|
||||
GondviseloNev = Kreta.BusinessLogic.Extensions.NameExtensions.GetNevSorrendben("F", co.GondviseloNevElotag, co.GondviseloVezeteknev, co.GondviseloKeresztnev) ?? string.Empty,
|
||||
GondviseloRokonsagiFokNev = co.GondviseloRokonsagiFokNev ?? string.Empty,
|
||||
TipusNev = co.TipusNev ?? string.Empty,
|
||||
Ajto = co.Ajto ?? string.Empty,
|
||||
Emelet = co.Emelet ?? string.Empty,
|
||||
Hazszam = co.Hazszam ?? string.Empty,
|
||||
Iranyitoszam = co.Iranyitoszam ?? string.Empty,
|
||||
Kozterulet = co.Kozterulet ?? string.Empty,
|
||||
KozteruletJellegNev = co.KozteruletJellegNev ?? string.Empty,
|
||||
Telepules = co.Telepules ?? string.Empty,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.FelhasznaloVezeteknev)
|
||||
.ThenBy(x => x.FelhasznaloKeresztnev)
|
||||
.ThenBy(x => x.GondviseloNev)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
protected List<GondviseloImportItemModel> GetGondviseloImportItemModelList(GondviseloImportCo importCo, List<GondviseloItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<GondviseloImportItemModel>();
|
||||
List<GondviseloImportJsonItemCo> importJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (!coList.Any())
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<GondviseloImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (GondviseloImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new GondviseloImportItemModel
|
||||
{
|
||||
TanuloElotag = importJsonItem.FelhasznaloElotag ?? string.Empty,
|
||||
TanuloVezeteknev = importJsonItem.FelhasznaloVezeteknev ?? string.Empty,
|
||||
TanuloKeresztnev = importJsonItem.FelhasznaloKeresztnev ?? string.Empty,
|
||||
TanuloOktatasiAzonosito = importJsonItem.FelhasznaloOktatasiAzonosito ?? string.Empty,
|
||||
GondviseloElotag = importJsonItem.Elotag ?? string.Empty,
|
||||
GondviseloVezeteknev = importJsonItem.Vezeteknev ?? string.Empty,
|
||||
GondviseloKeresztnev = importJsonItem.Keresztnev ?? string.Empty,
|
||||
RokonsagiFokNev = importJsonItem.RokonsagiFokNev ?? string.Empty,
|
||||
TorvenyesKepviselo = SDAConvert.ToBooleanFromTF(importJsonItem.IsTorvenyesKepviselo).GetDisplayName() ?? string.Empty,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (GondviseloItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
var operation = (int)ImportItemOperationEnum.Default;
|
||||
importItemModelList.Add(new GondviseloImportItemModel
|
||||
{
|
||||
TanuloElotag = co.FelhasznaloElotag ?? string.Empty,
|
||||
TanuloVezeteknev = co.FelhasznaloVezeteknev ?? string.Empty,
|
||||
TanuloKeresztnev = co.FelhasznaloKeresztnev ?? string.Empty,
|
||||
TanuloOktatasiAzonosito = co.FelhasznaloOktatasiAzonosito ?? string.Empty,
|
||||
GondviseloElotag = co.Elotag ?? string.Empty,
|
||||
GondviseloVezeteknev = co.VezetekNev ?? string.Empty,
|
||||
GondviseloKeresztnev = co.KeresztNev ?? string.Empty,
|
||||
RokonsagiFokNev = co.RokonsagiFokNev ?? string.Empty,
|
||||
TorvenyesKepviselo = co.IsTorvenyesKepviselo.GetDisplayName(),
|
||||
Operation = operation
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.TanuloVezeteknev)
|
||||
.ThenBy(x => x.TanuloKeresztnev)
|
||||
.ThenBy(x => x.GondviseloVezeteknev)
|
||||
.ThenBy(x => x.GondviseloKeresztnev)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<GondviseloImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<GondviseloImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<GondviseloImportNemImportalhatoItemModel>();
|
||||
foreach (GondviseloImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new GondviseloImportNemImportalhatoItemModel
|
||||
{
|
||||
TanuloNeveImportData = nemImportalhatoItem.TanuloNeveImportData,
|
||||
TanuloOktatasiAzonositoImportData = nemImportalhatoItem.TanuloOktatasiAzonositoImportData,
|
||||
GondviseloNevElotagImportData = nemImportalhatoItem.GondviseloNevElotagImportData,
|
||||
GondviseloVezeteknevImportData = nemImportalhatoItem.GondviseloVezeteknevImportData,
|
||||
GondviseloKeresztnevImportData = nemImportalhatoItem.GondviseloKeresztnevImportData,
|
||||
GondviseloRokonsagiFokaImportData = nemImportalhatoItem.GondviseloRokonsagiFokaImportData,
|
||||
GondviseloTelefonszamaImportData = nemImportalhatoItem.GondviseloTelefonszamaImportData,
|
||||
GondviseloEmailCimeImportData = nemImportalhatoItem.GondviseloEmailCimeImportData,
|
||||
CimAjtoImportData = nemImportalhatoItem.CimAjtoImportData,
|
||||
EmailTipusImportData = nemImportalhatoItem.EmailTipusImportData,
|
||||
CimEmeletImportData = nemImportalhatoItem.CimEmeletImportData,
|
||||
CimHazszamImportData = nemImportalhatoItem.CimHazszamImportData,
|
||||
CimHelysegNevImportData = nemImportalhatoItem.CimHelysegNevImportData,
|
||||
CimIranyitoszamImportData = nemImportalhatoItem.CimIranyitoszamImportData,
|
||||
CimKozteruletJellegeImportData = nemImportalhatoItem.CimKozteruletJellegeImportData,
|
||||
CimKozteruletNevImportData = nemImportalhatoItem.CimKozteruletNevImportData,
|
||||
CimOrszagImportData = nemImportalhatoItem.CimOrszagImportData,
|
||||
CimTipusaImportData = nemImportalhatoItem.CimTipusaImportData,
|
||||
TelefonTipusImportData = nemImportalhatoItem.TelefonTipusImportData,
|
||||
TorvenyesKepviseloImportData = nemImportalhatoItem.TorvenyesKepviseloImportData,
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.TanuloNeveImportData).ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var helper = new GondviseloImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
GondviseloImportCo importCo = helper.ImportCo;
|
||||
BelepesiAdatokListCO belepesiAdatokListCo = helper.Import(new { ImportJson = importCo }, importCo.IsEmailKuldes, ClaimData.IsActivTanev, ClaimData.KovTanevID.HasValue, ClaimData.IsSzirIntezmeny);
|
||||
|
||||
string file = string.Empty;
|
||||
if (importCo.IsGeneraltFileLetoltes)
|
||||
{
|
||||
var nevmodel = new NyomtatvanyNevGeneralasModel { TanevID = ClaimData.AktivTanevID };
|
||||
var fileName = CommonExtensions.NevGeneralas("BelepesiAdatok", nevmodel);
|
||||
|
||||
file = BelepesiAdatokPdfLogic.GetFileLetoltesUrl(new HozzaferesGeneralasaHelper(ConnectionTypeExtensions.GetOrganizationConnectionType()).ConvertBelepesiAdatokCoToDataset(belepesiAdatokListCo, false), Core.Constants.FrxNames.HozzatartozoJelszoAdatok, fileName);
|
||||
}
|
||||
|
||||
return Json(new { belepesiAdatokListCo.EmailErrors, file, tovabbUrl = TovabbUrl });
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.OrarendImportExport;
|
||||
using Kreta.Web.Classes;
|
||||
using Kreta.Web.Helpers;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class NapirendErvenyessegiIdovelImportExportController : BaseOrarendImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private static readonly OrarendImportFileUploadCo DefaultOrarendImportFileUploadCo = new OrarendImportFileUploadCo
|
||||
{
|
||||
OrarendImportTipus = (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport,
|
||||
IsNapirendImport = true,
|
||||
WorksheetName = ImportExportOrarendResource.ImportDefaultSheetNameNapirendErvenyessegiIdovel,
|
||||
ExcelHeaderList = OrarendImportExportHelper.ImportHeaderListNapirendOraErvenyessegiIdovel
|
||||
};
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string ConrtollerName => "NapirendErvenyessegiIdovelImportExport";
|
||||
public static string DisplayName => ClaimData.IsSelectedTanev20_21OrLater ? ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatImportalasa20_21 : ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatImportalasa;
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public NapirendErvenyessegiIdovelImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
OrarendImportExportModel model = GetImportExportModel();
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
MemoryStream memoryStream = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate(DefaultOrarendImportFileUploadCo, ClaimData.IsSzakkepzoIntezmeny);
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportOrarendResource.ImportSablonFileNameNapirendErvenyessegiIdovel };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export(DateTime? orarendExportKezdete, DateTime? orarendExportVege, bool isIdoszakonKivuliElemekMegjelenitese)
|
||||
{
|
||||
string result = GetExport(DefaultOrarendImportFileUploadCo, orarendExportKezdete, orarendExportVege, isIdoszakonKivuliElemekMegjelenitese, false);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport(DefaultOrarendImportFileUploadCo);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, OrarendImportExportFileUploadModel orarendImportExportFileUploadModel)
|
||||
{
|
||||
orarendImportExportFileUploadModel.ImportFile = importFile;
|
||||
orarendImportExportFileUploadModel.OrarendImportTipus = (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport;
|
||||
orarendImportExportFileUploadModel.IsNapirendImport = true;
|
||||
return UploadFile(orarendImportExportFileUploadModel);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.OrarendImportExport;
|
||||
using Kreta.Web.Classes;
|
||||
using Kreta.Web.Helpers;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class NapirendImportExportController : BaseOrarendImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private static readonly OrarendImportFileUploadCo DefaultOrarendImportFileUploadCo = new OrarendImportFileUploadCo
|
||||
{
|
||||
OrarendImportTipus = (int)OrarendImportTipusEnum.Import,
|
||||
IsNapirendImport = true,
|
||||
WorksheetName = ImportExportOrarendResource.ImportDefaultSheetNameNapirend,
|
||||
ExcelHeaderList = OrarendImportExportHelper.ImportHeaderListNapirend
|
||||
};
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string ConrtollerName => "NapirendImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public NapirendImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
OrarendImportExportModel model = GetImportExportModel();
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
MemoryStream memoryStream = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate(DefaultOrarendImportFileUploadCo, ClaimData.IsSzakkepzoIntezmeny);
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportOrarendResource.ImportSablonFileNameNapirend };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export(DateTime? orarendExportKezdete, DateTime? orarendExportVege, bool isIdoszakonKivuliElemekMegjelenitese)
|
||||
{
|
||||
string result = GetExport(DefaultOrarendImportFileUploadCo, orarendExportKezdete, orarendExportVege, isIdoszakonKivuliElemekMegjelenitese, false);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport(DefaultOrarendImportFileUploadCo);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, OrarendImportExportFileUploadModel orarendImportExportFileUploadModel)
|
||||
{
|
||||
orarendImportExportFileUploadModel.ImportFile = importFile;
|
||||
orarendImportExportFileUploadModel.OrarendImportTipus = (int)OrarendImportTipusEnum.Import;
|
||||
orarendImportExportFileUploadModel.IsNapirendImport = true;
|
||||
return UploadFile(orarendImportExportFileUploadModel);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,335 @@
|
|||
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.Client.Eugyintezes.Configuration;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.Beiratkozas.Models;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.NebuloImportExport;
|
||||
using Kreta.Web.Classes;
|
||||
using Kreta.Web.Helpers;
|
||||
using Kreta.Web.Helpers.Error;
|
||||
using Kreta.Web.Models.EditorTemplates;
|
||||
using Kreta.Web.Security;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class NebuloImportExportController : BaseImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private readonly IEugyintezesClientConfiguration _eugyintezesClientConfiguration;
|
||||
|
||||
private const string TovabbUrl = @"~/Beiratkozas/Nebulo";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string GridName => "NebuloGrid";
|
||||
public static string GridRowTemplateName => "NebuloGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "NebuloImportExportHelper";
|
||||
|
||||
public static string ConrtollerName => "NebuloImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public NebuloImportExportController(IUploadFileValidator uploadFileValidator, IEugyintezesClientConfiguration eugyintezesClientConfiguration)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
this._eugyintezesClientConfiguration = eugyintezesClientConfiguration ?? throw new ArgumentNullException(nameof(eugyintezesClientConfiguration));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
var model = new NebuloImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions
|
||||
};
|
||||
|
||||
if (ClaimData.IsBeiratkozasVeglegesitve)
|
||||
{
|
||||
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
|
||||
}
|
||||
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Export
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new NebuloImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int importMuvelet)
|
||||
{
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
|
||||
var errorResult = new List<string>();
|
||||
|
||||
List<List<string>> importData = ImportExportHelper.GetImportDataFromExcel(importFile.InputStream, NebuloImportExportHelper.ImportHeaderList, out List<string> fileErrorResultList);
|
||||
errorResult.AddRange(fileErrorResultList);
|
||||
|
||||
if (errorResult.Count > 0)
|
||||
{
|
||||
JsonResult errorJson = ThrowCustomError(errorResult);
|
||||
return errorJson;
|
||||
}
|
||||
|
||||
new NebuloImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, importMuvelet);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
NebuloImportCo importCo = new NebuloImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
List<NebuloCo> coList = importCo.NebuloCoList;
|
||||
|
||||
var importInfoModel = new NebuloImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetImportInfoSummary(importCo, coList)
|
||||
}
|
||||
},
|
||||
MainImportItemList = new NebuloImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetImportItemModelList(importCo, coList)
|
||||
},
|
||||
NemImportalhatoItemList = new NebuloImportNemImportalhatoItemListModel
|
||||
{
|
||||
NemImportalhatoItemModelList = GetNemImportalhatoItemModelList(importCo.NemImportalhatoItemList),
|
||||
NebuloImportTipus = importCo.NebuloImportTipus
|
||||
}
|
||||
};
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetImportInfoSummary(NebuloImportCo importCo, List<NebuloCo> coList)
|
||||
{
|
||||
List<NebuloImportJsonItemCo> 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;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.DeleteAndInsert:
|
||||
unchangedRowCount = coList.Count(x => !x.Importalt);
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
|
||||
default:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
}
|
||||
|
||||
int invalidRowCount = importCo.NemImportalhatoItemList.Count;
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportNebuloResource.ImportDefaultSheetName,
|
||||
InsertRowCount = insertRowCount.ToString(),
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = deleteRowCount.ToString(),
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = invalidRowCount.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private List<NebuloImportItemModel> GetImportItemModelList(NebuloImportCo importCo, List<NebuloCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<NebuloImportItemModel>();
|
||||
List<NebuloImportJsonItemCo> mainImportJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (mainImportJsonItemList == null)
|
||||
{
|
||||
if (!(coList.Count > 0))
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
mainImportJsonItemList = new List<NebuloImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (NebuloImportJsonItemCo importJsonItem in mainImportJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new NebuloImportItemModel
|
||||
{
|
||||
SzuletesiVezeteknev = importJsonItem.SzuletesiVezeteknev,
|
||||
SzuletesiKeresztnev = importJsonItem.SzuletesiKeresztnev,
|
||||
AnyjaVezeteknev = importJsonItem.AnyjaVezeteknev,
|
||||
AnyjaKeresztnev = importJsonItem.AnyjaKeresztnev,
|
||||
SzuletesiHely = importJsonItem.SzuletesiHely,
|
||||
SzuletesiIdo = importJsonItem.SzuletesiIdo,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (NebuloCo co in coList)
|
||||
{
|
||||
if (!mainImportJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new NebuloImportItemModel
|
||||
{
|
||||
SzuletesiVezeteknev = co.SzuletesiVezeteknev,
|
||||
SzuletesiKeresztnev = co.SzuletesiKeresztnev,
|
||||
AnyjaVezeteknev = co.AnyjaVezetekneve,
|
||||
AnyjaKeresztnev = co.AnyjaKeresztneve,
|
||||
SzuletesiHely = co.SzuletesiHely,
|
||||
SzuletesiIdo = co.SzuletesiIdo,
|
||||
Operation = importCo.ImportMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && co.Importalt ? (int)ImportItemOperationEnum.Delete : (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.SzuletesiVezeteknev).ThenBy(x => x.SzuletesiKeresztnev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<NebuloImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<NebuloImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<NebuloImportNemImportalhatoItemModel>();
|
||||
foreach (NebuloImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new NebuloImportNemImportalhatoItemModel
|
||||
{
|
||||
FenntartoAzonositoImportData = nemImportalhatoItem.FenntartoAzonositoImportData,
|
||||
FenntartoMegnevezeseImportData = nemImportalhatoItem.FenntartoMegnevezeseImportData,
|
||||
ErvenyesKotelezettsegTipusaImportData = nemImportalhatoItem.ErvenyesKotelezettsegTipusaImportData,
|
||||
OktatasiAzonositoSzamImportData = nemImportalhatoItem.OktatasiAzonositoSzamImportData,
|
||||
ViseltElonevImportData = nemImportalhatoItem.ViseltElonevImportData,
|
||||
ViseltVezeteknevImportData = nemImportalhatoItem.ViseltVezeteknevImportData,
|
||||
ViseltKeresztnevImportData = nemImportalhatoItem.ViseltKeresztnevImportData,
|
||||
ViseltNevNevsorrendImportData = nemImportalhatoItem.ViseltNevNevsorrendImportData,
|
||||
SzuletesiElonevImportData = nemImportalhatoItem.SzuletesiElonevImportData,
|
||||
SzuletesiVezeteknevImportData = nemImportalhatoItem.SzuletesiVezeteknevImportData,
|
||||
SzuletesiKeresztnevImportData = nemImportalhatoItem.SzuletesiKeresztnevImportData,
|
||||
SzuletesiNevNevsorrendImportData = nemImportalhatoItem.SzuletesiNevNevsorrendImportData,
|
||||
AnyjaNeveElonevImportData = nemImportalhatoItem.AnyjaNeveElonevImportData,
|
||||
AnyjaNeveVezeteknevImportData = nemImportalhatoItem.AnyjaNeveVezeteknevImportData,
|
||||
AnyjaNeveKeresztnevImportData = nemImportalhatoItem.AnyjaNeveKeresztnevImportData,
|
||||
AnyjaNeveNevsorrendImportData = nemImportalhatoItem.AnyjaNeveNevsorrendImportData,
|
||||
SzuletesiIdoImportData = nemImportalhatoItem.SzuletesiIdoImportData,
|
||||
SzuletesiTelepulesImportData = nemImportalhatoItem.SzuletesiTelepulesImportData,
|
||||
TartozkodasiCimOrszagImportData = nemImportalhatoItem.TartozkodasiCimOrszagImportData,
|
||||
TartozkodasiCimTelepulesImportData = nemImportalhatoItem.TartozkodasiCimTelepulesImportData,
|
||||
TartozkodasiCimIranyitoszamImportData = nemImportalhatoItem.TartozkodasiCimIranyitoszamImportData,
|
||||
TartozkodasiCimKozteruletNevImportData = nemImportalhatoItem.TartozkodasiCimKozteruletNevImportData,
|
||||
TartozkodasiCimKozteruletJellegImportData = nemImportalhatoItem.TartozkodasiCimKozteruletJellegImportData,
|
||||
TartozkodasiCimHazszamImportData = nemImportalhatoItem.TartozkodasiCimHazszamImportData,
|
||||
TartozkodasiCimPontositasImportData = nemImportalhatoItem.TartozkodasiCimPontositasImportData,
|
||||
AllandoLakcimOrszagImportData = nemImportalhatoItem.AllandoLakcimOrszagImportData,
|
||||
AllandoLakcimTelepulesImportData = nemImportalhatoItem.AllandoLakcimTelepulesImportData,
|
||||
AllandoLakcimIranyitoszamImportData = nemImportalhatoItem.AllandoLakcimIranyitoszamImportData,
|
||||
AllandoLakcimKozteruletNevImportData = nemImportalhatoItem.AllandoLakcimKozteruletNevImportData,
|
||||
AllandoLakcimKozteruletJellegImportData = nemImportalhatoItem.AllandoLakcimKozteruletJellegImportData,
|
||||
AllandoLakcimHazszamImportData = nemImportalhatoItem.AllandoLakcimHazszamImportData,
|
||||
AllandoLakcimPontositasImportData = nemImportalhatoItem.AllandoLakcimPontositasImportData,
|
||||
ErvenyesKotelezettsegKezdeteImportData = nemImportalhatoItem.ErvenyesKotelezettsegKezdeteImportData,
|
||||
ErvenyesKotelezettsegVegeImportData = nemImportalhatoItem.ErvenyesKotelezettsegVegeImportData,
|
||||
HalasztasJogcimeImportData = nemImportalhatoItem.HalasztasJogcimeImportData,
|
||||
HalasztastEngedelyezoSzervTipusaImportData = nemImportalhatoItem.HalasztastEngedelyezoSzervTipusaImportData,
|
||||
HalasztastEngedelyezoSzervMegnevezeseImportData = nemImportalhatoItem.HalasztastEngedelyezoSzervMegnevezeseImportData,
|
||||
HalasztasHatalyaVegdatumaImportData = nemImportalhatoItem.HalasztasHatalyaVegdatumaImportData,
|
||||
KotelezettseghezKapcsolodoAktivVagySzuneteloJogviszonyaImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoAktivVagySzuneteloJogviszonyaImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonyTipusaImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonyTipusaImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonyStatuszaImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonyStatuszaImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonyIntezmenyOmAzonositojaImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonyIntezmenyOmAzonositojaImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonyIntezmenyNeveImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonyIntezmenyNeveImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonyUgyviteliHelySorszamaImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonyUgyviteliHelySorszamaImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyAzonositojaImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyAzonositojaImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyNeveImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyNeveImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyCimeImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyCimeImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonyKezdeteImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonyKezdeteImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonySzunetelesenekKezdeteImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonySzunetelesenekKezdeteImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonySzunetelesenekVarhatoVegeImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonySzunetelesenekVarhatoVegeImportData,
|
||||
KotelezettseghezKapcsolodoJogviszonySzunetelesJogcimeImportData = nemImportalhatoItem.KotelezettseghezKapcsolodoJogviszonySzunetelesJogcimeImportData,
|
||||
KotelezettsegetAzIlletekesFenntartohozTartozoIntezmenybenTeljesitiImportData = nemImportalhatoItem.KotelezettsegetAzIlletekesFenntartohozTartozoIntezmenybenTeljesitiImportData,
|
||||
AzUtolsoKotelezettsegetTeljesitoJogviszonyVegdatumaImportData = nemImportalhatoItem.AzUtolsoKotelezettsegetTeljesitoJogviszonyVegdatumaImportData,
|
||||
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.SzuletesiVezeteknevImportData).ThenBy(x => x.SzuletesiKeresztnevImportData).ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
NebuloImportCo importCo = new NebuloImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
|
||||
var obj = new List<object>();
|
||||
foreach (var item in importCo.MainImportItemList)
|
||||
{
|
||||
obj.Add(new { OktatasiAzonosito = item.OktatasiAzonositoSzama, SzuletesiDatum = item.SzuletesiIdo, Statusz = (int)FelvetelStatuszaTipusEnum.NemJelentMeg, IsKorzetes = true });
|
||||
}
|
||||
|
||||
var jsonData = JsonConvert.SerializeObject(obj);
|
||||
var eUgyResult = NebuloWebLogic.NebuloInsert(_eugyintezesClientConfiguration, ClaimData.IntezmenyAzonosito, jsonData);
|
||||
|
||||
var respModel = JsonConvert.DeserializeObject<List<NebuloEUgySaveResponseModel>>(eUgyResult.Content);
|
||||
if (respModel.Where(x => x.MuveletStatusz != "Sikeres").ToList().Count > 0)
|
||||
{
|
||||
string errorMsg = string.Empty;
|
||||
foreach (var item in respModel.Where(x => x.MuveletStatusz != "Sikeres").ToList())
|
||||
{
|
||||
var nebulo = importCo.MainImportItemList.FirstOrDefault(x => x.OktatasiAzonositoSzama == item.OktatasiAzonosito);
|
||||
if (nebulo != null)
|
||||
{
|
||||
errorMsg += $"</br><strong>{nebulo.OktatasiAzonositoSzama} - {nebulo.Vezeteknev} {nebulo.Keresztnev}<strong>";
|
||||
}
|
||||
}
|
||||
|
||||
throw new StatusError(HttpStatusCode.BadRequest, string.Format(BeiratkozasResource.ImportNebuloErrorMsg, errorMsg));
|
||||
}
|
||||
|
||||
new ImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).Import(new { ImportJson = importCo }, importCo.ImportMuvelet);
|
||||
return Content(Url.Content(TovabbUrl));
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Core;
|
||||
using Kreta.Core.Exceptions;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.OrarendImportExport;
|
||||
using Kreta.Web.Classes;
|
||||
using Kreta.Web.Controllers;
|
||||
using Kreta.Web.Helpers;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class OrarendAscExcelConvertController : BaseOrarendImportExportController
|
||||
{
|
||||
#region Properties
|
||||
|
||||
public static string ConrtollerName => "OrarendAscExcelConvert";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public OrarendAscExcelConvertController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
OrarendImportExportModel model = GetImportExportModel();
|
||||
return View(model);
|
||||
}
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile)
|
||||
{
|
||||
UploadFileValidator.ValidateFile(importFile, UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes, UploadFileValidator.Configuration.AscImportAllowedFileExtensions);
|
||||
|
||||
try
|
||||
{
|
||||
string fileName = importFile.FileName.Substring(0, importFile.FileName.LastIndexOf('.'));
|
||||
MemoryStream memoryStream;
|
||||
try
|
||||
{
|
||||
memoryStream = new AscImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ConvertAscXmlToExcel(importFile.InputStream);
|
||||
}
|
||||
catch (BlException e)
|
||||
{
|
||||
return Json(new { ErrorString = e.Message });
|
||||
}
|
||||
|
||||
Guid guid = Cache.Add(memoryStream);
|
||||
string fileString = Url.Action(nameof(CacheController.DownloadFile), nameof(CacheController).Replace("Controller", ""), new { guid, fileName = $"{fileName}.xlsx", contentType = Core.Constants.ContentTypes.Xlsx, area = "" });
|
||||
return Json(new { FileString = fileString });
|
||||
}
|
||||
catch
|
||||
{
|
||||
return Json(new { ErrorString = ErrorResource.HibaTortentAFajlFeltolteseKozben });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.OrarendImportExport;
|
||||
using Kreta.Web.Classes;
|
||||
using Kreta.Web.Helpers;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class OrarendAscImportExportController : BaseOrarendImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private static readonly OrarendImportFileUploadCo DefaultOrarendImportFileUploadCo = new OrarendImportFileUploadCo
|
||||
{
|
||||
OrarendImportTipus = (int)OrarendImportTipusEnum.Import,
|
||||
IsNapirendImport = false,
|
||||
WorksheetName = ImportExportOrarendResource.ImportDefaultSheetNameOrarend,
|
||||
ExcelHeaderList = OrarendImportExportHelper.ImportHeaderList
|
||||
};
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string ConrtollerName => "OrarendAscImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public OrarendAscImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
OrarendImportExportModel model = GetImportExportModel();
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Export
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport(DefaultOrarendImportFileUploadCo);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, OrarendImportExportFileUploadModel orarendImportExportFileUploadModel)
|
||||
{
|
||||
orarendImportExportFileUploadModel.ImportFile = importFile;
|
||||
orarendImportExportFileUploadModel.OrarendImportTipus = (int)OrarendImportTipusEnum.AscImport;
|
||||
orarendImportExportFileUploadModel.IsNapirendImport = false;
|
||||
return UploadFile(orarendImportExportFileUploadModel);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.OrarendImportExport;
|
||||
using Kreta.Web.Classes;
|
||||
using Kreta.Web.Helpers;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class OrarendErvenyessegiIdovelImportExportController : BaseOrarendImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private static readonly OrarendImportFileUploadCo DefaultOrarendImportFileUploadCo = new OrarendImportFileUploadCo
|
||||
{
|
||||
OrarendImportTipus = (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport,
|
||||
IsNapirendImport = false,
|
||||
WorksheetName = ImportExportOrarendResource.ImportDefaultSheetNameOrarendErvenyessegiIdovel,
|
||||
ExcelHeaderList = OrarendImportExportHelper.ImportHeaderListOraErvenyessegiIdovel
|
||||
};
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string ConrtollerName => "OrarendErvenyessegiIdovelImportExport";
|
||||
|
||||
public static string DisplayName => ClaimData.IsSelectedTanev20_21OrLater ? ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatImportalasa20_21 : ImportExportOrarendResource.OsszefuggoSzakmaiGyakorlatImportalasa;
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public OrarendErvenyessegiIdovelImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
OrarendImportExportModel model = GetImportExportModel();
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
MemoryStream memoryStream = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate(DefaultOrarendImportFileUploadCo, ClaimData.IsSzakkepzoIntezmeny);
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportOrarendResource.ImportSablonFileNameErvenyessegiIdovel };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export(DateTime? orarendExportKezdete, DateTime? orarendExportVege, bool isIdoszakonKivuliElemekMegjelenitese, bool isEgyediNapOrainakKihagyasa)
|
||||
{
|
||||
string result = GetExport(DefaultOrarendImportFileUploadCo, orarendExportKezdete, orarendExportVege, isIdoszakonKivuliElemekMegjelenitese, isEgyediNapOrainakKihagyasa);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport(DefaultOrarendImportFileUploadCo);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, OrarendImportExportFileUploadModel orarendImportExportFileUploadModel)
|
||||
{
|
||||
orarendImportExportFileUploadModel.ImportFile = importFile;
|
||||
orarendImportExportFileUploadModel.OrarendImportTipus = (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport;
|
||||
orarendImportExportFileUploadModel.IsNapirendImport = false;
|
||||
return UploadFile(orarendImportExportFileUploadModel);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.OrarendImportExport;
|
||||
using Kreta.Web.Classes;
|
||||
using Kreta.Web.Helpers;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class OrarendImportExportController : BaseOrarendImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private static readonly OrarendImportFileUploadCo DefaultOrarendImportFileUploadCo = new OrarendImportFileUploadCo
|
||||
{
|
||||
OrarendImportTipus = (int)OrarendImportTipusEnum.Import,
|
||||
IsNapirendImport = false,
|
||||
WorksheetName = ImportExportOrarendResource.ImportDefaultSheetNameOrarend,
|
||||
ExcelHeaderList = OrarendImportExportHelper.ImportHeaderList
|
||||
};
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string ConrtollerName => "OrarendImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public OrarendImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
OrarendImportExportModel model = GetImportExportModel();
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
MemoryStream memoryStream = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate(DefaultOrarendImportFileUploadCo, ClaimData.IsSzakkepzoIntezmeny);
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportOrarendResource.ImportSablonFileName };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export(DateTime? orarendExportKezdete, DateTime? orarendExportVege, bool isIdoszakonKivuliElemekMegjelenitese, bool isEgyediNapOrainakKihagyasa)
|
||||
{
|
||||
string result = GetExport(DefaultOrarendImportFileUploadCo, orarendExportKezdete, orarendExportVege, isIdoszakonKivuliElemekMegjelenitese, isEgyediNapOrainakKihagyasa);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new OrarendImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport(DefaultOrarendImportFileUploadCo);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, OrarendImportExportFileUploadModel orarendImportExportFileUploadModel)
|
||||
{
|
||||
orarendImportExportFileUploadModel.ImportFile = importFile;
|
||||
orarendImportExportFileUploadModel.OrarendImportTipus = (int)OrarendImportTipusEnum.Import;
|
||||
orarendImportExportFileUploadModel.IsNapirendImport = false;
|
||||
return UploadFile(orarendImportExportFileUploadModel);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,349 @@
|
|||
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.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.OratervImportExport;
|
||||
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.IsSzirIntezmeny.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class OratervImportExportController : BaseTantargyfelosztasImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"/Tantargy/OraTerv";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string GridName => "OratervTantargyGrid";
|
||||
public static string GridRowTemplateName => "OratervTantargyGridRowTemplate";
|
||||
|
||||
public static string OratervGridName => "OratervGrid";
|
||||
public static string OratervGridRowTemplateName => "OratervGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "OratervImportExportHelper";
|
||||
|
||||
public static string ConrtollerName => "OratervImportExport";
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
public OratervImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
var model = new OratervImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
||||
};
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
MemoryStream memoryStream = new OratervImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate();
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportOratervResource.ImportSablonFileName };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export()
|
||||
{
|
||||
MemoryStream memoryStream = new OratervImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new OratervImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int importMuvelet)
|
||||
{
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
|
||||
var errorResult = new List<string>();
|
||||
|
||||
Dictionary<int, string> importHeaderList = OratervImportExportHelper.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 OratervImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, importMuvelet);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
OratervImportCo importCo = new OratervImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
var oratervCoList = importCo.OratervCOList.GroupBy(x => x.OratervId).Select(x => x.First()).ToList();
|
||||
var importInfoModel = new OratervImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetTantargyImportInfoSummary(importCo.TantargyImportJsonItemList, importCo.TantargyCOList),
|
||||
GetOratervImportInfoSummary(importCo, oratervCoList),
|
||||
GetOratervTantargyImportInfoSummary(importCo, importCo.OratervTantargyCOList),
|
||||
}
|
||||
},
|
||||
TantargyImportItemList = new TantargyImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTantargyImportItemModelList(importCo.TantargyImportJsonItemList, importCo.TantargyCOList),
|
||||
},
|
||||
OratervImportItemList = new OratervImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetOratervImportItemModelList(importCo.OratervImportJsonItemList, importCo.OratervCOList)
|
||||
},
|
||||
MainImportItemList = new OratervTantargyImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetOratervTantargyImportItemModelList(importCo.OratervTantargyImportJsonItemList, importCo.OratervTantargyCOList, oratervCoList),
|
||||
},
|
||||
NemImportalhatoItemList = new OratervImportNemImportalhatoItemListModel
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
private List<OratervImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<OratervImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<OratervImportNemImportalhatoItemModel>();
|
||||
foreach (OratervImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new OratervImportNemImportalhatoItemModel
|
||||
{
|
||||
TantervNeveImportData = nemImportalhatoItem.TantervNeveImportData,
|
||||
OratervNeveImportData = nemImportalhatoItem.OratervNeveImportData,
|
||||
EvfolyamNeveImportData = nemImportalhatoItem.EvfolyamNeveImportData,
|
||||
TantargyNeveImportData = nemImportalhatoItem.TantargyNeveImportData,
|
||||
EvesOraszamImportData = nemImportalhatoItem.EvesOraszamImportData,
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.TantervNeveImportData).ThenBy(x => x.OratervNeveImportData).ThenBy(x => x.TantargyNeveImportData).ToList();
|
||||
}
|
||||
|
||||
protected static ImportInfoSummaryModel GetOratervImportInfoSummary(OratervImportCo importCo, List<OratervCO> coList)
|
||||
{
|
||||
List<OratervImportJsonItemCo> importJsonItemList = importCo.OratervImportJsonItemList;
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportOratervResource.Oraterv,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = importCo.NemImportalhatoItemList.Count.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected List<OratervImportItemModel> GetOratervImportItemModelList(List<OratervImportJsonItemCo> importJsonItemList, List<OratervCO> oratervItemCoList)
|
||||
{
|
||||
var importItemModelList = new List<OratervImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (oratervItemCoList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<OratervImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (OratervImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new OratervImportItemModel
|
||||
{
|
||||
Tanterv = importJsonItem.TantervNeve ?? string.Empty,
|
||||
Oraterv = importJsonItem.OratervNeve ?? string.Empty,
|
||||
Evfolyam = importJsonItem.EvfolyamNeve ?? string.Empty,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (var co in oratervItemCoList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.OratervId))
|
||||
{
|
||||
importItemModelList.Add(new OratervImportItemModel
|
||||
{
|
||||
Tanterv = co.TantervNev ?? string.Empty,
|
||||
Oraterv = co.Nev ?? string.Empty,
|
||||
Evfolyam = co.EvfolyamNev ?? string.Empty,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.Tanterv)
|
||||
.ThenBy(x => x.Oraterv)
|
||||
.ThenBy(x => x.Evfolyam)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
protected static ImportInfoSummaryModel GetOratervTantargyImportInfoSummary(OratervImportCo importCo, List<OratervTantargyCO> coList)
|
||||
{
|
||||
List<OratervTargyImportJsonItemCo> importJsonItemList = importCo.OratervTantargyImportJsonItemList;
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportOratervResource.OratervTantargy,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = importCo.NemImportalhatoItemList.Count.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected List<OratervTantargyImportItemModel> GetOratervTantargyImportItemModelList(List<OratervTargyImportJsonItemCo> importJsonItemList, List<OratervTantargyCO> oratervTantargyItemCoList, List<OratervCO> oratervItemCoList)
|
||||
{
|
||||
var importItemModelList = new List<OratervTantargyImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (oratervTantargyItemCoList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<OratervTargyImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (var importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new OratervTantargyImportItemModel
|
||||
{
|
||||
Tanterv = importJsonItem.TantervNeve ?? string.Empty,
|
||||
Oraterv = importJsonItem.OratervNeve ?? string.Empty,
|
||||
Evfolyam = importJsonItem.EvfolyamNeve ?? string.Empty,
|
||||
Tantargy = importJsonItem.TantargyNeve ?? string.Empty,
|
||||
EvesOraszam = importJsonItem.EvesOraszam.ToString(),
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (var co in oratervTantargyItemCoList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.OratervTantargyId))
|
||||
{
|
||||
var oratervCo = oratervItemCoList.SingleOrDefault(x => x.OratervId == co.OratervId);
|
||||
importItemModelList.Add(new OratervTantargyImportItemModel
|
||||
{
|
||||
Tanterv = oratervCo?.TantervNev ?? string.Empty,
|
||||
Oraterv = co.OratervNev ?? string.Empty,
|
||||
Evfolyam = oratervCo?.EvfolyamNev ?? string.Empty,
|
||||
Tantargy = co.TantargyNev ?? string.Empty,
|
||||
EvesOraszam = co.EvesOraszam.ToString(),
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.Tanterv)
|
||||
.ThenBy(x => x.Oraterv)
|
||||
.ThenBy(x => x.Evfolyam)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var helper = new OratervImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
OratervImportCo importCo = helper.ImportCo;
|
||||
helper.Import(new { ImportJson = importCo });
|
||||
|
||||
return Content(Url.Content(TovabbUrl));
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TanmenetImportExport;
|
||||
using Kreta.Web.Classes;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
public class TanmenetImportExportController : BaseTanmenetImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"~/Tantargy/Tanmenet";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string ControllerName => "TanmenetImportExport";
|
||||
|
||||
#endregion
|
||||
|
||||
public TanmenetImportExportController(IUploadFileValidator uploadFileValidator, IKretaAuthorization authorization) : base(uploadFileValidator, authorization)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
if (Authorization.IsValidTanulasiElemImportExport())
|
||||
{
|
||||
return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty }));
|
||||
}
|
||||
|
||||
var model = new TanmenetImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
||||
ControllerName = ControllerName,
|
||||
};
|
||||
|
||||
return View(model);
|
||||
}
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int? tantargyfelosztasId)
|
||||
{
|
||||
return UploadFile(importFile, tantargyfelosztasId, false);
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
return Import(TovabbUrl);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,437 @@
|
|||
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.Classes.ExcelHelpers;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Core.Exceptions;
|
||||
using Kreta.Core.FeatureToggle;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TantargyfelosztasImportExport;
|
||||
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 TantargyfelosztasImportExportController : BaseTantargyfelosztasImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"~/Tantargy/TantargyFelosztas";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
private IFeatureContext FeatureContext { get; }
|
||||
|
||||
public static string EgyszeruImportFileName => "EgyszeruImportFile";
|
||||
public static string KereszttablasImportFileName => "KereszttablasImportFile";
|
||||
public static string KereszttablasOsztalyOszlopokkalImportFileName => "KereszttablasOsztalyOszlopokkalImportFile";
|
||||
public static string FeladatfelosztasImportFileName => "FeladatfelosztasImportFile";
|
||||
public static string AscImportFileName => "AscImportFile";
|
||||
|
||||
public static string JavascriptHelperClassName => "TantargyfelosztasImportExportHelper";
|
||||
|
||||
public static string ConrtollerName => "TantargyfelosztasImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public TantargyfelosztasImportExportController(IUploadFileValidator uploadFileValidator, IFeatureContext featureContext)
|
||||
{
|
||||
FeatureContext = featureContext;
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
var model = new TantargyfelosztasImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
||||
AscAllowedFileExtensions = UploadFileValidator.Configuration.AscImportAllowedFileExtensions
|
||||
};
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
MemoryStream memoryStream = new TantargyfelosztasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate(isSzakkepzo : ClaimData.IsSzakkepzoIntezmeny);
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportTantargyfelosztasResource.ImportSablonFileNameEgyszeru };
|
||||
}
|
||||
|
||||
public ActionResult DownloadTemplateKereszttablas()
|
||||
{
|
||||
return GetExcelTemplate(ImportExportTantargyfelosztasResource.ImportSablonFileNameKereszttablas);
|
||||
}
|
||||
|
||||
public ActionResult DownloadTemplateKereszttablasOsztalyOszlopokkal()
|
||||
{
|
||||
return GetExcelTemplate(ImportExportTantargyfelosztasResource.ImportSablonFileNameKereszttablasOsztalyOszlopokkal);
|
||||
}
|
||||
|
||||
public ActionResult DownloadTemplateFeladatfelosztas()
|
||||
{
|
||||
return GetExcelTemplate(ImportExportTantargyfelosztasResource.ImportSablonFileNameFeladatfelosztas);
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string ExportEgyszeruTantargyfelosztas()
|
||||
{
|
||||
MemoryStream memoryStream = new TantargyfelosztasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string ExportLepedoTantargyfelosztas()
|
||||
{
|
||||
MemoryStream memoryStream = new TTFExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ExportLepedoTTF();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string ExportLepedoOsztalyTantargyfelosztas()
|
||||
{
|
||||
MemoryStream memoryStream = new TTFExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ExportLepedoOsztalyTTF();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string ExportFeladatfelosztas()
|
||||
{
|
||||
//TODO: MEGCSINÁLNI!!!
|
||||
throw new NotImplementedException();
|
||||
//MemoryStream memoryStream = new TTFExportHelper().();
|
||||
//return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string ExportFormazottTantargyfelosztas()
|
||||
{
|
||||
bool isMunkaugyiAdatokKlebelsbergOrNszfh =
|
||||
FeatureContext.IsEnabled(Core.Constants.FeatureName.MunkaugyiAdatokKlebelsberg) ||
|
||||
FeatureContext.IsEnabled(Core.Constants.FeatureName.MunkaugyiAdatokNSZFH);
|
||||
|
||||
MemoryStream memoryStream = new TTFExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ExportFormazottTtf(isMunkaugyiAdatokKlebelsbergOrNszfh ? 1 : 0);
|
||||
if (memoryStream != null)
|
||||
{
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
return ImportExportCommonResource.NincsElegendoAdatARendszerbenAzExportalashoz;
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new TantargyfelosztasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadEgyszeruFile(HttpPostedFileBase egyszeruImportFile, int importMuvelet, int? feladatellatasiHelyId)
|
||||
{
|
||||
return UploadFile(egyszeruImportFile, importMuvelet, (int)TantargyfelosztasImportTipusEnum.EgyszeruImport, feladatellatasiHelyId);
|
||||
}
|
||||
|
||||
public JsonResult UploadKereszttablasFile(HttpPostedFileBase kereszttablasImportFile, int importMuvelet, int? feladatellatasiHelyId)
|
||||
{
|
||||
return UploadFile(kereszttablasImportFile, importMuvelet, (int)TantargyfelosztasImportTipusEnum.KereszttablasImport, feladatellatasiHelyId);
|
||||
}
|
||||
|
||||
public JsonResult UploadKereszttablasOsztalyOszlopokkalFile(HttpPostedFileBase kereszttablasOsztalyOszlopokkalImportFile, int importMuvelet, int? feladatellatasiHelyId)
|
||||
{
|
||||
return UploadFile(kereszttablasOsztalyOszlopokkalImportFile, importMuvelet, (int)TantargyfelosztasImportTipusEnum.KereszttablasOsztalyOszlopokkalImport, feladatellatasiHelyId);
|
||||
}
|
||||
|
||||
public JsonResult UploadFeladatfelosztasFile(HttpPostedFileBase feladatfelosztasImportFile, int importMuvelet, int? feladatellatasiHelyId)
|
||||
{
|
||||
return UploadFile(feladatfelosztasImportFile, importMuvelet, (int)TantargyfelosztasImportTipusEnum.FeladatfelosztasImport, feladatellatasiHelyId);
|
||||
}
|
||||
|
||||
public JsonResult UploadAscFile(HttpPostedFileBase ascImportFile, int importMuvelet, int? feladatellatasiHelyId)
|
||||
{
|
||||
return UploadFile(ascImportFile, importMuvelet, (int)TantargyfelosztasImportTipusEnum.AscImport, feladatellatasiHelyId);
|
||||
}
|
||||
|
||||
private JsonResult UploadFile(HttpPostedFileBase importFile, int importMuvelet, int tantargyfelosztasImportTipus, int? feladatellatasiHelyId)
|
||||
{
|
||||
switch (tantargyfelosztasImportTipus)
|
||||
{
|
||||
case (int)TantargyfelosztasImportTipusEnum.EgyszeruImport:
|
||||
case (int)TantargyfelosztasImportTipusEnum.KereszttablasImport:
|
||||
case (int)TantargyfelosztasImportTipusEnum.KereszttablasOsztalyOszlopokkalImport:
|
||||
case (int)TantargyfelosztasImportTipusEnum.FeladatfelosztasImport:
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
break;
|
||||
|
||||
case (int)TantargyfelosztasImportTipusEnum.AscImport:
|
||||
UploadFileValidator.ValidateAscImportFile(importFile);
|
||||
break;
|
||||
}
|
||||
|
||||
var errorResult = new List<string>();
|
||||
if (feladatellatasiHelyId == null)
|
||||
{
|
||||
errorResult.Add(ErrorResource.FeladatellatasiHelyMegadasaKotelezo);
|
||||
}
|
||||
|
||||
var fileErrorResultList = new List<string>();
|
||||
var importData = new List<List<string>>();
|
||||
switch (tantargyfelosztasImportTipus)
|
||||
{
|
||||
case (int)TantargyfelosztasImportTipusEnum.EgyszeruImport:
|
||||
importData = ImportExportHelper.GetImportDataFromExcel(importFile.InputStream, TantargyfelosztasImportExportHelper.ImportHeaderListEgyszeru, out fileErrorResultList);
|
||||
break;
|
||||
|
||||
case (int)TantargyfelosztasImportTipusEnum.KereszttablasImport:
|
||||
importData = TantargyfelosztasImportExportHelper.GetImportDataFromKereszttablasTantargyfelosztasExcel(importFile.InputStream, TantargyfelosztasImportExportHelper.ImportHeaderListKereszttablas, out fileErrorResultList);
|
||||
break;
|
||||
|
||||
case (int)TantargyfelosztasImportTipusEnum.KereszttablasOsztalyOszlopokkalImport:
|
||||
importData = TantargyfelosztasImportExportHelper.GetImportDataFromKereszttablasTantargyfelosztasOsztalyOszlopokkalExcel(importFile.InputStream, TantargyfelosztasImportExportHelper.ImportHeaderListKereszttablasOsztalyOszlopokkal, out fileErrorResultList);
|
||||
break;
|
||||
|
||||
case (int)TantargyfelosztasImportTipusEnum.FeladatfelosztasImport:
|
||||
importData = TantargyfelosztasImportExportHelper.GetImportDataFromFeladatfelosztasExcel(importFile.InputStream, TantargyfelosztasImportExportHelper.ImportHeaderListFeladatfelosztasExcel, out fileErrorResultList);
|
||||
break;
|
||||
|
||||
case (int)TantargyfelosztasImportTipusEnum.AscImport:
|
||||
try
|
||||
{
|
||||
importData = AscImportExportHelper.GetTantargyfelosztasImportDataFromAsc(importFile.InputStream);
|
||||
}
|
||||
catch (BlException e)
|
||||
{
|
||||
errorResult.Add(e.Message.Replace(Core.Constants.General.Sortores, $"{Core.Constants.General.Sortores}- "));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
errorResult.AddRange(fileErrorResultList);
|
||||
|
||||
if (errorResult.Count > 0)
|
||||
{
|
||||
JsonResult errorJson = ThrowCustomError(errorResult);
|
||||
return errorJson;
|
||||
}
|
||||
|
||||
//NOTE: feladatellatasiHelyId.Value nem lehet null a korábbi vizsgálatok miatt!
|
||||
new TantargyfelosztasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, importMuvelet, feladatellatasiHelyId.Value, tantargyfelosztasImportTipus);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
TantargyfelosztasImportCo importCo = new TantargyfelosztasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
|
||||
List<TantargyItemCo> tantargyCoList = new TantargyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTantargyCoList();
|
||||
List<OsztalyItemCo> osztalyCoList = new OsztalyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyCoList();
|
||||
List<CsoportItemCo> csoportCoList = new CsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetCsoportCoList();
|
||||
List<TantargyfelosztasItemCo> tantargyfelosztasCoList = new TantargyFelosztasHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTantargyfelosztasCoList();
|
||||
|
||||
var importInfoModel = new TantargyfelosztasImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetTantargyImportInfoSummary(importCo.TantargyImportJsonItemList, tantargyCoList),
|
||||
GetOsztalyImportInfoSummary(importCo.OsztalyImportJsonItemList, osztalyCoList),
|
||||
GetCsoportImportInfoSummary(importCo.CsoportImportJsonItemList, csoportCoList),
|
||||
GetTantargyfelosztasImportInfoSummary(importCo, tantargyfelosztasCoList)
|
||||
}
|
||||
},
|
||||
TantargyImportItemList = new TantargyImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTantargyImportItemModelList(importCo.TantargyImportJsonItemList, tantargyCoList)
|
||||
},
|
||||
OsztalyImportItemList = new OsztalyImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetOsztalyImportItemModelList(importCo.OsztalyImportJsonItemList, osztalyCoList)
|
||||
},
|
||||
CsoportImportItemList = new CsoportImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetCsoportImportItemModelList(importCo.CsoportImportJsonItemList, csoportCoList)
|
||||
},
|
||||
MainImportItemList = new TantargyfelosztasImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTantargyfelosztasImportItemModelList(importCo, tantargyfelosztasCoList)
|
||||
},
|
||||
NemImportalhatoItemList = new TantargyfelosztasImportNemImportalhatoItemListModel
|
||||
{
|
||||
NemImportalhatoItemModelList = GetNemImportalhatoItemModelList(importCo.NemImportalhatoItemList),
|
||||
TantargyfelosztasImportTipus = importCo.TantargyfelosztasImportTipus
|
||||
}
|
||||
};
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetTantargyfelosztasImportInfoSummary(TantargyfelosztasImportCo importCo, List<TantargyfelosztasItemCo> coList)
|
||||
{
|
||||
List<TantargyfelosztasImportJsonItemCo> importJsonItemList = importCo.MainImportJsonItemList;
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.DeleteAndInsert:
|
||||
unchangedRowCount = coList.Count(x => !x.Importalt);
|
||||
break;
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTantargyfelosztasResource.ImportDefaultSheetName,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = importCo.ImportMuvelet == (int)ImportMuveletEnum.DeleteAndInsert ? coList.Count(x => x.Importalt).ToString() : "0",
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = importCo.NemImportalhatoItemList.Count.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected List<TantargyfelosztasImportItemModel> GetTantargyfelosztasImportItemModelList(TantargyfelosztasImportCo importCo, List<TantargyfelosztasItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<TantargyfelosztasImportItemModel>();
|
||||
List<TantargyfelosztasImportJsonItemCo> importJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (!coList.Any())
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<TantargyfelosztasImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (TantargyfelosztasImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TantargyfelosztasImportItemModel
|
||||
{
|
||||
Nev = importJsonItem.Nev ?? string.Empty,
|
||||
OsztalyCsoportNev = importJsonItem.OsztalyCsoportNev ?? string.Empty,
|
||||
TantargyNev = importJsonItem.TantargyNev ?? string.Empty,
|
||||
TanarNev = importJsonItem.TanarNev,
|
||||
Oraszam = importJsonItem.Oraszam,
|
||||
Tuloraszam = importJsonItem.Tuloraszam,
|
||||
IsOsszevontOra = importJsonItem.IsOsszevontOra,
|
||||
IsNemzetisegiOra = importJsonItem.IsNemzetisegiOra,
|
||||
MegbizasiOraszam = importJsonItem.MegbizasiOraszam,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TantargyfelosztasItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
var operation = importCo.ImportMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && co.Importalt ? (int)ImportItemOperationEnum.Delete : (int)ImportItemOperationEnum.Default;
|
||||
importItemModelList.Add(new TantargyfelosztasImportItemModel
|
||||
{
|
||||
Nev = co.Nev ?? string.Empty,
|
||||
OsztalyCsoportNev = co.OsztalyCsoportNev ?? string.Empty,
|
||||
TantargyNev = co.TantargyNev ?? string.Empty,
|
||||
TanarNev = co.TanarNev,
|
||||
Oraszam = co.Oraszam,
|
||||
Tuloraszam = co.Tuloraszam,
|
||||
IsOsszevontOra = co.IsOsszevontOra,
|
||||
IsNemzetisegiOra = co.IsNemzetisegiOra,
|
||||
MegbizasiOraszam = co.MegbizasiOraszam,
|
||||
Operation = operation
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Nev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<TantargyfelosztasImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<TantargyfelosztasImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<TantargyfelosztasImportNemImportalhatoItemModel>();
|
||||
foreach (TantargyfelosztasImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new TantargyfelosztasImportNemImportalhatoItemModel
|
||||
{
|
||||
OsztalyNevImportData = nemImportalhatoItem.OsztalyNevImportData,
|
||||
CsoportNevImportData = nemImportalhatoItem.CsoportNevImportData,
|
||||
TantargyNevImportData = nemImportalhatoItem.TantargyNevImportData,
|
||||
OraszamImportData = nemImportalhatoItem.OraszamImportData,
|
||||
TanarNevImportData = nemImportalhatoItem.TanarNevImportData,
|
||||
TuloraImportData = nemImportalhatoItem.TuloraImportData,
|
||||
TtfOraszamKorrekcioImportData = nemImportalhatoItem.TtfOraszamKorrekcioImportData,
|
||||
NemzetisegiOraImportData = nemImportalhatoItem.NemzetisegiOraImportData,
|
||||
MegbizasiOraszamImportData = nemImportalhatoItem.MegbizasiOraszamImportData,
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.TanarNevImportData).ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var helper = new TantargyfelosztasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
TantargyfelosztasImportCo importCo = helper.ImportCo;
|
||||
helper.Import(new { ImportJson = importCo }, importCo.ImportMuvelet);
|
||||
|
||||
return Content(Url.Content(TovabbUrl));
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TanmenetImportExport;
|
||||
using Kreta.Web.Attributes;
|
||||
using Kreta.Web.Classes;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.ImportExport.Controllers
|
||||
{
|
||||
[KretaGlobalLanguageChangeActionFilter(LanguageCode = "hu-Dualis")]
|
||||
public class TanulasiElemImportExportController : BaseTanmenetImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"~/Tantargy/TanulasiElemek";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string ControllerName => "TanulasiElemImportExport";
|
||||
|
||||
#endregion
|
||||
|
||||
public TanulasiElemImportExportController(IUploadFileValidator uploadFileValidator, IKretaAuthorization authorization) : base(uploadFileValidator, authorization)
|
||||
{
|
||||
}
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
if (!Authorization.IsValidTanulasiElemImportExport())
|
||||
{
|
||||
return Redirect(Url.Action("AccessDenied", "ErrorHandler", new { area = string.Empty }));
|
||||
}
|
||||
|
||||
var model = new TanmenetImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
||||
SzervezetTipusEnum = SzervezetTipusEnum.Dualis,
|
||||
ControllerName = ControllerName,
|
||||
};
|
||||
|
||||
return View("~/Areas/ImportExport/Views/TanmenetImportExport/Index.cshtml", model);
|
||||
}
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int? tantargyfelosztasId)
|
||||
{
|
||||
return UploadFile(importFile, tantargyfelosztasId, true);
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
return Import(TovabbUrl);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,302 @@
|
|||
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;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TanuloBesorolasImportExport;
|
||||
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 TanuloBesorolasImportExportController : BaseImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"~/Tanulo/Tanulo";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string GridName => "TanuloBesorolasGrid";
|
||||
public static string GridRowTemplateName => "TanuloBesorolasGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "TanuloBesorolasImportExportHelper";
|
||||
|
||||
public static string ConrtollerName => "TanuloBesorolasImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public TanuloBesorolasImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
var helper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
TanevCO tanevCo = helper.GetTanevInfo();
|
||||
DateTime besorolasDatumMinDate = tanevCo.KezdoNap;
|
||||
DateTime besorolasDatumMaxDate = tanevCo.UtolsoNap;
|
||||
|
||||
var today = DateTime.Today;
|
||||
DateTime besorolasDatumValue;
|
||||
if (besorolasDatumMinDate > today)
|
||||
{
|
||||
besorolasDatumValue = besorolasDatumMinDate;
|
||||
}
|
||||
else if (besorolasDatumMaxDate < today)
|
||||
{
|
||||
besorolasDatumValue = besorolasDatumMaxDate;
|
||||
}
|
||||
else
|
||||
{
|
||||
besorolasDatumValue = today;
|
||||
}
|
||||
|
||||
var model = new TanuloBesorolasImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions,
|
||||
BesorolasDatumValue = besorolasDatumValue,
|
||||
BesorolasDatumMinDate = besorolasDatumMinDate,
|
||||
BesorolasDatumMaxDate = besorolasDatumMaxDate,
|
||||
IsSzakkepzoIntezmeny = ClaimData.IsSzakkepzoIntezmeny,
|
||||
};
|
||||
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
MemoryStream memoryStream = new TanuloBesorolasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate();
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportTanuloBesorolasResource.ImportSablonFileName };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export()
|
||||
{
|
||||
MemoryStream memoryStream = new TanuloBesorolasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new TanuloBesorolasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, DateTime? besorolasDatum, bool? isJuttatasUpdate, DateTime? kisorolasDatum)
|
||||
{
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
|
||||
var errorResult = new List<string>();
|
||||
|
||||
if (besorolasDatum == null)
|
||||
{
|
||||
errorResult.Add(ImportExportTanuloBesorolasResource.RequiredBesorolasDatum);
|
||||
}
|
||||
else
|
||||
{
|
||||
var helper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
TanevCO tanevCo = helper.GetTanevInfo();
|
||||
DateTime besorolasDatumMinDate = tanevCo.KezdoNap;
|
||||
DateTime besorolasDatumMaxDate = tanevCo.UtolsoNap;
|
||||
|
||||
if (besorolasDatum < besorolasDatumMinDate)
|
||||
{
|
||||
errorResult.Add(string.Format(ImportExportCommonResource.InvalidKorabbiDatum, ImportExportTanuloBesorolasResource.BesorolasDatum, besorolasDatum.Value.ToString(Core.Constants.ToStringPattern.HungarianDate), ImportExportCommonResource.ElsoTanitasiNap.ToLowerInvariant(), besorolasDatumMinDate.ToString(Core.Constants.ToStringPattern.HungarianDate)));
|
||||
}
|
||||
else if (besorolasDatum > besorolasDatumMaxDate)
|
||||
{
|
||||
errorResult.Add(string.Format(ImportExportCommonResource.InvalidKesobbiDatum, ImportExportTanuloBesorolasResource.BesorolasDatum, besorolasDatum.Value.ToString(Core.Constants.ToStringPattern.HungarianDate), ImportExportCommonResource.UtolsoTanitasiNap.ToLowerInvariant(), besorolasDatumMaxDate.ToString(Core.Constants.ToStringPattern.HungarianDate)));
|
||||
}
|
||||
|
||||
if (kisorolasDatum.HasValue && besorolasDatum >= kisorolasDatum)
|
||||
{
|
||||
errorResult.Add(string.Format(ImportExportCommonResource.InvalidKesobbiDatum, ImportExportTanuloBesorolasResource.BesorolasDatum, besorolasDatum.Value.ToString(Core.Constants.ToStringPattern.HungarianDate), ImportExportTanuloBesorolasResource.KisorolasDatum.ToLowerInvariant(), kisorolasDatum.Value.ToString(Core.Constants.ToStringPattern.HungarianDate)));
|
||||
}
|
||||
}
|
||||
|
||||
Dictionary<int, string> importHeaderList = TanuloBesorolasImportExportHelper.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;
|
||||
}
|
||||
|
||||
var isIntezmenySzakkepzoJuttatas = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetIntezmenyiAdatok().IsSzakkepzoJuttatas;
|
||||
//NOTE: besorolasDatum.Value nem lehet null a korábbi vizsgálatok miatt!
|
||||
new TanuloBesorolasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, besorolasDatum.Value, isJuttatasUpdate, isIntezmenySzakkepzoJuttatas, kisorolasDatum, ClaimData.IsSzakkepzoIntezmeny);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
TanuloBesorolasImportCo importCo = new TanuloBesorolasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
|
||||
var importInfoModel = new TanuloBesorolasImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetImportInfoSummary(importCo)
|
||||
}
|
||||
},
|
||||
MainImportItemList = new TanuloBesorolasImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetImportItemModelList(importCo)
|
||||
},
|
||||
NemImportalhatoItemList = new TanuloBesorolasImportNemImportalhatoItemListModel
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetImportInfoSummary(TanuloBesorolasImportCo importCo)
|
||||
{
|
||||
List<TanuloCsoportItemCo> coList = importCo.TanuloCsoportCoList;
|
||||
List<TanuloBesorolasImportJsonItemCo> mainImportJsonItemList = importCo.MainImportJsonItemList;
|
||||
int insertRowCount = mainImportJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert) ?? 0;
|
||||
|
||||
int invalidRowCount = importCo.NemImportalhatoItemList.Count;
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTanuloBesorolasResource.ImportDefaultSheetName,
|
||||
InsertRowCount = insertRowCount.ToString(),
|
||||
UpdateRowCount = "-",
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = coList.Count.ToString(),
|
||||
InvalidRowCount = invalidRowCount.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private List<TanuloBesorolasImportItemModel> GetImportItemModelList(TanuloBesorolasImportCo importCo)
|
||||
{
|
||||
List<TanuloCsoportItemCo> coList = importCo.TanuloCsoportCoList;
|
||||
var importItemModelList = new List<TanuloBesorolasImportItemModel>();
|
||||
List<TanuloBesorolasImportJsonItemCo> mainImportJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (mainImportJsonItemList == null)
|
||||
{
|
||||
if (!(coList.Count > 0))
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
mainImportJsonItemList = new List<TanuloBesorolasImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (TanuloBesorolasImportJsonItemCo importJsonItem in mainImportJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TanuloBesorolasImportItemModel
|
||||
{
|
||||
TanuloElotag = importJsonItem.TanuloElotag ?? string.Empty,
|
||||
TanuloVezeteknev = importJsonItem.TanuloVezeteknev,
|
||||
TanuloKeresztnev = importJsonItem.TanuloKeresztnev,
|
||||
TanuloOktatasiAzonosito = importJsonItem.TanuloOktatasiAzonosito,
|
||||
OsztalyCsoportNev = importJsonItem.OsztalyCsoportNev,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TanuloCsoportItemCo co in coList)
|
||||
{
|
||||
if (!mainImportJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new TanuloBesorolasImportItemModel
|
||||
{
|
||||
TanuloElotag = co.FelhasznaloElotag ?? string.Empty,
|
||||
TanuloVezeteknev = co.FelhasznaloVezeteknev,
|
||||
TanuloKeresztnev = co.FelhasznaloKeresztnev,
|
||||
TanuloOktatasiAzonosito = co.FelhasznaloOktatasiAzonosito,
|
||||
OsztalyCsoportNev = co.OsztalyCsoportNev,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.TanuloVezeteknev).ThenBy(x => x.TanuloKeresztnev).ThenBy(x => x.OsztalyCsoportNev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<TanuloBesorolasImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<TanuloBesorolasImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<TanuloBesorolasImportNemImportalhatoItemModel>();
|
||||
foreach (TanuloBesorolasImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new TanuloBesorolasImportNemImportalhatoItemModel
|
||||
{
|
||||
TanuloNeveImportData = nemImportalhatoItem.TanuloNeveImportData,
|
||||
TanuloOktatasiAzonositoImportData = nemImportalhatoItem.TanuloOktatasiAzonositoImportData,
|
||||
OsztalyCsoportImportData = nemImportalhatoItem.OsztalyCsoportImportData,
|
||||
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.TanuloNeveImportData).ThenBy(x => x.OsztalyCsoportImportData).ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var helper = new TanuloBesorolasImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
TanuloBesorolasImportCo importCo = helper.ImportCo;
|
||||
helper.Import(new { ImportJson = importCo }, importCo.BesorolasDatum);
|
||||
|
||||
return Content(Url.Content(TovabbUrl));
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,269 @@
|
|||
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.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Logic;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Core;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TanuloErtekelesMondatbankImportExport;
|
||||
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.IsSzirIntezmeny.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class TanuloErtekelesMondatbankImportExportController : BaseImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"~/Adminisztracio/SystemSettings";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string GridName => "TanuloErtekelesMondatbankGrid";
|
||||
public static string GridRowTemplateName => "TanuloErtekelesMondatbankGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "TanuloErtekelesMondatbankImportExportHelper";
|
||||
|
||||
public static string ConrtollerName => "TanuloErtekelesMondatbankImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public TanuloErtekelesMondatbankImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
var model = new TanuloErtekelesMondatbankImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions
|
||||
};
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
bool isFromSzervezet = false;
|
||||
|
||||
MemoryStream memoryStream = new TanuloErtekelesMondatbankImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate(isFromSzervezet: isFromSzervezet);
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportTanuloErtekelesMondatbankResource.ImportSablonFileName };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export()
|
||||
{
|
||||
MemoryStream memoryStream = new TanuloErtekelesMondatbankImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new TanuloErtekelesMondatbankImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int importMuvelet)
|
||||
{
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
|
||||
var errorResult = new List<string>();
|
||||
|
||||
Dictionary<int, string> importHeaderList = TanuloErtekelesMondatbankImportExportHelper.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 TanuloErtekelesMondatbankImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, importMuvelet);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
TanuloErtekelesMondatbankImportCo importCo = new TanuloErtekelesMondatbankImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
List<TanuloErtekelesMondatbankItemCo> coList = importCo.TanuloErtekelesMondatbankCoList;
|
||||
|
||||
var importInfoModel = new TanuloErtekelesMondatbankImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetImportInfoSummary(importCo, coList)
|
||||
}
|
||||
},
|
||||
MainImportItemList = new TanuloErtekelesMondatbankImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetImportItemModelList(importCo, coList)
|
||||
},
|
||||
NemImportalhatoItemList = new TanuloErtekelesMondatbankImportNemImportalhatoItemListModel
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetImportInfoSummary(TanuloErtekelesMondatbankImportCo importCo, List<TanuloErtekelesMondatbankItemCo> coList)
|
||||
{
|
||||
List<TanuloErtekelesMondatbankImportJsonItemCo> 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 : 0;
|
||||
int unchangedRowCount;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.DeleteAndInsert:
|
||||
unchangedRowCount = 0;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
|
||||
default:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
}
|
||||
|
||||
int invalidRowCount = importCo.NemImportalhatoItemList.Count;
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTanuloErtekelesMondatbankResource.ImportDefaultSheetName,
|
||||
InsertRowCount = insertRowCount.ToString(),
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = deleteRowCount.ToString(),
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = invalidRowCount.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private List<TanuloErtekelesMondatbankImportItemModel> GetImportItemModelList(TanuloErtekelesMondatbankImportCo importCo, List<TanuloErtekelesMondatbankItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<TanuloErtekelesMondatbankImportItemModel>();
|
||||
List<TanuloErtekelesMondatbankImportJsonItemCo> mainImportJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (mainImportJsonItemList == null)
|
||||
{
|
||||
if (!(coList.Count > 0))
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
mainImportJsonItemList = new List<TanuloErtekelesMondatbankImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (TanuloErtekelesMondatbankImportJsonItemCo importJsonItem in mainImportJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TanuloErtekelesMondatbankImportItemModel
|
||||
{
|
||||
RovidNev = importJsonItem.RovidNev ?? string.Empty,
|
||||
Szoveg = importJsonItem.Szoveg,
|
||||
TanuloErtekelesTipusNev = importJsonItem.TanuloErtekelesTipusId.IsEntityId() ? importJsonItem.TanuloErtekelesTipusId.GetDisplayName<ErtekelesTipusEnum>(ClaimData.SelectedTanevID.Value) : CommonResource.Mind,
|
||||
EvfolyamTipusNev = importJsonItem.EvfolyamTipusId.IsEntityId() ? importJsonItem.EvfolyamTipusId.GetDisplayName<EvfolyamTipusEnum>(ClaimData.SelectedTanevID.Value) : CommonResource.Mind,
|
||||
TantargyNev = importJsonItem.TantargyNev ?? CommonResource.Mind,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TanuloErtekelesMondatbankItemCo co in coList)
|
||||
{
|
||||
if (!mainImportJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new TanuloErtekelesMondatbankImportItemModel
|
||||
{
|
||||
RovidNev = co.RovidNev ?? string.Empty,
|
||||
Szoveg = RichTextLogic.CutHtmlTagsAndDecodeAndBR2Space(co.Szoveg),
|
||||
TanuloErtekelesTipusNev = co.TanuloErtekelesTipusId.IsEntityId() ? co.TanuloErtekelesTipusId.GetDisplayName<ErtekelesTipusEnum>(ClaimData.SelectedTanevID.Value) : CommonResource.Mind,
|
||||
EvfolyamTipusNev = co.EvfolyamTipusId.IsEntityId() ? co.EvfolyamTipusId.GetDisplayName<EvfolyamTipusEnum>(ClaimData.SelectedTanevID.Value) : CommonResource.Mind,
|
||||
TantargyNev = co.TantargyNev ?? CommonResource.Mind,
|
||||
Operation = importCo.ImportMuvelet == (int)ImportMuveletEnum.DeleteAndInsert ? (int)ImportItemOperationEnum.Delete : (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.RovidNev).ThenBy(x => x.Szoveg).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<TanuloErtekelesMondatbankImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<TanuloErtekelesMondatbankImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<TanuloErtekelesMondatbankImportNemImportalhatoItemModel>();
|
||||
foreach (TanuloErtekelesMondatbankImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new TanuloErtekelesMondatbankImportNemImportalhatoItemModel
|
||||
{
|
||||
RovidNevImportData = nemImportalhatoItem.RovidNevImportData ?? string.Empty,
|
||||
SzovegImportData = nemImportalhatoItem.SzovegImportData ?? string.Empty,
|
||||
TanuloErtekelesTipusImportData = nemImportalhatoItem.TanuloErtekelesTipusImportData ?? string.Empty,
|
||||
EvfolyamTipusImportData = nemImportalhatoItem.EvfolyamTipusImportData ?? string.Empty,
|
||||
TantargyImportData = nemImportalhatoItem.TantargyImportData ?? string.Empty,
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.RovidNevImportData).ThenBy(x => x.SzovegImportData).ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
TanuloErtekelesMondatbankImportCo importCo = new TanuloErtekelesMondatbankImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
new ImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).Import(new { ImportJson = importCo }, importCo.ImportMuvelet, isTorlesCsakImportalt: false);
|
||||
return Content(Url.Content(TovabbUrl));
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,461 @@
|
|||
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.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TanuloKifirImportExport;
|
||||
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, KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.KovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class TanuloKifirImportExportController : BaseImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"~/Tanulo/Tanulo";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string CimGridName => "CimGrid";
|
||||
public static string CimGridRowTemplateName => "CimGridRowTemplate";
|
||||
|
||||
public static string EmailGridName => "EmailGrid";
|
||||
public static string EmailGridRowTemplateName => "EmailGridRowTemplate";
|
||||
|
||||
public static string TanuloKifirGridName => "TanuloKifirGrid";
|
||||
public static string TanuloKifirGridRowTemplateName => "TanuloKifirGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "TanuloKifirImportExportHelper";
|
||||
|
||||
public static string ConrtollerName => "TanuloKifirImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public TanuloKifirImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
var model = new TanuloKifirImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions
|
||||
};
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Export
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new TanuloKifirImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int importMuvelet)
|
||||
{
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
|
||||
var errorResult = new List<string>();
|
||||
|
||||
Dictionary<int, string> importHeaderList = TanuloKifirImportExportHelper.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 TanuloKifirImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, importMuvelet);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
TanuloKifirImportCo importCo = new TanuloKifirImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
List<TanuloItemCo> coList = importCo.TanuloCoList;
|
||||
|
||||
var importInfoModel = new TanuloKifirImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetCimImportInfoSummary(importCo, coList.SelectMany(x => x.CimList).ToList()),
|
||||
GetEmailImportInfoSummary(importCo, coList.SelectMany(x => x.EmailList).ToList()),
|
||||
GetTanuloKifirImportInfoSummary(importCo, coList)
|
||||
}
|
||||
},
|
||||
CimImportItemList = new CimImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetCimImportItemModelList(importCo.CimKifirImportJsonItemList, coList)
|
||||
},
|
||||
EmailImportItemList = new EmailImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetEmailImportItemModelList(importCo.EmailKifirImportJsonItemList, coList)
|
||||
},
|
||||
MainImportItemList = new TanuloKifirImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTanuloKifirImportItemModelList(importCo, coList)
|
||||
},
|
||||
NemImportalhatoItemList = new TanuloKifirImportNemImportalhatoItemListModel
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
protected static ImportInfoSummaryModel GetCimImportInfoSummary(TanuloKifirImportCo importCo, List<CimItemCo> coList)
|
||||
{
|
||||
List<CimKifirImportJsonItemCo> importJsonItemList = importCo.CimKifirImportJsonItemList;
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTanuloKifirResource.Cim,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = importCo.NemImportalhatoItemList.Count.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected static ImportInfoSummaryModel GetEmailImportInfoSummary(TanuloKifirImportCo importCo, List<EmailItemCo> coList)
|
||||
{
|
||||
List<EmailKifirImportJsonItemCo> importJsonItemList = importCo.EmailKifirImportJsonItemList;
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTanuloKifirResource.Email,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = importCo.NemImportalhatoItemList.Count.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetTanuloKifirImportInfoSummary(TanuloKifirImportCo importCo, List<TanuloItemCo> coList)
|
||||
{
|
||||
List<FelhasznaloKifirImportJsonItemCo> importJsonItemList = importCo.MainImportJsonItemList;
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int unchangedRowCount = 0;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTanuloKifirResource.ImportDefaultSheetName,
|
||||
InsertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert).ToString() ?? "0",
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = "-",
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = importCo.NemImportalhatoItemList.Count.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected List<CimImportItemModel> GetCimImportItemModelList(List<CimKifirImportJsonItemCo> importJsonItemList, List<TanuloItemCo> tanuloItemCoList)
|
||||
{
|
||||
var importItemModelList = new List<CimImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (tanuloItemCoList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<CimKifirImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (CimKifirImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new CimImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = importJsonItem.Elotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = importJsonItem.Vezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = importJsonItem.Keresztnev ?? string.Empty,
|
||||
TipusNev = importJsonItem.TipusId.GetDisplayName<CimTipusEnum>(ClaimData.SelectedTanevID.Value) ?? string.Empty,
|
||||
Iranyitoszam = importJsonItem.Iranyitoszam ?? string.Empty,
|
||||
Telepules = importJsonItem.Telepules ?? string.Empty,
|
||||
Kozterulet = importJsonItem.Kozterulet ?? string.Empty,
|
||||
KozteruletJellegNev = importJsonItem.KozteruletJellegeNev,
|
||||
Hazszam = importJsonItem.Hazszam ?? string.Empty,
|
||||
Emelet = importJsonItem.Emelet ?? string.Empty,
|
||||
Ajto = importJsonItem.Ajto ?? string.Empty,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (CimItemCo co in tanuloItemCoList.SelectMany(x => x.CimList))
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new CimImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = co.FelhasznaloElotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = co.FelhasznaloVezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = co.FelhasznaloKeresztnev ?? string.Empty,
|
||||
TipusNev = co.TipusNev ?? string.Empty,
|
||||
Iranyitoszam = co.Iranyitoszam ?? string.Empty,
|
||||
Telepules = co.Telepules ?? string.Empty,
|
||||
Kozterulet = co.Kozterulet ?? string.Empty,
|
||||
KozteruletJellegNev = co.KozteruletJellegNev ?? string.Empty,
|
||||
Hazszam = co.Hazszam ?? string.Empty,
|
||||
Emelet = co.Emelet ?? string.Empty,
|
||||
Ajto = co.Ajto ?? string.Empty,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.FelhasznaloVezeteknev)
|
||||
.ThenBy(x => x.FelhasznaloKeresztnev)
|
||||
.ThenBy(x => x.TipusNev)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
protected List<EmailImportItemModel> GetEmailImportItemModelList(List<EmailKifirImportJsonItemCo> importJsonItemList, List<TanuloItemCo> tanuloItemCoList)
|
||||
{
|
||||
var importItemModelList = new List<EmailImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (tanuloItemCoList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<EmailKifirImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (EmailKifirImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new EmailImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = importJsonItem.Elotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = importJsonItem.Vezeteknev,
|
||||
FelhasznaloKeresztnev = importJsonItem.Keresztnev,
|
||||
TipusNev = importJsonItem.TipusId?.GetDisplayName<EmailTipusEnum>(ClaimData.SelectedTanevID.Value) ?? string.Empty,
|
||||
EmailCim = importJsonItem.EmailCim,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (EmailItemCo co in tanuloItemCoList.SelectMany(x => x.EmailList))
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new EmailImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = co.FelhasznaloElotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = co.FelhasznaloVezeteknev,
|
||||
FelhasznaloKeresztnev = co.FelhasznaloKeresztnev,
|
||||
TipusNev = co.TipusNev ?? string.Empty,
|
||||
EmailCim = co.EmailCim,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.FelhasznaloVezeteknev)
|
||||
.ThenBy(x => x.FelhasznaloKeresztnev)
|
||||
.ThenBy(x => x.TipusNev)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
protected List<TanuloKifirImportItemModel> GetTanuloKifirImportItemModelList(TanuloKifirImportCo importCo, List<TanuloItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<TanuloKifirImportItemModel>();
|
||||
List<FelhasznaloKifirImportJsonItemCo> importJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (!coList.Any())
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<FelhasznaloKifirImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (FelhasznaloKifirImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TanuloKifirImportItemModel
|
||||
{
|
||||
Elotag = importJsonItem.Elotag ?? string.Empty,
|
||||
Vezeteknev = importJsonItem.Vezeteknev,
|
||||
Keresztnev = importJsonItem.Keresztnev,
|
||||
OktatasiAzonosito = importJsonItem.OktatasiAzonosito,
|
||||
SzuletesiHely = importJsonItem.SzuletesiHely,
|
||||
SzuletesiIdo = importJsonItem.SzuletesiIdo,
|
||||
AnyjaNeve = importJsonItem.AnyjaNeve,
|
||||
AllampolgarsagNev = importJsonItem.AllampolgarsagId.GetDisplayName<AllampolgarsagEnum>(ClaimData.SelectedTanevID.Value),
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TanuloItemCo co in coList)
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
var operation = (int)ImportItemOperationEnum.Default;
|
||||
importItemModelList.Add(new TanuloKifirImportItemModel
|
||||
{
|
||||
Elotag = co.FelhasznaloElotag ?? string.Empty,
|
||||
Vezeteknev = co.FelhasznaloVezeteknev,
|
||||
Keresztnev = co.FelhasznaloKeresztnev,
|
||||
OktatasiAzonosito = co.FelhasznaloOktatasiAzonosito,
|
||||
SzuletesiHely = co.FelhasznaloSzuletesiHely,
|
||||
SzuletesiIdo = co.FelhasznaloSzuletesiIdo,
|
||||
AnyjaNeve = co.FelhasznaloAnyjaNeve,
|
||||
AllampolgarsagNev = co.AllampolgarsagNev ?? string.Empty,
|
||||
Operation = operation
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Vezeteknev).ThenBy(x => x.Keresztnev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<TanuloKifirImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<TanuloKifirImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<TanuloKifirImportNemImportalhatoItemModel>();
|
||||
foreach (TanuloKifirImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new TanuloKifirImportNemImportalhatoItemModel
|
||||
{
|
||||
NevImportData = nemImportalhatoItem.NevImportData,
|
||||
OktatasiAzonositoImportData = nemImportalhatoItem.OktatasiAzonositoImportData,
|
||||
SzuletesiHelyImportData = nemImportalhatoItem.SzuletesiHelyImportData,
|
||||
SzuletesiDatumImportData = nemImportalhatoItem.SzuletesiDatumImportData,
|
||||
AnyjaNeveImportData = nemImportalhatoItem.AnyjaNeveImportData,
|
||||
AllandoLakcimIranyitoszamImportData = nemImportalhatoItem.AllandoLakcimIranyitoszamImportData,
|
||||
AllandoLakcimTelepulesImportData = nemImportalhatoItem.AllandoLakcimTelepulesImportData,
|
||||
AllandoLakcimKozteruletImportData = nemImportalhatoItem.AllandoLakcimKozteruletImportData,
|
||||
ErtesitesiCimIranyitoszamImportData = nemImportalhatoItem.ErtesitesiCimIranyitoszamImportData,
|
||||
ErtesitesiCimTelepulesImportData = nemImportalhatoItem.ErtesitesiCimTelepulesImportData,
|
||||
ErtesitesiCimKozteruletImportData = nemImportalhatoItem.ErtesitesiCimKozteruletImportData,
|
||||
AllampolgarsagImportData = nemImportalhatoItem.AllampolgarsagImportData,
|
||||
EmailCimImportData = nemImportalhatoItem.EmailCimImportData,
|
||||
|
||||
KilencedikEvfolyamnalAlacsonyabbImportData = nemImportalhatoItem.KilencedikEvfolyamnalAlacsonyabbImportData,
|
||||
ErtesitesiCimNevImportData = nemImportalhatoItem.ErtesitesiCimNevImportData,
|
||||
AltalanosIskolaOmKodjaImportData = nemImportalhatoItem.AltalanosIskolaOmKodjaImportData,
|
||||
AltalanosIskolaNeveImportData = nemImportalhatoItem.AltalanosIskolaNeveImportData,
|
||||
AltalanosIskolaIranyitoszamImportData = nemImportalhatoItem.AltalanosIskolaIranyitoszamImportData,
|
||||
AltalanosIskolaCimImportData = nemImportalhatoItem.AltalanosIskolaCimImportData,
|
||||
AltalanosIskolaTelepulesImportData = nemImportalhatoItem.AltalanosIskolaTelepulesImportData,
|
||||
AltalanosIskolaTelefonszamImportData = nemImportalhatoItem.AltalanosIskolaTelefonszamImportData,
|
||||
AltalanosIskolaEmailCimImportData = nemImportalhatoItem.AltalanosIskolaEmailCimImportData,
|
||||
FelveteltNyertTanulmanyiKeruletNeveImportData = nemImportalhatoItem.FelveteltNyertTanulmanyiKeruletNeveImportData,
|
||||
FelveteltNyertTanulmanyiKeruletKodszamaImportData = nemImportalhatoItem.FelveteltNyertTanulmanyiKeruletKodszamaImportData,
|
||||
FelveteltNyertTanulmanyiKeruletSzovegeImportData = nemImportalhatoItem.FelveteltNyertTanulmanyiKeruletSzovegeImportData,
|
||||
NemNyertFelveteltElutasitasImportData = nemImportalhatoItem.NemNyertFelveteltElutasitasImportData,
|
||||
NemNyertFelveteltBeteltImportData = nemImportalhatoItem.NemNyertFelveteltBeteltImportData,
|
||||
NemNyertFelveteltElobbreNertFelveteltImportData = nemImportalhatoItem.NemNyertFelveteltElobbreNertFelveteltImportData,
|
||||
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.NevImportData).ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var helper = new TanuloKifirImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
|
||||
TanuloKifirImportCo importCo = helper.ImportCo;
|
||||
helper.Import(new { ImportJson = importCo });
|
||||
|
||||
return Content(Url.Content(TovabbUrl));
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,380 @@
|
|||
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.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TanulokElerhetosegiAdataikImportExport;
|
||||
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)]
|
||||
[MvcRolePackageAuthorize(TanevEnum.AktEsKovTanev, KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class TanulokElerhetosegiAdataikImportExportController : BaseImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"/Tanulo/Tanulo";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string GridName => "TanulokElerhetosegiAdataikGrid";
|
||||
public static string GridRowTemplateName => "TanulokElerhetosegiAdataikGridRowTemplate";
|
||||
|
||||
public static string TelefonszamGridName => "TelefonszamGrid";
|
||||
public static string TelefonszamGridRowTemplateName => "TelefonszamGridRowTemplate";
|
||||
|
||||
public static string EmailGridName => "EmailGrid";
|
||||
public static string EmailGridRowTemplateName => "EmailGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "TanulokElerhetosegiAdataikImportExportHelper";
|
||||
|
||||
public static string ConrtollerName => "TanulokElerhetosegiAdataikImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public TanulokElerhetosegiAdataikImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
var model = new TanulokElerhetosegiAdataikImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions
|
||||
};
|
||||
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
MemoryStream memoryStream = new TanulokElerhetosegiAdataikImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate();
|
||||
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportTanulokElerhetosegiAdataikResource.ImportSablonFileName };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export()
|
||||
{
|
||||
MemoryStream memoryStream = new TanulokElerhetosegiAdataikImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport();
|
||||
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new TanulokElerhetosegiAdataikImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
|
||||
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int importMuvelet)
|
||||
{
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
|
||||
var errorResult = new List<string>();
|
||||
Dictionary<int, string> importHeaderList = TanulokElerhetosegiAdataikImportExportHelper.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 TanulokElerhetosegiAdataikImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, importMuvelet, ClaimData.IsSzakkepzoIntezmeny);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
TanulokElerhetosegiAdataikImportCo importCo = new TanulokElerhetosegiAdataikImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
List<TanuloItemCo> coList = importCo.TanuloCoList;
|
||||
|
||||
var importInfoModel = new TanulokElerhetosegiAdataikImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetTelefonImportInfoSummary(importCo, coList.Select(x => x.TelefonList.FirstOrDefault()).Where(x => x != null).ToList()),
|
||||
GetEmailImportInfoSummary(importCo, coList.Select(x => x.EmailList.FirstOrDefault()).Where(x => x != null).ToList())
|
||||
}
|
||||
},
|
||||
TelefonImportItemList = new TelefonImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetTelefonImportItemModelList(importCo.TelefonTanuloImportJsonItemList, coList)
|
||||
},
|
||||
EmailImportItemList = new EmailImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetEmailImportItemModelList(importCo.EmailTanuloImportJsonItemList, coList)
|
||||
},
|
||||
NemImportalhatoItemList = new TanulokElerhetosegiAdataikImportNemImportalhatoItemListModel
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
protected static ImportInfoSummaryModel GetTelefonImportInfoSummary(TanulokElerhetosegiAdataikImportCo importCo, List<TelefonItemCo> coList)
|
||||
{
|
||||
List<TelefonTanuloImportJsonItemCo> importJsonItemList = importCo.TelefonTanuloImportJsonItemList;
|
||||
int insertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert) ?? 0;
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int deleteRowCount = importCo.ImportMuvelet == (int)ImportMuveletEnum.DeleteAndInsert ? coList.Count(x => x.Importalt) : 0;
|
||||
int unchangedRowCount = 0;
|
||||
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.DeleteAndInsert:
|
||||
unchangedRowCount = coList.Count(x => !x.Importalt);
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
int invalidRowCount = importCo.NemImportalhatoItemList.Count;
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTanulokElerhetosegiAdataikResource.Telefon,
|
||||
InsertRowCount = insertRowCount.ToString(),
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = deleteRowCount.ToString(),
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = invalidRowCount.ToString()
|
||||
};
|
||||
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
protected static ImportInfoSummaryModel GetEmailImportInfoSummary(TanulokElerhetosegiAdataikImportCo importCo, List<EmailItemCo> coList)
|
||||
{
|
||||
List<EmailTanuloImportJsonItemCo> importJsonItemList = importCo.EmailTanuloImportJsonItemList;
|
||||
int insertRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Insert) ?? 0;
|
||||
int updateRowCount = importJsonItemList?.Count(x => x.Operation == (int)ImportItemOperationEnum.Update) ?? 0;
|
||||
int deleteRowCount = importCo.ImportMuvelet == (int)ImportMuveletEnum.DeleteAndInsert ? coList.Count(x => x.Importalt) : 0;
|
||||
int unchangedRowCount = 0;
|
||||
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.DeleteAndInsert:
|
||||
unchangedRowCount = coList.Count(x => !x.Importalt);
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.Insert:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
}
|
||||
|
||||
int invalidRowCount = importCo.NemImportalhatoItemList.Count;
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTanulokElerhetosegiAdataikResource.Email,
|
||||
InsertRowCount = insertRowCount.ToString(),
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = deleteRowCount.ToString(),
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = invalidRowCount.ToString()
|
||||
};
|
||||
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private List<TelefonImportItemModel> GetTelefonImportItemModelList(List<TelefonTanuloImportJsonItemCo> importJsonItemList, List<TanuloItemCo> tanuloItemCoList)
|
||||
{
|
||||
var importItemModelList = new List<TelefonImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (tanuloItemCoList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<TelefonTanuloImportJsonItemCo>();
|
||||
}
|
||||
|
||||
foreach (TelefonTanuloImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
var tanulo = tanuloItemCoList.FirstOrDefault(t => t.FelhasznaloId == importJsonItem.FelhasznaloId);
|
||||
importItemModelList.Add(new TelefonImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = tanulo?.FelhasznaloElotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = tanulo?.FelhasznaloVezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = tanulo?.FelhasznaloKeresztnev ?? string.Empty,
|
||||
Telefonszam = importJsonItem.Telefonszam ?? string.Empty,
|
||||
IsAlapertelmezett = importJsonItem.IsAlapertelmezett == "T" ? Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Igen) : Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Nem),
|
||||
TipusNev = importJsonItem.TipusNev ?? string.Empty,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
foreach (TelefonItemCo co in tanuloItemCoList.Select(x => x.TelefonList.FirstOrDefault()).Where(x => x != null))
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new TelefonImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = co.FelhasznaloElotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = co.FelhasznaloVezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = co.FelhasznaloKeresztnev ?? string.Empty,
|
||||
Telefonszam = co.Telefonszam ?? string.Empty,
|
||||
IsAlapertelmezett = co.IsAlapertelmezett == true ? Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Igen) : Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Nem),
|
||||
TipusNev = co.TipusNev ?? string.Empty,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.FelhasznaloVezeteknev)
|
||||
.ThenBy(x => x.FelhasznaloKeresztnev)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<EmailImportItemModel> GetEmailImportItemModelList(List<EmailTanuloImportJsonItemCo> importJsonItemList, List<TanuloItemCo> tanuloItemCoList)
|
||||
{
|
||||
var importItemModelList = new List<EmailImportItemModel>();
|
||||
if (importJsonItemList == null)
|
||||
{
|
||||
if (tanuloItemCoList.Count == 0)
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
importJsonItemList = new List<EmailTanuloImportJsonItemCo>();
|
||||
}
|
||||
|
||||
foreach (EmailTanuloImportJsonItemCo importJsonItem in importJsonItemList)
|
||||
{
|
||||
var tanulo = tanuloItemCoList.FirstOrDefault(t => t.FelhasznaloId == importJsonItem.FelhasznaloId);
|
||||
importItemModelList.Add(new EmailImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = tanulo?.FelhasznaloElotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = tanulo?.FelhasznaloVezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = tanulo?.FelhasznaloKeresztnev ?? string.Empty,
|
||||
EmailCim = importJsonItem.EmailCim ?? string.Empty,
|
||||
IsAlapertelmezett = importJsonItem.IsAlapertelmezett == "T" ? Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Igen) : Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Nem),
|
||||
TipusNev = importJsonItem.TipusNev ?? string.Empty,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
foreach (EmailItemCo co in tanuloItemCoList.Select(x => x.EmailList.FirstOrDefault()).Where(x => x != null))
|
||||
{
|
||||
if (!importJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new EmailImportItemModel
|
||||
{
|
||||
FelhasznaloElotag = co.FelhasznaloElotag ?? string.Empty,
|
||||
FelhasznaloVezeteknev = co.FelhasznaloVezeteknev ?? string.Empty,
|
||||
FelhasznaloKeresztnev = co.FelhasznaloKeresztnev ?? string.Empty,
|
||||
EmailCim = co.EmailCim ?? string.Empty,
|
||||
IsAlapertelmezett = co.IsAlapertelmezett == true ? Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Igen) : Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Nem),
|
||||
TipusNev = co.TipusNev ?? string.Empty,
|
||||
Operation = (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList
|
||||
.OrderBy(x => x.FelhasznaloVezeteknev)
|
||||
.ThenBy(x => x.FelhasznaloKeresztnev)
|
||||
.ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<TanulokElerhetosegiAdataikImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<TanulokElerhetosegiAdataikImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<TanulokElerhetosegiAdataikImportNemImportalhatoItemModel>();
|
||||
foreach (TanulokElerhetosegiAdataikImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new TanulokElerhetosegiAdataikImportNemImportalhatoItemModel
|
||||
{
|
||||
TanuloNeveImportData = nemImportalhatoItem.TanuloNeveImportData,
|
||||
TanuloOktatasiAzonositoImportData = nemImportalhatoItem.TanuloOktatasiAzonositoImportData,
|
||||
TanuloTelefonszamImportData = nemImportalhatoItem.TanuloTelefonszamImportData,
|
||||
TelefonszamAlapertelmezettImportData = nemImportalhatoItem.TelefonszamAlapertelmezettImportData,
|
||||
TelefonszamTipusaImportData = nemImportalhatoItem.TelefonszamTipusaImportData,
|
||||
TanuloEmailCimImportData = nemImportalhatoItem.TanuloEmailCimImportData,
|
||||
EmailAlapertelmezettImportData = nemImportalhatoItem.EmailAlapertelmezettImportData,
|
||||
EmailTipusImportData = nemImportalhatoItem.EmailTipusImportData,
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.TanuloNeveImportData).ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var tanulokElerhetosegiAdataikImportExportHelper = new TanulokElerhetosegiAdataikImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
TanulokElerhetosegiAdataikImportCo importCo = tanulokElerhetosegiAdataikImportExportHelper.ImportCo;
|
||||
|
||||
string tableNameList = "T_TELEFON_OSSZES,T_EMAIL_OSSZES";
|
||||
var alapertelmezettEmailFelhasznaloIds = importCo.EmailTanuloImportJsonItemList.Where(e => e.IsAlapertelmezett == "T").Select(e => e.FelhasznaloId);
|
||||
var alapertelmezettTelefonFelhasznaloIds = importCo.TelefonTanuloImportJsonItemList.Where(t => t.IsAlapertelmezett == "T").Select(t => t.FelhasznaloId);
|
||||
tanulokElerhetosegiAdataikImportExportHelper.Import(new { ImportJson = importCo }, importCo.ImportMuvelet, tableNameList, alapertelmezettEmailFelhasznaloIds, alapertelmezettTelefonFelhasznaloIds);
|
||||
|
||||
return Json(new { tovabbUrl = TovabbUrl });
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
|
@ -0,0 +1,275 @@
|
|||
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.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers.ImportExport;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Enums.ManualEnums.ImportExport;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.ImportExport.Models.CommonModels;
|
||||
using Kreta.Web.Areas.ImportExport.Models.TeremImportExport;
|
||||
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 TeremImportExportController : BaseImportExportController
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string TovabbUrl = @"~/Intezmeny/Terem";
|
||||
|
||||
#endregion Fields
|
||||
|
||||
#region Properties
|
||||
|
||||
public static string GridName => "TeremGrid";
|
||||
public static string GridRowTemplateName => "TeremGridRowTemplate";
|
||||
|
||||
public static string JavascriptHelperClassName => "TeremImportExportHelper";
|
||||
|
||||
public static string ConrtollerName => "TeremImportExport";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Constructors
|
||||
|
||||
public TeremImportExportController(IUploadFileValidator uploadFileValidator)
|
||||
{
|
||||
UploadFileValidator = uploadFileValidator ?? throw new ArgumentNullException(nameof(uploadFileValidator));
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
var model = new TeremImportExportModel
|
||||
{
|
||||
MaxAllowedFileSizeInBytes = UploadFileValidator.Configuration.ImportMaxAllowedFileSizeInBytes,
|
||||
AllowedFileExtensions = UploadFileValidator.Configuration.ImportAllowedFileExtensions
|
||||
};
|
||||
return View(model);
|
||||
}
|
||||
|
||||
#region Sablon
|
||||
|
||||
public ActionResult DownloadTemplate()
|
||||
{
|
||||
MemoryStream memoryStream = new TeremImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTemplate();
|
||||
return new FileStreamResult(memoryStream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = ImportExportTeremResource.ImportSablonFileName };
|
||||
}
|
||||
|
||||
#endregion Sablon
|
||||
|
||||
#region Export
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string Export()
|
||||
{
|
||||
MemoryStream memoryStream = new TeremImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport(false);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[MvcValidateAjaxAntiForgeryToken]
|
||||
public string ExportTermekAdatai()
|
||||
{
|
||||
MemoryStream memoryStream = new TeremImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetExport(true);
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
public string NemImportalhatoSorokExport()
|
||||
{
|
||||
MemoryStream memoryStream = new TeremImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemImportalhatoSorokExport();
|
||||
return GetExportFileString(memoryStream);
|
||||
}
|
||||
|
||||
#endregion Export
|
||||
|
||||
#region Import
|
||||
|
||||
public JsonResult UploadFile(HttpPostedFileBase importFile, int importMuvelet, int? mukodesiHelyId)
|
||||
{
|
||||
UploadFileValidator.ValidateImportFile(importFile);
|
||||
|
||||
var errorResult = new List<string>();
|
||||
if (mukodesiHelyId == null)
|
||||
{
|
||||
errorResult.Add(ErrorResource.MukodesiHelyMegadasaKotelezo);
|
||||
}
|
||||
|
||||
Dictionary<int, string> importHeaderList = TeremImportExportHelper.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;
|
||||
}
|
||||
|
||||
//NOTE: mukodesiHelyId.Value nem lehet null a korábbi vizsgálatok miatt!
|
||||
new TeremImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetImportCo(importData, importMuvelet, mukodesiHelyId.Value);
|
||||
|
||||
return Json(null);
|
||||
}
|
||||
|
||||
public ActionResult OpenImportPreviewPopup()
|
||||
{
|
||||
TeremImportCo importCo = new TeremImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
List<TeremItemCo> coList = importCo.TeremCoList;
|
||||
|
||||
var importInfoModel = new TeremImportInfoModel
|
||||
{
|
||||
ImportInfoSummaryList = new ImportInfoSummaryListModel
|
||||
{
|
||||
ImportInfoSummaryModelList = new List<ImportInfoSummaryModel>
|
||||
{
|
||||
GetImportInfoSummary(importCo, coList)
|
||||
}
|
||||
},
|
||||
MainImportItemList = new TeremImportItemListModel
|
||||
{
|
||||
ImportItemModelList = GetImportItemModelList(importCo, coList)
|
||||
},
|
||||
NemImportalhatoItemList = new TeremImportNemImportalhatoItemListModel
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
private static ImportInfoSummaryModel GetImportInfoSummary(TeremImportCo importCo, List<TeremItemCo> coList)
|
||||
{
|
||||
List<TeremImportJsonItemCo> 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;
|
||||
switch (importCo.ImportMuvelet)
|
||||
{
|
||||
case (int)ImportMuveletEnum.DeleteAndInsert:
|
||||
unchangedRowCount = coList.Count(x => !x.Importalt);
|
||||
break;
|
||||
|
||||
case (int)ImportMuveletEnum.InsertAndUpdate:
|
||||
unchangedRowCount = coList.Count - updateRowCount;
|
||||
break;
|
||||
|
||||
default:
|
||||
unchangedRowCount = coList.Count;
|
||||
break;
|
||||
}
|
||||
|
||||
int invalidRowCount = importCo.NemImportalhatoItemList.Count;
|
||||
var importInfoSummary = new ImportInfoSummaryModel
|
||||
{
|
||||
ImportName = ImportExportTeremResource.ImportDefaultSheetName,
|
||||
InsertRowCount = insertRowCount.ToString(),
|
||||
UpdateRowCount = updateRowCount.ToString(),
|
||||
DeleteRowCount = deleteRowCount.ToString(),
|
||||
UnchangedRowCount = unchangedRowCount.ToString(),
|
||||
InvalidRowCount = invalidRowCount.ToString()
|
||||
};
|
||||
return importInfoSummary;
|
||||
}
|
||||
|
||||
private List<TeremImportItemModel> GetImportItemModelList(TeremImportCo importCo, List<TeremItemCo> coList)
|
||||
{
|
||||
var importItemModelList = new List<TeremImportItemModel>();
|
||||
List<TeremImportJsonItemCo> mainImportJsonItemList = importCo.MainImportJsonItemList;
|
||||
if (mainImportJsonItemList == null)
|
||||
{
|
||||
if (!(coList.Count > 0))
|
||||
{
|
||||
return importItemModelList;
|
||||
}
|
||||
|
||||
mainImportJsonItemList = new List<TeremImportJsonItemCo>();
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az excel-ből jöttek!
|
||||
foreach (TeremImportJsonItemCo importJsonItem in mainImportJsonItemList)
|
||||
{
|
||||
importItemModelList.Add(new TeremImportItemModel
|
||||
{
|
||||
Nev = importJsonItem.Nev,
|
||||
JellegNev = importJsonItem.JellegId.GetDisplayName<TeremTipusEnum>(ClaimData.SelectedTanevID.Value),
|
||||
Kapacitas = importJsonItem.Kapacitas != null ? importJsonItem.Kapacitas.ToString() : string.Empty,
|
||||
Terulet = importJsonItem.Terulet != null ? importJsonItem.Terulet.ToString() : string.Empty,
|
||||
Operation = importJsonItem.Operation
|
||||
});
|
||||
}
|
||||
|
||||
//NOTE: Hozzáadjuk azokat a az elemeket, amik az adatbázisból jöttek!
|
||||
foreach (TeremItemCo co in coList)
|
||||
{
|
||||
if (!mainImportJsonItemList.Select(x => x.Id).Contains(co.Id))
|
||||
{
|
||||
importItemModelList.Add(new TeremImportItemModel
|
||||
{
|
||||
Nev = co.Nev,
|
||||
JellegNev = co.JellegNev,
|
||||
Kapacitas = co.Kapacitas != null ? co.Kapacitas.ToString() : string.Empty,
|
||||
Terulet = co.Terulet != null ? co.Terulet.ToString() : string.Empty,
|
||||
Operation = importCo.ImportMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && co.Importalt ? (int)ImportItemOperationEnum.Delete : (int)ImportItemOperationEnum.Default
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return importItemModelList.OrderBy(x => x.Nev).ThenByDescending(x => x.OperationText).ToList();
|
||||
}
|
||||
|
||||
private List<TeremImportNemImportalhatoItemModel> GetNemImportalhatoItemModelList(List<TeremImportItemCo> nemImportalhatoItemList)
|
||||
{
|
||||
var nemImportalhatoItemModelList = new List<TeremImportNemImportalhatoItemModel>();
|
||||
foreach (TeremImportItemCo nemImportalhatoItem in nemImportalhatoItemList)
|
||||
{
|
||||
nemImportalhatoItemModelList.Add(new TeremImportNemImportalhatoItemModel
|
||||
{
|
||||
HelyisegNevImportData = nemImportalhatoItem.HelyisegNevImportData,
|
||||
JellegImportData = nemImportalhatoItem.JellegImportData,
|
||||
BefogadokepessegImportData = nemImportalhatoItem.BefogadokepessegImportData,
|
||||
AlapteruletImportData = nemImportalhatoItem.AlapteruletImportData,
|
||||
ErrorList = string.Join(Environment.NewLine, nemImportalhatoItem.ErrorList)
|
||||
});
|
||||
}
|
||||
|
||||
return nemImportalhatoItemModelList.OrderBy(x => x.HelyisegNevImportData).ToList();
|
||||
}
|
||||
|
||||
public ActionResult Import()
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
TeremImportCo importCo = new TeremImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ImportCo;
|
||||
new ImportExportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).Import(new { ImportJson = importCo }, importCo.ImportMuvelet);
|
||||
return Content(Url.Content(TovabbUrl));
|
||||
}
|
||||
|
||||
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
|
||||
}
|
||||
|
||||
#endregion Import
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue