This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -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
}
}

View file

@ -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);
}
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

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

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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 });
}
}
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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);
}
}
}

View file

@ -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
}
}

View file

@ -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);
}
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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
}
}