335 lines
19 KiB
C#
335 lines
19 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Web;
|
|
using System.Web.Mvc;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
|
using Kreta.BusinessLogic.Helpers.ImportExport;
|
|
using Kreta.BusinessLogic.Security;
|
|
using Kreta.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
|
|
}
|
|
}
|