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 ImportHeaderList => new Dictionary { { 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> importData, int importMuvelet) { TanuloKifirImportCo importCo = GetImportCoFromImportData(importData); importCo.ImportMuvelet = importMuvelet; SetNemImportalhatoSorokByValidation(importCo); List coList = importCo.TanuloCoList; //NOTE: Azért van szükség Dictionary-kre, mert így sokkal gyorsabb a keresés! Dictionary cimCompareHashImportItemCompareCoDictionary = GetCimCompareHashImportItemCompareCoDictionary(coList); Dictionary emailCompareHashImportItemCompareCoDictionary = GetEmailCompareHashImportItemCompareCoDictionary(coList); Dictionary 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(); var emailImportJsonItemList = new List(); var tanuloImportJsonItemList = new List(); var tantervId = new TantervHelper(ConnectionType).GetAktivTantervDataSet().Tables[0].AsEnumerable().Select(x => SDAConvert.ToInt32(x["ID"])).Max(); var mainImportJsonItemList = new List(); 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> 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 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 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 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 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 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 GetTanuloKifirCompareHashImportItemCompareCoDictionary(List tanuloItemCoList) { var compareHashImportItemCompareCoDictionary = new Dictionary(); 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 GetCimCompareHashImportItemCompareCoDictionary(List tanuloItemCoList) { var compareHashImportItemCompareCoDictionary = new Dictionary(); 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 GetEmailCompareHashImportItemCompareCoDictionary(List tanuloItemCoList) { var compareHashImportItemCompareCoDictionary = new Dictionary(); 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> importData) { var importCo = new TanuloKifirImportCo { TanuloCoList = new TanuloHelper(ConnectionType).GetTanuloCoList() }; IDictionary kozteruletJellegIdNevDictionary = ((int)GeneratedAdatszotarTipusEnum.KozteruletJelleg).GetItemsByType(TanevId, true).ToDictionary(x => x.Id, x => x.Name); kozteruletJellegIdNevDictionary.Remove((int)KozteruletJellegEnum.Ures); int lineNumber = 1; foreach (List 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> { { workbook.Worksheets[0].CodeName, new List { 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> GetDefaultDropDownColumnSourceDictionary() { //NOTE: Create dropdown lists var logicalColumnDictionary = new Dictionary>(); var dropDownColumnSourceDictionary = new Dictionary>(logicalColumnDictionary); return dropDownColumnSourceDictionary; } } }