kreta/Kreta.BusinessLogic/Helpers/ImportExport/TanuloKifirImportExportHelper.cs
2024-03-13 00:33:46 +01:00

502 lines
34 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data;
using System.IO;
using System.Linq;
using System.Runtime.Caching;
using Aspose.Cells;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.HelperClasses.ImportCo;
using Kreta.BusinessLogic.Logic;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.Enums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Framework.Util;
using Kreta.Resources;
using Newtonsoft.Json;
using Cache = Kreta.Core.Cache;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class TanuloKifirImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportTanuloKifirResource.ImportHeaderNameNev },
{ 01, ImportExportTanuloKifirResource.ImportHeaderNameOktatasiAzonosito },
{ 02, ImportExportTanuloKifirResource.ImportHeaderNameKilencedikEvfolyamnalAlacsonyabb },
{ 03, ImportExportTanuloKifirResource.ImportHeaderNameSzuletesiHely },
{ 04, ImportExportTanuloKifirResource.ImportHeaderNameSzuletesiDatum },
{ 05, ImportExportTanuloKifirResource.ImportHeaderNameAnyjaNeve },
{ 06, ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimIranyitoszam },
{ 07, ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimTelepules },
{ 08, ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimKozterulet },
{ 09, ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimNev },
{ 10, ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimIranyitoszam },
{ 11, ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimTelepules },
{ 12, ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimKozterulet },
{ 13, ImportExportTanuloKifirResource.ImportHeaderNameAllampolgarsag },
{ 14, ImportExportTanuloKifirResource.ImportHeaderNameEmailCim },
{ 15, ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaOmKodja },
{ 16, ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaNeve },
{ 17, ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaIranyitoszam },
{ 18, ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaCim },
{ 19, ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaTelepules },
{ 20, ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaTelefonszam },
{ 21, ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaEmailCim },
{ 22, ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletNeve },
{ 23, ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletKodszama },
{ 24, ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletSzovege },
{ 25, ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltElobbreNertFelvetelt },
{ 26, ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltBetelt },
{ 27, ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltElutasitas }
};
public TanuloKifirImportCo ImportCo
{
get => (TanuloKifirImportCo)Cache.Get(_importObjectCacheKey);
set
{
if (ImportCo != null)
{
Cache.Remove(_importObjectCacheKey);
}
Cache.Add(_importObjectCacheKey, value, new CacheItemPolicy { SlidingExpiration = TimeSpan.FromMinutes(30) });
}
}
#endregion Properties
#region Constructors
public TanuloKifirImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(TanuloKifirImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, int importMuvelet)
{
TanuloKifirImportCo importCo = GetImportCoFromImportData(importData);
importCo.ImportMuvelet = importMuvelet;
SetNemImportalhatoSorokByValidation(importCo);
List<TanuloItemCo> coList = importCo.TanuloCoList;
//NOTE: Azért van szükség Dictionary-kre, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> cimCompareHashImportItemCompareCoDictionary = GetCimCompareHashImportItemCompareCoDictionary(coList);
Dictionary<string, ImportItemCompareCo> emailCompareHashImportItemCompareCoDictionary = GetEmailCompareHashImportItemCompareCoDictionary(coList);
Dictionary<string, ImportItemCompareCo> tanuloKifirCompareHashImportItemCompareCoDictionary = GetTanuloKifirCompareHashImportItemCompareCoDictionary(coList);
foreach (TanuloKifirImportItemCo importItem in importCo.MainImportItemList)
{
SetOperationAllandoLakcim(importItem, cimCompareHashImportItemCompareCoDictionary, importCo.ImportMuvelet);
SetOperationIdeiglenesLakcim(importItem, cimCompareHashImportItemCompareCoDictionary, importCo.ImportMuvelet);
if (!string.IsNullOrWhiteSpace(importItem.EmailCim))
{
SetOperationEmail(importItem, emailCompareHashImportItemCompareCoDictionary);
}
SetOperationTanuloKifir(importItem, tanuloKifirCompareHashImportItemCompareCoDictionary, importCo);
}
//NOTE: Azokat a sorokat, amelyek bekerültek a NemImportalhatoItemList-be, azokat kiveszzük a MainImportItemList-ből!
importCo.MainImportItemList.RemoveRange(importCo.NemImportalhatoItemList);
var cimImportJsonItemList = new List<CimKifirImportJsonItemCo>();
var emailImportJsonItemList = new List<EmailKifirImportJsonItemCo>();
var tanuloImportJsonItemList = new List<TanuloKifirImportJsonItemCo>();
var tantervId = new TantervHelper(ConnectionType).GetAktivTantervDataSet().Tables[0].AsEnumerable().Select(x => SDAConvert.ToInt32(x["ID"])).Max();
var mainImportJsonItemList = new List<FelhasznaloKifirImportJsonItemCo>();
foreach (TanuloKifirImportItemCo importItem in importCo.MainImportItemList)
{
cimImportJsonItemList.Add(new CimKifirImportJsonItemCo(importItem, (int)CimTipusEnum.allando_lakcim, TanevId, IntezmenyId, FelhasznaloId));
cimImportJsonItemList.Add(new CimKifirImportJsonItemCo(importItem, (int)CimTipusEnum.ideiglenes_lakcim, TanevId, IntezmenyId, FelhasznaloId));
if (!string.IsNullOrWhiteSpace(importItem.EmailCim) &&
importItem.OperationEmail == (int)ImportItemOperationEnum.Insert)
{
emailImportJsonItemList.Add(new EmailKifirImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
}
tanuloImportJsonItemList.Add(new TanuloKifirImportJsonItemCo(importItem, tantervId, TanevId, IntezmenyId, FelhasznaloId));
mainImportJsonItemList.Add(new FelhasznaloKifirImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
}
importCo.CimKifirImportJsonItemList = cimImportJsonItemList;
importCo.EmailKifirImportJsonItemList = emailImportJsonItemList;
importCo.TanuloKifirImportJsonItemList = tanuloImportJsonItemList;
importCo.MainImportJsonItemList = mainImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(TanuloKifirImportCo importCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate();
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (TanuloKifirImportItemCo importItem in importCo.MainImportItemList.Where(x => validationResultDictionary.Keys.Contains(x.LineNumber)))
{
IEnumerable<ValidationResult> validationResultList = validationResultDictionary[importItem.LineNumber];
importItem.ErrorList = validationResultList.Select(x => x.ErrorMessage).ToList();
importCo.NemImportalhatoItemList.Add(importItem);
}
//NOTE: Azokat a sorokat, amelyek bekerültek a NemImportalhatoItemList-be, azokat kiveszzük a MainImportItemList-ből!
importCo.MainImportItemList.RemoveRange(importCo.NemImportalhatoItemList);
}
private static void SetOperationTanuloKifir(TanuloKifirImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, TanuloKifirImportCo importCo)
{
int importMuvelet = importCo.ImportMuvelet;
string compareHash = importItem.CompareHash;
//NOTE: Ha nem találtunk egyezést, akkor mindeképpen Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.Operation = (int)ImportItemOperationEnum.Insert;
}
//NOTE: Ha találtunk egyezést, akkor...
else
{
ImportItemCompareCo importItemCompareCo = compareHashImportItemCompareCoDictionary[compareHash];
//NOTE: ...ha a művelet InsertAndUpdate, akkor Update és beállítjuk az Id-t!
if (importMuvelet == (int)ImportMuveletEnum.InsertAndUpdate)
{
importItem.Id = importItemCompareCo.Id;
importItem.Operation = (int)ImportItemOperationEnum.Update;
}
//NOTE: ...ha a művelet nem InsertAndUpdate, akkor hozzá kell adni a nem NemImportalhatoItemList-hez és jelezni, hogy már szerepel az adatbázisban(Insert műveletnél)!
else
{
importItem.ErrorList.Add(ImportExportCommonResource.NemImportalhatoMertMarSzerepelAzAdatbazisban);
importCo.NemImportalhatoItemList.Add(importItem);
}
}
}
private static void SetOperationAllandoLakcim(TanuloKifirImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, int importMuvelet)
{
var compareHash = importItem.CompareHashAllandoLakcim;
//NOTE: Ha nem találtunk egyezést, akkor mindeképpen Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationAllandoLakcim = (int)ImportItemOperationEnum.Insert;
}
//NOTE: Ha találtunk egyezést, akkor...
else
{
ImportItemCompareCo importItemCompareCo = compareHashImportItemCompareCoDictionary[compareHash];
//NOTE: ...ha a művelet InsertAndUpdate, akkor Update és beállítjuk az Id-t!
if (importMuvelet == (int)ImportMuveletEnum.InsertAndUpdate)
{
importItem.AllandoLakcimId = importItemCompareCo.Id;
importItem.OperationAllandoLakcim = (int)ImportItemOperationEnum.Update;
}
}
}
private static void SetOperationIdeiglenesLakcim(TanuloKifirImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, int importMuvelet)
{
var compareHash = importItem.CompareHashIdeiglenesLakcim;
//NOTE: Ha nem találtunk egyezést, akkor mindeképpen Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationIdeiglenesLakcim = (int)ImportItemOperationEnum.Insert;
}
//NOTE: Ha találtunk egyezést, akkor...
else
{
ImportItemCompareCo importItemCompareCo = compareHashImportItemCompareCoDictionary[compareHash];
//NOTE: ...ha a művelet InsertAndUpdate, akkor Update és beállítjuk az Id-t!
if (importMuvelet == (int)ImportMuveletEnum.InsertAndUpdate)
{
importItem.IdeiglenesLakcimId = importItemCompareCo.Id;
importItem.OperationIdeiglenesLakcim = (int)ImportItemOperationEnum.Update;
}
}
}
private static void SetOperationEmail(TanuloKifirImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary)
{
var compareHash = importItem.CompareHashEmail;
//NOTE: Ha nem találtunk egyezést, akkor mindeképpen Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationEmail = (int)ImportItemOperationEnum.Insert;
}
}
private Dictionary<string, ImportItemCompareCo> GetTanuloKifirCompareHashImportItemCompareCoDictionary(List<TanuloItemCo> tanuloItemCoList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (TanuloItemCo co in tanuloItemCoList)
{
var md5HashInput =
$"{co.FelhasznaloVezeteknevComparableString} {co.FelhasznaloKeresztnevComparableString}" +
co.FelhasznaloSzuletesiHelyComparableString +
co.FelhasznaloSzuletesiIdoComparableString +
co.FelhasznaloOktatasiAzonositoComparableString;
string compareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = co.Id,
CompareHash = compareHash,
Importalt = co.Importalt
};
//NOTE: Elvileg nem fordulhatna elő, de ha az adatbázisban duplikált adat van, akkor csak az elsőt adjuk hozzá!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
compareHashImportItemCompareCoDictionary.Add(compareHash, importItemCompareCo);
}
}
return compareHashImportItemCompareCoDictionary;
}
private Dictionary<string, ImportItemCompareCo> GetCimCompareHashImportItemCompareCoDictionary(List<TanuloItemCo> tanuloItemCoList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (TanuloItemCo tanuloItemCo in tanuloItemCoList)
{
foreach (CimItemCo cimItemCo in tanuloItemCo.CimList)
{
var md5HashInput =
$"{tanuloItemCo.FelhasznaloVezeteknevComparableString} {tanuloItemCo.FelhasznaloKeresztnevComparableString}" +
tanuloItemCo.FelhasznaloSzuletesiHelyComparableString +
tanuloItemCo.FelhasznaloSzuletesiIdoComparableString +
tanuloItemCo.FelhasznaloOktatasiAzonositoComparableString +
cimItemCo.TipusId;
string compareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = cimItemCo.Id,
CompareHash = compareHash
};
//NOTE: Elvileg nem fordulhatna elő, de ha az adatbázisban duplikált adat van, akkor csak az elsőt adjuk hozzá!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
compareHashImportItemCompareCoDictionary.Add(compareHash, importItemCompareCo);
}
}
}
return compareHashImportItemCompareCoDictionary;
}
private Dictionary<string, ImportItemCompareCo> GetEmailCompareHashImportItemCompareCoDictionary(List<TanuloItemCo> tanuloItemCoList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (TanuloItemCo tanuloItemCo in tanuloItemCoList)
{
foreach (EmailItemCo emailItemCo in tanuloItemCo.EmailList)
{
var md5HashInput =
$"{tanuloItemCo.FelhasznaloVezeteknevComparableString} {tanuloItemCo.FelhasznaloKeresztnevComparableString}" +
tanuloItemCo.FelhasznaloSzuletesiHelyComparableString +
tanuloItemCo.FelhasznaloSzuletesiIdoComparableString +
tanuloItemCo.FelhasznaloOktatasiAzonositoComparableString +
emailItemCo.EmailCimComparableString;
string compareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = emailItemCo.Id,
CompareHash = compareHash
};
//NOTE: Elvileg nem fordulhatna elő, de ha az adatbázisban duplikált adat van, akkor csak az elsőt adjuk hozzá!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
compareHashImportItemCompareCoDictionary.Add(compareHash, importItemCompareCo);
}
}
}
return compareHashImportItemCompareCoDictionary;
}
private TanuloKifirImportCo GetImportCoFromImportData(List<List<string>> importData)
{
var importCo = new TanuloKifirImportCo
{
TanuloCoList = new TanuloHelper(ConnectionType).GetTanuloCoList()
};
IDictionary<int, string> kozteruletJellegIdNevDictionary = ((int)GeneratedAdatszotarTipusEnum.KozteruletJelleg).GetItemsByType(TanevId, true).ToDictionary(x => x.Id, x => x.Name);
kozteruletJellegIdNevDictionary.Remove((int)KozteruletJellegEnum.Ures);
int lineNumber = 1;
foreach (List<string> importDataRow in importData.Skip(1))
{
var allandoLakcimKozteruletImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimKozterulet)];
var ertesitesiCimKozteruletImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimKozterulet)];
var importItemCo = new TanuloKifirImportItemCo(TanevId)
{
LineNumber = lineNumber,
NevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameNev)],
OktatasiAzonositoImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameOktatasiAzonosito)],
SzuletesiHelyImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameSzuletesiHely)],
SzuletesiDatumImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameSzuletesiDatum)],
AnyjaNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAnyjaNeve)],
AllandoLakcimIranyitoszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimIranyitoszam)],
AllandoLakcimTelepulesImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimTelepules)],
AllandoLakcimKozteruletImportData = allandoLakcimKozteruletImportData,
ErtesitesiCimIranyitoszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimIranyitoszam)],
ErtesitesiCimTelepulesImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimTelepules)],
ErtesitesiCimKozteruletImportData = ertesitesiCimKozteruletImportData,
AllampolgarsagImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAllampolgarsag)],
EmailCimImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameEmailCim)],
KilencedikEvfolyamnalAlacsonyabbImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameKilencedikEvfolyamnalAlacsonyabb)],
ErtesitesiCimNevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimNev)],
AltalanosIskolaOmKodjaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaOmKodja)],
AltalanosIskolaNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaNeve)],
AltalanosIskolaIranyitoszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaIranyitoszam)],
AltalanosIskolaCimImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaCim)],
AltalanosIskolaTelepulesImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaTelepules)],
AltalanosIskolaTelefonszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaTelefonszam)],
AltalanosIskolaEmailCimImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaEmailCim)],
FelveteltNyertTanulmanyiKeruletNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletNeve)],
FelveteltNyertTanulmanyiKeruletKodszamaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletKodszama)],
FelveteltNyertTanulmanyiKeruletSzovegeImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletSzovege)],
NemNyertFelveteltElutasitasImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltElutasitas)],
NemNyertFelveteltBeteltImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltBetelt)],
NemNyertFelveteltElobbreNertFelveteltImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltElobbreNertFelvetelt)],
AllandoLakcimSplittedCim = TanuloKifirImportItemCo.GetTanuloKifirSplittedCim(kozteruletJellegIdNevDictionary, allandoLakcimKozteruletImportData),
IdeiglenesLakcimSplittedCim = TanuloKifirImportItemCo.GetTanuloKifirSplittedCim(kozteruletJellegIdNevDictionary, ertesitesiCimKozteruletImportData)
};
string allandoLakcimMd5HashInput =
$"{importItemCo.Vezeteknev?.ToComparableString()} {importItemCo.Keresztnev?.ToComparableString()}" +
importItemCo.SzuletesiHely?.ToComparableString() +
importItemCo.SzuletesiIdoString?.ToComparableString() +
importItemCo.OktatasiAzonosito?.ToComparableString() +
(int)CimTipusEnum.allando_lakcim;
importItemCo.CompareHashAllandoLakcim = ImportExportHelper.GetMd5Hash(allandoLakcimMd5HashInput);
string ideiglenesLakcimMd5HashInput =
$"{importItemCo.Vezeteknev?.ToComparableString()} {importItemCo.Keresztnev?.ToComparableString()}" +
importItemCo.SzuletesiHely?.ToComparableString() +
importItemCo.SzuletesiIdoString?.ToComparableString() +
importItemCo.OktatasiAzonosito?.ToComparableString() +
(int)CimTipusEnum.ideiglenes_lakcim;
importItemCo.CompareHashIdeiglenesLakcim = ImportExportHelper.GetMd5Hash(ideiglenesLakcimMd5HashInput);
string emailMd5HashInput =
$"{importItemCo.Vezeteknev?.ToComparableString()} {importItemCo.Keresztnev?.ToComparableString()}" +
importItemCo.SzuletesiHely?.ToComparableString() +
importItemCo.SzuletesiIdoString?.ToComparableString() +
importItemCo.OktatasiAzonosito?.ToComparableString() +
importItemCo.EmailCim?.ToComparableString();
importItemCo.CompareHashEmail = ImportExportHelper.GetMd5Hash(emailMd5HashInput);
string tanuloKifirMd5HashInput =
$"{importItemCo.Vezeteknev?.ToComparableString()} {importItemCo.Keresztnev?.ToComparableString()}" +
importItemCo.SzuletesiHely?.ToComparableString() +
importItemCo.SzuletesiIdoString?.ToComparableString() +
importItemCo.OktatasiAzonosito?.ToComparableString();
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(tanuloKifirMd5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
public MemoryStream GetNemImportalhatoSorokExport()
{
var dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary();
using (var workbook = new Workbook())
{
var worksheet = ImportExportHelper.GetWorksheetsWithDropDownFormula(workbook, ImportExportTanuloKifirResource.ImportDefaultSheetName, ImportHeaderList, dropDownColumnSourceDictionary);
int rowNumber = 1;
foreach (TanuloKifirImportItemCo co in ImportCo.NemImportalhatoItemList)
{
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameNev)].Value = co.NevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameOktatasiAzonosito)].Value = co.OktatasiAzonositoImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameKilencedikEvfolyamnalAlacsonyabb)].Value = co.KilencedikEvfolyamnalAlacsonyabbImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameSzuletesiHely)].Value = co.SzuletesiHelyImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameSzuletesiDatum)].Value = co.SzuletesiDatumImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAnyjaNeve)].Value = co.AnyjaNeveImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimIranyitoszam)].Value = co.AllandoLakcimIranyitoszamImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimTelepules)].Value = co.AllandoLakcimTelepulesImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAllandoLakcimKozterulet)].Value = co.AllandoLakcimKozteruletImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimNev)].Value = co.ErtesitesiCimNevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimIranyitoszam)].Value = co.ErtesitesiCimIranyitoszamImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimTelepules)].Value = co.ErtesitesiCimTelepulesImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameErtesitesiCimKozterulet)].Value = co.ErtesitesiCimKozteruletImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAllampolgarsag)].Value = co.AllampolgarsagImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameEmailCim)].Value = co.EmailCimImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaOmKodja)].Value = co.AltalanosIskolaOmKodjaImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaNeve)].Value = co.AltalanosIskolaNeveImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaIranyitoszam)].Value = co.AltalanosIskolaIranyitoszamImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaCim)].Value = co.AltalanosIskolaCimImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaTelepules)].Value = co.AltalanosIskolaTelepulesImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaTelefonszam)].Value = co.AltalanosIskolaTelefonszamImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameAltalanosIskolaEmailCim)].Value = co.AltalanosIskolaEmailCimImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletNeve)].Value = co.FelveteltNyertTanulmanyiKeruletNeveImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletKodszama)].Value = co.FelveteltNyertTanulmanyiKeruletKodszamaImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameFelveteltNyertTanulmanyiKeruletSzovege)].Value = co.FelveteltNyertTanulmanyiKeruletSzovegeImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltElutasitas)].Value = co.NemNyertFelveteltElutasitasImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltBetelt)].Value = co.NemNyertFelveteltBeteltImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloKifirResource.ImportHeaderNameNemNyertFelveteltElobbreNertFelvetelt)].Value = co.NemNyertFelveteltElobbreNertFelveteltImportData;
Cell errorCell = worksheet.Cells[rowNumber, ImportHeaderList.Count];
errorCell.Value = string.Join(Environment.NewLine, co.ErrorList);
errorCell.SetTextWrap();
rowNumber++;
}
var sheetCodeNameAndColumnsToWrapIndexDictionary = new Dictionary<string, List<int>>
{
{ workbook.Worksheets[0].CodeName, new List<int> { ImportHeaderList.Count } }
};
MemoryStream memoryStream = SimpleExportLogic.GetWorkbookMemoryStream(workbook, sheetCodeNameAndColumnsToWrapIndexDictionary);
return memoryStream;
}
}
public void Import(object importJsonObject)
{
string importJson = JsonConvert.SerializeObject(importJsonObject);
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
dalHandler.ImportExportDal().TanuloKifirImport(IntezmenyId, TanevId, FelhasznaloId, importJson);
dalHandler.Felhasznalo().UpdateAllEgyediAzonosito();
});
}
private Dictionary<string, IList<string>> GetDefaultDropDownColumnSourceDictionary()
{
//NOTE: Create dropdown lists
var logicalColumnDictionary = new Dictionary<string, IList<string>>();
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>(logicalColumnDictionary);
return dropDownColumnSourceDictionary;
}
}
}