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,726 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Logic;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class AdatszolgaltatasokHelper : LogicBase
{
public AdatszolgaltatasokHelper(IConnectionType connectionType) : base(connectionType) { }
private static readonly Dictionary<int, string> EslLeirasSorrend = new Dictionary<int, string>() {
{ 1, "Összesen" },
{ 2, "Lány" },
{ 3, AdatszolgaltatasokResource.AFelevErtekelesenelMinositesenelATanuloEgyTizedesjegyigSzamitottTanulmanyiAtlagaAMagatartasEsSzorgalomErtekelesetMinositesetNemBeleszamitvaNemEriElKozepes3Szintet },
{ 4, AdatszolgaltatasokResource.AzEvVegiJegyekAlapjanAFeleviJegyekhezKepestLegalabb11NyiAtlagotRontoTanulokSzama },
{ 5, AdatszolgaltatasokResource.AFelevErtekelesenelMinositesenelATanuloEgyVagyTobbTantargybolElegtelen1OsztalyzatotKapott },
{ 6, AdatszolgaltatasokResource.AFelevMagatartasanakErtekelesenelMinositesenelATanuloRossz2ErtekelestKapott },
{ 7, AdatszolgaltatasokResource.AFelevSzorgalmanakErtekelesenelMinositesenelATanuloHanyag2ErtekelestKapott },
{ 8, AdatszolgaltatasokResource.AzAdottTanitasiEvbenEvismetlesreKotelezett },
{ 9, AdatszolgaltatasokResource.AFelevbenATanulo50OratMeghaladoHianyzassalRendelkezik },
{ 10, AdatszolgaltatasokResource.AFelevbenSzuloiKeresreMagantanulovaValtTanulo },
{ 11, AdatszolgaltatasokResource.AFelevbenMenekultOltalmazottMenedekesTanulokSzama },
{ 12, AdatszolgaltatasokResource.AFelevbenVeszelyezeztetteValtTanulokSzama },
{ 13, AdatszolgaltatasokResource.AFelevbenIdeiglenesHatallyalElhelyezettVagyNevelesbeVettTanulokSzama },
{ 14, AdatszolgaltatasokResource.KettoFeltetelTelejesuleseEsetenLemorzsolodassalVeszelyeztetettTanulo },
{ 15, AdatszolgaltatasokResource.EbbolAFelevben100OratEleroIgazoltHianyzassalRendelkezoTanulokSzama },
{ 16, AdatszolgaltatasokResource.EbbolKiemeltFigyelmetIgenyloTanulokSzamaAKiemeltenTehetsegesTanulokKivetelevel },
{ 17, AdatszolgaltatasokResource.EbbolRendszeresGyermekvedelmiKedvezmenybenReszesuloTanulokSzama },
{ 18, AdatszolgaltatasokResource.EbbolAlapfokuOktatasbanBetoltotteA16Eletevet }
};
public DataSet GetOsztalyCsoportokLetszamai()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszolgaltatasokDal adatszolgaltatasokDal = h.AdatszolgaltatasokDAL(GridParameters);
return adatszolgaltatasokDal.GetOsztalyCsoportokLetszama(IntezmenyId, TanevId);
});
}
public bool? GetStatusz(char tipus) //V = véglegesítés E = elfogadás
{
if (!tipus.Equals('V') && !tipus.Equals('E'))
return null;
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IIntezmenyDal intezmenyDal = h.IntezmenyDal();
var intezmeny = intezmenyDal.Get(IntezmenyId);
var entity = intezmeny.IntezmenyAdatszolgaltatas.First(x => x.TanevId == TanevId && !x.Torolt);
if (tipus == 'V')
{
return entity.VeglegesLetszam;
}
if (tipus == 'E')
{
return entity.ElfogadottLetszam;
}
return null;
});
}
public void Elfogadas()
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IIntezmenyDal intezmenyDal = h.IntezmenyDal();
var intezmeny = intezmenyDal.Get(IntezmenyId);
var entity = intezmeny.IntezmenyAdatszolgaltatas.First(x => x.TanevId == TanevId && !x.Torolt);
entity.ElfogadottLetszam = true;
entity.ElfogadottLetszamDatuma = DateTime.Now;
IIntezmenyAdatszolgaltatasDal intezmenyAdatszolgaltatasDal = h.IntezmenyAdatszolgaltatasDal();
intezmenyAdatszolgaltatasDal.Update(entity);
});
}
public void Elutasitas()
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IIntezmenyDal intezmenyDal = h.IntezmenyDal();
var intezmeny = intezmenyDal.Get(IntezmenyId);
var entity = intezmeny.IntezmenyAdatszolgaltatas.First(x => x.TanevId == TanevId && x.Torolt == false);
entity.ElfogadottLetszam = false;
entity.ElfogadottLetszamDatuma = null;
IIntezmenyAdatszolgaltatasDal intezmenyAdatszolgaltatasDal = h.IntezmenyAdatszolgaltatasDal();
intezmenyAdatszolgaltatasDal.Update(entity);
});
}
public void Veglegesites()
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IIntezmenyDal intezmenyDal = h.IntezmenyDal();
var intezmeny = intezmenyDal.Get(IntezmenyId);
var entity = intezmeny.IntezmenyAdatszolgaltatas.First(x => x.TanevId == TanevId && x.Torolt == false);
entity.VeglegesLetszam = true;
entity.VeglegesLetszamDatuma = DateTime.Now;
IIntezmenyAdatszolgaltatasDal intezmenyAdatszolgaltatasDal = h.IntezmenyAdatszolgaltatasDal();
intezmenyAdatszolgaltatasDal.Update(entity);
});
}
public void Visszavonas()
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IIntezmenyDal intezmenyDal = h.IntezmenyDal();
var intezmeny = intezmenyDal.Get(IntezmenyId);
var entity = intezmeny.IntezmenyAdatszolgaltatas.First(x => x.TanevId == TanevId && x.Torolt == false);
entity.VeglegesLetszam = false;
entity.VeglegesLetszamDatuma = null;
IIntezmenyAdatszolgaltatasDal intezmenyAdatszolgaltatasDal = h.IntezmenyAdatszolgaltatasDal();
intezmenyAdatszolgaltatasDal.Update(entity);
});
}
public EnaploAdatszolgaltatasCO GetEnaploAdatszolgaltatas()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszolgaltatasokDal adatszolgaltatasokDal = h.AdatszolgaltatasokDAL();
var id = adatszolgaltatasokDal.GetEnaploAdatszolgaltatasId(IntezmenyId, TanevId);
if (id.HasValue)
{
IAdatszolgaltatasENaploDal adatszolgaltatasENaploDal = h.AdatszolgaltatasENaploDal();
var entity = adatszolgaltatasENaploDal.Get(id.Value);
return Convert_Entity_to_CO(entity);
}
return new EnaploAdatszolgaltatasCO();
});
}
public void InsertorUpdateEnaploAdatszolgaltatasCO(EnaploAdatszolgaltatasCO co, bool isUpdate)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszolgaltatasokDal adatszolgaltatasokDal = h.AdatszolgaltatasokDAL();
IAdatszolgaltatasENaploDal adatszolgaltatasENaploDal = h.AdatszolgaltatasENaploDal();
IIntezmenyDal intezmenyDal = h.IntezmenyDal();
bool updateEntity = isUpdate;
var entity = Convert_CO_to_Entity(co, adatszolgaltatasokDal, adatszolgaltatasENaploDal, intezmenyDal, ref updateEntity);
if (!updateEntity)
{
adatszolgaltatasENaploDal.Insert(entity);
}
else
{
adatszolgaltatasENaploDal.FullUpdate(entity);
}
});
}
public void DeleteSzerzodesFile()
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszolgaltatasokDal adatszolgaltatasokDal = h.AdatszolgaltatasokDAL();
var id = adatszolgaltatasokDal.GetEnaploAdatszolgaltatasId(IntezmenyId, TanevId);
if (id.HasValue)
{
IAdatszolgaltatasENaploDal adatszolgaltatasENaploDal = h.AdatszolgaltatasENaploDal();
var entity = adatszolgaltatasENaploDal.Get(id.Value);
entity.Szerzodes = null;
adatszolgaltatasENaploDal.FullUpdate(entity);
}
});
}
//Később szükség lehet rá
//public void DeleteEnaploAdatszolgaltatas(int ID)
//{
// Dal.CustomConnection.Run(ConnectionType, h =>
// {
// IAdatszolgaltatasENaploDal dal = h.AdatszolgaltatasENaploDal();
// dal.Delete(ID);
// });
//}
/// <summary>
/// Saves or updates agreement for enaplo adatszolgaltatas.
/// </summary>
/// <param name="szerzodesFile">The szerzodes file.</param>
/// <param name="fileName">Name of the file.</param>
/// <param name="enaploAdatszolgID">The enaplo adatszolg identifier.</param>
public void SaveorUpdateSzerzodesForEnaploAdatszolgaltatas(MemoryStream szerzodesFile, string fileName, int? enaploAdatszolgID = null)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszolgaltatasokDal adatszolgaltatasokDal = h.AdatszolgaltatasokDAL();
IAdatszolgaltatasENaploDal adatszolgaltatasENaploDal = h.AdatszolgaltatasENaploDal();
IAdatszolgaltatasENaplo entity;
if (enaploAdatszolgID.HasValue && enaploAdatszolgID.Value > 0)
{
entity = adatszolgaltatasENaploDal.Get(enaploAdatszolgID.Value);
entity.Szerzodes = szerzodesFile.ToArray();
entity.SzerzodesFileName = fileName;
adatszolgaltatasENaploDal.FullUpdate(entity);
}
else
{
var id = adatszolgaltatasokDal.GetEnaploAdatszolgaltatasId(IntezmenyId, TanevId);
if (id.HasValue)
{
entity = adatszolgaltatasENaploDal.Get(id.Value);
entity.Szerzodes = szerzodesFile.ToArray();
entity.SzerzodesFileName = fileName;
adatszolgaltatasENaploDal.FullUpdate(entity);
}
else
{
entity = adatszolgaltatasENaploDal.Get();
entity.Szerzodes = szerzodesFile.ToArray();
entity.SzerzodesFileName = fileName;
adatszolgaltatasENaploDal.Insert(entity);
}
}
});
}
private IAdatszolgaltatasENaplo Convert_CO_to_Entity(EnaploAdatszolgaltatasCO co, IAdatszolgaltatasokDal adatszolgaltatasokDal, IAdatszolgaltatasENaploDal adatszolgaltatasENaploDal, IIntezmenyDal intezmenyDal, ref bool isUpdate)
{
IAdatszolgaltatasENaplo entity = adatszolgaltatasENaploDal.Get();
if (isUpdate)
{
entity = adatszolgaltatasENaploDal.Get(co.ID.Value);
}
else
{
int? id = adatszolgaltatasokDal.GetEnaploAdatszolgaltatasId(IntezmenyId, TanevId);
if (id.HasValue)
{
entity = adatszolgaltatasENaploDal.Get(id.Value);
isUpdate = true;
}
else
{
entity.IntezmenyId = IntezmenyId;
entity.TanevId = TanevId;
}
}
if (co.HasznalENaplot.HasValue)
{
entity.IsENaplo = co.HasznalENaplot.Value;
}
else
{
entity.IsENaplo = null;
}
if (co.HasznalPapirNaplot.HasValue)
{
entity.IsPapirnaplo = co.HasznalPapirNaplot.Value;
}
else
{
entity.IsPapirnaplo = null;
}
if (co.HasznalEEllenorzot.HasValue)
{
entity.IsEllenorzo = co.HasznalEEllenorzot.Value;
}
else
{
entity.IsEllenorzo = null;
}
if (co.ENaploTipus.HasValue)
{
entity.ENaploTipusa = co.ENaploTipus.Value;
}
else
{
entity.ENaploTipusa = null;
}
if (co.ENaploInfra.HasValue)
{
entity.ENaploInfraja = co.ENaploInfra.Value;
}
else
{
entity.ENaploInfraja = null;
}
if (co.ForrasTipusa.HasValue)
{
entity.ENaploForrasa = co.ForrasTipusa.Value;
}
else
{
entity.ENaploForrasa = null;
}
if (!string.IsNullOrWhiteSpace(co.SzerzodoNeve))
{
entity.SzerzodoSzemelyNeve = co.SzerzodoNeve;
}
else
{
entity.SzerzodoSzemelyNeve = null;
}
if (co.SzerzodesOsszege.HasValue)
{
entity.SzerzodesOsszege = co.SzerzodesOsszege.Value;
}
else
{
entity.SzerzodesOsszege = null;
}
if (co.SzerzodoPozicio.HasValue)
{
entity.SzerzodoSzemelyPozicioja = co.SzerzodoPozicio.Value;
}
else
{
entity.SzerzodoSzemelyPozicioja = null;
}
if (co.SzerzodesKezdete.HasValue)
{
entity.SzerzodesKezdete = co.SzerzodesKezdete.Value;
}
else
{
entity.SzerzodesKezdete = null;
}
if (co.SzerzodesVege.HasValue)
{
entity.SzerzodesLejarata = co.SzerzodesVege.Value;
}
else
{
entity.SzerzodesLejarata = null;
}
var intezmenyiAdatok = entity.Intezmeny.IntezmenyAdatok.FirstOrDefault(x => x.TanevId == TanevId && x.Torolt == false);
if (co.VanHonlap.HasValue && co.VanHonlap.Value == true && !string.IsNullOrWhiteSpace(co.HonlapUrl))
{
intezmenyiAdatok.IntezmenyHonlapja = co.HonlapUrl;
}
else
{
intezmenyiAdatok.IntezmenyHonlapja = null;
}
intezmenyDal.Update(intezmenyiAdatok);
if (entity.Szerzodes != null && (co.ENaploTipus == (int)ENaploTipusEnum.KRETA || co.ENaploTipus == (int)ENaploTipusEnum.NN))
{
entity.Szerzodes = null;
}
return entity;
}
private EnaploAdatszolgaltatasCO Convert_Entity_to_CO(IAdatszolgaltatasENaplo entity)
{
string intezmenyUrl = entity.Intezmeny.IntezmenyAdatok.First(x => x.TanevId == TanevId && x.Torolt == false).IntezmenyHonlapja;
EnaploAdatszolgaltatasCO co = new EnaploAdatszolgaltatasCO()
{
ID = entity.ID,
HasznalENaplot = entity.IsENaplo,
HasznalPapirNaplot = entity.IsPapirnaplo,
HasznalEEllenorzot = entity.IsEllenorzo,
ENaploTipus = entity.ENaploTipusa > 0 ? entity.ENaploTipusa : (int?)null,
ENaploInfra = entity.ENaploInfraja > 0 ? entity.ENaploInfraja : (int?)null,
ForrasTipusa = entity.ENaploForrasa > 0 ? entity.ENaploForrasa : (int?)null,
SzerzodesOsszege = entity.SzerzodesOsszege > 0 ? entity.SzerzodesOsszege : (int?)null,
SzerzodoNeve = entity.SzerzodoSzemelyNeve,
SzerzodoPozicio = entity.SzerzodoSzemelyPozicioja > 0 ? entity.SzerzodoSzemelyPozicioja : (int?)null,
SzerzodesKezdete = entity.SzerzodesKezdete,
SzerzodesVege = entity.SzerzodesLejarata,
VanHonlap = !string.IsNullOrWhiteSpace(intezmenyUrl),
HonlapUrl = intezmenyUrl,
SzerzodesFile = entity.Szerzodes != null ? new MemoryStream(entity.Szerzodes) : null
};
return co;
}
public DataSet GetLemorzsolodasEslRiport(int? feladatellatasiHelyId, bool isFelevi)
{
var adatDt = new DataTable();
var evfolyamDt = new DataTable();
var resultAdatDt = new DataTable();
Dal.CustomConnection.Run(ConnectionType, h =>
{
var adatszolgaltatasokDal = h.AdatszolgaltatasokDAL();
adatDt = adatszolgaltatasokDal.GetLemorzsolodasEslRiport(TanevId, feladatellatasiHelyId, isFelevi).Tables[0];
evfolyamDt = adatszolgaltatasokDal.GetHasznaltEvfolyamokForEsl(feladatellatasiHelyId, TanevId).Tables[0];
});
SetResultAdatColumns(adatDt, evfolyamDt, resultAdatDt);
DataRow row;
foreach (var eslLeirasItem in EslLeirasSorrend)
{
row = resultAdatDt.Rows.Add(eslLeirasItem.Value);
FillResultAdatRow<string>(resultAdatDt, adatDt, row, "KategoriaValue");
}
var resultColumnsDt = GetColumnsTable(resultAdatDt, leirasColumnWidthString: "350px", otherColumnWidthString: "100px");
var resultDs = new DataSet();
resultDs.Tables.Add(resultAdatDt);
resultDs.Tables.Add(resultColumnsDt);
return resultDs;
}
public DataSet GetElegtelenEslRiport(int? feladatellatasiHelyId, bool isFelevi)
{
var adatDt = new DataTable();
var evfolyamDt = new DataTable();
var resultAdatDt = new DataTable();
Dal.CustomConnection.Run(ConnectionType, h =>
{
var adatszolgaltatasokDal = h.AdatszolgaltatasokDAL();
adatDt = adatszolgaltatasokDal.GetElegtelenEslRiport(TanevId, feladatellatasiHelyId, isFelevi).Tables[0];
evfolyamDt = adatszolgaltatasokDal.GetHasznaltEvfolyamokForEsl(feladatellatasiHelyId, TanevId).Tables[0];
});
SetResultAdatColumns(adatDt, evfolyamDt, resultAdatDt);
var eslTantargyKategoriak = ((int)GeneratedAdatszotarTipusEnum.ESLTantargykategoria).GetItemsByType(TanevId, true);
DataRow row;
foreach (var eslTantargyKategoria in eslTantargyKategoriak)
{
row = resultAdatDt.Rows.Add(eslTantargyKategoria.Id);
FillResultAdatRow<int>(resultAdatDt, adatDt, row, "eslTgyKatId");
row[0] = eslTantargyKategoria.Name;
}
var resultColumnsDt = GetColumnsTable(resultAdatDt, leirasColumnWidthString: "160px", otherColumnWidthString: "100px");
var resultDs = new DataSet();
resultDs.Tables.Add(resultAdatDt);
resultDs.Tables.Add(resultColumnsDt);
return resultDs;
}
static string GetColumnIdString(string name) { return $"Column{name}"; }
private void SetResultAdatColumns(DataTable adatDt, DataTable evfolyamDt, DataTable resultAdatDt)
{
adatDt.Columns["OsszesLany"].ColumnName = "Lány";
if (adatDt.Columns.Contains("Osszes"))
{ adatDt.Columns["Osszes"].ColumnName = "Összesen"; }
else if (adatDt.Columns.Contains("Osszesen"))
{ adatDt.Columns["Osszesen"].ColumnName = "Összesen"; }
resultAdatDt.Columns.Add("Leírás", typeof(string));
foreach (DataRow item in evfolyamDt.Rows)
{
resultAdatDt.Columns.Add(item.Field<int>("ID").ToString());
}
resultAdatDt.Columns.Add("Összesen", typeof(string));
resultAdatDt.Columns.Add("Lány", typeof(string));
}
private DataTable GetColumnsTable(DataTable resultAdatDt, string leirasColumnWidthString, string otherColumnWidthString)
{
var resultColumnsDt = new DataTable();
resultColumnsDt.Columns.Add("field");
resultColumnsDt.Columns.Add("title");
resultColumnsDt.Columns.Add("width");
var leirasColumnIndex = 0;
for (int i = 0; i < resultAdatDt.Columns.Count; i++)
{
string columnName;
if (int.TryParse(resultAdatDt.Columns[i].ColumnName, out int evfolyamId))
{
resultAdatDt.Columns[i].ColumnName = GetColumnIdString(i.ToString());
columnName = ((EvfolyamTipusEnum)evfolyamId).GetDisplayName(TanevId);
}
else
{
columnName = resultAdatDt.Columns[i].ColumnName;
resultAdatDt.Columns[i].ColumnName = GetColumnIdString(i.ToString());
}
resultColumnsDt.Rows.Add(GetColumnIdString(i.ToString()), columnName, i == leirasColumnIndex ? leirasColumnWidthString : otherColumnWidthString);
}
return resultColumnsDt;
}
private void FillResultAdatRow<T>(DataTable resultAdatDt, DataTable adatDt, DataRow row, string adatSearchColumnName)
{
string columnName;
DataRow adatDtRow;
for (int i = 1; i < resultAdatDt.Columns.Count; i++)
{
columnName = "Evfolyam";
if (resultAdatDt.Columns[i].ColumnName == "Összesen")
{
columnName = "Összesen";
adatDtRow = adatDt.AsEnumerable().FirstOrDefault(r => r.Field<T>(adatSearchColumnName).ToString() == row[0].ToString());
}
else if (resultAdatDt.Columns[i].ColumnName == "Lány")
{
columnName = "Lány";
adatDtRow = adatDt.AsEnumerable().FirstOrDefault(r => r.Field<T>(adatSearchColumnName).ToString() == row[0].ToString());
}
else
{
adatDtRow = adatDt.AsEnumerable().FirstOrDefault(r => r.Field<int>(columnName).ToString() == resultAdatDt.Columns[i].ColumnName &&
r.Field<T>(adatSearchColumnName).ToString() == row[0].ToString());
}
row[resultAdatDt.Columns[i].ColumnName] = adatDtRow != null ? adatDtRow[columnName == "Evfolyam" ? "Darabszam" : columnName] : 0;
}
}
public DataSet GetIktSzandeknyilatkozatokGrid()
{
return Dal.CustomConnection.Run(ConnectionType, handler =>
{
var dal = handler.NyomtatvanyokDal();
var ds = dal.GetIktSzandeknyilatkozatokGrid(TanevId, IntezmenyId);
var dt = ds.Tables[0];
dt.Columns.Add("IsElfogadottSzandeknyilatkozatSelect");
List<DataRow> rows = dt.Rows.Cast<DataRow>().ToList();
foreach (var row in rows)
{
row["IsElfogadottSzandeknyilatkozatSelect"] = row["IsElfogadottSzandeknyilatkozat"].ToString() == "T" ? 1 : 0;
}
return ds;
});
}
public DataSet GetHittanOraszamList(bool forJanuar = false)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
TanevCO tanevCo;
var tanev = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
tanevCo = tanev.GetTanevInfo();
IAdatszolgaltatasokDal adatszolgaltatasokDal = h.AdatszolgaltatasokDAL(GridParameters);
// létszám dátum januárnál záróév február 1, nem januárnál kezdöév október 1
var letszamDatum = forJanuar ? new DateTime(tanevCo.UtolsoNap.Year, 2, 1) : new DateTime(tanevCo.KezdoNap.Year, 10, 1);
// kezdőnap januárnál záróév január 1, nem januárnál tanév első napja
var startDate = forJanuar ? new DateTime(tanevCo.UtolsoNap.Year, 1, 1) : tanevCo.KezdoNap;
// végenap januárnál tanév utolsó napja, nem januárnál kezdő év december 31
var endDate = forJanuar ? tanevCo.UtolsoNap : new DateTime(tanevCo.KezdoNap.Year, 12, 31);
return adatszolgaltatasokDal.GetHittanOraszamList(IntezmenyId,
TanevId,
(int)CsoportTipusEnum.HittanCsoport,
letszamDatum,
startDate,
endDate);
});
}
public void SaveHittanOraszam(int csoportId, int hittanTipusId, int darabszam, int letszam, DateTime startDate, DateTime endDate, bool forJanuar)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszolgaltatasokDal adatszolgaltatasokDal = h.AdatszolgaltatasokDAL();
adatszolgaltatasokDal.SaveOrUpdateHittan(IntezmenyId, TanevId, FelhasznaloId, csoportId, hittanTipusId, darabszam, letszam, startDate, endDate, forJanuar);
});
}
public List<OsztalyCsoportLetszamItemCo> GetOsztalyCsoportLetszamCoList()
{
DataSet dataSet = GetOsztalyCsoportokLetszamai();
var result = new List<OsztalyCsoportLetszamItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new OsztalyCsoportLetszamItemCo(dataRow);
result.Add(item);
}
return result;
}
public List<HittanOraszamItemCo> GetHittanOraszamCoList(bool forJanuarJunius)
{
DataSet dataSet = GetHittanOraszam(forJanuarJunius);
var result = new List<HittanOraszamItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new HittanOraszamItemCo(dataRow);
result.Add(item);
}
return result;
}
public DataSet GetHittanOraszam(bool forJanuarJunius)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
TanevCO tanevCo;
var tanev = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
tanevCo = tanev.GetTanevInfo();
// létszám dátum januárnál záróév február 1, nem januárnál kezdőév október 1
var letszamDatum = forJanuarJunius ? new DateTime(tanevCo.UtolsoNap.Year, 2, 1) : new DateTime(tanevCo.KezdoNap.Year, 10, 1);
// kezdőnap januárnál záróév január 1, nem januárnál tanév első napja
var startDate = forJanuarJunius ? new DateTime(tanevCo.UtolsoNap.Year, 1, 1) : tanevCo.KezdoNap;
// végenap januárnál tanév utolsó napja, nem januárnál kezdő év december 31
var endDate = forJanuarJunius ? tanevCo.UtolsoNap : new DateTime(tanevCo.KezdoNap.Year, 12, 31);
var dal = h.AdatszolgaltatasokDAL(GridParameters);
return dal.GetHittanOraszam(IntezmenyId, TanevId, (int)CsoportTipusEnum.HittanCsoport, letszamDatum, startDate, endDate);
});
}
public DataSet OkosmeroEnergetikaiAdatKereses(int? feladatellatasiHely)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.AdatszolgaltatasokDAL(GridParameters);
return dal.GetOkosmeroEnergetikaiAdat(IntezmenyId, TanevId, feladatellatasiHely);
});
}
public MemoryStream GetOkosmeroEnergetikaiAdatExport(int? feladatellatasiHely)
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.AdatszolgaltatasokDAL(GridParameters).GetOkosmeroEnergetikaiAdat(IntezmenyId, TanevId, feladatellatasiHely));
var coList = new List<OkosmeroEnergetikaiAdatItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new OkosmeroEnergetikaiAdatItemCo(dataRow);
coList.Add(item);
}
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<OkosmeroEnergetikaiAdatItemCo>(OkosmeroEnergetikaiAdatItemCo.ExportAttributeId);
return SimpleExportLogic.GetExport("OkosmeroEnergetikaiAdat", simpleExportColumnCos, coList, TanevId);
}
}
}

View file

@ -0,0 +1,565 @@
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Framework;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.KretaServer.Caching;
namespace Kreta.BusinessLogic.Helpers
{
public class AdatszotarHelper : LogicBase
{
public AdatszotarHelper(IConnectionType connectionType) : base(connectionType) { }
public const int defaultOraPerc = 45;
public DataSet GetAdatszotar(GeneratedAdatszotarTipusEnum type)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszotarDAL dal = h.AdatszotarDAL(GridParameters);
return dal.GetAdatszotar(type, TanevId);
});
}
public AdatszotarCO GetAdatszotarElem(int ID)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var adatszotarDs = h.AdatszotarDAL(GridParameters).GetAdatszotarById(ID, IntezmenyId, TanevId);
var co = Convert_DS_to_Co(adatszotarDs);
if (co.AdatszotarTipusId == (int)GeneratedAdatszotarTipusEnum.SorolasOkaTipus)
{
var dictionaryItemBaseNyelvDs = h.DictionaryItemBaseNyelvDal(GridParameters).GetDictionaryItemBaseNyelvByDictionaryItemId(ID, IntezmenyId, TanevId);
co.ZaradekSzovegCoList = Convert_NyelvDS_to_ZaradekSzovegCoList(dictionaryItemBaseNyelvDs);
}
return co;
});
}
public int GetAdatszotarMaxSorszam(GeneratedAdatszotarTipusEnum type)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszotarDAL dal = h.AdatszotarDAL(GridParameters);
return dal.GetAdatszotarMaxSorszam(type, TanevId, IntezmenyId);
});
}
public void Insert(AdatszotarCO co)
{
if (IsValid(co))
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var oDictionaryItemBase = Convert_CO_to_Entity(h, co);
var adatszotarDal = h.AdatszotarDAL(GridParameters);
adatszotarDal.Insert(oDictionaryItemBase);
if (co.AdatszotarTipusId == (int)GeneratedAdatszotarTipusEnum.SorolasOkaTipus)
{
adatszotarDal.UpdateSorolasOkaTipus(oDictionaryItemBase.ID, co.IsBizonyitvanybanMegjelenik, co.IsNaplobanMegjelenik, co.IsTorzslaponMegjelenik, IntezmenyId, TanevId, FelhasznaloId);
var dictionaryNyelvDal = h.DictionaryItemBaseNyelvDal(GridParameters);
foreach (var item in co.ZaradekSzovegCoList)
{
if (!string.IsNullOrWhiteSpace(item.Name.ReplaceMultipleSpacesAndTrim()))
{
var dictionaryNyelvEntity = dictionaryNyelvDal.Get();
dictionaryNyelvEntity.TanevId = TanevId;
dictionaryNyelvEntity.Name = item.Name.ReplaceMultipleSpacesAndTrim();
dictionaryNyelvEntity.NyelvId = item.NyelvId;
dictionaryNyelvEntity.DictionaryItemBaseId = oDictionaryItemBase.ID;
dictionaryNyelvDal.Insert(dictionaryNyelvEntity);
}
}
}
if (co.AdatszotarTipusId == (int)GeneratedAdatszotarTipusEnum.NapTipus)
{
adatszotarDal.UpdateNapTipus(oDictionaryItemBase.ID, co.IsSorszamozando, co.IsTanorai, co.IsTanorankivuli, co.IsLeNemKotottMunkaido, IntezmenyId, TanevId, FelhasznaloId);
}
if (co.AdatszotarTipusId == (int)GeneratedAdatszotarTipusEnum.ErtekelesMod)
{
// TODO ERTEKELES REFAKT2 ERTEKELESMOD: Ha töröljük a T_TANARIATLAGSULY táblát, akkor törölni kell a SaveTanariAtlagSuly függvényt és minden referenciáját!
// https://jira.ekreta.hu/browse/KRETA2-12367
var ertekelesModSulyCo = new ErtekelesModSulyCo { ErtekelesModId = oDictionaryItemBase.ID, Suly = ErtekelesModCo.DefaultSuly };
SaveTanariAtlagSuly(ertekelesModSulyCo, h);
adatszotarDal.UpdateErtekelesModTipus(IntezmenyId, TanevId, FelhasznaloId, oDictionaryItemBase.ID, co.IsBold, co.Suly);
}
UpdateRendszerbeallitasok(adatszotarDal, co.AdatszotarTipusId, TanevId);
co.AdatszotarTipusId.RemoveFromCache(TanevId);
});
}
}
public void Update(AdatszotarCO co, int? kovTanevId)
{
if (IsValid(co))
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var adatszotarDal = h.AdatszotarDAL(GridParameters);
adatszotarDal.Update(co.ID.Value, co.Megnevezes, co.Megnevezes1, co.Megnevezes2, co.Megnevezes3, co.Megnevezes4, co.Lathato, co.Protected, co.Color, FelhasznaloId, IntezmenyId, TanevId);
if (co.AdatszotarTipusId == (int)GeneratedAdatszotarTipusEnum.SorolasOkaTipus)
{
adatszotarDal.UpdateSorolasOkaTipus(co.ID.Value, co.IsBizonyitvanybanMegjelenik, co.IsNaplobanMegjelenik, co.IsTorzslaponMegjelenik, IntezmenyId, TanevId, FelhasznaloId);
var dictionaryNyelvDal = h.DictionaryItemBaseNyelvDal(GridParameters);
co.OldZaradekSzovegCoList = Convert_NyelvDS_to_ZaradekSzovegCoList(dictionaryNyelvDal.GetDictionaryItemBaseNyelvByDictionaryItemId(co.ID.Value, IntezmenyId, TanevId));
foreach (var item in co.ZaradekSzovegCoList)
{
if (!string.IsNullOrWhiteSpace(item.Name.ReplaceMultipleSpacesAndTrim()))
{
if (co.OldZaradekSzovegCoList.Any(x => x.NyelvId == item.NyelvId))
{
var nyelvCo = co.OldZaradekSzovegCoList.First(x => x.NyelvId == item.NyelvId);
var dictionaryNyelvEntity = dictionaryNyelvDal.Get(nyelvCo.Id);
dictionaryNyelvEntity.TanevId = TanevId;
dictionaryNyelvEntity.Name = item.Name.ReplaceMultipleSpacesAndTrim();
dictionaryNyelvDal.FullUpdate(dictionaryNyelvEntity);
}
else
{
var dictionaryNyelvEntity = dictionaryNyelvDal.Get();
dictionaryNyelvEntity.TanevId = TanevId;
dictionaryNyelvEntity.Name = item.Name.ReplaceMultipleSpacesAndTrim();
dictionaryNyelvEntity.NyelvId = item.NyelvId;
dictionaryNyelvEntity.DictionaryItemBaseId = co.ID.Value;
dictionaryNyelvDal.Insert(dictionaryNyelvEntity);
}
}
else
{
foreach (var nyelv in co.OldZaradekSzovegCoList.Where(x => x.NyelvId == item.NyelvId))
{
dictionaryNyelvDal.Delete(nyelv.Id);
}
}
}
}
if (co.AdatszotarTipusId == (int)GeneratedAdatszotarTipusEnum.NapTipus)
{
adatszotarDal.UpdateNapTipus(co.ID.Value, co.IsSorszamozando, co.IsTanorai, co.IsTanorankivuli, co.IsLeNemKotottMunkaido, IntezmenyId, TanevId, FelhasznaloId);
}
if (co.AdatszotarTipusId == (int)GeneratedAdatszotarTipusEnum.ErtekelesMod)
{
// TODO ERTEKELES REFAKT2 ERTEKELESMOD: Ha töröljük a T_TANARIATLAGSULY táblát, akkor törölni kell a SaveTanariAtlagSuly függvényt és minden referenciáját!
// https://jira.ekreta.hu/browse/KRETA2-12367
var ertekelesModSulyCo = new ErtekelesModSulyCo { ErtekelesModId = co.ID.Value, Suly = co.Suly };
SaveTanariAtlagSuly(ertekelesModSulyCo, h);
adatszotarDal.UpdateErtekelesModTipus(IntezmenyId, TanevId, FelhasznaloId, co.ID.Value, co.IsBold, co.Suly);
}
var th = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
int currentKovTanevId = kovTanevId ?? th.GetKovetkezoTanev().Key;
if (currentKovTanevId.IsEntityId() && currentKovTanevId != TanevId)
{
adatszotarDal.FollowUpDictionaryItemBase(IntezmenyId, TanevId, currentKovTanevId, co.ID.Value);
UpdateRendszerbeallitasok(adatszotarDal, co.AdatszotarTipusId, currentKovTanevId);
co.AdatszotarTipusId.RemoveFromCache(currentKovTanevId, co.ID);
}
UpdateRendszerbeallitasok(adatszotarDal, co.AdatszotarTipusId, TanevId);
co.AdatszotarTipusId.RemoveFromCache(TanevId, co.ID);
});
}
}
public void UpdateSorszam(int id, int sorszam, int? kovTanevId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszotarDAL dal = h.AdatszotarDAL(GridParameters);
dal.UpdateSorszam(id, sorszam, FelhasznaloId, IntezmenyId, TanevId);
var th = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
int currentKovTanevId = kovTanevId ?? th.GetKovetkezoTanev().Key;
if (currentKovTanevId.IsEntityId() && currentKovTanevId != TanevId)
{
dal.FollowUpDictionaryItemBase(IntezmenyId, TanevId, currentKovTanevId, id);
}
});
var tipusId = id.GetDictionaryTypeId(TanevId);
tipusId.RemoveFromCache(TanevId);
}
public void Delete(int id)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszotarDAL dal = h.AdatszotarDAL(GridParameters);
var tipusId = id.GetDictionaryTypeId(TanevId);
/*Csak ideiglenes megoldás, lesz globál vizsgálat a dictionary entitásokra*/
var connections = dal.GetEntitiesConnections(id, ((GeneratedAdatszotarTipusEnum)tipusId).ToString(), TanevId);
if (tipusId == (int)GeneratedAdatszotarTipusEnum.ErtekelesMod)
{
if (connections.Count > 0 && connections.SelectMany(x => x.Value).ToList().Any(x => x.TargetTableName == "T_TANULOERTEKELES_OSSZES" || x.TargetTableName == "T_TANULOERTEKELES"))
{
// TODO ERTEKELES REFAKT2 ERTEKELESMOD: Ha töröljük a T_TANARIATLAGSULY táblát, akkor törölni kell a Where-t!
// https://jira.ekreta.hu/browse/KRETA2-12367
throw new EntityDeleteFailedException(string.Empty, connections.SelectMany(x => x.Value.Where(y => y.TargetTableName != "T_TANARIATLAGSULY_OSSZES" || y.TargetTableName != "T_TANARIATLAGSULY")).ToList());
}
}
else
{
if (connections.Count > 0)
{
throw new EntityDeleteFailedException(string.Empty, connections.SelectMany(x => x.Value).ToList());
}
}
/*Csak ideiglenes megoldás, lesz globál vizsgálat a dictionary entitásokra*/
dal.Delete(FelhasznaloId, id, tipusId, IntezmenyId, TanevId);
UpdateRendszerbeallitasok(dal, tipusId, TanevId);
tipusId.RemoveFromCache(TanevId);
});
}
public bool IsProtected(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszotarDAL dal = h.AdatszotarDAL();
return dal.IsProtected(id, TanevId);
});
}
public bool ModifyItemActivity(List<int> adatszotarIds, bool activ)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszotarDAL dal = h.AdatszotarDAL(GridParameters);
if (dal.ModifyItemActivity(adatszotarIds, activ, TanevId, out int szotartipusId))
{
szotartipusId.RemoveFromCache(TanevId);
return true;
}
return false;
});
}
public void GenerateNaptariNapok()
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszotarDAL dal = h.AdatszotarDAL();
IOrarendiOraDal orarendDAL = h.OrarendiOra();
dal.GenerateNaptariNapok(IntezmenyId, TanevId);
orarendDAL.UpdateOrarend(IntezmenyId, TanevId, null, null, null, null);
});
}
private bool IsValid(AdatszotarCO co)
{
bool ret = true;
try
{
if (string.IsNullOrWhiteSpace(co.AdatszotarTipus))
ret = false;
else if (string.IsNullOrWhiteSpace(co.Megnevezes))
ret = false;
}
catch
{
ret = false;
}
return ret;
}
private IDictionaryItemBase Convert_CO_to_Entity(IDalHandler h, AdatszotarCO co)
{
var oDictionaryItemBase = h.AdatszotarDAL().Get(co.AdatszotarTipus);
if (!string.IsNullOrWhiteSpace(co.Megnevezes))
oDictionaryItemBase.Name = co.Megnevezes;
if (co.Sorszam.HasValue)
oDictionaryItemBase.Order = co.Sorszam.Value;
if (co.Lathato.HasValue)
oDictionaryItemBase.Visible = co.Lathato.Value;
oDictionaryItemBase.Name_1 = co.Megnevezes1;
oDictionaryItemBase.Name_2 = co.Megnevezes2;
oDictionaryItemBase.Name_3 = co.Megnevezes3;
oDictionaryItemBase.Name_4 = co.Megnevezes4;
oDictionaryItemBase.Protected = false; // Új adatszótár elem nem lesz védett
oDictionaryItemBase.Type = co.AdatszotarTipus; // Új adatszótár elemnek beállítjuk a típust is
oDictionaryItemBase.DictionaryTypeId = co.AdatszotarTipusId;
oDictionaryItemBase.Color = co.Color;
oDictionaryItemBase.TanevId = TanevId;
return oDictionaryItemBase;
}
private AdatszotarCO Convert_DS_to_Co(DataSet ds)
{
AdatszotarCO co = new AdatszotarCO();
if (ds.Tables[0].Rows.Count == 1)
{
DataRow row = ds.Tables[0].Rows[0];
co.AdatszotarTipus = row.Field<string>("Type");
co.AdatszotarTipusId = row.Field<int>("TypeId");
co.ID = row.Field<int?>("ID");
co.Lathato = row.Field<string>("Lathato") == "T";
co.Megnevezes = row.Field<string>("Megnevezes");
co.Sorszam = row.Field<int?>("Sorszam");
co.Megnevezes1 = row.Field<string>("Megnevezes1");
co.Megnevezes2 = row.Field<string>("Megnevezes2");
co.Megnevezes3 = row.Field<string>("Megnevezes3");
co.Megnevezes4 = row.Field<string>("Megnevezes4");
co.Color = row.Field<string>("Color");
if (row.Field<string>("IsBold") == "T")
{
co.IsBold = true;
}
co.Suly = row.Field<int>("Suly");
if (row.Field<string>("Protected") == "T")
{
co.Protected = true;
}
if (row.Field<string>("IsSorszamozando") == "T")
{
co.IsSorszamozando = true;
}
if (row.Field<string>("IsTanorai") == "T")
{
co.IsTanorai = true;
}
if (row.Field<string>("IsTanorankivuli") == "T")
{
co.IsTanorankivuli = true;
}
if (row.Field<string>("IsLeNemKotottMunkaido") == "T")
{
co.IsLeNemKotottMunkaido = true;
}
if (row.Field<string>("IsBizonyitvanybanMegjelenik") == "T")
{
co.IsBizonyitvanybanMegjelenik = true;
}
if (row.Field<string>("IsNaplobanMegjelenik") == "T")
{
co.IsNaplobanMegjelenik = true;
}
if (row.Field<string>("IsTorzslaponMegjelenik") == "T")
{
co.IsTorzslaponMegjelenik = true;
}
}
return co;
}
private List<AdatszotarZaradekNyelvCo> Convert_NyelvDS_to_ZaradekSzovegCoList(DataSet ds)
{
var coList = new List<AdatszotarZaradekNyelvCo>();
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow row in ds.Tables[0].Rows)
{
coList.Add(new AdatszotarZaradekNyelvCo
{
Id = row.Field<int>("ID"),
Name = row.Field<string>("C_NAME"),
Name1 = row.Field<string>("C_NAME_1"),
Name2 = row.Field<string>("C_NAME_2"),
Name3 = row.Field<string>("C_NAME_3"),
Name4 = row.Field<string>("C_NAME_4"),
NyelvId = row.Field<int>("C_NYELVID"),
ShortName = row.Field<string>("C_SHORTNAME"),
AdatszotarId = row.Field<int>("C_DICTIONARYITEMBASEID")
});
}
}
return coList;
}
public Dictionary<string, string> GetAdatszotarLathatoElemekNyelv(GeneratedAdatszotarTipusEnum type, int nyelvId)
{
var result = new Dictionary<string, string>();
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszotarDAL dal = h.AdatszotarDAL();
return dal.GetAdatszotarLathatoElemekNyelv(type, TanevId, IntezmenyId, nyelvId);
});
foreach (DataRow row in ds.Tables[0].Rows)
{
result.Add(
row.Field<int>("ID").ToString(),
row.Field<string>("Megnevezes")
);
}
return result;
}
public List<CsoportTipusCO> GetCsoportTipusList()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszotarDAL dal = h.AdatszotarDAL();
return GetCsoportTipusEntityList(dal).Select(x => ConvertToCO(x)).ToList();
});
}
public void SaveCsoportTipusList(List<CsoportTipusCO> csoportTipusList, int? kovTanevId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdatszotarDAL dal = h.AdatszotarDAL();
var csoportTipusEntityList = GetCsoportTipusEntityList(dal);
foreach (CsoportTipusCO csoportTipus in csoportTipusList)
{
dal.UpdateCsoportTipus(csoportTipus.Id, csoportTipus.IsTanoraiCelu, csoportTipus.OraPerc.HasValue ? csoportTipus.OraPerc.Value : defaultOraPerc, IntezmenyId, TanevId, FelhasznaloId);
var th = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
int currentKovTanevId = kovTanevId ?? th.GetKovetkezoTanev().Key;
if (currentKovTanevId.IsEntityId() && currentKovTanevId != TanevId)
{
dal.FollowUpDictionaryItemBase(IntezmenyId, TanevId, currentKovTanevId, csoportTipus.Id);
}
}
});
}
private List<ICsoportTipus> GetCsoportTipusEntityList(IAdatszotarDAL dal)
{
return dal.GetCsoportTipusEntityList(IntezmenyId, TanevId);
}
private CsoportTipusCO ConvertToCO(ICsoportTipus csoportTipus)
{
return new CsoportTipusCO
{
Id = csoportTipus.ID,
Nev = csoportTipus.Name,
IsTanoraiCelu = csoportTipus.IsTanoraiCelu,
IsProtected = (csoportTipus.ID == (int)CsoportTipusEnum.iskolai_csoport_tanorai_celu_)
|| (csoportTipus.ID == (int)CsoportTipusEnum.apaczai_mentorcsoport),
OraPerc = csoportTipus.OraPerc
};
}
private void UpdateRendszerbeallitasok(IAdatszotarDAL dal, int adatszotarTipusId, int tanevId)
{
if (adatszotarTipusId == (int)GeneratedAdatszotarTipusEnum.ErtekelesMod)
{
dal.UpdateRendszerbeallitasok(IntezmenyId, tanevId, RendszerBeallitasTipusEnum.Ertekeles_Modok_Beallitasa_Napi_Limithez, GeneratedAdatszotarTipusEnum.ErtekelesMod);
SDAServer.Instance.CacheManager.AquireCache<SystemSettingsCache>().RemoveSystemSetting(RendszerBeallitasTipusEnum.Ertekeles_Modok_Beallitasa_Napi_Limithez, IntezmenyAzonosito, tanevId);
}
if (adatszotarTipusId == (int)GeneratedAdatszotarTipusEnum.CsoportTipus)
{
dal.UpdateRendszerbeallitasok(IntezmenyId, tanevId, RendszerBeallitasTipusEnum.Tanorahoz_tartozo_csoportok, GeneratedAdatszotarTipusEnum.CsoportTipus);
SDAServer.Instance.CacheManager.AquireCache<SystemSettingsCache>().RemoveSystemSetting(RendszerBeallitasTipusEnum.Tanorahoz_tartozo_csoportok, IntezmenyAzonosito, tanevId);
}
if (adatszotarTipusId == (int)GeneratedAdatszotarTipusEnum.MunkakorTipus)
{
dal.UpdateRendszerbeallitasok(IntezmenyId, tanevId, RendszerBeallitasTipusEnum.Alkalmazottak_lathatjak_a_diakok_adatait, GeneratedAdatszotarTipusEnum.MunkakorTipus);
SDAServer.Instance.CacheManager.AquireCache<SystemSettingsCache>().RemoveSystemSetting(RendszerBeallitasTipusEnum.Alkalmazottak_lathatjak_a_diakok_adatait, IntezmenyAzonosito, tanevId);
}
}
public List<AdatszotarItemCo> GetAdatszotarCoList(GeneratedAdatszotarTipusEnum type)
{
DataSet dataSet = GetAdatszotar(type);
var result = new List<AdatszotarItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new AdatszotarItemCo(dataRow);
result.Add(item);
}
return result;
}
public List<(int id, string megnevezes)> GetEditableAdatszotarTipusok()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.AdatszotarDAL();
return dal.GetEditableAdatszotarTipusok(TanevId);
});
}
private void SaveTanariAtlagSuly(ErtekelesModSulyCo ertekelesModSulyCo, IDalHandler dalHandler)
{
ITanariAtlagSulyDal dal = dalHandler.TanariAtlagSulyDal();
int? id = dal.GetIdByErtekelesModId(TanevId, ertekelesModSulyCo.ErtekelesModId);
bool isNew = !id.IsEntityId();
ITanariAtlagSuly entity = isNew ?
dal.Get() :
dal.Get(id.Value);
entity.ErtekelesModId = ertekelesModSulyCo.ErtekelesModId;
entity.Suly = ertekelesModSulyCo.Suly;
if (isNew)
{
entity.TanevId = TanevId;
dal.Insert(entity);
}
else
{
dal.Update(entity);
}
}
}
}

View file

@ -0,0 +1,840 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using Aspose.Cells;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Classes.ExcelHelpers;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Logic;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class AdminHelper : LogicBase
{
public AdminHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet GetAdminDashboardUzenet()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IDashboardUzenetDal dal = h.DashboardUzenet();
return dal.GetAdminDashboardUzenetDataSet(FelhasznaloId);
});
}
public DataSet GetDashboardUzenetByIntezmeny()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IDashboardUzenetDal dal = h.DashboardUzenet();
return dal.GetDashboardEgyediAzonositokByIntezmeny(IntezmenyId);
});
}
public DataSet GetFeatureMaintenanceDashboardUzenet(string featureName)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IDashboardUzenetDal dal = h.DashboardUzenet();
return dal.GetFeatureMaintenanceDashboardUzenet(featureName);
});
}
#region DashboardPopup
public DataSet GetDashboardPopupUzenet(int? gondviseloId, int popupId, string egyediAzonosito)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IDashboardUzenetDal dal = h.DashboardUzenet();
return dal.GetDashboardUzenetForPopup(FelhasznaloId, gondviseloId, popupId, egyediAzonosito);
});
}
public DataSet GetNextDashboardPopupAzonosito(int? gondviseloId, string[] displayedPopups)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IDashboardUzenetDal dal = h.DashboardUzenet();
return dal.GetNextDashboardPopup(FelhasznaloId, gondviseloId, displayedPopups);
});
}
public void UpdateDashboardPopupClose(int popupId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IDashboardUzenetDal dal = h.DashboardUzenet();
dal.UpdateDashboardPopupClose(popupId);
});
}
public void UpdateDashboardPopupConfirm(int popupId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IDashboardUzenetDal dal = h.DashboardUzenet();
dal.UpdateDashboardPopupConfirm(popupId);
});
}
public string UpdateDashboardPopupNext(int popupId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IDashboardUzenetDal dal = h.DashboardUzenet();
return dal.UpdateDashboardPopupNext(popupId);
});
}
#endregion
public DataSet GetAdminDashboardAdminisztracio()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdminDAL dal = h.Admin();
return dal.GetAdminDashboardAdminisztracio(TanevId);
});
}
public DataSet GetAdminDashboardNaplo()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdminDAL dal = h.Admin();
return dal.GetAdminDashboardNaplo(TanevId);
});
}
public DataSet GetAdminDashboardStatisztika()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanevHelper = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
var tanev = tanevHelper.GetTanevInfo();
IAdminDAL dal = h.Admin();
return dal.GetAdminDashboardStatisztika(TanevId, tanev.UtolsoTanitasiNap);
});
}
public DataSet GetAdminDashboardAdattisztitasAlkalmazott()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IAdminDAL dal = h.Admin();
return dal.GetAdminDashboardAdattisztitasAlkalmazott(IntezmenyId, TanevId, true);
});
}
public DataSet GetAktivTanevValtasaModel(int kovTanevId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
DateTime? szakGyakKezdDatum, szakGyakVegDatum;
var sysSettingsHelper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h));
szakGyakKezdDatum = sysSettingsHelper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum);
szakGyakVegDatum = sysSettingsHelper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum);
return h.Admin().GetAktivTanevValtasaModel(TanevId, kovTanevId, IntezmenyId, szakGyakKezdDatum, szakGyakVegDatum);
});
}
public DataSet GetAlkalmazottakAlapErtekekkel(bool isDualis)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IAlkalmazottDal dal = h.Alkalmazott();
return dal.GetAlkalmazottakAlapErtekekkel(TanevId, AlkalmazottResource.Ismeretlen, new DateTime(1950, 01, 01),
string.Format("{0} {1}", AlkalmazottResource.KulsosCsaladNev, AlkalmazottResource.KulsosUtoNev),
string.Format("{0} {1}", isDualis ? AlkalmazottResource.DualisCsaladNev : AlkalmazottResource.KulsoGyakorlatiCsaladNev, AlkalmazottResource.KulsoGyakorlatiUtoNev),
string.Format("{0} {1}", AlkalmazottResource.Hittan, AlkalmazottResource.Oktato),
string.Format("{0} {1}", AlkalmazottResource.Betoltetlen, AlkalmazottResource.Allashely));
});
}
public void AktivTanevValtasa(int tanevId, int kovTanevId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
h.Admin().AktivTanevValtasa(TanevId, kovTanevId, IntezmenyId, FelhasznaloId);
var isSzakkepzoJuttatas = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetIntezmenyiAdatok().IsSzakkepzoJuttatas;
if (isSzakkepzoJuttatas)
{
var juttatasDal = h.JuttatasDAL();
juttatasDal.UpdateOsszesTanuloAtlag(FelhasznaloId, AtlagTipusEnum.Evvegi, tanevId, kovTanevId);
juttatasDal.UpdateTanulokSzakkepzesiJuttatasok(tanevId, FelhasznaloId, (int)JuttatasTipusEnum.szakkepzesi_juttatas);
juttatasDal.UpdateTanulokSzakkepzesiJuttatasok(tanevId, FelhasznaloId, (int)JuttatasTipusEnum.apaczaiosztondij);
}
});
}
public void ElozoTanevesViewokTorlese(int kovTanevId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
h.Admin().ElozoTanevesViewokTorlese(IntezmenyId, IntezmenyAzonosito, kovTanevId);
});
}
public void RefreshUserContextSelectedTanev()
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
UserContext.Instance.SetSelectedTanevId(TanevId);
});
}
public KretaTipusEnum GetKretaTipus()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Admin();
int result = dal.GetKretaVerzio(IntezmenyId, TanevId);
return (KretaTipusEnum)result;
});
}
public MemoryStream GetKIRAdattisztitasExcel()
{
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.Admin().GetKIRAdattisztitas(IntezmenyAzonosito);
});
var exportFile = new ExcelExportItem();
int columnIndex = 0;
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.KretaAzonosito);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.Tanev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.OktatasiAzonosito);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.RegiOktatasiAzonosito);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.UjOktatasiAzonosito);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.RegiElotag);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.UjElotag);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.RegiVezeteknev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.UjVezeteknev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.RegiUtonev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.UjUtonev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.RegiSzuletesiNev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.UjSzuletesiNev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.RegiAnyjaNeve);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.UjAnyjaNeve);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.RegiSzuletesiDatum);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.UjSzuletesiDatum);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.RegiSzuletesiHely);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.UjSzuletesiHely);
DataTable dt = ds.Tables[0];
int rowIndex = 2;
if (dt.Rows.Count == 0)
{
exportFile.AddCell(rowIndex, 0, RendszerErtesitesResource.NemTortentAdatmodositas);
}
else
{
foreach (DataRow item in dt.AsEnumerable())
{
columnIndex = 0;
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("C_AZONOSITO"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("C_NEV"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("C_OKTATASIAZONOSITO"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("OldOktAzon"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("NewOktAzon"));
var newVezeteknev = item.Field<string>("NewVezeteknev");
if (string.IsNullOrWhiteSpace(newVezeteknev))
{
exportFile.AddCell(rowIndex, columnIndex++, RendszerErtesitesResource.SzemelyesAdatNemValtozott);
}
else
{
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("OldElotag"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("NewElotag"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("OldVezeteknev"));
exportFile.AddCell(rowIndex, columnIndex++, newVezeteknev);
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("OldUtonev"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("NewUtonev"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("OldSzuletesiNev"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("NewSzuletesiNev"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("OldAnyjaNeve"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("NewAnyjaNeve"));
var oldSzuletesiDatum = item.Field<DateTime?>("OldSzuletesiDatum");
exportFile.AddCell(rowIndex, columnIndex++, oldSzuletesiDatum.HasValue ? oldSzuletesiDatum.Value.ToShortDateString() : string.Empty);
var newSzuletesiDatum = item.Field<DateTime?>("NewSzuletesiDatum");
exportFile.AddCell(rowIndex, columnIndex++, newSzuletesiDatum.HasValue ? newSzuletesiDatum.Value.ToShortDateString() : string.Empty);
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("OldSzuletesiHely"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("NewSzuletesiHely"));
}
rowIndex++;
}
}
return new ExcelExportManager().CreateExcelExport(new List<ExcelExportItem> { exportFile });
}
public MemoryStream GetHibasOKtAzonExcel()
{
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.Admin().GetNemValidOktAzon(IntezmenyAzonosito, TanevId);
});
var exportFile = new ExcelExportItem();
int columnIndex = 0;
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.OktatasiAzonosito);
DataTable dt = ds.Tables[0];
int rowIndex = 2;
if (dt.Rows.Count == 0)
{
exportFile.AddCell(rowIndex, 0, RendszerErtesitesResource.ExcelExportUresNincsInkonzisztencia);
}
else
{
foreach (DataRow item in dt.AsEnumerable())
{
columnIndex = 0;
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("OktAzonosito"));
rowIndex++;
}
}
return new ExcelExportManager().CreateExcelExport(new List<ExcelExportItem> { exportFile });
}
public MemoryStream GetAdattisztitasAlkalmazottExcel()
{
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.Admin().GetAdminDashboardAdattisztitasAlkalmazott(IntezmenyId, TanevId, false);
});
var exportFile = new ExcelExportItem();
int columnIndex = 0;
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.AdattisztitasAlkalmazottExcelAlkalmazottOktatasiAzonosito);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.AdattisztitasAlkalmazottExcelAlkalmazottAlkalmazottNev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.AdattisztitasAlkalmazottExcelAlkalmazottHibasAdatmezo);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.AdattisztitasAlkalmazottExcelAlkalmazottHibasErtek);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.AdattisztitasAlkalmazottExcelAlkalmazottLeiras);
DataTable dt = ds.Tables[0];
int rowIndex = 2;
if (dt.Rows.Count == 0)
{
exportFile.AddCell(rowIndex, 0, RendszerErtesitesResource.AdattisztitasAlkalmazottExcelAdattisztasagiMutatoRendben);
}
else
{
foreach (DataRow item in dt.AsEnumerable())
{
columnIndex = 0;
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("OktatasiAzonosito"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("AlkalmazottNev"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("HibasAdat"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("HibasErtek"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("Leiras"));
rowIndex++;
}
}
return new ExcelExportManager().CreateExcelExport(new List<ExcelExportItem> { exportFile });
}
public MemoryStream GetDirtyEmailExcel()
{
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.Email().GetEmailDataSet(new EmailSearchPco() { TanevId = TanevId, IsHibasanMegadva = true });
});
var exportFile = new ExcelExportItem();
int columnIndex = 0;
exportFile.AddColumn(columnIndex++, FelhasznalokResource.FelhasznaloNeve);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.OktatasiAzonosito);
exportFile.AddColumn(columnIndex++, FelhasznalokResource.FelhasznaloTipusa);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.DirtyEmailHibasEmailCim);
exportFile.AddColumn(columnIndex++, TanuloResource.TanuloNeve);
exportFile.AddColumn(columnIndex++, TanuloResource.TanuloOktatasiAzonosito);
DataTable dt = ds.Tables[0];
int rowIndex = 2;
if (dt.Rows.Count == 0)
{
exportFile.AddCell(rowIndex, 0, RendszerErtesitesResource.DirtyEmailNincsHibasEmailCim);
}
else
{
foreach (DataRow row in dt.AsEnumerable())
{
columnIndex = 0;
exportFile.AddCell(rowIndex, columnIndex++, row.Field<string>("FelhasznaloNev"));
exportFile.AddCell(rowIndex, columnIndex++, row.Field<string>("OktatasiAzonosito"));
exportFile.AddCell(rowIndex, columnIndex++, ReplaceFelhasznaloTipus(row.Field<int>("FelhasznaloTipus")));
exportFile.AddCell(rowIndex, columnIndex++, row.Field<string>("EmailCim"));
exportFile.AddCell(rowIndex, columnIndex++, row.Field<string>("TanuloNev"));
exportFile.AddCell(rowIndex, columnIndex++, row.Field<string>("TanuloOktatasiAzonosito"));
rowIndex++;
}
}
return new ExcelExportManager().CreateExcelExport(new List<ExcelExportItem> { exportFile });
}
public MemoryStream GetCovidFertozottekExcel(int? tanarId)
{
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return tanarId == null
? h.Felhasznalo().GetCovidFertozottekDataSet(TanevId)
: h.Felhasznalo().GetCovidFertozottekByTanarDataSet(TanevId, tanarId.Value);
});
var exportFile = new ExcelExportItem();
int columnIndex = 0;
exportFile.AddColumn(columnIndex++, FelhasznalokResource.FelhasznaloNyomtatasiNeve);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.OktatasiAzonosito);
exportFile.AddColumn(columnIndex++, FelhasznalokResource.FelhasznaloTipusa);
exportFile.AddColumn(columnIndex++, FelhasznalokResource.Osztaly);
DataTable dt = ds.Tables[0];
int rowIndex = 2;
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.AsEnumerable())
{
columnIndex = 0;
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["FelhasznaloNev"]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["OktatasiAzonosito"]));
exportFile.AddCell(rowIndex, columnIndex++, ReplaceFelhasznaloTipus(SDAConvert.ToNullableInt32(row["FelhasznaloTipus"])));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["TanuloOsztalya"]));
rowIndex++;
}
}
return new ExcelExportManager().CreateExcelExport(new List<ExcelExportItem> { exportFile });
}
public MemoryStream GetCovidBejelentettekExcel()
{
var ds = GetCovidBejelentettekDS();
var exportFile = new ExcelExportItem();
int columnIndex = 0;
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.BejelentoGondviseloNeve);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.DiakNeve);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.DiakOktatasiAzonositoja);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.BejelentesIdeje);
DataTable dt = ds.Tables[0];
int rowIndex = 2;
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.AsEnumerable())
{
columnIndex = 0;
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["GondviseloNev"]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["TanuloNev"]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["TanuloOktatasiAzonosito"]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToDateTime(row["BejelentesDatuma"]));
rowIndex++;
}
}
return new ExcelExportManager().CreateExcelExport(new List<ExcelExportItem> { exportFile });
}
public DataSet GetCovidBejelentettekDS()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.Gondviselo().GetCovidBejelentettekDataSet(TanevId);
});
}
public MemoryStream GetNemRendelkezikOsztondijAlapAdattalExcel()
{
int nemRendelkezikOsztondijAlapAdattal = 0;
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloHelper = new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h));
var (NemRendelkezikOsztondijAlapAdattal, NemRendelkezikOsztondijUtalasAdattal) = tanuloHelper.GetSzakkepzesiJuttatasokTanulokDashboardAdatok();
nemRendelkezikOsztondijAlapAdattal = NemRendelkezikOsztondijAlapAdattal;
return h.Tanulo().GetSzakkepzesiJuttatasokTanulokDashboardAdatok(TanevId);
});
var exportFile = new ExcelExportItem();
exportFile.SheetCaption = RendszerErtesitesResource.SzakkepzesiJuttatasokOsztondijAlapAdatok;
int columnIndex = 0;
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.TanuloNev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.OktatasiAzonosito);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.Osztaly);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.Evfolyam);
DataTable dt = ds.Tables[0];
int rowIndex = 2;
if (dt.Rows.Count == 0 || nemRendelkezikOsztondijAlapAdattal == 0)
{
exportFile.AddCell(rowIndex, 0, RendszerErtesitesResource.SzakkepzesiJuttatasokOsztondijAlapAdatokRendben);
}
else
{
foreach (DataRow item in dt.AsEnumerable())
{
if (string.IsNullOrWhiteSpace(item.Field<string>("TanuloNeve")) || string.IsNullOrWhiteSpace(item.Field<string>("AnyjaNeve")) || string.IsNullOrWhiteSpace(item.Field<string>("SzuletesiHely")) ||
!item.Field<DateTime?>("SzuletesiIdo").HasValue || string.IsNullOrWhiteSpace(item.Field<string>("OktatasiAzonosito")) || string.IsNullOrWhiteSpace(item.Field<string>("Osztaly")) ||
!item.Field<int?>("Evfolyam").HasValue)
{
columnIndex = 0;
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("TanuloNeve"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("OktatasiAzonosito"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("Osztaly"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("Evfolyam_DNAME"));
rowIndex++;
}
}
}
return new ExcelExportManager().CreateExcelExport(new List<ExcelExportItem> { exportFile });
}
public MemoryStream GetNemRendelkezikOsztondijUtalasAdattalExcel()
{
int nemRendelkezikOsztondijUtalasAdattal = 0;
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloHelper = new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h));
var (NemRendelkezikOsztondijAlapAdattal, NemRendelkezikOsztondijUtalasAdattal) = tanuloHelper.GetSzakkepzesiJuttatasokTanulokDashboardAdatok();
nemRendelkezikOsztondijUtalasAdattal = NemRendelkezikOsztondijUtalasAdattal;
return h.Tanulo().GetSzakkepzesiJuttatasokTanulokDashboardAdatok(TanevId);
});
var exportFile = new ExcelExportItem();
exportFile.SheetCaption = RendszerErtesitesResource.SzakkepzesiJuttatasokOsztondijUtalasAdatok;
int columnIndex = 0;
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.TanuloNev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.OktatasiAzonosito);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.Osztaly);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.Evfolyam);
DataTable dt = ds.Tables[0];
int rowIndex = 2;
if (dt.Rows.Count == 0 || nemRendelkezikOsztondijUtalasAdattal == 0)
{
exportFile.AddCell(rowIndex, 0, RendszerErtesitesResource.SzakkepzesiJuttatasokOsztondijUtalasAdatokRendben);
}
else
{
foreach (DataRow item in dt.AsEnumerable())
{
if ((item.Field<bool?>("IsJogosult_BOOL").HasValue && item.Field<bool?>("IsJogosult_BOOL").Value == true) &&
(string.IsNullOrWhiteSpace(item.Field<string>("Bankszamlaszam")) || !item.Field<int?>("BankszamlaTulajdonosa").HasValue || string.IsNullOrWhiteSpace(item.Field<string>("BankszamlaTulajdonosNeve")) ||
!item.Field<int?>("OsztondijOsszege").HasValue || (item.Field<int?>("OsztondijOsszege").HasValue && item.Field<int?>("OsztondijOsszege").Value <= 0) || string.IsNullOrWhiteSpace(item.Field<string>("TajSzam"))))
{
columnIndex = 0;
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("TanuloNeve"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("OktatasiAzonosito"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("Osztaly"));
exportFile.AddCell(rowIndex, columnIndex++, item.Field<string>("Evfolyam_DNAME"));
rowIndex++;
}
}
}
return new ExcelExportManager().CreateExcelExport(new List<ExcelExportItem> { exportFile });
}
public string GetAdminEmail()
{
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.Admin().GetAdminEmail(IntezmenyAzonosito);
});
if (ds?.Tables[0]?.Rows?.Count > 0)
{
return ds.Tables[0].Rows[0].Field<string>("Email");
}
return null;
}
public MemoryStream GetSapAdattisztasagExcel()
{
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.Felhasznalo().GetSapAdattisztasagExcel();
});
var exportFile = new ExcelExportItem();
var columnIndex = 0;
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.KretaNev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.SAPNev);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.KretaSzuletesiDatum);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.SAPSzuletesiDatum);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.KretaSzuletesiHely);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.SAPSzuletsiHely);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.KretaAnyjaNeve);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.SAPAnyjaNeve);
var rowIndex = 2;
if (ds.Tables[0].Rows.Count == 0)
{
exportFile.AddCell(rowIndex, 0, RendszerErtesitesResource.MindenAdatEgyezik);
}
else
{
foreach (var row in ds.Tables[0].AsEnumerable())
{
columnIndex = 0;
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["fNyomtatasiNev"]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["sNyomtatasiNev"]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToDateTime(row["fSzuletesiDatum"]).ToShortDateString());
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToDateTime(row["sSzuletesiDatum"]).ToShortDateString());
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["fSzuletesiHely"]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["sSzuletesiHely"]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["fAnyjaNeve"]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row["sAnyjaNeve"]));
rowIndex++;
}
}
return new ExcelExportManager().CreateExcelExport(new List<ExcelExportItem> { exportFile });
}
/// <summary>
/// FelhasznaloTipusEnum alapján szövegre cseréli az int értéket.
/// </summary>
private string ReplaceFelhasznaloTipus(int? value)
{
string result;
switch ((FelhasznaloTipusEnum?)value)
{
case FelhasznaloTipusEnum.Alkalmazott:
result = FelhasznalokResource.Alkalmazott;
break;
case FelhasznaloTipusEnum.Tanulo:
result = FelhasznalokResource.Tanulo;
break;
case FelhasznaloTipusEnum.Gondviselo:
result = FelhasznalokResource.Gondviselo;
break;
case FelhasznaloTipusEnum.Admin:
case FelhasznaloTipusEnum.Fenntarto:
default:
result = "-";
break;
}
return result;
}
public DateTime GetKovTelepitesDatum()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IDashboardUzenetDal dal = h.DashboardUzenet();
return dal.GetKovTelepitesDatum();
});
}
public MemoryStream GetAlkalmazottakAdatszinkronjaExcel()
{
List<AlkalmazottItemCo> alkalmazottCoList = new AlkalmazottHelper(ConnectionType).GetAlkalmazottCoList().OrderBy(a => a.FelhasznaloNyomtatasiNev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<AlkalmazottItemCo>(AlkalmazottItemCo.AlkalmazottAdatszinkronjaExportAttributeId);
return SimpleExportLogic.GetExport(AlkalmazottResource.AlkalmazottAdatszinkronjaExportTableName, simpleExportColumnCos, alkalmazottCoList, AlkalmazottakAdatszinkronjaExcelSorSzinezes, TanevId);
}
public MemoryStream GetEszkozIRTanarokExcel()
{
var eszkozIgenylesItemCoList = new AlkalmazottHelper(ConnectionType).GetEszkozIRTanarokExcel().OrderBy(a => a.FelhasznaloNyomtatasiNev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<EszkozIgenylesItemCo>(EszkozIgenylesItemCo.AlkalmazottEszkozIRExportAttributeId);
return SimpleExportLogic.GetExport(AlkalmazottResource.AlkalmazottAdatszinkronjaExportTableName, simpleExportColumnCos, eszkozIgenylesItemCoList, TanevId);
}
public MemoryStream GetEszkozIRNemTanarokExcel()
{
var eszkozIgenylesItemCoList = new AlkalmazottHelper(ConnectionType).GetEszkozIRNemTanarokExcel().OrderBy(a => a.FelhasznaloNyomtatasiNev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<EszkozIgenylesItemCo>(EszkozIgenylesItemCo.AlkalmazottEszkozIRExportAttributeId);
return SimpleExportLogic.GetExport(AlkalmazottResource.AlkalmazottAdatszinkronjaExportTableName, simpleExportColumnCos, eszkozIgenylesItemCoList, TanevId);
}
public MemoryStream GetEszkozIRAlkalmazottakFelhasznaloVagyNaploNelkulExcel()
{
var eszkozIgenylesItemCoList = new AlkalmazottHelper(ConnectionType).GetEszkozIRAlkalmazottakFelhasznaloVagyNaploNelkulExcel().OrderBy(a => a.FelhasznaloNyomtatasiNev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<EszkozIgenylesItemCo>(EszkozIgenylesItemCo.AlkalmazottEszkozIRExportAttributeId);
return SimpleExportLogic.GetExport(AlkalmazottResource.AlkalmazottAdatszinkronjaExportTableName, simpleExportColumnCos, eszkozIgenylesItemCoList, TanevId);
}
public MemoryStream GetEszkozIRNemRegisztraltTanarokExcel()
{
var eszkozIgenylesItemCoList = new AlkalmazottHelper(ConnectionType).GetEszkozIRNemRegisztraltTanarokExcel().OrderBy(a => a.FelhasznaloNyomtatasiNev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<EszkozIgenylesItemCo>(EszkozIgenylesItemCo.AlkalmazottEszkozIRExportAttributeId);
return SimpleExportLogic.GetExport(AlkalmazottResource.AlkalmazottAdatszinkronjaExportTableName, simpleExportColumnCos, eszkozIgenylesItemCoList, TanevId);
}
public MemoryStream GetEszkozIRRegisztraltTanarokExcel()
{
var eszkozIgenylesItemCoList = new AlkalmazottHelper(ConnectionType).GetEszkozIRRegisztraltTanarokExcel().OrderBy(a => a.FelhasznaloNyomtatasiNev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<EszkozIgenylesItemCo>(EszkozIgenylesItemCo.AlkalmazottEszkozIRExportAttributeId);
return SimpleExportLogic.GetExport(AlkalmazottResource.AlkalmazottAdatszinkronjaExportTableName, simpleExportColumnCos, eszkozIgenylesItemCoList, TanevId);
}
private void AlkalmazottakAdatszinkronjaExcelSorSzinezes(Worksheet worksheet)
{
for (int rowIndex = 1; rowIndex <= worksheet.Cells.MaxRow; rowIndex++)
{
var kozpontilagSzinkronizaltCell = worksheet.Cells[rowIndex, 6];
var isKozpontilagSzinkronizalt = kozpontilagSzinkronizaltCell.StringValue == true.GetDisplayName(BooleanDisplayFormatEnum.Teljes);
if (isKozpontilagSzinkronizalt)
{
for (int columnIndex = 0; columnIndex <= worksheet.Cells.MaxColumn; columnIndex++)
{
var cell = worksheet.Cells.Rows[rowIndex].GetCellOrNull(columnIndex);
var style = cell.GetStyle();
style.ForegroundColor = Color.LightGreen;
style.Pattern = BackgroundType.Solid;
cell.SetStyle(style);
}
}
}
}
private DataSet DigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(bool? isGondviseloLetezik = null, bool? isGondviseloBelepesLetezik = null, bool? isGondviseloTorvenyesKepviselo = null, bool? isGondviseloEszkozIgenylesElfogadottASZF = null)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
ITanuloDal dal = h.Tanulo();
return dal.GetTanulokDigitalisOktatasEgyenloHozzaferes(TanevId, IntezmenyId, Core.Constants.FeltarEvfolyamList, isGondviseloLetezik, isGondviseloBelepesLetezik, isGondviseloTorvenyesKepviselo, isGondviseloEszkozIgenylesElfogadottASZF);
});
}
private MemoryStream ExportDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(DataSet dataSet)
{
var exportFile = new ExcelExportItem();
int columnIndex = 0;
exportFile.AddColumn(columnIndex++, FelhasznalokResource.Tanulo);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.TanuloOktatasiAzonositoja);
exportFile.AddColumn(columnIndex++, FelhasznalokResource.Osztaly);
exportFile.AddColumn(columnIndex++, RendszerErtesitesResource.TanuloOsztalyanakEvfolyama);
DataTable dt = dataSet.Tables[0];
int rowIndex = 2;
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.Rows)
{
columnIndex = 0;
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row[nameof(FelhasznalokResource.Tanulo)]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row[nameof(RendszerErtesitesResource.TanuloOktatasiAzonositoja)]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row[nameof(FelhasznalokResource.Osztaly)]));
exportFile.AddCell(rowIndex, columnIndex++, SDAConvert.ToString(row[nameof(RendszerErtesitesResource.TanuloOsztalyanakEvfolyama)]));
rowIndex++;
}
}
return new ExcelExportManager().CreateExcelExport(new List<ExcelExportItem> { exportFile });
}
public MemoryStream GetDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel()
{
var dataSet = DigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel();
return ExportDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(dataSet);
}
public MemoryStream GetDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamNincsSzuloGondviseloExcel()
{
var dataSet = DigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(isGondviseloLetezik: false);
return ExportDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(dataSet);
}
public MemoryStream GetDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamNincsSzuloGondviseloFelhasznalonevExcel()
{
var dataSet = DigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(isGondviseloBelepesLetezik: false);
return ExportDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(dataSet);
}
public MemoryStream GetDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamNincsTorvenyesKepviseloExcel()
{
var dataSet = DigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(isGondviseloTorvenyesKepviselo: false);
return ExportDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(dataSet);
}
public MemoryStream GetDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamAszfNincsElfogadvaExcel()
{
var dataSet = DigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(isGondviseloEszkozIgenylesElfogadottASZF: false);
return ExportDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(dataSet);
}
public MemoryStream GetDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamSzuloElinditottaRegFolyamatotExcel()
{
var dataSet = DigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(isGondviseloEszkozIgenylesElfogadottASZF: true);
return ExportDigitalisOktatasEgyenloHozzaferesFeltetel9EvfolyamExcel(dataSet);
}
}
}

View file

@ -0,0 +1,269 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Util;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class AdminKozpontiOrakHelper : LogicBase
{
public AdminKozpontiOrakHelper(IConnectionType connectionType) : base(connectionType) { }
public int CsengetesirendId
=> Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend();
return dal.GetAktivCsengetesiRendId(TanevId, IntezmenyId);
});
public OrarendCO GetAdminKozpontiOrak(DateTime start, DateTime end)
{
OrarendCO orarendCO = new OrarendCO();
var csengetesirendOrak = GetCsengetesirendOrak();
var startEndDifference = (end - start).Days;
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var orarendiOraDal = h.OrarendiOra();
var dsOrarend = orarendiOraDal.GetOrarendForKozpontiOrak(IntezmenyId, TanevId, start, end);
var tanevrendHelper = new TanevrendHelper(new DalHandlerConnectionType(ConnectionType, h));
// Tanév rendje:
OrarendHelper orarendHelper = new OrarendHelper(new DalHandlerConnectionType(ConnectionType, h));
orarendCO.Events.AddRange(orarendHelper.HandleAndAddTanevRendje(h, start, end, new List<OrarendCO.ExtendedEvent>()));
for (int i = 0; i < startEndDifference; i++)
{
DateTime currentDate = new DateTime(start.Year, start.Month, start.Day).AddDays(i);
if (tanevrendHelper.IsTanitasiNap(currentDate, null))
{
var events = new List<OrarendCO.ExtendedEvent>(csengetesirendOrak.Count);
foreach (var csrO in csengetesirendOrak)
{
List<OrarendCO.ExtendedEvent> csengeteseiRendhezTartozoOrarendiOrak = new List<OrarendCO.ExtendedEvent>();
foreach (DataRow row in dsOrarend.Tables[0].Rows)
{
var oraKezdete = Convert.ToDateTime(row["OraKezdete"]);
if (Convert.ToDateTime(oraKezdete.ToShortDateString()) == currentDate &&
SDAConvert.ToInt32(row["Oraszam"], -1) == csrO.Oraszam)
{
csengeteseiRendhezTartozoOrarendiOrak.Add(new OrarendCO.ExtendedEvent
{
KozpontiOraGroupId = SDAConvert.StringToNullableGuid(row["KozpontiOraGroupId"]),
KozpontilagToroltOraGroupId = SDAConvert.StringToNullableGuid(row["KozpontilagToroltOraGroupId"]),
Torolt = string.Equals(row["TOROLT"], "T")
});
}
}
int kozpontiOrakSzama = csengeteseiRendhezTartozoOrarendiOrak.Where(x => x.KozpontiOraGroupId != null && !x.Torolt).GroupBy(x => x.KozpontiOraGroupId).Distinct().Count();
int kozpontiOrakOrainakSzama = csengeteseiRendhezTartozoOrarendiOrak.Count(x => x.KozpontiOraGroupId != null && !x.Torolt);
int toroltKozpontiOrakSzama = csengeteseiRendhezTartozoOrarendiOrak.Count(x => x.KozpontilagToroltOraGroupId != null);
int orarendiOraSzama = csengeteseiRendhezTartozoOrarendiOrak.Count(x => x.KozpontiOraGroupId == null && x.KozpontilagToroltOraGroupId == null && !x.Torolt);
bool isUresOra = IsUresOra(orarendiOraSzama, kozpontiOrakSzama, kozpontiOrakOrainakSzama, toroltKozpontiOrakSzama);
EventColorEnum color = orarendiOraSzama > 0 && kozpontiOrakSzama == 0 && kozpontiOrakOrainakSzama == 0 && toroltKozpontiOrakSzama == 0 ? EventColorEnum.Kek :
orarendiOraSzama > 0 && kozpontiOrakSzama > 0 ? EventColorEnum.Narancs :
toroltKozpontiOrakSzama > 0 && kozpontiOrakSzama == 0 ? EventColorEnum.Piros :
orarendiOraSzama == 0 && kozpontiOrakSzama > 0 ? EventColorEnum.Zold : EventColorEnum.Feher;
var orarendiEvent = new OrarendCO.ExtendedEvent
{
id = csrO.ID.Value,
start = new DateTime(start.Year, start.Month, start.Day, csrO.Kezd.Hour, csrO.Kezd.Minute, 0).AddDays(i),
end = new DateTime(start.Year, start.Month, start.Day, csrO.Veg.Hour, csrO.Veg.Minute, 0).AddDays(i),
allDay = false,
color = color.GetStringValue(),
colorEnum = color,
oraType = isUresOra ? CalendarOraTypeEnum.UresOra : CalendarOraTypeEnum.OrarendiOra,
textColor = isUresOra ? EventColorEnum.Szurke.GetStringValue() : "#000000",
borderColor = EventColorEnum.Szurke.GetStringValue(),
borderStyle = "dashed",
hanyadikora = csrO.Oraszam,
text = isUresOra ? csrO.Oraszam.ToString() : string.Empty,
title = isUresOra ? string.Empty : GetTextForKozpontiOra(orarendiOraSzama, kozpontiOrakSzama, kozpontiOrakOrainakSzama, toroltKozpontiOrakSzama, csrO.Oraszam),
oraszam = $"{csrO.Oraszam}. {CommonResource.Ora.ToLower()}"
};
events.Add(orarendiEvent);
}
orarendCO.Events.AddRange(events);
}
}
});
return orarendCO;
}
public IList<AdminKozpontiOrakOrarendiOraCo> GetToroltOrarendiOrakVisszaallitashoz(DateTime start, DateTime end, int hanyadikOra, Guid? kozpontilagToroltOraGroupId = null)
{
OrarendCO orarendCO = new OrarendCO();
var dsOrarend = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var orarendiOraDal = h.OrarendiOra();
return orarendiOraDal.GetOrarendForKozpontiOrak(IntezmenyId, TanevId, start, end);
});
IList<AdminKozpontiOrakOrarendiOraCo> list = AdminKozpontiOrakOrarendiOraCo.MapGridModelFromOrarendiOraTanitasiOraCoList(dsOrarend.Tables[0])
.Where(i => i.OraSorszam == hanyadikOra && i.KozpontilagToroltOraGroupId.HasValue)
.ToList();
return list;
}
public void OrarendiOrakVisszaallitasa(List<int> orarendiOrakIdList)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var orarendiOraDal = h.OrarendiOra();
orarendiOraDal.KozpontilagToroltOraVisszaallitasa(orarendiOrakIdList, FelhasznaloId);
DataSet orarendiOrak = null;
foreach (var orarendiOraId in orarendiOrakIdList)
{
IOrarendiOra orarendiOra = orarendiOraDal.Get(orarendiOraId);
if (orarendiOrak == null)
{
orarendiOrak = orarendiOraDal.GetOrarend(IntezmenyId, TanevId,
orarendiOra.OraErvenyessegKezdete, orarendiOra.OraErvenyessegVege.Value.AddDays(1),
null, null, null, true, OrarendTipusEnum.Minden, null,
null, false, null,
null, null, null);
}
foreach (DataRow row in orarendiOrak.Tables[0].Rows)
{
var tantargyId = SDAConvert.ToNullableInt32(row["TantargyId"]);
var osztalyCsoportId = SDAConvert.ToNullableInt32(row["OsztCsopId"]);
var hetirendId = SDAConvert.ToInt32(row["Hetirend"]);
var oraSorszam = SDAConvert.ToNullableInt32(row["OraSzam"]);
var tanarId = SDAConvert.ToInt32(row["TanarID"]);
var Id = SDAConvert.ToInt32(row["ID"]);
if (tantargyId.HasValue && tantargyId.Value == orarendiOra.TantargyId &&
osztalyCsoportId.HasValue && osztalyCsoportId.Value == orarendiOra.OsztalyCsoportId &&
hetirendId == orarendiOra.Hetirend &&
tanarId == orarendiOra.TanarId &&
oraSorszam == orarendiOra.Oraszam &&
Id != orarendiOraId)
{
orarendiOraDal.Delete(Id);
}
}
orarendiOraDal.UpdateOrarend(IntezmenyId, TanevId, orarendiOra.OraErvenyessegKezdete, orarendiOra.OraErvenyessegVege, orarendiOraId, null);
}
});
}
public List<string> OrarendiOrakVisszaallitasaValidacio(List<int> orarendiOrakIdList)
{
var utkozoOrak = new List<string>();
Dal.CustomConnection.Run(ConnectionType, h =>
{
var orarendiOraDal = h.OrarendiOra();
DataSet orarendiOrak = null;
foreach (var orarendiOraId in orarendiOrakIdList)
{
IOrarendiOra orarendiOra = orarendiOraDal.Get(orarendiOraId);
if (orarendiOrak == null)
{
orarendiOrak = orarendiOraDal.GetOrarend(IntezmenyId, TanevId,
orarendiOra.OraErvenyessegKezdete, orarendiOra.OraErvenyessegVege.Value.AddDays(1),
null, null, null, true, OrarendTipusEnum.Minden, null,
null, false, null,
null, null, null);
}
foreach (DataRow row in orarendiOrak.Tables[0].Rows)
{
var tantargyId = SDAConvert.ToNullableInt32(row["TantargyId"]);
var osztalyCsoportId = SDAConvert.ToNullableInt32(row["OsztCsopId"]);
var hetirendId = SDAConvert.ToInt32(row["Hetirend"]);
var oraSorszam = SDAConvert.ToNullableInt32(row["OraSzam"]);
var oraErvenyessegKezdete = SDAConvert.ToDateTime(row["ErvenyessegKezdete"]);
var oraErvenyessegVege = SDAConvert.ToDateTime(row["ErvenyessegVege"]);
var tanarId = SDAConvert.ToInt32(row["TanarID"]);
var hetNapjaTipusId = SDAConvert.ToInt32(row["HetNapja"]);
if (tantargyId.HasValue && tantargyId.Value == orarendiOra.TantargyId &&
osztalyCsoportId.HasValue && osztalyCsoportId.Value == orarendiOra.OsztalyCsoportId &&
hetirendId == orarendiOra.Hetirend &&
tanarId == orarendiOra.TanarId &&
oraSorszam == orarendiOra.Oraszam)
{
utkozoOrak.Add($"{oraErvenyessegKezdete.ToShortDateString()} {oraErvenyessegVege.ToShortDateString()} ({hetNapjaTipusId.GetDisplayName<HetNapjaTipusEnum>(TanevId)} {oraSorszam}. óra)");
}
}
}
});
return utkozoOrak;
}
private List<CsengetesiRendOraCO> GetCsengetesirendOrak()
{
var csengetesirendId = CsengetesirendId;
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRendOrak();
var ds = dal.GetCsengetesirendOrakNaptarhoz(TanevId, csengetesirendId);
var result = new List<CsengetesiRendOraCO>(ds.Tables[0].Rows.Count);
foreach (DataRow dataRow in ds.Tables[0].Rows)
{
result.Add(new CsengetesiRendOraCO
{
ID = SDAConvert.ToInt32(dataRow["ID"]),
Kezd = SDAConvert.ToDateTime(dataRow["C_KEZDETE"]).Value,
Veg = SDAConvert.ToDateTime(dataRow["C_VEGE"]).Value,
Oraszam = SDAConvert.ToInt32(dataRow["C_ORASZAM"])
});
}
return result;
});
}
private string GetTextForKozpontiOra(int csengeteseiRendhezTartozoOrarendiOrakSzama, int kozpontiOrakSzama, int kozpontiOrakOrainakSzama, int toroltKozpontiOrakSzama, int oraSzam)
{
return $@"Központi órák száma: {kozpontiOrakSzama} ({kozpontiOrakOrainakSzama})
Órarendi órák száma: {csengeteseiRendhezTartozoOrarendiOrakSzama}
Törölt órák száma: {toroltKozpontiOrakSzama}";
}
private bool IsUresOra(int csengeteseiRendhezTartozoOrarendiOrakSzama, int kozpontiOrakSzama, int kozpontiOrakOrainakSzama, int toroltKozpontiOrakSzama)
{
if (csengeteseiRendhezTartozoOrarendiOrakSzama == 0 && kozpontiOrakSzama == 0 &&
kozpontiOrakOrainakSzama == 0 && toroltKozpontiOrakSzama == 0)
{
return true;
}
return false;
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,65 @@
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web.Mvc;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class AlkalmazottMunkaugyiAdatokHelper : LogicBase
{
public AlkalmazottMunkaugyiAdatokHelper(IConnectionType connectionType) : base(connectionType) { }
public List<AlkalmazottMunkaugyiAdatokCo> GetAlkalmazottMunkaugyiAdatokCoList()
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.AlkalmazottMunkaugyiAdatokDal().GetAlkalmazottMunkaugyiAdatokData(TanevId));
var result = new List<AlkalmazottMunkaugyiAdatokCo>();
foreach (DataRow dataRow in dataSet.Tables[0].AsEnumerable())
{
var item = new AlkalmazottMunkaugyiAdatokCo(dataRow);
result.Add(item);
}
return result;
}
public List<SelectListItem> GetAlkalmazottByVezetoiOraszamOk(bool intoDokument = false, string selectedValuePart = null, int nyomtatvanyNyelvEnum = 0, bool isNemzetisegiDokumentum = false)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.AlkalmazottMunkaugyiAdatokDal();
var ds = dal.GetAlkalmazottByVezetoiOraszamOk(TanevId, nyomtatvanyNyelvEnum);
Dictionary<string, string> items;
if (!intoDokument)
{
items = ds.Tables[0].AsEnumerable().ToDictionary(row => row.Field<long>("Id").ToString(), row => row.Field<string>("Nev") + " - " + row.Field<string>("VezetoiOraszamOk") + ((row.Field<int>("IsIntezmenyAdat") == 1) ? NyomtatvanyokResource.IntezmenyiAdatokbol : ""));
}
else
{
items = !isNemzetisegiDokumentum ?
ds.Tables[0].AsEnumerable().ToDictionary(row => row.Field<long>("Id").ToString(), row => row.Field<string>("Nev") + " - " + row.Field<string>("VezetoiOraszamOk")) :
ds.Tables[0].AsEnumerable().ToDictionary(row => row.Field<long>("Id").ToString(), row => $"{row.Field<string>("Nev")}({row.Field<string>("NevIdegenNyelven")}) - {row.Field<string>("VezetoiOraszamOk")}({row.Field<string>("VezetoiOraszamOkIdegenNyelven")})");
}
return items.ToSelectItemList(null, (intoDokument) ? null : selectedValuePart);
});
}
public bool HasAlkalmazottAlkalmazottMunkaKorTipus()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var alkalmazott = h.Alkalmazott().Get(FelhasznaloId);
return alkalmazott.MunkaugyiAdatok.Any(x => !x.Torolt && Constants.FeltarAlkalmazottEszkozigenylesMunkakorTipusList.Contains(x.MunkakorTipusa.Value))
|| alkalmazott.TovabbiMunkaugyiAdatok.Any(x => !x.Torolt && Constants.FeltarAlkalmazottEszkozigenylesMunkakorTipusList.Contains(x.MunkakorTipusa.Value));
});
}
}
}

View file

@ -0,0 +1,47 @@
using System.Data;
using System.Drawing;
using Aspose.Words;
using Aspose.Words.Drawing;
using Kreta.BusinessLogic.Classes.AsposeHelpers;
namespace Kreta.BusinessLogic.Helpers
{
public partial class AsposeHelper
{
private readonly DataSet _ds;
private readonly AsposeHelperOptions options;
private const string PAGE_BREAK_HTML = @"<div class=""pagebreak"">
</div>";
/// <summary>
/// Csak hogy le lehessen kérni a metódusokat.
/// </summary>
public AsposeHelper()
{
}
public AsposeHelper(DataSet ds, AsposeHelperOptions options)
{
_ds = ds;
this.options = options;
}
private static void SetCustomHeaderOnDocument(Document resultDoc, Image fejlecImage)
{
if (fejlecImage == null)
{
return;
}
var pageSetup = resultDoc.Sections[0].PageSetup;
var header = resultDoc.Sections[0].HeadersFooters[HeaderFooterType.HeaderPrimary];
var shape = new Shape(resultDoc, ShapeType.Image);
shape.ImageData.SetImage(fejlecImage);
shape.Width = pageSetup.PageWidth - pageSetup.LeftMargin - pageSetup.RightMargin;
header.Paragraphs[0].RemoveAllChildren();
header.Paragraphs[0].AppendChild(shape);
pageSetup.TopMargin = (shape.Width / fejlecImage.Width * fejlecImage.Height) + pageSetup.HeaderDistance;
}
}
}

View file

@ -0,0 +1,809 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses.AmiTorzslapCOs;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using AsposeWords = Aspose.Words;
namespace Kreta.BusinessLogic.Helpers
{
public partial class AsposeHelper
{
public MemoryStream GetAmiTorzslap(Stream sablonStream, int formatumId)
{
var torzslapCo = new AmiTorzslapCo(_ds, options.DocumentParameters, options.TanevId);
Dictionary<bool, string> sablonokNeve;
if (this.options.DocumentParameters.MuveszetiAgId == (int)MuveszetiAgEnum.ZenemuveszetiAg)
{
sablonokNeve = new Dictionary<bool, string>
{
{ false, AmiTorzslapResource.ZenemuveszetiSablon },
{ true, AmiTorzslapResource.ZenemuveszetiSNISablon },
};
}
else
{
sablonokNeve = new Dictionary<bool, string>
{
{ false, AmiTorzslapResource.NemZenemuveszetiSablon },
{ true, AmiTorzslapResource.NemZenemuveszetiSNISablon },
};
}
var resultDoc = new AsposeWords.Document();
AsposeWords.Style normal = resultDoc.Styles[AsposeWords.StyleIdentifier.Normal];
normal.Font.Name = AmiTorzslapResource.UsedFontName;
normal.Font.Size = AmiTorzslapConstants.UsedFontSize;
foreach (var co in torzslapCo.TanuloTorzslapCoList.OrderBy(x => x.TorzslapSzam?.Length ?? 0).ThenBy(x => x.TorzslapSzam))
{
var kellSni = (co.TanuloSniAdatok != null) && this.options.DocumentParameters.SNIMegjelenites;
var sablonPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $@"Resources\AsposeSablonok\{sablonokNeve[kellSni]}");
var doc = new AsposeWords.Document(sablonPath, new AsposeWords.LoadOptions());
var table = (AsposeWords.Tables.Table)doc.GetChild(AsposeWords.NodeType.Table, 0, true);
if (this.options.DocumentParameters.FejlecMegjelenitese)
{
SetFejlecAdatok(table, co);
}
else
{
for (int i = 0; i < 4; i++)
{
foreach (AsposeWords.Tables.Cell cell in table.Rows[i].Cells)
{
cell.CellFormat.Borders.Top.Color = Color.White;
cell.CellFormat.Borders.Bottom.Color = Color.White;
cell.CellFormat.Borders.Left.Color = Color.White;
cell.CellFormat.Borders.Right.Color = Color.White;
cell.FirstParagraph.Runs.Clear();
cell.LastParagraph.Runs.Clear();
}
}
}
if (this.options.DocumentParameters.AdatokMegjelenitese)
{
SetTantargyAdatok(table, co, kellSni);
if (kellSni)
{
SetSNIAdatok(table, co);
}
if (this.options.DocumentParameters.FelmentesekMegjelenitese)
{
SetFelmentesek(table, co, kellSni);
}
if (this.options.DocumentParameters.FeljegyzesekMegjelenitese)
{
SetFeljegyzesek(table, co, kellSni);
}
SetZaradekok(table, co, kellSni);
}
else
{
for (int i = 4; i < table.Rows.Count; i++)
{
for (int j = 0; j < table.Rows[i].Cells.Count; j++)
{
AsposeWords.Tables.Cell cell = table.Rows[i].Cells[j];
cell.CellFormat.Borders.Top.Color = Color.White;
cell.CellFormat.Borders.Bottom.Color = Color.White;
cell.CellFormat.Borders.Left.Color = Color.White;
cell.CellFormat.Borders.Right.Color = Color.White;
cell.Paragraphs.Clear();
var newParagraph = new AsposeWords.Paragraph(doc);
newParagraph.ParagraphBreakFont.Size = AmiTorzslapConstants.UsedFontSize;
newParagraph.ParagraphBreakFont.Name = AmiTorzslapResource.UsedFontName;
var newRun = new AsposeWords.Run(doc,
i == 5 && j == 5 ? AsposeWords.ControlChar.LineBreak :
i == 25 && j == 0 && kellSni ? " " + AsposeWords.ControlChar.LineBreak + " " + AsposeWords.ControlChar.LineBreak :
i == 26 && kellSni ? " " + AsposeWords.ControlChar.LineBreak : " ");
newRun.Font.Name = AmiTorzslapResource.UsedFontName;
newRun.Font.Size = AmiTorzslapConstants.UsedFontSize;
newParagraph.Runs.Add(newRun);
cell.Paragraphs.Add(newParagraph);
}
}
}
resultDoc.AppendDocument(doc, AsposeWords.ImportFormatMode.KeepSourceFormatting);
}
resultDoc.Sections.RemoveAt(0);
SetWordDocumentKotesMargo(resultDoc);
var ms = new MemoryStream();
resultDoc.Save(ms, formatumId == (int)NyomtatvanyFormatumEnum.Word ? AsposeWords.SaveFormat.Docx : AsposeWords.SaveFormat.Pdf);
ms.Position = 0;
return ms;
}
private void SetFejlecAdatok(AsposeWords.Tables.Table table, AmiTanuloTorzslapCo co)
{
var sorSzama = 0;
var oszlopSzama = 0;
var baseRun = new AsposeWords.Run(table.Document);
baseRun.Font.Name = AmiTorzslapResource.UsedFontName;
baseRun.Font.Size = options.DocumentParameters.BetuMeretFejlec;
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.TorzslapSzam));
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.TanuloNeve));
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.OktatasiAzonosito));
table.Rows[sorSzama++].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, string.Join(AsposeWords.ControlChar.LineBreak, co.FoglalkozasiNaploAdatCos?.OrderByDescending(x => x.IsOsztalyos).ThenBy(x => x.NaploSzam).Select(x => $"{x.TanuloSzam}/{x.NaploSzam}") ?? new List<string>())));
oszlopSzama = 0;
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.BeirasiNaploSorszam));
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.EvfolyamNeve));
if (string.IsNullOrWhiteSpace(co.EvfolyamNeve))
{
AddHibaKomment(table, sorSzama, oszlopSzama - 1, AmiTorzslapResource.NincsMegadvaFotargy);
}
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, string.Join(", ", new List<string> { co.SzuletesiHelye, co.SzuletesiOrszag })));
table.Rows[sorSzama++].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.SzuletesiIdeje.ToString(Constants.ToStringPattern.HungarianDate)));
oszlopSzama = 0;
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.AnyjaNeve));
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.AllampolgarsagNeve));
table.Rows[sorSzama++].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, $"{co.TartozkodasJogcime}{(string.IsNullOrWhiteSpace(co.OkiratSzama) ? "" : $", {co.OkiratSzama}")}"));
oszlopSzama = 0;
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.TanevNeve));
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.MuveszetiAgNeve?.Substring(0, co.MuveszetiAgNeve.Length - 4)));
if (this.options.DocumentParameters.MuveszetiAgId == (int)MuveszetiAgEnum.ZenemuveszetiAg)
{
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.MufajNeve));
if (string.IsNullOrWhiteSpace(co.MufajNeve))
{
AddHibaKomment(table, sorSzama, oszlopSzama - 1, AmiTorzslapResource.NincsMegadvaFotargy);
}
}
table.Rows[sorSzama++].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.TanszakNeve));
if (string.IsNullOrWhiteSpace(co.TanszakNeve))
{
AddHibaKomment(table, sorSzama - 1, oszlopSzama - 1, AmiTorzslapResource.NincsMegadvaFotargy);
}
}
private void SetTantargyAdatok(AsposeWords.Tables.Table table, AmiTanuloTorzslapCo co, bool kellSni)
{
var baseRun = new AsposeWords.Run(table.Document);
baseRun.Font.Name = AmiTorzslapResource.UsedFontName;
baseRun.Font.Size = options.DocumentParameters.BetuMeretAdatok;
var pontpont = "................................................";
var isZenemuveszetiAg = options.DocumentParameters.MuveszetiAgId == (int)MuveszetiAgEnum.ZenemuveszetiAg;
var alapVizsgaAdatok = co.AlapVizsgaAdatokCos.OrderByDescending(x => x.Datum).FirstOrDefault();
if (alapVizsgaAdatok != default)
{
var alapvizsgaOszlop = isZenemuveszetiAg ? 6 : 2;
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[0].ParagraphFormat.Alignment = AsposeWords.ParagraphAlignment.Center;
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[0].Runs.Clear();
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[0].Runs.Add(GetRunWithText(baseRun, isZenemuveszetiAg ? alapVizsgaAdatok.MufajNeve : alapVizsgaAdatok.MuveszetiAgNeve));
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[2].ParagraphFormat.Alignment = AsposeWords.ParagraphAlignment.Center;
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[2].Runs.Clear();
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[2].Runs.Add(GetRunWithText(baseRun, alapVizsgaAdatok.TanszakNeve));
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[6].ParagraphFormat.Alignment = AsposeWords.ParagraphAlignment.Center;
var zarojel = table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[6].LastChild as AsposeWords.Run;
zarojel.Text = zarojel.Text.Substring(zarojel.Text.Length - 1);
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[6].Runs.Insert(
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[6].Count - 1,
GetRunWithText(baseRun, alapVizsgaAdatok.OMKod));
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[9].ParagraphFormat.Alignment = AsposeWords.ParagraphAlignment.Center;
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[9].Runs.Clear();
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[9].Runs.Add(GetRunWithText(baseRun, alapVizsgaAdatok.Ertekeles));
var avKeltezes = (!string.IsNullOrWhiteSpace(alapVizsgaAdatok.KeltezesHelye) && alapVizsgaAdatok.KeltezesDatuma.HasValue) ? $"{alapVizsgaAdatok.KeltezesHelye}, {alapVizsgaAdatok.KeltezesDatuma.Value.ToString(this.options.DocumentParameters.KeltFormatum == KeltFormatumTipusEnum.Szammal ? Constants.ToStringPattern.HungarianDate : Constants.ToStringPattern.HungarianLongDate)}" : pontpont.Substring(8);
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[11].LastChild.Remove();
table.Rows[5].Cells[alapvizsgaOszlop].Paragraphs[11].Runs.Add(GetRunWithText(baseRun, avKeltezes));
var alapVizsgaAdatokTobbi = co.AlapVizsgaAdatokCos.FindAll(x => x != alapVizsgaAdatok).ToList();
if (alapVizsgaAdatokTobbi.Count > 0)
{
AddHibaKommentTobbesAlapZaroVizsgaErtekeles(table, 5, alapvizsgaOszlop, alapVizsgaAdatokTobbi, AmiTorzslapResource.TobbAlapvizsgaErtekelesVanMegadva);
}
}
var zaroVizsgaAdatok = co.ZaroVizsgaAdatokCos.OrderByDescending(x => x.Datum).FirstOrDefault();
if (zaroVizsgaAdatok != default)
{
var zarovizsgaOszlop = isZenemuveszetiAg ? 3 : 1;
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[0].ParagraphFormat.Alignment = AsposeWords.ParagraphAlignment.Center;
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[0].Runs.Clear();
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[0].Runs.Add(GetRunWithText(baseRun, isZenemuveszetiAg ? zaroVizsgaAdatok.MufajNeve : zaroVizsgaAdatok.MuveszetiAgNeve));
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[2].ParagraphFormat.Alignment = AsposeWords.ParagraphAlignment.Center;
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[2].Runs.Clear();
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[2].Runs.Add(GetRunWithText(baseRun, zaroVizsgaAdatok.TanszakNeve));
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[6].ParagraphFormat.Alignment = AsposeWords.ParagraphAlignment.Center;
var zarojel = table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[6].LastChild as AsposeWords.Run;
zarojel.Text = zarojel.Text.Substring(zarojel.Text.Length - 1);
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[6].Runs.Insert(
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[6].Count - 1,
GetRunWithText(baseRun, zaroVizsgaAdatok.OMKod));
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[9].ParagraphFormat.Alignment = AsposeWords.ParagraphAlignment.Center;
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[9].Runs.Clear();
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[9].Runs.Add(GetRunWithText(baseRun, zaroVizsgaAdatok.Ertekeles));
var zvKeltezes = (!string.IsNullOrWhiteSpace(zaroVizsgaAdatok.KeltezesHelye) && zaroVizsgaAdatok.KeltezesDatuma.HasValue) ? $"{zaroVizsgaAdatok.KeltezesHelye}, {zaroVizsgaAdatok.KeltezesDatuma.Value.ToString(this.options.DocumentParameters.KeltFormatum == KeltFormatumTipusEnum.Szammal ? Constants.ToStringPattern.HungarianDate : Constants.ToStringPattern.HungarianLongDate)}" : pontpont.Substring(8);
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[11].LastChild.Remove();
table.Rows[23].Cells[zarovizsgaOszlop].Paragraphs[11].Runs.Add(GetRunWithText(baseRun, zvKeltezes));
var zaroVizsgaAdatokTobbi = co.ZaroVizsgaAdatokCos.FindAll(x => x != zaroVizsgaAdatok).ToList();
if (zaroVizsgaAdatokTobbi.Count > 0)
{
AddHibaKommentTobbesAlapZaroVizsgaErtekeles(table, 23, zarovizsgaOszlop, zaroVizsgaAdatokTobbi, AmiTorzslapResource.TobbZarovizsgaErtekelesVanMegadva);
}
}
if (isZenemuveszetiAg)
{
SetZenemuveszetiTargyak(table, co, kellSni, baseRun);
}
else
{
SetNemZenemuveszetiTargyak(table, co, kellSni, baseRun);
}
}
private void SetZenemuveszetiTargyak(AsposeWords.Tables.Table table, AmiTanuloTorzslapCo co, bool kellSni, AsposeWords.Run baseRun)
{
var targyakSorSzama = 6;
var szovegesErtekelesSorSzama = 25;
if (kellSni)
{
szovegesErtekelesSorSzama += 2;
}
// főtárgy
var foTargyak = co.ZenemuveszetiAgTantargyCos.Where(x => x.IsFotargy && !x.IsSzorgalom).OrderBy(x => x.Sorszam).ThenBy(x => x.Nev).ToList();
int? kivalasztottFotargyId = null;
if (foTargyak.Count > 0)
{
var targy = foTargyak[0];
kivalasztottFotargyId = targy.Id;
var targyNev = targy.Nev + AmiTorzslapResource.FotargyNevPostfix;
table.Rows[targyakSorSzama].Cells[1].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, targyNev));
var evfolyamNeve = targy.EvfolyamNeve;
var tagozatNeve = targy.TagozatNeve;
if (evfolyamNeve == EvfolyamTipusEnum.na.GetDisplayName(options.TanevId))
{
evfolyamNeve = "";
}
if (tagozatNeve == AMITagozatEnum.na.GetDisplayName(options.TanevId))
{
tagozatNeve = " ";
}
table.Rows[targyakSorSzama].Cells[2].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, evfolyamNeve));
table.Rows[targyakSorSzama].Cells[3].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, tagozatNeve?.Substring(0, 1)));
table.Rows[targyakSorSzama].Cells[4].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, targy.Osztalyzat));
if (!string.IsNullOrWhiteSpace(targy.Jeloles))
{
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, targy.IsSzoveges ? targy.Jeloles : $" ({targy.ErtekelesSzoveg})");
jelolesRun.Font.Superscript = targy.IsSzoveges;
table.Rows[targyakSorSzama].Cells[4].FirstParagraph?.Runs.Add(jelolesRun);
}
table.Rows[targyakSorSzama].Cells[5].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, targy.MulasztasIgazolt.ToString()));
table.Rows[targyakSorSzama].Cells[6].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, targy.MulasztasIgazolatlan.ToString()));
if (targy.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, targy, targyNev);
}
var foTargyakTobbi = foTargyak.Skip(AmiTorzslapConstants.MaxSorok.ZenemuveszetiAgFotargy).ToList();
if (foTargyakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, foTargyakTobbi, AmiTorzslapResource.TobbTantargyVanBeallivaFotargynak);
}
}
else
{
AddHibaKomment(table, targyakSorSzama, 0, AmiTorzslapResource.NincsMegadvaFotargy);
}
targyakSorSzama++;
// főtárgy szorgalom
var fotargySzorgalmak = co.ZenemuveszetiAgTantargyCos.Where(x => x.IsFotargy && x.IsSzorgalom).OrderBy(x => x.Sorszam).ThenBy(x => x.Nev).ToList();
if (fotargySzorgalmak.Count > 0)
{
var kivalasztottFotargySzorgalomId = 0;
if (kivalasztottFotargyId != default)
{
var kivalasztottFotargySzorgalmak = fotargySzorgalmak.Where(x => x.KapcsolodoFotargyId == kivalasztottFotargyId).ToList();
if (kivalasztottFotargySzorgalmak.Count > 0)
{
var kivalasztottFotargySzorgalom = kivalasztottFotargySzorgalmak[0];
kivalasztottFotargySzorgalomId = kivalasztottFotargySzorgalom.Id;
table.Rows[targyakSorSzama].Cells[4].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, kivalasztottFotargySzorgalom.Osztalyzat));
if (kivalasztottFotargySzorgalom.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, kivalasztottFotargySzorgalom);
}
var kivalasztottFotargySzorgalmakTobbi = kivalasztottFotargySzorgalmak.Skip(AmiTorzslapConstants.MaxSorok.ZenemuveszetiAgFotargySzorgalom).ToList();
if (kivalasztottFotargySzorgalmakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, kivalasztottFotargySzorgalmakTobbi, AmiTorzslapResource.TobbFotargySzorgalomVanBeallitvaAKivalasztottFotargyhoz);
}
}
}
var fotargySzorgalmakTobbi = fotargySzorgalmak.Where(x => x.Id != kivalasztottFotargySzorgalomId).ToList();
if (fotargySzorgalmakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, fotargySzorgalmakTobbi, AmiTorzslapResource.TobbTantargyVanBeallitvaFotargySzorgalomnak);
}
}
else
{
var fotargySzorgalomEvvegibol = co.ZenemuveszetiAgTantargyCos.SingleOrDefault(x => x.Id == AmiTorzslapConstants.SzorgalomEvvegiJegyTantargyId);
if (fotargySzorgalomEvvegibol != default)
{
table.Rows[targyakSorSzama].Cells[4].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, fotargySzorgalomEvvegibol.Osztalyzat));
if (!string.IsNullOrWhiteSpace(fotargySzorgalomEvvegibol.Jeloles))
{
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, fotargySzorgalomEvvegibol.IsSzoveges ? fotargySzorgalomEvvegibol.Jeloles : $" ({fotargySzorgalomEvvegibol.ErtekelesSzoveg})");
jelolesRun.Font.Superscript = fotargySzorgalomEvvegibol.IsSzoveges;
table.Rows[targyakSorSzama].Cells[4].FirstParagraph?.Runs.Add(jelolesRun);
}
if (fotargySzorgalomEvvegibol.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, fotargySzorgalomEvvegibol);
}
}
}
targyakSorSzama++;
var kotelezoKotelezoenValaszthatoNemFotargyak = co.ZenemuveszetiAgTantargyCos.Where(x => !x.IsFotargy && (x.KotelezosegId == (int)AMITantargyKotelezosegEnum.Kotelezo || x.KotelezosegId == (int)AMITantargyKotelezosegEnum.KotelezoenValaszthato));
var valaszthatoTargyak = co.ZenemuveszetiAgTantargyCos.Where(x => !x.IsFotargy && x.KotelezosegId == (int)AMITantargyKotelezosegEnum.SzabadonValaszthato && x.Id != AmiTorzslapConstants.SzorgalomEvvegiJegyTantargyId).OrderBy(x => x.Sorszam).ThenBy(x => x.Nev).ToList();
// szolfézs
var szolfezsTargyak = kotelezoKotelezoenValaszthatoNemFotargyak.Where(x => x.Nev.ToLower() == AmiTorzslapResource.Szolfezs.ToLower() && !x.IsSzorgalom).OrderBy(x => x.Sorszam).ThenBy(x => x.Nev).ToList();
int? kivalasztottSzolfezsId = null;
if (szolfezsTargyak.Count > 0)
{
var targy = szolfezsTargyak[0];
kivalasztottSzolfezsId = targy.Id;
var evfolyamNeve = targy.EvfolyamNeve;
var tagozatNeve = targy.TagozatNeve;
if (evfolyamNeve == EvfolyamTipusEnum.na.GetDisplayName(options.TanevId))
{
evfolyamNeve = "";
}
if (tagozatNeve == AMITagozatEnum.na.GetDisplayName(options.TanevId))
{
tagozatNeve = " ";
}
table.Rows[targyakSorSzama].Cells[2].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, evfolyamNeve));
table.Rows[targyakSorSzama].Cells[3].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, tagozatNeve?.Substring(0, 1)));
table.Rows[targyakSorSzama].Cells[4].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, targy.Osztalyzat));
if (!string.IsNullOrWhiteSpace(targy.Jeloles))
{
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, targy.IsSzoveges ? targy.Jeloles : $" ({targy.ErtekelesSzoveg})");
jelolesRun.Font.Superscript = targy.IsSzoveges;
table.Rows[targyakSorSzama].Cells[4].FirstParagraph?.Runs.Add(jelolesRun);
}
table.Rows[targyakSorSzama].Cells[5].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, targy.MulasztasIgazolt?.ToString()));
table.Rows[targyakSorSzama].Cells[6].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, targy.MulasztasIgazolatlan?.ToString()));
if (targy.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, targy, targy.Nev);
}
var szolfezsTargyakTobbi = szolfezsTargyak.Skip(AmiTorzslapConstants.MaxSorok.ZenemuveszetiAgSzolfezs).ToList();
if (szolfezsTargyakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, szolfezsTargyakTobbi, AmiTorzslapResource.TobbSzolfezsTantargyVanBeallitva);
}
}
targyakSorSzama++;
// szolfézs szorgalom
var szolfezsSzorgalmak = kotelezoKotelezoenValaszthatoNemFotargyak.Where(x => szolfezsTargyak.Any(y => y.Id == x.KapcsolodoFotargyId) && x.IsSzorgalom).OrderBy(x => x.Sorszam).ThenBy(x => x.Nev).ToList();
if (szolfezsSzorgalmak.Count > 0)
{
var kivalasztottSzolfezsSzorgalomId = 0;
if (kivalasztottSzolfezsId != default)
{
var kivalasztottSzolfezsSzorgalmak = szolfezsSzorgalmak.Where(x => x.KapcsolodoFotargyId == kivalasztottSzolfezsId).ToList();
if (kivalasztottSzolfezsSzorgalmak.Count > 0)
{
var kivalasztottSzolfezsSzorgalom = kivalasztottSzolfezsSzorgalmak[0];
kivalasztottSzolfezsSzorgalomId = kivalasztottSzolfezsSzorgalom.Id;
table.Rows[targyakSorSzama].Cells[4].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, kivalasztottSzolfezsSzorgalom.Osztalyzat));
if (kivalasztottSzolfezsSzorgalom.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, kivalasztottSzolfezsSzorgalom, AmiTorzslapResource.Szolfezs);
}
var kivalasztottSzolfezsSzorgalmakTobbi = kivalasztottSzolfezsSzorgalmak.Skip(AmiTorzslapConstants.MaxSorok.ZenemuveszetiAgSzolfezsSzorgalom).ToList();
if (kivalasztottSzolfezsSzorgalmakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, kivalasztottSzolfezsSzorgalmakTobbi, AmiTorzslapResource.TobbSzolfezsSzorgalomVanBeallitvaAKivalasztottSzolfezshoz);
}
}
}
var szolfezsSzorgalmakTobbi = szolfezsSzorgalmak.Where(x => x.Id != kivalasztottSzolfezsSzorgalomId).ToList();
if (szolfezsSzorgalmakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, szolfezsSzorgalmakTobbi, AmiTorzslapResource.TobbSzolfezsSzorgalomTantargyVanBeallitva);
}
}
targyakSorSzama++;
var kotelezoKotelezoenValaszthatoTargyakOsszes = kotelezoKotelezoenValaszthatoNemFotargyak.Where(x => !szolfezsTargyak.Any(y => y.Id == x.Id) && !szolfezsSzorgalmak.Any(y => y.Id == x.Id)).OrderBy(x => x.Sorszam).ThenBy(x => x.Nev).ToList();
for (int i = 0; i < Math.Min(kotelezoKotelezoenValaszthatoTargyakOsszes.Count, AmiTorzslapConstants.MaxSorok.ZenemuveszetiAgKotelezoKotelezoenValaszthatoTargyak); i++)
{
var kotTargy = kotelezoKotelezoenValaszthatoTargyakOsszes[i];
table.Rows[targyakSorSzama + i].Cells[1].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, kotTargy.Nev));
var evfolyamNeve = kotTargy.EvfolyamNeve;
var tagozatNeve = kotTargy.TagozatNeve;
if (evfolyamNeve == EvfolyamTipusEnum.na.GetDisplayName(options.TanevId))
{
evfolyamNeve = "";
}
if (tagozatNeve == AMITagozatEnum.na.GetDisplayName(options.TanevId))
{
tagozatNeve = " ";
}
table.Rows[targyakSorSzama + i].Cells[2].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, evfolyamNeve));
table.Rows[targyakSorSzama + i].Cells[3].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, tagozatNeve?.Substring(0, 1)));
table.Rows[targyakSorSzama + i].Cells[4].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, kotTargy.Osztalyzat));
if (!string.IsNullOrWhiteSpace(kotTargy.Jeloles))
{
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, kotTargy.IsSzoveges ? kotTargy.Jeloles : $" ({kotTargy.ErtekelesSzoveg})");
jelolesRun.Font.Superscript = kotTargy.IsSzoveges;
table.Rows[targyakSorSzama + i].Cells[4].FirstParagraph?.Runs.Add(jelolesRun);
}
table.Rows[targyakSorSzama + i].Cells[5].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, kotTargy.MulasztasIgazolt?.ToString()));
table.Rows[targyakSorSzama + i].Cells[6].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, kotTargy.MulasztasIgazolatlan?.ToString()));
if (kotTargy.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, kotTargy);
}
}
var kotelezoKotelezoenValaszthatoTargyakOsszesTobbi = kotelezoKotelezoenValaszthatoTargyakOsszes.Skip(AmiTorzslapConstants.MaxSorok.ZenemuveszetiAgKotelezoKotelezoenValaszthatoTargyak).ToList();
if (kotelezoKotelezoenValaszthatoTargyakOsszesTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, kotelezoKotelezoenValaszthatoTargyakOsszesTobbi, AmiTorzslapResource.TobbTantargyVanBeallitvaKotelezoKotelezoenValaszthatonak);
}
targyakSorSzama = 16;
for (int i = 0; i < Math.Min(valaszthatoTargyak.Count, AmiTorzslapConstants.MaxSorok.ZenemuveszetiAgValaszthatoTargyak); i++)
{
var valTargy = valaszthatoTargyak[i];
table.Rows[targyakSorSzama + i].Cells[1].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, valTargy.Nev));
var evfolyamNeve = valTargy.EvfolyamNeve;
var tagozatNeve = valTargy.TagozatNeve;
if (evfolyamNeve == EvfolyamTipusEnum.na.GetDisplayName(options.TanevId))
{
evfolyamNeve = "";
}
if (tagozatNeve == AMITagozatEnum.na.GetDisplayName(options.TanevId))
{
tagozatNeve = " ";
}
table.Rows[targyakSorSzama + i].Cells[2].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, evfolyamNeve));
table.Rows[targyakSorSzama + i].Cells[3].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, tagozatNeve?.Substring(0, 1)));
table.Rows[targyakSorSzama + i].Cells[4].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, valTargy.Osztalyzat));
if (!string.IsNullOrWhiteSpace(valTargy.Jeloles))
{
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, valTargy.IsSzoveges ? valTargy.Jeloles : $" ({valTargy.ErtekelesSzoveg})");
jelolesRun.Font.Superscript = valTargy.IsSzoveges;
table.Rows[targyakSorSzama + i].Cells[4].FirstParagraph?.Runs.Add(jelolesRun);
}
table.Rows[targyakSorSzama + i].Cells[5].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, valTargy.MulasztasIgazolt?.ToString()));
table.Rows[targyakSorSzama + i].Cells[6].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, valTargy.MulasztasIgazolatlan?.ToString()));
if (valTargy.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, valTargy);
}
}
var valaszthatoTargyakTobbi = valaszthatoTargyak.Skip(AmiTorzslapConstants.MaxSorok.ZenemuveszetiAgValaszthatoTargyak).ToList();
if (valaszthatoTargyakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, valaszthatoTargyakTobbi, AmiTorzslapResource.TobbTantargyVanBeallitvaValaszthatonak);
}
targyakSorSzama = 23;
// Átlag kitöltése
table.Rows[targyakSorSzama++].Cells[0].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.TanulmanyiAtlag?.ToString("0.00")));
// Mulasztások kitöltése
table.Rows[targyakSorSzama].Cells[1].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, co.ZenemuveszetiAgTantargyCos.Sum(x => x.MulasztasIgazolt).ToString()));
table.Rows[targyakSorSzama++].Cells[2].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, co.ZenemuveszetiAgTantargyCos.Sum(x => x.MulasztasIgazolatlan).ToString()));
}
private void SetNemZenemuveszetiTargyak(AsposeWords.Tables.Table table, AmiTanuloTorzslapCo co, bool kellSni, AsposeWords.Run baseRun)
{
var targyakSorSzama = 6;
var szovegesErtekelesSorSzama = 25;
if (kellSni)
{
szovegesErtekelesSorSzama += 2;
}
// főtárgy
var fotargyak = co.ZenemuveszetiAgTantargyCos.Where(x => x.IsFotargy && (x.KotelezosegId == (int)AMITantargyKotelezosegEnum.Kotelezo || x.KotelezosegId == (int)AMITantargyKotelezosegEnum.KotelezoenValaszthato)).OrderBy(x => x.Sorszam).ThenBy(x => x.Nev).ToList();
if (fotargyak.Count == 0)
{
AddHibaKomment(table, targyakSorSzama, 0, AmiTorzslapResource.NincsMegadvaFotargy);
}
for (int i = 0; i < Math.Min(fotargyak.Count, AmiTorzslapConstants.MaxSorok.NemZenemuveszetiAgFotargyak); i++)
{
var fotargy = fotargyak[i];
table.Rows[targyakSorSzama + i].Cells[1].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, fotargy.Nev));
table.Rows[targyakSorSzama + i].Cells[2].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, fotargy.Osztalyzat));
if (!string.IsNullOrWhiteSpace(fotargy.Jeloles))
{
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, fotargy.IsSzoveges ? fotargy.Jeloles : $" ({fotargy.ErtekelesSzoveg})");
jelolesRun.Font.Superscript = fotargy.IsSzoveges;
table.Rows[targyakSorSzama + i].Cells[2].FirstParagraph?.Runs.Add(jelolesRun);
}
if (fotargy.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, fotargy);
}
}
var fotargyakTobbi = fotargyak.Skip(AmiTorzslapConstants.MaxSorok.NemZenemuveszetiAgFotargyak).ToList();
if (fotargyakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, fotargyakTobbi, AmiTorzslapResource.TobbTantargyVanBeallivaFotargynak);
}
targyakSorSzama = 8;
var kotelezoTargyak = co.ZenemuveszetiAgTantargyCos.Where(x => !x.IsFotargy && x.KotelezosegId == (int)AMITantargyKotelezosegEnum.Kotelezo).OrderBy(x => x.Sorszam).ThenBy(x => x.Nev).ToList();
for (int i = 0; i < Math.Min(kotelezoTargyak.Count, AmiTorzslapConstants.MaxSorok.NemZenemuveszetiAgKotelezoTargyak); i++)
{
var kotTargy = kotelezoTargyak[i];
table.Rows[targyakSorSzama + i].Cells[1].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, kotTargy.Nev));
table.Rows[targyakSorSzama + i].Cells[2].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, kotTargy.Osztalyzat));
if (!string.IsNullOrWhiteSpace(kotTargy.Jeloles))
{
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, kotTargy.IsSzoveges ? kotTargy.Jeloles : $" ({kotTargy.ErtekelesSzoveg})");
jelolesRun.Font.Superscript = kotTargy.IsSzoveges;
table.Rows[targyakSorSzama + i].Cells[2].FirstParagraph?.Runs.Add(jelolesRun);
}
if (kotTargy.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, kotTargy);
}
}
var kotelezoTargyakTobbi = kotelezoTargyak.Skip(AmiTorzslapConstants.MaxSorok.NemZenemuveszetiAgKotelezoTargyak).ToList();
if (kotelezoTargyakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, kotelezoTargyakTobbi, AmiTorzslapResource.TobbTantargyVanBeallitvaKotelezonek);
}
targyakSorSzama = 13;
var kotelezoenValaszthatoTargyak = co.ZenemuveszetiAgTantargyCos.Where(x => !x.IsFotargy && x.KotelezosegId == (int)AMITantargyKotelezosegEnum.KotelezoenValaszthato).OrderBy(x => x.Sorszam).ThenBy(x => x.Nev).ToList();
for (int i = 0; i < Math.Min(kotelezoenValaszthatoTargyak.Count, AmiTorzslapConstants.MaxSorok.NemZenemuveszetiAgKotelezoenValaszthatoTargyak); i++)
{
var kotValTargy = kotelezoenValaszthatoTargyak[i];
table.Rows[targyakSorSzama + i].Cells[1].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, kotValTargy.Nev));
table.Rows[targyakSorSzama + i].Cells[2].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, kotValTargy.Osztalyzat));
if (!string.IsNullOrWhiteSpace(kotValTargy.Jeloles))
{
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, kotValTargy.IsSzoveges ? kotValTargy.Jeloles : $" ({kotValTargy.ErtekelesSzoveg})");
jelolesRun.Font.Superscript = kotValTargy.IsSzoveges;
table.Rows[targyakSorSzama + i].Cells[2].FirstParagraph?.Runs.Add(jelolesRun);
}
if (kotValTargy.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, kotValTargy);
}
}
var kotelezoenValaszthatoTargyakTobbi = kotelezoenValaszthatoTargyak.Skip(AmiTorzslapConstants.MaxSorok.NemZenemuveszetiAgKotelezoenValaszthatoTargyak).ToList();
if (kotelezoenValaszthatoTargyakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, kotelezoenValaszthatoTargyakTobbi, AmiTorzslapResource.TobbTantargyVanBeallitvaKotelezoenValaszthatonak);
}
targyakSorSzama = 16;
var valaszthatoTargyak = co.ZenemuveszetiAgTantargyCos.Where(x => !x.IsFotargy && x.KotelezosegId == (int)AMITantargyKotelezosegEnum.SzabadonValaszthato && x.Id != AmiTorzslapConstants.SzorgalomEvvegiJegyTantargyId).OrderBy(x => x.Sorszam).ThenBy(x => x.Nev).ToList();
for (int i = 0; i < Math.Min(valaszthatoTargyak.Count, AmiTorzslapConstants.MaxSorok.NemZenemuveszetiAgValaszthatoTargyak); i++)
{
var valTargy = valaszthatoTargyak[i];
table.Rows[targyakSorSzama + i].Cells[1].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, valTargy.Nev));
table.Rows[targyakSorSzama + i].Cells[2].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, valTargy.Osztalyzat));
if (!string.IsNullOrWhiteSpace(valTargy.Jeloles))
{
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, valTargy.IsSzoveges ? valTargy.Jeloles : $" ({valTargy.ErtekelesSzoveg})");
jelolesRun.Font.Superscript = valTargy.IsSzoveges;
table.Rows[targyakSorSzama + i].Cells[2].FirstParagraph?.Runs.Add(jelolesRun);
}
if (valTargy.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, valTargy);
}
}
var valaszthatoTargyakTobbi = valaszthatoTargyak.Skip(AmiTorzslapConstants.MaxSorok.NemZenemuveszetiAgValaszthatoTargyak).ToList();
if (valaszthatoTargyakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, kotelezoenValaszthatoTargyakTobbi, AmiTorzslapResource.TobbTantargyVanBeallitvaValaszthatonak);
}
targyakSorSzama = 22;
// Szorgalom kitöltése
var fotargySzorgalmak = co.ZenemuveszetiAgTantargyCos.Where(x => x.IsSzorgalom && x.KapcsolodoFotargyId.HasValue && fotargyak.Select(y => y.Id).Contains(x.KapcsolodoFotargyId.Value)).OrderBy(x => x.Sorszam).ThenBy(x => x.Nev).ToList();
if (fotargySzorgalmak.Count > 0)
{
var fotargySzorgalom = fotargySzorgalmak[0];
table.Rows[targyakSorSzama].Cells[1].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, fotargySzorgalom.Osztalyzat));
if (!string.IsNullOrWhiteSpace(fotargySzorgalom.Jeloles))
{
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, fotargySzorgalom.IsSzoveges ? fotargySzorgalom.Jeloles : $" ({fotargySzorgalom.ErtekelesSzoveg})");
jelolesRun.Font.Superscript = fotargySzorgalom.IsSzoveges;
table.Rows[targyakSorSzama].Cells[1].FirstParagraph?.Runs.Add(jelolesRun);
}
if (fotargySzorgalom.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, fotargySzorgalom);
}
var fotargySzorgalmakTobbi = fotargySzorgalmak.Skip(AmiTorzslapConstants.MaxSorok.NemZenemuveszetiAgSzorgalom).ToList();
if (fotargySzorgalmakTobbi.Count > 0)
{
AddHibaKommentTobbesTargy(table, targyakSorSzama, 0, fotargySzorgalmakTobbi, AmiTorzslapResource.TobbTantargyVanBeallitvaFotargySzorgalomnak);
}
}
else
{
var fotargySzorgalomEvvegibol = co.ZenemuveszetiAgTantargyCos.SingleOrDefault(x => x.Id == AmiTorzslapConstants.SzorgalomEvvegiJegyTantargyId);
if (fotargySzorgalomEvvegibol != default)
{
table.Rows[targyakSorSzama].Cells[1].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, fotargySzorgalomEvvegibol.Osztalyzat));
if (!string.IsNullOrWhiteSpace(fotargySzorgalomEvvegibol.Jeloles))
{
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, fotargySzorgalomEvvegibol.IsSzoveges ? fotargySzorgalomEvvegibol.Jeloles : $" ({fotargySzorgalomEvvegibol.ErtekelesSzoveg})");
jelolesRun.Font.Superscript = fotargySzorgalomEvvegibol.IsSzoveges;
table.Rows[targyakSorSzama].Cells[1].FirstParagraph?.Runs.Add(jelolesRun);
}
if (fotargySzorgalomEvvegibol.IsSzoveges)
{
AddSzovegesErtekeles(table.Rows[szovegesErtekelesSorSzama].Cells[0].LastParagraph.Runs, baseRun, fotargySzorgalomEvvegibol);
}
}
}
targyakSorSzama++;
// Átlag kitöltése
table.Rows[targyakSorSzama++].Cells[0].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.TanulmanyiAtlag?.ToString("0.00")));
// Mulasztások kitöltése
table.Rows[targyakSorSzama].Cells[1].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, co.ZenemuveszetiAgTantargyCos.Sum(x => x.MulasztasIgazolt).ToString()));
table.Rows[targyakSorSzama++].Cells[2].FirstParagraph?.Runs.Add(GetRunWithText(baseRun, co.ZenemuveszetiAgTantargyCos.Sum(x => x.MulasztasIgazolatlan).ToString()));
}
private void AddSzovegesErtekeles(AsposeWords.RunCollection runs, AsposeWords.Run baseRun, ZenemuveszetiAgTantargyCo targy, string targyNev = null)
{
runs.Add(GetRunWithText(baseRun, targy.Osztalyzat));
AsposeWords.Run jelolesRun = GetRunWithText(baseRun, targy.Jeloles);
jelolesRun.Font.Superscript = true;
runs.Add(jelolesRun);
runs.Add(GetRunWithText(baseRun, $": {targyNev ?? targy.Nev}: {targy.ErtekelesSzoveg}{AsposeWords.ControlChar.LineBreak}"));
}
private void AddHibaKommentTobbesTargy(AsposeWords.Tables.Table table, int tableRowNumber, int tableColumnNumber, List<ZenemuveszetiAgTantargyCo> list, string commentFirstLine)
{
if (!options.DocumentParameters.MegjegyzesekMegjelenitese)
{
return;
}
StringBuilder sbMegjegyzes = new StringBuilder();
foreach (var targy in list)
{
if (sbMegjegyzes.Length == 0 && !string.IsNullOrWhiteSpace(commentFirstLine))
{
sbMegjegyzes.AppendLine(commentFirstLine);
}
sbMegjegyzes.AppendLine(targy.Nev);
}
if (list.Count > 0)
{
AddHibaKomment(table, tableRowNumber, tableColumnNumber, sbMegjegyzes.ToString());
}
}
private void AddHibaKommentTobbesAlapZaroVizsgaErtekeles(AsposeWords.Tables.Table table, int tableRowNumber, int tableColumnNumber, List<AlapZaroVizsgaAdatokCo> list, string commentFirstLine)
{
if (!options.DocumentParameters.MegjegyzesekMegjelenitese)
{
return;
}
StringBuilder sbMegjegyzes = new StringBuilder();
foreach (var targy in list)
{
if (sbMegjegyzes.Length == 0 && !string.IsNullOrWhiteSpace(commentFirstLine))
{
sbMegjegyzes.AppendLine(commentFirstLine);
}
sbMegjegyzes.AppendLine(targy.TantargyNeve);
}
if (list.Count > 0)
{
AddHibaKomment(table, tableRowNumber, tableColumnNumber, sbMegjegyzes.ToString());
}
}
private void AddHibaKomment(AsposeWords.Tables.Table table, int tableRowNumber, int tableColumnNumber, string comment)
{
if (!options.DocumentParameters.MegjegyzesekMegjelenitese)
{
return;
}
var commentObj = new AsposeWords.Comment(table.Document, "Kréta", "K", DateTime.Now);
commentObj.Paragraphs.Add(new AsposeWords.Paragraph(table.Document));
commentObj.FirstParagraph.Runs.Add(new AsposeWords.Run(table.Document, comment));
table.Rows[tableRowNumber].Cells[tableColumnNumber].FirstParagraph.AppendChild(commentObj);
}
private void SetSNIAdatok(AsposeWords.Tables.Table table, AmiTanuloTorzslapCo co)
{
var sorSzama = 25;
var oszlopSzama = 0;
var baseRun = new AsposeWords.Run(table.Document);
baseRun.Font.Name = AmiTorzslapResource.UsedFontName;
baseRun.Font.Size = options.DocumentParameters.BetuMeretSNI;
table.Rows[sorSzama].Cells[oszlopSzama].Paragraphs[1].Runs.Add(GetRunWithText(baseRun, co.TanuloSniAdatok.KiallitoSzakertoiBizottsagNeve));
table.Rows[sorSzama++].Cells[oszlopSzama].Paragraphs[2].Runs.Add(GetRunWithText(baseRun, co.TanuloSniAdatok.KiallitoSzakertoiBizottsagCime));
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.TanuloSniAdatok.SzakvelemenySzama));
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.TanuloSniAdatok.KiallitasDatuma?.ToString(Constants.ToStringPattern.HungarianDate)));
table.Rows[sorSzama].Cells[oszlopSzama++].LastParagraph?.Runs.Add(GetRunWithText(baseRun, co.TanuloSniAdatok.FelulvizsgalatTaneve));
}
private void SetFelmentesek(AsposeWords.Tables.Table table, AmiTanuloTorzslapCo co, bool kellSni)
{
var felmentesekSorSzama = 25;
if (kellSni)
{
felmentesekSorSzama += 2;
}
var baseRun = new AsposeWords.Run(table.Document);
baseRun.Font.Name = AmiTorzslapResource.UsedFontName;
baseRun.Font.Size = options.DocumentParameters.BetuMeretAdatok;
foreach (var felmentes in co.FelmentesCos)
{
table.Rows[felmentesekSorSzama].Cells[0].LastParagraph.Runs.Add(GetRunWithText(baseRun, $"{felmentes.TantargyNeve}: {felmentes.FelmentesOka}{AsposeWords.ControlChar.LineBreak}"));
}
}
private void SetFeljegyzesek(AsposeWords.Tables.Table table, AmiTanuloTorzslapCo co, bool kellSni)
{
var feljegyzesekSorSzama = 25;
if (kellSni)
{
feljegyzesekSorSzama += 2;
}
var baseRun = new AsposeWords.Run(table.Document);
baseRun.Font.Name = AmiTorzslapResource.UsedFontName;
baseRun.Font.Size = options.DocumentParameters.BetuMeretAdatok;
foreach (var feljegyzes in co.FeljegyzesCos)
{
table.Rows[feljegyzesekSorSzama].Cells[0].LastParagraph.Runs.Add(GetRunWithText(baseRun, $"{feljegyzes.Tartalom} ({feljegyzes.EsemenyDatuma.Value.ToString(Constants.ToStringPattern.HungarianDate)}){AsposeWords.ControlChar.LineBreak}"));
}
}
private void SetZaradekok(AsposeWords.Tables.Table table, AmiTanuloTorzslapCo co, bool kellSni)
{
var zaradekSorSzama = 26;
if (kellSni)
{
zaradekSorSzama += 2;
}
var baseRun = new AsposeWords.Run(table.Document);
baseRun.Font.Name = AmiTorzslapResource.UsedFontName;
baseRun.Font.Size = options.DocumentParameters.BetuMeretAdatok;
foreach (var zaradek in co.ZaradekCos)
{
table.Rows[zaradekSorSzama].Cells[0].LastParagraph.Runs.Add(GetRunWithText(baseRun, $"{zaradek.ZaradekSzovegList.Single(x => x.NyelvId == (int)AnyanyelvEnum.magyar).Szoveg}{AsposeWords.ControlChar.LineBreak}{zaradek.KeltezesHelye}, {zaradek.KeltezesDatuma.Value.ToString(Constants.ToStringPattern.HungarianDate)}{AsposeWords.ControlChar.LineBreak}"));
}
}
private AsposeWords.Run GetRunWithText(AsposeWords.Run run, string text)
{
var result = run.Clone(true) as AsposeWords.Run;
result.Text = text ?? "";
return result;
}
}
}

View file

@ -0,0 +1,55 @@
using System.IO;
using Aspose.Words;
using Aspose.Words.Tables;
using Kreta.BusinessLogic.Classes.AsposeHelpers;
using Kreta.BusinessLogic.HelperClasses.ApaczaiProgramCOs;
using Kreta.BusinessLogic.HelperClasses.MulasztasiErtesitokCOs;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Enums.ManualEnums;
namespace Kreta.BusinessLogic.Helpers
{
public partial class AsposeHelper
{
public MemoryStream GetMentorTamogatoiNyilatkozat(Stream sablonStream, int formatumId)
{
var resultDoc = new Document();
var doc = new Document(sablonStream, new LoadOptions());
doc.Styles.DefaultFont.Name = "Times New Roman";
var tanulo = options.DocumentParameters.Entity as TanuloApaczaiMentorAdatokCO;
ApaczaiMentoriTamogatoNyilatkozatHelyettesitesek(tanulo, doc, options);
resultDoc.AppendDocument(doc, ImportFormatMode.KeepSourceFormatting);
resultDoc.Sections.RemoveAt(0);
SetCustomHeaderOnDocument(resultDoc, options.EgyediFejlec);
var ms = new MemoryStream();
resultDoc.Save(ms, formatumId == (int)NyomtatvanyFormatumEnum.Word ? SaveFormat.Docx : SaveFormat.Pdf);
ms.Position = 0;
return ms;
}
private static void ApaczaiMentoriTamogatoNyilatkozatHelyettesitesek(TanuloApaczaiMentorAdatokCO tanulo, Document doc, AsposeHelperOptions options)
{
Story body = doc.FirstSection.Body;
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.IntezmenyNeveRegex, options.DocumentParameters?.TagintezmenyNeve ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.IntezmenyCimeRegex, options.DocumentParameters?.TagintezmenyCime ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.IntezmenyOMAzonositoRegex, options.DocumentParameters?.TagintezmenyAzonosito ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.IntezmenyVezetoNeveRegex, options.DocumentParameters?.AlairoSzemely["Nev"] ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.TanuloNeveRegex, tanulo.NyomtatsiNev ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.TanuloOMAzonositoRegex, tanulo.OktatasiAzonosito ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.TanuloOsztalyRegex, ($"{tanulo.OsztalyNev}, {tanulo.EvfolyamNev}") ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.MentorNeveRegex, tanulo.MentorNyomtatsiNev ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.MentorOMAzonositoRegex, tanulo.MentorOktatasiAzonosito ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.MentorEmailcimRegex, tanulo.MentorEmail ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.MentorTelefonRegex, tanulo.MentorTelefon ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.KeltezesVarosRegex, options.DocumentParameters?.TagintezmenyVaros ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.KeltezesDatumRegex, options.DocumentParameters?.Kelt.ToString(options.DocumentParameters?.KeltFormatum == KeltFormatumTipusEnum.Szammal ? Constants.ToStringPattern.HungarianDateWithSpaces : Constants.ToStringPattern.HungarianLongDate));
body.Range.Replace(ApaczaiMentoriTamogatoNyilatkozatReplacers.AlairoSzemelyRegex, options.DocumentParameters?.AlairoSzemely["Nev"] ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
}
}
}

View file

@ -0,0 +1,156 @@
using System.IO;
using Aspose.Words;
using Aspose.Words.Tables;
using Kreta.BusinessLogic.Classes.AsposeHelpers;
using Kreta.BusinessLogic.HelperClasses.MulasztasiErtesitokCOs;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Enums.ManualEnums;
namespace Kreta.BusinessLogic.Helpers
{
public partial class AsposeHelper
{
public MemoryStream GetErtesitesTanuloAlapon(Stream sablonStream, int formatumId)
{
var resultDoc = new Document();
var mulasztasiErtesitoCo = new MulasztasiErtesitoCo(_ds, options.DocumentParameters);
foreach (var item in mulasztasiErtesitoCo.TanuloMulasztasErtesitoDictionary)
{
var doc = new Document(sablonStream, new LoadOptions());
doc.Styles.DefaultFont.Name = "Times New Roman";
ErtesitesTanuloAlaponEgyszeruHelyettesitesek(item.Value, doc, options);
if (options.MulasztasErtesitoNktGondviseloTableIndex.HasValue)
{
var table = (Table)doc.GetChild(NodeType.Table, options.MulasztasErtesitoNktGondviseloTableIndex.Value, true);
ErtesitesGondviseloHozzaadas(table, item.Value);
}
if (options.MulasztasErtesitoNktMulasztasTableIndex.HasValue)
{
var mulasztasTable = (Table)doc.GetChild(NodeType.Table, options.MulasztasErtesitoNktMulasztasTableIndex.Value, true);
ErtesitesMulasztasSorokHozzadas(item.Value, doc, mulasztasTable);
}
resultDoc.AppendDocument(doc, ImportFormatMode.KeepSourceFormatting);
}
resultDoc.Sections.RemoveAt(0);
SetCustomHeaderOnDocument(resultDoc, options.EgyediFejlec);
var ms = new MemoryStream();
resultDoc.Save(ms, formatumId == (int)NyomtatvanyFormatumEnum.Word ? SaveFormat.Docx : SaveFormat.Pdf);
ms.Position = 0;
return ms;
}
public MemoryStream GetErtesitesGondviseloAlapon(Stream sablonStream, int formatumId)
{
var resultDoc = new Document();
var mulasztasiErtesitoCo = new MulasztasiErtesitoCo(_ds, options.DocumentParameters);
foreach (var item in mulasztasiErtesitoCo.TanuloMulasztasErtesitoDictionary)
{
foreach (var gondviseloCo in item.Value.GondviseloAdatokList)
{
var doc = new Document(sablonStream, new LoadOptions());
doc.Styles.DefaultFont.Name = "Times New Roman";
ErtesitesGondviseloAlaponEgyszeruHelyettesitesek(gondviseloCo, item.Value, doc, options);
resultDoc.AppendDocument(doc, ImportFormatMode.KeepSourceFormatting);
}
}
resultDoc.Sections.RemoveAt(0);
SetCustomHeaderOnDocument(resultDoc, options.EgyediFejlec);
var ms = new MemoryStream();
resultDoc.Save(ms, formatumId == (int)NyomtatvanyFormatumEnum.Word ? SaveFormat.Docx : SaveFormat.Pdf);
ms.Position = 0;
return ms;
}
private static void ErtesitesTanuloAlaponEgyszeruHelyettesitesek(TanuloMulasztasErtesitoCo co, Document doc, AsposeHelperOptions options)
{
Story body = doc.FirstSection.Body;
body.Range.Replace(MulasztasiErtesitokReplacers.TanuloNeveRegex, co.MulasztasFej.TanuloNeve, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.IntezmenyNeveRegex, co.MulasztasFej.IntezmenyNeve, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.IntezmenyCimeRegex, co.MulasztasFej.IntezmenyCime, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.TagintezmenyNeveRegex, options.DocumentParameters.IsTagintezmenyAdatokMegjelenjen ? options.DocumentParameters.TagintezmenyNeve : string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.TagintezmenyCimeRegex, options.DocumentParameters.IsTagintezmenyAdatokMegjelenjen ? options.DocumentParameters.TagintezmenyCime : string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.OsztalyNeveRegex, co.MulasztasFej.OsztalyCsoportNeve, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.AnyjaNeveRegex, co.MulasztasFej.AnyjaNeve, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.SzuletesiHelyRegex, co.MulasztasFej.SzuletesiHely, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.SzuletesiIdoRegex, co.MulasztasFej.SzuletesiIdo.ToString(Constants.ToStringPattern.HungarianDate), MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.LakohelyCimeRegex, co.MulasztasFej.TanuloAllandoCim, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.TartozkodasiCimeRegex, co.MulasztasFej.TanuloTartozkodasiCim ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.OsztalyfonokNeveRegex, co.MulasztasFej.OsztalyfonokNeve, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.IgazoltMulasztasokSzamaRegex, co.MulasztasFej.Igazolt.ToString(), MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.IgazolatlanMulasztasokSzamaRegex, co.MulasztasFej.Igazolatlan.ToString(), MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.IgazoltHozottMulasztasokSzamaRegex, co.MulasztasFej.HozottIgazolt.ToString(), MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.IgazolatlanHozottMulasztasokSzamaRegex, co.MulasztasFej.HozottIgazolatlan.ToString(), MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.KeltezesVarosRegex, !options.DocumentParameters.IsTagintezmenyAdatokMegjelenjen ? co.MulasztasFej.IntezmenyVarosNeve : options.DocumentParameters.TagintezmenyVaros, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.KeltezesDatumRegex, options.DocumentParameters.Kelt.ToString(options.DocumentParameters.KeltFormatum == KeltFormatumTipusEnum.Szammal ? Constants.ToStringPattern.HungarianDateWithSpaces : Constants.ToStringPattern.HungarianLongDate));
body.Range.Replace(MulasztasiErtesitokReplacers.IntezmenyVezetoNeveRegex, options.DocumentParameters.AlairoSzemely["Nev"], MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.IntezmenyVezetoRegex, options.DocumentParameters.AlairoSzemely["Beosztas"], MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.TanevNeveRegex, co.MulasztasFej.TanevNeve, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.OsszesMulasztasSzamaRegex, co.MulasztasFej.OsszesMulasztas.ToString(), MulasztasiErtesitokReplacers.FindReplaceoptions);
}
private static void ErtesitesGondviseloAlaponEgyszeruHelyettesitesek(GondviseloAdatokCo gondviseloCo, TanuloMulasztasErtesitoCo co, Document doc, AsposeHelperOptions options)
{
ErtesitesTanuloAlaponEgyszeruHelyettesitesek(co, doc, options);
Story body = doc.FirstSection.Body;
body.Range.Replace(MulasztasiErtesitokReplacers.GondviseloNeveRegex, gondviseloCo.GondviseloNeve, MulasztasiErtesitokReplacers.FindReplaceoptions);
body.Range.Replace(MulasztasiErtesitokReplacers.GondviseloLakohelyeRegex, gondviseloCo.GondviseloAllandoCim ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
}
private static void ErtesitesMulasztasSorokHozzadas(TanuloMulasztasErtesitoCo item, Document doc, Table mulasztasTable)
{
var mulasztasSor = mulasztasTable.LastRow.Clone(true);
if (item.MulasztasAdatList.Count > 0)
{
mulasztasTable.LastRow.Remove();
}
for (var i = 0; i < item.MulasztasAdatList.Count; i++)
{
var mulasztas = item.MulasztasAdatList[i];
var cloned = (Row)mulasztasSor.Clone(true);
cloned.Cells[0].FirstParagraph.Runs.Add(new Run(doc, (i + 1).ToString()));
cloned.Cells[1].FirstParagraph.Runs.Add(new Run(doc, mulasztas.Datum.ToString(Constants.ToStringPattern.HungarianDate)));
cloned.Cells[2].FirstParagraph.Runs.Add(new Run(doc, mulasztas.Oraszam));
cloned.Cells[3].FirstParagraph.Runs.Add(new Run(doc, mulasztas.Tipusa));
cloned.Cells[4].FirstParagraph.Runs.Add(new Run(doc, mulasztas.KesesPercben.ToString()));
cloned.Cells[5].FirstParagraph.Runs.Add(new Run(doc, mulasztas.OsztalyCsoportNeve));
cloned.Cells[6].FirstParagraph.Runs.Add(new Run(doc, mulasztas.TantargyNeve));
mulasztasTable.AppendChild(cloned);
}
}
private static void ErtesitesGondviseloHozzaadas(Table table, TanuloMulasztasErtesitoCo co)
{
var gondviseloSor = table.Rows[1].Clone(true);
table.LastRow.Remove();
foreach (var gondviselo in co.GondviseloAdatokList)
{
var cloned = gondviseloSor.Clone(true);
cloned.Range.Replace(MulasztasiErtesitokReplacers.GondviseloNeveRegex, gondviselo.GondviseloNeve, MulasztasiErtesitokReplacers.FindReplaceoptions);
cloned.Range.Replace(MulasztasiErtesitokReplacers.GondviseloLakohelyeRegex, gondviselo.GondviseloAllandoCim ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
cloned.Range.Replace(MulasztasiErtesitokReplacers.GondviseloTelefonszamaRegex, gondviselo.GondviseloTelefon ?? string.Empty, MulasztasiErtesitokReplacers.FindReplaceoptions);
table.AppendChild(cloned);
}
}
}
}

View file

@ -0,0 +1,778 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Text;
using System.Xml.Linq;
using Aspose.Pdf.Operators;
using Aspose.Pdf.Optimization;
using Kreta.BusinessLogic.Classes.AsposeHelpers;
using Kreta.BusinessLogic.HelperClasses.Dokumentum.TorzslapEsBizonyitvany;
using Kreta.BusinessLogic.HelperClasses.NemzetisegiDokumentumokCOs;
using Kreta.BusinessLogic.Helpers.DokumentumHelpers;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using AsposePdf = Aspose.Pdf;
using AsposeWords = Aspose.Words;
namespace Kreta.BusinessLogic.Helpers
{
public partial class AsposeHelper
{
public (string szorgalom, string magatartas) GetSzorgalomMagatartasNev()
{
var rm = new ResourceManager(typeof(SzorgalomEsMagatartas));
var resourceSet = rm.GetResourceSet(options.Culture, true, true);
var szorgalom = resourceSet.GetString("Szorgalom");
var magatartas = resourceSet.GetString("Magatartas");
return (szorgalom, magatartas);
}
public MemoryStream GetTorzslap(Stream sablonStream, int formatumId)
{
var rm = new ResourceManager(typeof(NemzetisegiTorzslap24));
var resourceSet = rm.GetResourceSet(options.Culture, true, true);
string nyomtatvanyTemplate;
object resultDoc;
object htmlOptions;
if (formatumId == (int)NyomtatvanyFormatumEnum.PDF)
{
InitializeDocument(sablonStream, out nyomtatvanyTemplate, out AsposePdf.Document pdfDoc, out AsposePdf.HtmlLoadOptions pdfHtmlOptions);
resultDoc = pdfDoc;
htmlOptions = pdfHtmlOptions;
}
else
{
InitializeDocument(sablonStream, out nyomtatvanyTemplate, out AsposeWords.Document wordDoc, out AsposeWords.HtmlLoadOptions wordHtmlOptions);
resultDoc = wordDoc;
htmlOptions = wordHtmlOptions;
}
XDocument xDoc = XDocument.Parse(nyomtatvanyTemplate);
if (!options.DocumentParameters.SNIMegjelenites)
{
RemoveTrDokumentumElem(xDoc, "sniadatok");
}
if (!options.DocumentParameters.FelmentesekMegjelenitese)
{
RemoveTrDokumentumElem(xDoc, "felmentesadatok");
}
if (!options.DocumentParameters.FeljegyzesekMegjelenitese)
{
RemoveTrDokumentumElem(xDoc, "feljegyzesadatok");
}
if (!options.DocumentParameters.KozossegiSzolgalatMegjelenitese)
{
RemoveTrDokumentumElem(xDoc, "kozossegiszolgalatadatok");
}
if (!options.DocumentParameters.OKJMegjelenitese)
{
RemoveDivDokumentumElem(xDoc, "okjadat");
}
if (!options.DocumentParameters.TorvenyesKepviseloMegjelenites)
{
RemoveDivDokumentumElem(xDoc, "torvenyeskepviseloadat");
}
if (!options.DocumentParameters.AdatokMegjelenitese)
{
RemoveDivDokumentumElem(xDoc, "adatok");
}
if (!options.DocumentParameters.FejlecMegjelenitese)
{
var hideFejlecCss = @"#fejlec {
color: white;
}
#fejlec td
{
border: 0;
}
";
var styleElemHtml = xDoc.Descendants("style").FirstOrDefault();
if (styleElemHtml != null)
{
styleElemHtml.Value += hideFejlecCss;
}
}
var idegenDiv = xDoc.Element("html").Element("body").Elements("div").FirstOrDefault(e => e.Attribute("data-lang").Value == "idegen");
var helyettesitettTextNyomtatvany = new StringBuilder(idegenDiv.ToString());
var textCo = new NemzetisegiTorzslapTextCo(resourceSet);
ReplaceSubtitutions(helyettesitettTextNyomtatvany, textCo, isLower: true);
idegenDiv.ReplaceWith(XElement.Parse(helyettesitettTextNyomtatvany.ToString()));
var huDiv = xDoc.Element("html").Element("body").Elements("div").FirstOrDefault(e => e.Attribute("data-lang").Value == "hu-HU");
helyettesitettTextNyomtatvany = new StringBuilder(huDiv.ToString());
textCo = new NemzetisegiTorzslapTextCo(rm.GetResourceSet(CultureInfo.GetCultureInfo("hu-HU"), true, true));
ReplaceSubtitutions(helyettesitettTextNyomtatvany, textCo, isLower: true);
huDiv.ReplaceWith(XElement.Parse(helyettesitettTextNyomtatvany.ToString()));
var helyettesitettNyomtatvany = xDoc.ToString();
if (options.DocumentParameters.BetuMeret != BetuMeretEnum.Normal)
{
helyettesitettNyomtatvany = PotlapBetumeretAllitas(helyettesitettNyomtatvany);
}
var rootCo = new TorzslapEsBizonyitvanyCo(_ds);
var (szorgalom, magatartas) = GetSzorgalomMagatartasNev();
var dokumentumNyelvesitesHelper = new DokumentumNyelvesitesHelper();
foreach (var tanuloDetails in rootCo.TanuloDetailsList)
{
dokumentumNyelvesitesHelper.SetErtekelesek(tanuloDetails.TanuloErtekelesDetailsList, szorgalom, magatartas);
var nyomtatvany = new StringBuilder(helyettesitettNyomtatvany);
ReplaceSubtitutions(nyomtatvany, tanuloDetails, isLower: true);
GenerateDocument(resultDoc, htmlOptions, nyomtatvany.ToString());
}
return FinalizeDocument(resultDoc);
}
private string PotlapBetumeretAllitas(string helyettesitettNyomtatvany)
{
var matches = System.Text.RegularExpressions.Regex.Matches(helyettesitettNyomtatvany, @"(?<teljes>font-size: ?(?<meret>\d{1,2})px;)", System.Text.RegularExpressions.RegexOptions.Singleline);
var sb = new StringBuilder(helyettesitettNyomtatvany.Length);
int pos = 0; // position in original string
foreach (System.Text.RegularExpressions.Match match in matches)
{
sb.Append(helyettesitettNyomtatvany, pos, match.Index - pos); // Append the portion of the original we skipped
pos = match.Index;
sb.Append(match.Groups["teljes"].Value.Replace(match.Groups["meret"].Value, (int.Parse(match.Groups["meret"].Value) - (options.DocumentParameters.BetuMeret == BetuMeretEnum.Small ? 1 : 2)).ToString()));
pos += match.Value.Length;
}
sb.Append(helyettesitettNyomtatvany, pos, helyettesitettNyomtatvany.Length - 1 - pos);
helyettesitettNyomtatvany = sb.ToString();
return helyettesitettNyomtatvany;
}
private static void RemoveTrDokumentumElem(XDocument xDoc, string elemId)
{
RemoveCommonDokumentumElem(xDoc, "tr", elemId);
}
private static void RemoveDivDokumentumElem(XDocument xDoc, string elemId)
{
RemoveCommonDokumentumElem(xDoc, "div", elemId);
}
private static void RemoveSpanDokumentumElem(XDocument xDoc, string elemId)
{
RemoveCommonDokumentumElem(xDoc, "span", elemId);
}
private static void RemoveCommonDokumentumElem(XDocument xDoc, string elem, string elemId)
{
foreach (var a in xDoc.Descendants(elem).Where(x => x.Attribute("id")?.Value == elemId).ToList())
{
a.Remove();
}
}
public MemoryStream GetBizonyitvany(Stream sablonStream, int formatumId)
{
string nyomtatvanyTemplate;
object resultDoc;
object htmlOptions;
if (formatumId == (int)NyomtatvanyFormatumEnum.PDF)
{
InitializeDocument(sablonStream, out nyomtatvanyTemplate, out AsposePdf.Document pdfDoc, out AsposePdf.HtmlLoadOptions pdfHtmlOptions);
resultDoc = pdfDoc;
htmlOptions = pdfHtmlOptions;
}
else
{
InitializeDocument(sablonStream, out nyomtatvanyTemplate, out AsposeWords.Document wordDoc, out AsposeWords.HtmlLoadOptions wordHtmlOptions);
resultDoc = wordDoc;
htmlOptions = wordHtmlOptions;
}
XDocument xDoc = XDocument.Parse(nyomtatvanyTemplate);
foreach (var notNeeded in xDoc.Element("html").Element("body").Elements("div").Where(e => e.Attribute("id").Value != options.BizonyitvanypotlapEvfolyamDivId.ToString()).ToList())
{
notNeeded.Remove();
}
var evfolyamDivElem = xDoc.Element("html").Element("body").Element("div");
var szuksegesNyelvek = new List<string>() { "hu-HU", options.Culture.Name };
foreach (var notNeeded in evfolyamDivElem.Elements("div").Where(e => !szuksegesNyelvek.Contains(e.Attribute("data-lang")?.Value)).ToList())
{
notNeeded.Remove();
}
if (options.DocumentParameters.ErtekelesMegjelenitesFormatum == (int)NyomtatvanyErtekelesMegjelenitesEnum.FolyamatosSzoveggel)
{
RemoveTrDokumentumElem(xDoc, "ertekelestablazatos");
RemoveTrDokumentumElem(xDoc, "tantargyfejlec");
}
else
{
RemoveTrDokumentumElem(xDoc, "ertekelesfolyamatos");
}
if (!options.DocumentParameters.IsEvesOraszamMegjelenites)
{
RemoveSpanDokumentumElem(xDoc, "evesoraszam");
}
if (!options.DocumentParameters.IsAtlagMegjelenites)
{
RemoveTrDokumentumElem(xDoc, "atlag");
}
else
{
RemoveTrDokumentumElem(xDoc, "nincsatlag");
}
if (options.DocumentParameters.IsMulasztasokUjLapra)
{
switch (options.BizonyitvanypotlapEvfolyamDivId)
{
case BizonyitvanypotlapEvfolyamDivIdEnum.masodiknegyedikosztaly:
foreach (var mulasztasok in xDoc.Descendants("tr").Where(x => x.Attribute("id")?.Value == "mulasztasoksor"))
{
if (options.DocumentParameters.IsAtlagMegjelenites)
{
var atlagsorclassattrib = (mulasztasok.PreviousNode as XElement).Attributes().FirstOrDefault(x => x.Name == "class");
if (atlagsorclassattrib != null)
{
atlagsorclassattrib.Value += " utolsosor";
}
}
else
{
mulasztasok.PreviousNode.AddAfterSelf(new XElement("tr", new XAttribute("class", "utolsosor"), new XElement("td"), new XElement("td"), new XElement("td")));
}
XElement divPagebreak = new XElement("div", new XAttribute("class", "pagebreak"));
divPagebreak.Add("\r\n");
XElement divKeret = new XElement("div", new XAttribute("class", "keret"));
XElement table = new XElement("table", new XAttribute("class", "osztalyzatosszesito"));
var atrakandok = mulasztasok.NodesAfterSelf();
mulasztasok.Parent.Parent.AddAfterSelf(divKeret);
mulasztasok.Parent.Parent.AddAfterSelf(divPagebreak);
var hosszubelyegzomegj = mulasztasok.Parent.Parent.Parent.Elements("div").FirstOrDefault(x => x.Attribute("id")?.Value == "hosszubelyegzomegj");
hosszubelyegzomegj.Remove();
divPagebreak.AddBeforeSelf(hosszubelyegzomegj);
divKeret.Add(table);
foreach (var atrakando in atrakandok.ToList())
{
atrakando.Remove();
table.Add(atrakando);
}
mulasztasok.Remove();
table.AddFirst(mulasztasok);
}
break;
case BizonyitvanypotlapEvfolyamDivIdEnum.felsoosztalyok:
foreach (var hosszubelyegzomegj in xDoc.Descendants("div").Where(x => x.Attribute("id")?.Value == "hosszubelyegzomegj"))
{
XElement divPagebreak = new XElement("div", new XAttribute("class", "pagebreak"));
divPagebreak.Add("\r\n");
hosszubelyegzomegj.AddAfterSelf(divPagebreak);
}
break;
default:
break;
}
}
var helyettesitettNyomtatvany = xDoc.ToString();
if (options.DocumentParameters.BetuMeret != BetuMeretEnum.Normal)
{
helyettesitettNyomtatvany = PotlapBetumeretAllitas(helyettesitettNyomtatvany);
}
var rootCo = new TorzslapEsBizonyitvanyCo(_ds);
rootCo.FejlecDetails.Keltezes = options.DocumentParameters.Kelt;
AlairoKitoltese(rootCo);
var (szorgalom, magatartas) = GetSzorgalomMagatartasNev();
var dokumentumNyelvesitesHelper = new DokumentumNyelvesitesHelper();
foreach (var tanuloDetails in rootCo.TanuloDetailsList)
{
dokumentumNyelvesitesHelper.SetErtekelesek(tanuloDetails.TanuloErtekelesDetailsList, szorgalom, magatartas);
var nyomtatvany = new StringBuilder(helyettesitettNyomtatvany);
ReplaceSubtitutions(nyomtatvany, tanuloDetails);
GenerateDocument(resultDoc, htmlOptions, nyomtatvany.ToString());
}
return FinalizeDocument(resultDoc);
}
public MemoryStream GetGimnaziumiBizonyitvany(Stream sablonStream, int formatumId)
{
string nyomtatvanyTemplate;
object resultDoc;
object htmlOptions;
if (formatumId == (int)NyomtatvanyFormatumEnum.PDF)
{
InitializeDocument(sablonStream, out nyomtatvanyTemplate, out AsposePdf.Document pdfDoc, out AsposePdf.HtmlLoadOptions pdfHtmlOptions);
resultDoc = pdfDoc;
htmlOptions = pdfHtmlOptions;
}
else
{
InitializeDocument(sablonStream, out nyomtatvanyTemplate, out AsposeWords.Document wordDoc, out AsposeWords.HtmlLoadOptions wordHtmlOptions);
resultDoc = wordDoc;
htmlOptions = wordHtmlOptions;
}
XDocument xDoc = XDocument.Parse(nyomtatvanyTemplate);
var szuksegesNyelvek = new List<string>() { "hu-HU", options.Culture.Name };
foreach (var notNeeded in xDoc.Element("html").Element("body").Elements("div").Where(e => !szuksegesNyelvek.Contains(e.Attribute("data-lang")?.Value)).ToList())
{
notNeeded.Remove();
}
if (options.DocumentParameters.ErtekelesMegjelenitesFormatum == (int)NyomtatvanyErtekelesMegjelenitesEnum.FolyamatosSzoveggel)
{
RemoveTrDokumentumElem(xDoc, "ertekelestablazatos");
RemoveTrDokumentumElem(xDoc, "tantargyfejlec");
}
else
{
RemoveTrDokumentumElem(xDoc, "ertekelesfolyamatos");
}
if (!options.DocumentParameters.IsEvesOraszamMegjelenites)
{
RemoveSpanDokumentumElem(xDoc, "evesoraszam");
}
if (!options.DocumentParameters.IsAtlagMegjelenites)
{
RemoveTrDokumentumElem(xDoc, "atlag");
}
var helyettesitettNyomtatvany = xDoc.ToString();
if (options.DocumentParameters.BetuMeret != BetuMeretEnum.Normal)
{
helyettesitettNyomtatvany = PotlapBetumeretAllitas(helyettesitettNyomtatvany);
}
var rootCo = new TorzslapEsBizonyitvanyCo(_ds);
rootCo.FejlecDetails.Keltezes = options.DocumentParameters.Kelt;
AlairoKitoltese(rootCo);
var (szorgalom, magatartas) = GetSzorgalomMagatartasNev();
var dokumentumNyelvesitesHelper = new DokumentumNyelvesitesHelper();
foreach (var tanuloDetails in rootCo.TanuloDetailsList)
{
dokumentumNyelvesitesHelper.SetErtekelesek(tanuloDetails.TanuloErtekelesDetailsList, szorgalom, magatartas);
var nyomtatvany = new StringBuilder(helyettesitettNyomtatvany);
ReplaceSubtitutions(nyomtatvany, tanuloDetails);
GenerateDocument(resultDoc, htmlOptions, nyomtatvany.ToString());
}
return FinalizeDocument(resultDoc);
}
public MemoryStream GetErettsegiBizonyitvany(Stream sablonStream, int formatumId)
{
string nyomtatvanyTemplate;
object resultDoc;
object htmlOptions;
if (formatumId == (int)NyomtatvanyFormatumEnum.PDF)
{
InitializeDocument(sablonStream, out nyomtatvanyTemplate, out AsposePdf.Document pdfDoc, out AsposePdf.HtmlLoadOptions pdfHtmlOptions);
resultDoc = pdfDoc;
htmlOptions = pdfHtmlOptions;
}
else
{
InitializeDocument(sablonStream, out nyomtatvanyTemplate, out AsposeWords.Document wordDoc, out AsposeWords.HtmlLoadOptions wordHtmlOptions);
resultDoc = wordDoc;
htmlOptions = wordHtmlOptions;
}
XDocument xDoc = XDocument.Parse(nyomtatvanyTemplate);
var szuksegesNyelvek = new List<string>() { "hu-HU", options.Culture.Name };
foreach (var notNeeded in xDoc.Element("html").Element("body").Elements("div").Where(e => !szuksegesNyelvek.Contains(e.Attribute("data-lang")?.Value)).ToList())
{
notNeeded.Remove();
}
var helyettesitettNyomtatvany = xDoc.ToString();
if (options.DocumentParameters.BetuMeret != BetuMeretEnum.Normal)
{
helyettesitettNyomtatvany = PotlapBetumeretAllitas(helyettesitettNyomtatvany);
}
var rootCo = new TorzslapEsBizonyitvanyCo(_ds);
rootCo.FejlecDetails.Keltezes = options.DocumentParameters.Kelt;
AlairoKitoltese(rootCo);
var (szorgalom, magatartas) = GetSzorgalomMagatartasNev();
var dokumentumNyelvesitesHelper = new DokumentumNyelvesitesHelper();
foreach (var tanuloDetails in rootCo.TanuloDetailsList)
{
dokumentumNyelvesitesHelper.SetErtekelesek(tanuloDetails.TanuloErtekelesDetailsList, szorgalom, magatartas);
var nyomtatvany = new StringBuilder(helyettesitettNyomtatvany);
ReplaceSubtitutions(nyomtatvany, tanuloDetails);
GenerateDocument(resultDoc, htmlOptions, nyomtatvany.ToString());
}
return FinalizeDocument(resultDoc);
}
private void AlairoKitoltese(TorzslapEsBizonyitvanyCo rootCo)
{
if (options.DocumentParameters.AlairoSzemely != null)
{
rootCo.FejlecDetails.AlairoNev = options.DocumentParameters.AlairoSzemely["Nev"];
rootCo.FejlecDetails.AlairoNevIdegenNyelven = options.DocumentParameters.AlairoSzemely["NevIdegenNyelven"];
rootCo.FejlecDetails.AlairoBeosztas = options.DocumentParameters.AlairoSzemely["Beosztas"];
rootCo.FejlecDetails.AlairoBeosztasIdegenNyelven = options.DocumentParameters.AlairoSzemely["BeosztasIdegennNyelven"];
}
}
private void ReplaceSubtitutions<T>(StringBuilder nyomtatvany, T adat, string prefix = "", bool isLower = false)
{
foreach (var pi in adat.GetType().GetProperties())
{
var phrase = string.Format("{{{0}{1}}}", prefix, (isLower) ? pi.Name.ToLower() : pi.Name);
if (pi.PropertyType == typeof(DateTime))
{
ReplaceDateTime(nyomtatvany, (DateTime)pi.GetValue(adat), pi, phrase);
}
else if (pi.PropertyType == typeof(DateTime?))
{
var datum = (DateTime?)pi.GetValue(adat);
if (datum.HasValue)
{
ReplaceDateTime(nyomtatvany, datum.Value, pi, phrase);
}
}
else if (typeof(IEnumerable<object>).IsAssignableFrom(pi.PropertyType))
{
var listaElemHtmlMatches = System.Text.RegularExpressions.Regex.Matches(nyomtatvany.ToString(), string.Format(@"<tr data-{0}(.*?)</tr>", pi.Name.ToLower()), System.Text.RegularExpressions.RegexOptions.Singleline);
if (listaElemHtmlMatches.Count == 0)
{
continue;
}
foreach (System.Text.RegularExpressions.Match listaElemHtml in listaElemHtmlMatches)
{
var listaElemReplaceHtml = new StringBuilder();
var lista = (IEnumerable<object>)(pi.GetValue(adat));
var minrowcount = System.Text.RegularExpressions.Regex.Match(listaElemHtml.Value, "(?<=data-minrownumber=\")\\d{1,2}(?!=\")", System.Text.RegularExpressions.RegexOptions.Singleline)?.Value;
if (minrowcount != "")
{
var imax = lista.Count();
for (int i = 0; i < (int.Parse(minrowcount) - imax); i++)
{
lista = lista.Append(Activator.CreateInstance(pi.PropertyType.GenericTypeArguments[0]));
}
}
for (int i = 0; i < lista.Count(); i++)
{
var elemCo = lista.ElementAt(i);
var listaElemFilledHTML = new StringBuilder(listaElemHtml.Value);
var rowspanHtml = System.Text.RegularExpressions.Regex.Match(listaElemHtml.Value, string.Format(@"<td rowspan=""{{db}}""(.*?)</td>", pi.Name.ToLower()), System.Text.RegularExpressions.RegexOptions.Singleline).Value;
if (!string.IsNullOrWhiteSpace(rowspanHtml))
{
if (i == 0)
{
listaElemFilledHTML.Replace("{db}", lista.Count().ToString());
}
else
{
listaElemFilledHTML.Replace(rowspanHtml, "");
}
}
ReplaceSubtitutions(listaElemFilledHTML, elemCo, prefix, isLower);
listaElemReplaceHtml.Append(listaElemFilledHTML);
}
listaElemReplaceHtml.Replace(string.Format(" data-{0}=\"{0}adat\"", pi.Name.ToLower()), "");
nyomtatvany.Replace(listaElemHtml.Value, listaElemReplaceHtml.ToString() + Environment.NewLine);
}
}
else if (pi.PropertyType.IsClass && (pi.PropertyType != typeof(string)))
{
if (pi.GetValue(adat) != null)
{
ReplaceSubtitutions(nyomtatvany, pi.GetValue(adat), prefix, isLower);
}
}
else
{
nyomtatvany.Replace(phrase, (pi.GetValue(adat) == null) ? "" : pi.GetValue(adat).ToString().Replace(Environment.NewLine, "<br/>"));
}
}
}
private void ReplaceDateTime(StringBuilder nyomtatvany, DateTime datum, PropertyInfo pi, string phrase)
{
nyomtatvany.Replace(phrase.Insert(phrase.Length - 1, "IdegenNyelven"), datum.ToString(options.Culture.DateTimeFormat.ShortDatePattern));
nyomtatvany.Replace(phrase, datum.ToString(CultureInfo.GetCultureInfo("hu-HU").DateTimeFormat.ShortDatePattern));
nyomtatvany.Replace(phrase.Insert(phrase.Length - 1, "ev"), datum.ToString("yyyy"));
nyomtatvany.Replace(phrase.Insert(phrase.Length - 1, "hoIdegenNyelven"), options.Culture.DateTimeFormat.GetMonthName(datum.Month));
nyomtatvany.Replace(phrase.Insert(phrase.Length - 1, "ho"), CultureInfo.GetCultureInfo("hu-HU").DateTimeFormat.GetMonthName(datum.Month));
nyomtatvany.Replace(phrase.Insert(phrase.Length - 1, "nap"), datum.ToString("dd"));
}
private void GenerateDocument<T, U>(T resultDoc, U htmlOptions, string nyomtatvany)
{
if (resultDoc is AsposePdf.Document)
{
GeneratePDF(resultDoc as AsposePdf.Document, htmlOptions as AsposePdf.HtmlLoadOptions, nyomtatvany);
}
else
{
GenerateWord(resultDoc as AsposeWords.Document, htmlOptions as AsposeWords.HtmlLoadOptions, nyomtatvany);
}
}
private void GeneratePDF(AsposePdf.Document resultDoc, AsposePdf.HtmlLoadOptions htmlOptions, string nyomtatvany)
{
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream))
{
writer.Write(nyomtatvany);
writer.Flush();
stream.Position = 0;
using (var document = new AsposePdf.Document(stream, htmlOptions))
{
var start2 = 1;
if (options.PageNumbering != PageNumberingEnum.None)
{
for (int i = start2; i <= document.Pages.Count; i++)
{
var textStamp = new AsposePdf.TextStamp((i - start2 + 1).ToString())
{
BottomMargin = 10,
HorizontalAlignment = AsposePdf.HorizontalAlignment.Center,
VerticalAlignment = AsposePdf.VerticalAlignment.Bottom
};
//textStamp.TextState.Font = resultDoc.Pages[i].Resources.Fonts["Times New Roman"];
//textStamp.TextState.FontSize = 20;
if ((i == start2) && (options.PageNumbering == PageNumberingEnum.AllExceptFirst))
{
continue;
}
document.Pages[i].AddStamp(textStamp);
//resultDoc.Pages[i].Footer = new HeaderFooter();
//resultDoc.Pages[i].Footer.Paragraphs.Add(new TextFragment((i - start).ToString()));
}
}
if (options?.DocumentParameters?.KotesmargoTipus >= KotesmargoTipusEnum.Ketoldalas)
{
var startPage = options.DocumentParameters.KotesmargoTipus == KotesmargoTipusEnum.Ketoldalas ? 2 : 1;
for (int i = startPage; i <= document.Pages.Count; i += 2)
{
var pageFirstGIndex = document.Pages[i].Contents.First(x => (x.GetType() == typeof(ConcatenateMatrix))
&& ((x as ConcatenateMatrix).Matrix.A == 1)
&& ((x as ConcatenateMatrix).Matrix.B == 0)
&& ((x as ConcatenateMatrix).Matrix.C == 0)
&& ((x as ConcatenateMatrix).Matrix.D == -1)
&& ((x as ConcatenateMatrix).Matrix.E == 0)
&& ((x as ConcatenateMatrix).Matrix.F == options.PageSize.Height)
).Index;
document.Pages[i].Contents.Insert(pageFirstGIndex + 1, new ConcatenateMatrix(1, 0, 0, 1, -options.Margins.Left, 0));
}
}
// Az utolsó oldalon a generált kép 6 pixelllel feljebb csúszik, enneke a korrekciója van ebben a blokkban
if (document.Pages.Count > 1)
{
var lastPageFirstGIndex = document.Pages[document.Pages.Count].Contents.First(x => (x.GetType() == typeof(ConcatenateMatrix))
&& ((x as ConcatenateMatrix).Matrix.A == 1)
&& ((x as ConcatenateMatrix).Matrix.B == 0)
&& ((x as ConcatenateMatrix).Matrix.C == 0)
&& ((x as ConcatenateMatrix).Matrix.D == -1)
&& ((x as ConcatenateMatrix).Matrix.E == 0)
&& ((x as ConcatenateMatrix).Matrix.F == options.PageSize.Height)
).Index;
document.Pages[document.Pages.Count].Contents.Insert(lastPageFirstGIndex + 1, new ConcatenateMatrix(1, 0, 0, 1, 0, 6));
}
resultDoc.Pages.Add(document.Pages.ToArray());
}
}
}
private void GenerateWord(AsposeWords.Document resultDoc, AsposeWords.LoadOptions htmlOptions, string nyomtatvany)
{
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream))
{
writer.Write(nyomtatvany);
writer.Flush();
stream.Position = 0;
var document = new AsposeWords.Document(stream, htmlOptions);
{
resultDoc.AppendDocument(document, AsposeWords.ImportFormatMode.KeepSourceFormatting);
}
}
}
private void InitializeDocument<T, U>(Stream sablonStream, out string nyomtatvanyTemplate, out T document, out U htmlOptions)
{
var reader = new StreamReader(sablonStream);
nyomtatvanyTemplate = reader.ReadToEnd();
reader.Dispose();
if (typeof(T) == typeof(AsposePdf.Document))
{
var dataDir = System.Web.Hosting.HostingEnvironment.MapPath("/Resources/AsposeSablonok/");
var pdfHtmlOptions = new AsposePdf.HtmlLoadOptions(dataDir);
pdfHtmlOptions.PageInfo.Margin.Bottom = options.Margins.Bottom;
pdfHtmlOptions.PageInfo.Margin.Left = options.Margins.Left * (options.DocumentParameters?.KotesmargoTipus != KotesmargoTipusEnum.Nincs ? 2 : 1);
pdfHtmlOptions.PageInfo.Margin.Right = options.Margins.Right;
pdfHtmlOptions.PageInfo.Margin.Top = options.Margins.Top;
pdfHtmlOptions.PageInfo.Height = options.PageSize.Height;
pdfHtmlOptions.PageInfo.Width = options.PageSize.Width;
htmlOptions = (U)Convert.ChangeType(pdfHtmlOptions, typeof(U));
var pdfDoc = new AsposePdf.Document();
pdfDoc.PageInfo.Width = options.PageSize.Width;
pdfDoc.PageInfo.Height = options.PageSize.Height;
document = (T)Convert.ChangeType(pdfDoc, typeof(T));
}
else
{
var wordDoc = new AsposeWords.Document();
document = (T)Convert.ChangeType(wordDoc, typeof(T));
var wordHtmlOptions = new AsposeWords.HtmlLoadOptions();
htmlOptions = (U)Convert.ChangeType(wordHtmlOptions, typeof(U));
}
}
private MemoryStream FinalizeDocument<T>(T document)
{
return document is AsposePdf.Document ? FinalizePDF(document as AsposePdf.Document) : FinalizeWord(document as AsposeWords.Document);
}
private static MemoryStream FinalizePDF(AsposePdf.Document resultDoc)
{
foreach (var page in resultDoc.Pages)
{
if (page.Resources.Fonts != null)
{
foreach (var pageFont in page.Resources.Fonts)
{
if (!pageFont.IsEmbedded)
{
pageFont.IsEmbedded = true;
}
}
}
}
var ms = new MemoryStream();
var optimizationOptions = new OptimizationOptions
{
RemoveUnusedObjects = true,
RemoveUnusedStreams = true,
AllowReusePageContent = true,
LinkDuplcateStreams = true,
UnembedFonts = true
};
optimizationOptions.ImageCompressionOptions.CompressImages = true;
optimizationOptions.ImageCompressionOptions.ImageQuality = 50;
optimizationOptions.ImageCompressionOptions.ResizeImages = true;
resultDoc.OptimizeResources(optimizationOptions);
resultDoc.Optimize();
resultDoc.Save(ms, AsposePdf.SaveFormat.Pdf);
resultDoc.Dispose();
return ms;
}
private MemoryStream FinalizeWord(AsposeWords.Document document)
{
document.Sections.RemoveAt(0);
for (int i = 0; i < document.Sections.Count; i++)
{
Aspose.Words.Section section = document.Sections[i];
section.PageSetup.PaperSize = ConvertPdfPageSizeToWordPaperSize(options.PageSize);
double left, right;
left = options.Margins.Left;
right = options.Margins.Right;
if (options?.DocumentParameters?.KotesmargoTipus != KotesmargoTipusEnum.Nincs)
{
section.PageSetup.Gutter = options.Margins.Left;
if (options.DocumentParameters.KotesmargoTipus >= KotesmargoTipusEnum.Ketoldalas)
{
if (options.DocumentParameters.KotesmargoTipus == KotesmargoTipusEnum.ForditottKetoldalas)
{
section.PageSetup.RtlGutter = true;
}
section.PageSetup.MultiplePages = Aspose.Words.Settings.MultiplePagesType.MirrorMargins;
}
}
section.PageSetup.PaperSize = ConvertPdfPageSizeToWordPaperSize(options.PageSize);
section.PageSetup.LeftMargin = left;
section.PageSetup.RightMargin = right;
section.PageSetup.TopMargin = options.Margins.Top;
section.PageSetup.BottomMargin = options.Margins.Bottom;
}
var ms = new MemoryStream();
document.Save(ms, Aspose.Words.SaveFormat.Docx);
return ms;
}
private static AsposeWords.PaperSize ConvertPdfPageSizeToWordPaperSize(AsposePdf.PageSize pageSize)
{
int temp = (pageSize == AsposePdf.PageSize.A5) ? 0 : 1;
switch (temp)
{
case 0:
return AsposeWords.PaperSize.A5;
default:
return AsposeWords.PaperSize.A4;
}
}
private void SetWordDocumentKotesMargo(AsposeWords.Document document)
{
for (int i = 0; i < document.Sections.Count; i++)
{
AsposeWords.Section section = document.Sections[i];
double left, right;
left = options.Margins?.Left ?? section.PageSetup.LeftMargin;
right = options.Margins?.Right ?? section.PageSetup.RightMargin;
if (options?.DocumentParameters?.KotesmargoTipus != KotesmargoTipusEnum.Nincs)
{
section.PageSetup.Gutter = left / 2;
right -= left / 2;
if (options.DocumentParameters.KotesmargoTipus >= KotesmargoTipusEnum.Ketoldalas)
{
if (options.DocumentParameters.KotesmargoTipus == KotesmargoTipusEnum.ForditottKetoldalas)
{
section.PageSetup.RtlGutter = true;
var temp = left;
left = right;
right = temp;
}
section.PageSetup.MultiplePages = Aspose.Words.Settings.MultiplePagesType.MirrorMargins;
}
}
section.PageSetup.LeftMargin = left;
section.PageSetup.RightMargin = right;
section.PageSetup.TopMargin = options.Margins?.Top ?? section.PageSetup.TopMargin;
section.PageSetup.BottomMargin = options.Margins?.Bottom ?? section.PageSetup.BottomMargin;
}
}
}
}

View file

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses.AmiTorzslapCOs;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using AsposeWords = Aspose.Words;
namespace Kreta.BusinessLogic.Helpers
{
public partial class AsposeHelper
{
public MemoryStream GetStaticDocument(Stream sablonStream, int formatumId)
{
var resultDoc = new AsposeWords.Document(sablonStream);
AsposeWords.Style normal = resultDoc.Styles[AsposeWords.StyleIdentifier.Normal];
normal.Font.Name = AmiTorzslapResource.UsedFontName;
normal.Font.Size = AmiTorzslapConstants.UsedFontSize;
var ms = new MemoryStream();
resultDoc.Save(ms, formatumId == (int)NyomtatvanyFormatumEnum.Word ? AsposeWords.SaveFormat.Docx : AsposeWords.SaveFormat.Pdf);
ms.Position = 0;
return ms;
}
}
}

View file

@ -0,0 +1,277 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
namespace Kreta.BusinessLogic.Helpers
{
public static class AuthorizationHelper
{
public static class OrarendiOra
{
public static bool TanuloHasAccess(IConnectionType connectionType, int orarendiOraId, DateTime oraDatuma)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var orarendiOra = h.OrarendiOra().Get(orarendiOraId);
return OsztalyCsoport.TanuloHasAccess(h, connectionType.FelhasznaloId, orarendiOra.OsztalyCsoportId, oraDatuma);
});
}
}
public static class TanitasiOra
{
public static bool TanuloHasAccess(IConnectionType connectionType, int tanitasiOraId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var tanitasiOra = h.TanitasiOra().Get(tanitasiOraId);
return OsztalyCsoport.TanuloHasAccess(h, connectionType.FelhasznaloId, tanitasiOra.OsztalyCsoportId, tanitasiOra.Datum);
});
}
}
public static class NemKotottMunkaido
{
public static bool TanarHasAccess(IConnectionType connectionType, int nemKotottMunkaidoId)
{
var nemKotottMunkaido = new NemKotottMunkaidoHelper(connectionType).GetNemKotottMunkaidoById(nemKotottMunkaidoId);
return (nemKotottMunkaido.TanarId == connectionType.FelhasznaloId) || (nemKotottMunkaido.TulajId == connectionType.FelhasznaloId);
}
}
public static class OsztalyCsoport
{
public static bool OsztalyfonokHasAccess(IConnectionType connectionType, int osztalyId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var osztaly = h.Osztaly().Get(osztalyId);
return (osztaly.OsztalyFonokId == connectionType.FelhasznaloId) || (osztaly.OfoHelyettesId == connectionType.FelhasznaloId);
});
}
public static bool CsoportvezetoHasAccess(IConnectionType connectionType, int csoportId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var csoport = h.Csoport().Get(csoportId);
return csoport.CsoportVezetoId == connectionType.FelhasznaloId;
});
}
public static bool TanarHasAccess(IConnectionType connectionType, int osztalyCsoportId, bool lehetTtf)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var kapcsolodoOsztalyCsoportok = h.OsztalyCsoport().GetKapcsolodoOsztalyCsoportokByTanarId(connectionType.FelhasznaloId, true, true, lehetTtf, null);
return kapcsolodoOsztalyCsoportok.Tables[0].AsEnumerable().Any(x => x.Field<int>("ID") == osztalyCsoportId);
});
}
public static bool TanarHasAccess(IConnectionType connectionType, int osztalyCsoportId, int tantargyId)
{
return Dal.CustomConnection.Run(connectionType, h => TanarHasAccess(h, connectionType.FelhasznaloId, osztalyCsoportId, tantargyId, connectionType.TanevId));
}
internal static bool TanarHasAccess(IDalHandler dal, int tanarId, int osztalyCsoportId, int tantargyId, int tanevId)
{
var foglalkozasok = dal.Foglalkozas().GetFoglalkozasok(tanarId, tanevId);
return foglalkozasok.Tables[0].AsEnumerable().Any(x => x.Field<int>("OsztalyCsoportID") == osztalyCsoportId && x.Field<int>("TantargyID") == tantargyId);
}
internal static bool TanuloHasAccess(IDalHandler dal, int tanuloId, int osztalyCsoportId, DateTime datum)
{
return dal.OsztalyCsoport().IsTanuloOsztalyCsoportTagja(tanuloId, osztalyCsoportId, datum);
}
}
public static class Tanulo
{
public static bool OsztalyfonokHasAccess(IConnectionType connectionType, int tanuloId)
{
return Dal.CustomConnection.Run(connectionType, h => OsztalyfonokHasAccess(h, connectionType, tanuloId));
}
internal static bool OsztalyfonokHasAccess(IDalHandler h, IConnectionType connectionType, int tanuloId)
{
var tanuloOsztalyCsoportjai = h.OsztalyCsoport().GetTanuloMindenkoriOsztalyCsoportjai(tanuloId);
var osztalyokOsztalyfonokAlapjan = h.OsztalyCsoport().GetOsztalyokOsztalyfonokAlapjan(connectionType.FelhasznaloId, connectionType.IntezmenyId, connectionType.TanevId);
foreach (var row in osztalyokOsztalyfonokAlapjan.Tables[0].AsEnumerable())
{
if (tanuloOsztalyCsoportjai.Contains(row.Field<int>("ID")))
{
return true;
}
}
return false;
}
public static bool TanarHasAccess(IConnectionType connectionType, int tanuloId, bool lehetTtf)
{
return Dal.CustomConnection.Run(connectionType, h => TanarHasAccess(h, connectionType, tanuloId, lehetTtf));
}
internal static bool TanarHasAccess(IDalHandler h, IConnectionType connectionType, int tanuloId, bool lehetTtf)
{
var tanuloOsztalyCsoportjai = h.OsztalyCsoport().GetTanuloMindenkoriOsztalyCsoportjai(tanuloId);
var kapcsolodoOsztalyCsoportok = h.OsztalyCsoport().GetKapcsolodoOsztalyCsoportokByTanarId(connectionType.FelhasznaloId, true, true, lehetTtf, null);
foreach (var row in kapcsolodoOsztalyCsoportok.Tables[0].AsEnumerable())
{
if (tanuloOsztalyCsoportjai.Contains(row.Field<int>("ID")))
{
return true;
}
}
return false;
}
public static bool TanarHasAccess(IConnectionType connectionType, List<int> tanuloIdList, int osztalyCsoportId, bool lehetTtf)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
if (OsztalyCsoport.TanarHasAccess(connectionType, osztalyCsoportId, lehetTtf))
{
var osztalyCsoportTanuloi = h.Tanulo().GetOsztalyCsoportMindenkoriTanuloi(osztalyCsoportId);
var osztalyCsoportTanuloiIdList = osztalyCsoportTanuloi.Tables[0].AsEnumerable().Select(t => t.Field<int>("ID"));
return tanuloIdList.All(tanuloId => osztalyCsoportTanuloiIdList.Contains(tanuloId));
}
return false;
});
}
public static bool TanarHasAccess(IConnectionType connectionType, int tanuloId, int tantargyId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var tanuloOsztalyCsoportjai = h.OsztalyCsoport().GetTanuloMindenkoriOsztalyCsoportjai(tanuloId);
var kapcsolodoOsztalyCsoportok = h.OsztalyCsoport().GetKapcsolodoOsztalyCsoportokByTanarId(connectionType.FelhasznaloId, true, true, false, null);
foreach (var row in kapcsolodoOsztalyCsoportok.Tables[0].AsEnumerable())
{
if (tanuloOsztalyCsoportjai.Contains(row.Field<int>("ID")))
{
return true;
}
}
var foglalkozasok = h.Foglalkozas().GetFoglalkozasok(connectionType.FelhasznaloId, connectionType.TanevId);
foreach (var row in foglalkozasok.Tables[0].AsEnumerable())
{
if (row.Field<int>("TantargyID") == tantargyId && tanuloOsztalyCsoportjai.Contains(row.Field<int>("OsztalyCsoportID")))
{
return true;
}
}
return false;
});
}
}
public static class Ertekeles
{
public static bool TanarHasAccess(IConnectionType connectionType, int ertekelesId)
{
var tanuloErtekelesCo = new TanuloErtekelesHelper(connectionType).GetTanuloErtekelesCoById(ertekelesId);
if (tanuloErtekelesCo != null && !tanuloErtekelesCo.IsMagatartasSzorgalom && tanuloErtekelesCo.ErtekeloId == connectionType.FelhasznaloId)
{
return true;
}
return false;
}
}
public static class MagatartasSzorgalom
{
public static bool TanarHasAccess(IConnectionType connectionType, int magatartasSzorgalomId)
{
var tanuloErtekelesCo = new TanuloErtekelesHelper(connectionType).GetTanuloErtekelesCoById(magatartasSzorgalomId);
if (tanuloErtekelesCo != null && tanuloErtekelesCo.IsMagatartasSzorgalom && tanuloErtekelesCo.ErtekeloId == connectionType.FelhasznaloId)
{
return true;
}
return false;
}
}
public static class Mulasztas
{
public static bool TanarHasAccess(IConnectionType connectionType, int mulasztasId)
{
var oraTanuloiId = new MulasztasHelper(connectionType).GetOraTanuloId(mulasztasId);
return Tanulo.TanarHasAccess(connectionType, oraTanuloiId, false);
}
}
public static class Igazolas
{
public static bool TanarHasAccess(IConnectionType connectionType, int igazolasId)
{
var igazolas = new IgazolasHelper(connectionType).GetIgazolasCoById(igazolasId);
if (igazolas.RogzitoId == connectionType.FelhasznaloId)
{
return true;
}
return Tanulo.TanarHasAccess(connectionType, igazolas.TanuloId, false);
}
}
public static class KozossegiSzolgalat
{
public static bool TanarHasAccess(IConnectionType connectionType, int kozossegiSzolgalatId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var kozossegiSzolgalat = h.TanuloKozossegiSzolgalat().Get(kozossegiSzolgalatId);
if (kozossegiSzolgalat.FeljegyzoId == connectionType.FelhasznaloId)
{
return true;
}
return Tanulo.TanarHasAccess(h, connectionType, kozossegiSzolgalat.TanuloId, false);
});
}
}
public static class ErettsegiEredmeny
{
public static bool OsztalyfonokHasAccess(IConnectionType connectionType, int erettsegiEredmenyId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var erettsegiEredmeny = h.ErettsegiEredmeny().Get(erettsegiEredmenyId);
return Tanulo.OsztalyfonokHasAccess(h, connectionType, erettsegiEredmeny.TanuloId);
});
}
}
}
}

View file

@ -0,0 +1,348 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class BeszerzesiModulHelper : LogicBase
{
public BeszerzesiModulHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet BeszerzesiIgenyKereses(BeszerzesiIgenySearchCo co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.BeszerzesiModul();
return dal.BeszerzesiIgenyKereses(co.ConvertCoToPco());
});
}
public DataSet BeszerzesiIgenyDokList(int igenylesId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.BeszerzesiModul();
return dal.BeszerzesiIgenyDokList(igenylesId, TanevId);
});
}
public DataSet BeszerzesiIgenyMegjegyzesList(int igenylesId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.BeszerzesiModul();
return dal.BeszerzesiIgenyMegjegyzesList(igenylesId, TanevId);
});
}
public BeszerzesiIgenyCo BeszerzesiIgenyAdatok(int igenylesId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var grDal = h.BeszerzesiModul();
var dto = grDal.GetBeszerzesiIgeny(igenylesId);
return ConvertDtoToCo(dto);
});
}
public Dictionary<string, string> GetAnyagokTorzs(string filterString)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var result = new Dictionary<string, string>()
{
{string.Empty, CommonResource.KeremValasszon }
};
var grDal = h.BeszerzesiModul();
DataSet ds = grDal.GetAnyagTorzsList(filterString);
if (ds == null)
{
result[string.Empty] = CommonResource.TulSokRekord;
}
else
{
foreach (DataRow row in ds.Tables[0].Rows)
{
result.Add(
row.Field<int>("ID").ToString(),
row.Field<string>("Nev")
);
}
}
return result;
});
}
public BeszerzesiIgenyCo GetAnyagTorzsAdat(int torzsId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var grDal = h.BeszerzesiModul();
return ConvertAnyagTorzsToCo(grDal.GetAnyagtorzsAdat(torzsId));
});
}
public Dictionary<string, string> GetSzallitokTorzs(string filterString)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var result = new Dictionary<string, string>()
{
{string.Empty, CommonResource.KeremValasszon }
};
var grDal = h.BeszerzesiModul();
DataSet ds = grDal.GetSzallitoTorzsList(filterString);
if (ds == null)
{
result[string.Empty] = CommonResource.TulSokRekord;
}
else
{
foreach (DataRow row in ds.Tables[0].Rows)
{
result.Add(
row.Field<int>("ID").ToString(),
row.Field<string>("Nev")
);
}
}
return result;
});
}
public BeszerzesiIgenyCo GetSzallitoTorzsAdat(int torzsId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var grDal = h.BeszerzesiModul();
return ConvertSzallitoTorzsToCo(grDal.GetSzallitoTorzsAdat(torzsId));
});
}
//TODO:
private BeszerzesiIgenyCo ConvertDtoToCo(IBeszerzesiIgeny dto)
{
var anyag = dto.BeszerzesiAnyag.FirstOrDefault();
var szallito = dto.BeszerzesiSzallito.FirstOrDefault();
var megjegyzes = dto.BeszerzesiIgenyMegjegyzes.FirstOrDefault();
var result = new BeszerzesiIgenyCo()
{
BeszerzesiIgenyId = dto.ID,
RogzitoId = dto.RogzitoId,
AnyagId = anyag.ID,
AnyagMegnevezes = anyag.Nev,
AnyagSAPKod = anyag.SAPKod,
//ERAAzonosito = anyag.,
AnyagMennyisegiEgysegId = anyag.MennyisegiEgysegId,
AnyagRovidLeiras = anyag.Leiras,
AnyagTetelMegnevezes = anyag.TetelNev,
//AnyagTetelEgysegar = int.Parse(anyag.Egysegar),
//AnyagTetelMennyiseg = anyag.,
//AnyagTetelMennyisegiEgysegId = anyag,
IsPalyazat = dto.IsPalyazat,
PalyazatAzonosito = dto.PalyazatAzonosito,
IsBVOP = dto.BVOP,
IsKEF = dto.KEF,
//IsNKOH = dto.,
};
if (szallito != null)
{
result.SzallitoId = szallito.ID;
//result.FizetesiMod = szallito.,
result.SzallitoSAPKod = szallito.SAPKod;
result.SzallitoNev = szallito.Nev;
result.Iranyitoszam = szallito.IrSzam;
result.HelysegNev = szallito.HelysegNev;
result.KozteruletNev = szallito.KozteruletNev;
result.KozteruletJellegeId = szallito.KozteruletJellegId;
result.Hazszam = szallito.Hazszam;
result.Emelet = szallito.Emelet;
result.Ajto = szallito.Ajto;
result.Adoszam = szallito.Adoszam;
result.KepviseloNev = szallito.KepviseloNev;
result.EmailCim = szallito.EmailCim;
result.Telefonszam = szallito.Telefonszam;
}
if (megjegyzes != null)
{
result.Megjegyzes = megjegyzes.Megjegyzes;
}
return result;
}
private BeszerzesiIgenyCo ConvertAnyagTorzsToCo(IBeszerzesiAnyagtorzs data)
{
return new BeszerzesiIgenyCo()
{
//TODO:
AnyagId = data.ID,
AnyagMegnevezes = data.Nev,
AnyagSAPKod = data.SAPKod,
//ERAAzonosito = data.ERAAzonosito,
AnyagMennyisegiEgysegId = data.MennyisegiEgysegId,
AnyagRovidLeiras = data.Leiras,
AnyagTetelMegnevezes = data.TetelNev,
//AnyagTetelEgysegar = data.Egysegar,
//AnyagTetelMennyiseg =
//AnyagTetelMennyisegiEgysegId =
};
}
private BeszerzesiIgenyCo ConvertSzallitoTorzsToCo(IBeszerzesiSzallito/*torzs*/ data)
{
return new BeszerzesiIgenyCo()
{
SzallitoId = data.ID,
SzallitoNev = data.Nev,
SzallitoSAPKod = data.SAPKod,
Iranyitoszam = data.IrSzam,
HelysegNev = data.HelysegNev,
KozteruletNev = data.KozteruletNev,
KozteruletJellegeId = data.KozteruletJellegId,
Hazszam = data.Hazszam,
Emelet = data.Emelet,
Ajto = data.Ajto,
Adoszam = data.Adoszam,
KepviseloNev = data.KepviseloNev,
EmailCim = data.EmailCim,
Telefonszam = data.Telefonszam,
FizetesiMod = 1 //TODO
};
}
public bool IsLeader(int alkalmazottId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var leaderTypes = new List<string>() {
((int)VezetoiOraszamokTipusEnum.Intezmenyvezeto).ToString(),
((int)VezetoiOraszamokTipusEnum.IntezmenyvezetoHelyettes).ToString()
};
var dal = h.BeszerzesiModul();
var result = dal.IsLeader(alkalmazottId, TanevId);
return leaderTypes.Any(x => x == result);
});
}
public void SaveBeszerzesiIgeny(BeszerzesiIgenyCo co)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.BeszerzesiModul();
var beszerzesiIgenyEntity = dal.GetBeszerzesiIgeny(co.BeszerzesiIgenyId);
beszerzesiIgenyEntity.BVOP = co.IsBVOP;
beszerzesiIgenyEntity.IsPalyazat = co.IsPalyazat;
beszerzesiIgenyEntity.KEF = co.IsKEF;
beszerzesiIgenyEntity.PalyazatAzonosito = co.PalyazatAzonosito;
beszerzesiIgenyEntity.StatuszId = IsLeader(FelhasznaloId) ? (int)BeszerzesiIgenySatuszEnum.BeszerzesiIgenyJovahagyva : (int)BeszerzesiIgenySatuszEnum.BeszerzesiIgenyFuggo;
beszerzesiIgenyEntity.RogzitoId = FelhasznaloId;
var igenyId = dal.InsertOrUpdateBeszerzesiIgeny(beszerzesiIgenyEntity);
var beszerzesiAnyagEntity = dal.GetBeszerzesiAnyag(beszerzesiIgenyEntity.BeszerzesiAnyag.FirstOrDefault()?.ID);
//beszerzesiAnyagEntity.Egysegar = co.AnyagTetelEgysegar.ToString(); //!!!
beszerzesiAnyagEntity.Leiras = co.AnyagRovidLeiras;
beszerzesiAnyagEntity.MennyisegiEgysegId = co.AnyagMennyisegiEgysegId;
beszerzesiAnyagEntity.SAPKod = co.AnyagSAPKod;
beszerzesiAnyagEntity.TetelNev = co.AnyagTetelMegnevezes;
beszerzesiAnyagEntity.BeszerzesiIgenyId = igenyId;
var anyagId = dal.InsertOrUpdateBeszerzesiAnyag(beszerzesiAnyagEntity);
var beszerzesiSzallitoEntity = dal.GetBeszerzesiSzallito(beszerzesiIgenyEntity.BeszerzesiSzallito.FirstOrDefault()?.ID);
beszerzesiSzallitoEntity.Adoszam = co.Adoszam;
beszerzesiSzallitoEntity.Ajto = co.Ajto;
beszerzesiSzallitoEntity.Emelet = co.Emelet;
beszerzesiSzallitoEntity.EmailCim = co.EmailCim;
beszerzesiSzallitoEntity.Hazszam = co.Hazszam;
beszerzesiSzallitoEntity.HelysegNev = co.HelysegNev;
beszerzesiSzallitoEntity.IrSzam = co.Iranyitoszam;
beszerzesiSzallitoEntity.KepviseloNev = co.KepviseloNev;
beszerzesiSzallitoEntity.KozteruletJellegId = co.KozteruletJellegeId;
beszerzesiSzallitoEntity.Nev = co.SzallitoNev;
beszerzesiSzallitoEntity.SAPKod = co.SzallitoSAPKod;
beszerzesiSzallitoEntity.Telefonszam = co.Telefonszam;
beszerzesiSzallitoEntity.BeszerzesiIgenyId = igenyId;
var szallitoId = dal.InsertOrUpdateBeszerzesiSzallito(beszerzesiSzallitoEntity);
if (!string.IsNullOrWhiteSpace(co.Megjegyzes))
{
var beszerzesiMegjegyzesEntity = dal.GetBeszerzesiIgenyMegjegyzes();
beszerzesiMegjegyzesEntity.Megjegyzes = co.Megjegyzes;
beszerzesiMegjegyzesEntity.RogzitesDatum = DateTime.Today;
beszerzesiMegjegyzesEntity.RogzitoId = FelhasznaloId;
beszerzesiMegjegyzesEntity.BeszerzesiIgenyId = igenyId;
var megjegyzesId = dal.InsertOrUpdateBeszerzesiIgenyMegjegyzes(beszerzesiMegjegyzesEntity);
}
});
}
private void EmailKuldes(string messege, string subject, string emailCim, Guid? emailGuid, IDalHandler h) => new UzenetekHelper(new DalHandlerConnectionType(ConnectionType, h)).EmailKuldes(messege, subject, emailCim, emailGuid);
public void BeszerzesiIgenyElfogadas(int igenyId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.BeszerzesiModul();
var beszerzesiIgenyEntity = dal.GetBeszerzesiIgeny(igenyId);
beszerzesiIgenyEntity.StatuszId = (int)BeszerzesiIgenySatuszEnum.BeszerzesiIgenyJovahagyva;
var save = dal.InsertOrUpdateBeszerzesiIgeny(beszerzesiIgenyEntity);
var messege = string.Empty; //!!!
var subject = string.Empty; //!!!
EmailKuldes(messege, subject, string.Empty, null, h);
});
}
public void BeszerzesiIgenyHianyPotlas(int igenyId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.BeszerzesiModul();
var beszerzesiIgenyEntity = dal.GetBeszerzesiIgeny(igenyId);
beszerzesiIgenyEntity.StatuszId = (int)BeszerzesiIgenySatuszEnum.BeszerzesiIgenyVisszaHp;
var save = dal.InsertOrUpdateBeszerzesiIgeny(beszerzesiIgenyEntity);
var messege = string.Empty; //!!!
var subject = string.Empty; //!!!
EmailKuldes(messege, subject, string.Empty, null, h);
});
}
public void BeszerzesiIgenyElutasitas(int igenyId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.BeszerzesiModul();
var beszerzesiIgenyEntity = dal.GetBeszerzesiIgeny(igenyId);
beszerzesiIgenyEntity.StatuszId = (int)BeszerzesiIgenySatuszEnum.BeszerzesiIgenyElutasitva;
var save = dal.InsertOrUpdateBeszerzesiIgeny(beszerzesiIgenyEntity);
var messege = string.Empty; //!!!
var subject = string.Empty; //!!!
EmailKuldes(messege, subject, string.Empty, null, h);
});
}
}
}

View file

@ -0,0 +1,290 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using SDA.DataProvider;
namespace Kreta.BusinessLogic.Helpers
{
public class CsengetesiRendHelper : LogicBase
{
public CsengetesiRendHelper(IConnectionType connectionType) : base(connectionType) { }
public IEnumerable<int> GetOsztalyCsoportIdsForCsengetesiRend(DateTime datum, int hanyadikOra, IEnumerable<int> osztalyCsoportIds)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var aktivCsengetesiRendId = GetAktivCsengetesiRendId(h);
var date = datum.Date;
var datumCsengetesiRendList = GetCsengetesiRendekIdoszakra(h, date, date);
var connectionType = new DalHandlerConnectionType(ConnectionType, h);
var foglalkozasok_Rogzitese_Hetvegere = new SystemSettingsHelper(connectionType).GetSystemSettingValue<FoglalkozasokRogziteseHetvegere>(RendszerBeallitasTipusEnum.Foglalkozasok_Rogzitese_Hetvegere);
var orarendHelper = new OrarendHelper(connectionType);
var csengetesiRendOrakHelper = new CsengetesiRendOrakHelper(connectionType);
var osztalyCsoportIdsForCsengetesiRend = new List<int>();
foreach (var osztalyCsoportId in osztalyCsoportIds)
{
var csengetesiRendId = orarendHelper.GetCsengetesiRendForDate(date, datumCsengetesiRendList, aktivCsengetesiRendId, foglalkozasok_Rogzitese_Hetvegere, osztalyCsoportId);
if (csengetesiRendId.HasValue)
{
var csengetesiRendOrak = csengetesiRendOrakHelper.GetCsengetesiRendOraCoList(csengetesiRendId.Value);
var csengetesiRendOrakbanSzerepel = csengetesiRendOrak.Any(x => x.Oraszam == hanyadikOra);
if (csengetesiRendOrakbanSzerepel)
{
osztalyCsoportIdsForCsengetesiRend.Add(osztalyCsoportId);
}
}
}
return osztalyCsoportIdsForCsengetesiRend;
});
}
public DataSet GetCsengetesiRendek()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend(GridParameters);
return dal.GetCsengetesiRendekByMukodesiHely(TanevId);
});
}
public CsengetesiRendCO GetCsengetesiRendById(int cId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend();
var co = new CsengetesiRendCO();
var entity = dal.Get(cId);
co.ID = entity.ID;
co.Nev = entity.Nev;
co.Aktiv = entity.Aktiv ?? false;
return co;
});
}
public List<CsengetesiRendIdoszakraCO> GetCsengetesiRendekIdoszakra(DateTime kezdoDatum, DateTime vegDatum, int? osztalyCsoportId = null)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return GetCsengetesiRendekIdoszakra(h, kezdoDatum, vegDatum, osztalyCsoportId);
});
}
private List<CsengetesiRendIdoszakraCO> GetCsengetesiRendekIdoszakra(IDalHandler h, DateTime kezdoDatum, DateTime vegDatum, int? osztalyCsoportId = null)
{
var result = new List<CsengetesiRendIdoszakraCO>();
var dal = h.CsengetesiRend();
var ds = dal.GetCsengetesiRendek(kezdoDatum, vegDatum, osztalyCsoportId, IntezmenyId, TanevId);
foreach (DataRow row in ds.Tables[0].Rows)
{
var co = new CsengetesiRendIdoszakraCO();
co.Date = SDAConvert.ToDateTime(row["Datum"]) ?? default(DateTime);
co.CsengetesiRendId = row["CsengetesiRendId"] == DBNull.Value ? (int?)null : SDAConvert.ToInt32(row["CsengetesiRendId"]);
co.TanevRendTipus = SDAConvert.ToInt32(row["TanevRendTipus"]);
co.IsOrarendiNap = SDAConvert.ToBooleanFromTF(row["OrarendiNap"]);
co.IsOsszesCsoport = SDAConvert.ToBooleanFromTF(row["IsOsszesCsoport"]);
co.OsztalyCsoportId = SDAConvert.ToNullableInt32(row["OsztalyCsoportId"]);
co.HetNapja = SDAConvert.ToInt32(row["HetNapja"]);
co.OsztalyCsoportNev = SDAConvert.ToString(row["OsztalyCsoportNev"]);
result.Add(co);
}
return result;
}
public int SaveOrUpdateCsengetesiRend(CsengetesiRendCO co)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend(GridParameters);
var ds = dal.GetCsengetesiRendekByMukodesiHely(TanevId);
if (ds.Tables[0].Rows.Count < 1)
{
co.Aktiv = true;
}
if (co.ID.HasValue && co.ID > 0)
{
if (dal.IsCsengetesiRendNevExists(co.ID.Value, co.Nev, TanevId))
{
throw new UniqueKeyViolationException();
}
ICsengetesiRend entity = dal.Get(co.ID.Value);
entity.Nev = co.Nev;
entity.Aktiv = Convert.ToBoolean(co.Aktiv);
dal.FullUpdate(entity);
return entity.ID;
}
else
{
var entity = dal.Get();
entity.Nev = co.Nev;
entity.Aktiv = Convert.ToBoolean(co.Aktiv);
entity.TanevId = TanevId;
dal.Insert(entity);
return entity.ID;
}
});
}
public void DeleteCsengetesiRend(int csId)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend(GridParameters);
dal.Delete(csId);
});
}
public void SetCsengetesirend(int csRendId, bool aktiv)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend(GridParameters);
dal.SetCsengetesirend(csRendId, aktiv, TanevId);
var OrarendDal = h.OrarendiOra();
OrarendDal.UpdateOrarend(IntezmenyId, TanevId, idoszakKezdete: null, idoszakVege: null, orarendioraId: null, osztalyCsoportId: null);
});
}
public (int csengetesiRendId, int oraSzam) GetCsengetesiRendAndOraszam(int csengetesirendOraId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend();
return dal.GetCsengetesiRendAndOraszam(csengetesirendOraId, IntezmenyId, TanevId);
});
}
public DataSet GetCsengetesiRendEsOrak(string csengetesiRendId, int oraszamId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.CsengetesiRend();
return dal.GetCsengetesiRendEsOrak(csengetesiRendId, oraszamId, TanevId);
});
}
public int GetAktivCsengetesiRendId()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return GetAktivCsengetesiRendId(h);
});
}
private int GetAktivCsengetesiRendId(IDalHandler h)
{
var dal = h.CsengetesiRend();
return dal.GetAktivCsengetesiRendId(TanevId, IntezmenyId);
}
public int GetCsengetesiRendId(int csengetesirendOraId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRendOrak();
var csOra = dal.Get(csengetesirendOraId);
return csOra.CsengetesiRendId;
});
}
private bool IsValidRow(DataRow row, int csengetesiRendId)
{
if (row.Field<int?>("C_AKTIVCSENGETESIRENDID") != null && row.Field<int?>("C_AKTIVCSENGETESIRENDID") == csengetesiRendId)
{
return true;
}
if (row.Field<int?>("ID") != null && row.Field<int?>("ID") == csengetesiRendId)
{
return true;
}
return false;
}
public void FollowUpCsengetesiRend(int kovTanevId, int csengetesiRendId)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend();
dal.FollowUpCsengetesiRend(IntezmenyId, TanevId, kovTanevId, csengetesiRendId);
});
}
public bool CheckCsengRendNevEgyezes(int csengRendId, string csengRendNev)
{
if (csengRendId.IsEntityId())
{
return false;
}
var ds = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend();
return dal.GetCsengetesiRendekByMukodesiHely(TanevId);
});
foreach (DataRow row in ds.Tables[0].Rows)
{
if (SDAConvert.ToString(row["Nev"]) == csengRendNev && csengRendId == 0)
{
return true;
}
}
return false;
}
public List<CsengetesiRendItemCo> GetCsengetesiRendCoList()
{
DataSet dataSet = GetCsengetesiRendek();
var result = new List<CsengetesiRendItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new CsengetesiRendItemCo(dataRow);
result.Add(item);
}
return result;
}
public (int minOraszam, int maxOraszam) GetMinMaxOraszam(int csengetesirendId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRend();
return dal.GetMinMaxOraszam(TanevId, csengetesirendId);
});
}
}
}

View file

@ -0,0 +1,277 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Framework;
namespace Kreta.BusinessLogic.Helpers
{
public class CsengetesiRendOrakHelper : LogicBase
{
public CsengetesiRendOrakHelper(IConnectionType connectionType) : base(connectionType) { }
public void UpdateCsengetesiRend(int? newCsengetesiRendId, int? oldCsengetesiRendId)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var csengOraDal = h.CsengetesiRendOrak();
csengOraDal.UpdateCsengetesiRend(newCsengetesiRendId, oldCsengetesiRendId);
var orarendDal = h.OrarendiOra();
orarendDal.UpdateOrarend(IntezmenyId, TanevId, null, null, null, null);
});
}
public CsengetesiRendOraCO GetCsengetesiRendKapcsolodoOra(int csengetesiRendId)
{
var result = new CsengetesiRendOraCO();
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRendOrak(GridParameters);
var ds = dal.GetCsengetesiiRendKapcsolodoOra(csengetesiRendId, TanevId, IntezmenyId);
foreach (DataRow row in ds.Tables[0].Rows)
{
result.ID = SDAConvert.ToInt32(row["ID"]);
result.IsVanKapcsolodoOra = SDAConvert.ToBoolean(row["IsVanOraKapcsolodas"]);
result.Aktiv = SDAConvert.ToBoolean(row["IsAktiv"]);
result.MinOraszam = SDAConvert.ToInt32(row["MinOraszam"]);
result.MaxOraszam = SDAConvert.ToInt32(row["MaxOraszam"]);
}
});
return result;
}
public List<(string OraKezdet, string OraVeg)> GetCsengetesiRendKapcsolodoOraKezdeteVege(int csengetesiRendId)
{
var result = new List<(string oraKezdet, string oraVeg)>();
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRendOrak(GridParameters);
var ds = dal.GetCsengetesiiRendKapcsolodoOraKezdeteVege(csengetesiRendId, TanevId);
foreach (DataRow row in ds.Tables[0].Rows)
{
result.Add((SDAConvert.ToString(row["OraKezdete"]), SDAConvert.ToString(row["OraVege"])));
}
});
return result;
}
public DataSet GetCsengetesiRendOraiForGrid(int csengetesiRendId, bool onlyReal)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRendOrak(GridParameters);
var ds = dal.GetCsengetesiRendOraiForGrid(csengetesiRendId, onlyReal);
ds.Tables[0].Columns.Add("IsHaveReferences");
foreach (DataRow row in ds.Tables[0].Rows)
{
if (row.Field<bool>("IsReal_BOOL") && row["CsengetesiRendOraId"] != DBNull.Value)
{
row["IsHaveReferences"] = IsHaveReferences(row.Field<int>("CsengetesiRendOraId"));
}
}
return ds;
});
}
public void SaveCsengetesiRendOraLista(List<CsengetesiRendOraCO> model, bool isVisszamenoleges, int? kovTanevId)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
int csengetesiRendId = model[0].CsengetesiRendID;
var dal = h.CsengetesiRend();
var csengOraDal = h.CsengetesiRendOrak();
var orarendDal = h.OrarendiOra();
var entity = dal.Get(csengetesiRendId);
var torlendoCsengetesiRendOrak = new List<int>();
foreach (var item in model)
{
if (!item.Aktiv)
{
if (item.ID != null && !IsHaveReferences(item.ID.Value))
{
torlendoCsengetesiRendOrak.Add(item.ID.Value);
}
continue;
}
var listItem = entity.CsengetesiRendOra.SingleOrDefault(x => x.ID == item.ID);
if (listItem != null)
{
listItem.Kezdete = item.Kezd;
listItem.Vege = item.Veg;
listItem.Oraszam = item.Oraszam;
csengOraDal.Update(listItem);
if (isVisszamenoleges)
{
csengOraDal.UpdateOrarendiOraVisszamenolegesen(item.ID.Value);
}
}
else
{
var ora = csengOraDal.Get();
ora.CsengetesiRendId = csengetesiRendId;
ora.Oraszam = item.Oraszam;
ora.Kezdete = item.Kezd;
ora.Vege = item.Veg;
ora.TanevId = TanevId;
csengOraDal.Insert(ora);
item.ID = ora.ID;
}
var th = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
int currentKovTanevId = kovTanevId ?? th.GetKovetkezoTanev().Key;
if (currentKovTanevId.IsEntityId() && currentKovTanevId != TanevId)
{
csengOraDal.FollowUpCsengetesiRendOra(IntezmenyId, TanevId, currentKovTanevId, item.ID.Value, csengetesiRendId, isVisszamenoleges);
}
}
if (torlendoCsengetesiRendOrak.Count > 0)
{
csengOraDal.CsengetesiRendOrakTorles(torlendoCsengetesiRendOrak, TanevId);
orarendDal.UpdateOrarend(IntezmenyId, TanevId, null, null, null, null);
}
else if (isVisszamenoleges)
{
orarendDal.UpdateOrarend(IntezmenyId, TanevId, null, null, null, null);
}
});
}
public int GetCsengetesiRendOraSzam(int csengRendId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var csora = h.CsengetesiRendOrak().Get(csengRendId);
return csora.Oraszam;
});
}
public DataSet GetCsengetesiOrakKezdVeg()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRendOrak(GridParameters);
return dal.GetCsengetesiOrakKezdVeg(TanevId, IntezmenyId);
});
}
public IDictionary<string, string> ValidateCsengetesiRendOrak(List<CsengetesiRendOraCO> list)
{
var errorList = new Dictionary<string, string>();
foreach (CsengetesiRendOraCO itemA in list.Where(x => x.Kezd.Year == 1900 && x.Veg.Year == 1900))
{
if (itemA.Kezd < itemA.Veg)
{
int kulonbseg = (itemA.Veg.Subtract(itemA.Kezd).Hours * 60) + itemA.Veg.Subtract(itemA.Kezd).Minutes;
if (kulonbseg < 15 ||
kulonbseg > 90)
{
errorList.Add(StringResourcesUtil.GetString(3988) + itemA.Oraszam /*Időtartam*/, string.Format(StringResourcesUtil.GetString(3989), itemA.Oraszam, kulonbseg)); //A(z) {0} óra időtartama nem 30,35,40 vagy 45 perc.({1} perc)
}
foreach (CsengetesiRendOraCO itemB in list)
{
if (itemB.Kezd < itemB.Veg && itemB.Oraszam > itemA.Oraszam)
{
if (itemA.Kezd > itemB.Veg || itemA.Veg > itemB.Kezd)
{
errorList.Add(StringResourcesUtil.GetString(3990) + itemA.Oraszam /*Ütközés*/, string.Format(StringResourcesUtil.GetString(3991), itemA.Oraszam, itemB.Oraszam)); //A(z) {0}. óra ütközik a(z) {1}. órával.
break; // A kód elszáll, ha egyszerre többel is ütközik.
}
}
}
}
else
{
if (itemA.Kezd.Hour == 0 && itemA.Kezd.Minute == 0 && itemA.Veg.Hour == 0 && itemA.Veg.Minute == 0)
{
errorList.Add(StringResourcesUtil.GetString(3999) + itemA.Oraszam /*Kitöltetlen*/, string.Format(StringResourcesUtil.GetString(4000), itemA.Oraszam)); // A(z) {0}. óra értékei nem lettek kitöltve.
}
else
{
errorList.Add(StringResourcesUtil.GetString(3992) + itemA.Oraszam /*Kezdete-Vége*/, string.Format(StringResourcesUtil.GetString(3993), itemA.Oraszam)); //A(z) {0}. óra kezdete nagyobb mint a vége.
}
}
}
return errorList;
}
public DataTable GetCsengetesirendOrakNaptarhoz(int? csengetesiRendId = null)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRendOrak(GridParameters);
var ds = dal.GetCsengetesirendOrakNaptarhoz(TanevId, csengetesiRendId);
if (ds.Tables.Count > 0)
{
return ds.Tables[0];
}
return null;
});
}
public List<CsengetesiRendOraCO> GetCsengetesiRendOraCoList(int? csengetesiRendId = null)
{
var result = new List<CsengetesiRendOraCO>();
var dataTable = GetCsengetesirendOrakNaptarhoz(csengetesiRendId);
foreach (DataRow dataRow in dataTable.Rows)
{
result.Add(new CsengetesiRendOraCO
{
ID = SDAConvert.ToInt32(dataRow["ID"]),
Kezd = SDAConvert.ToDateTime(dataRow["C_KEZDETE"]).Value,
Veg = SDAConvert.ToDateTime(dataRow["C_VEGE"]).Value,
Oraszam = SDAConvert.ToInt32(dataRow["C_ORASZAM"])
});
}
return result;
}
public int? GetCsengetesiRendOraId(int csengRendId, int oraszam)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return h.CsengetesiRendOrak().GetCsengetesiRendOraIdByIdAndOraszam(csengRendId, oraszam, TanevId);
});
}
public bool IsHaveReferences(int csengetesiRendOraId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.CsengetesiRendOrak();
var result = dal.ReferencesCount(csengetesiRendOraId, TanevId);
return result.Tables[0].Rows.Cast<DataRow>().Any(row => row.Field<int>("darab") > 0);
});
}
}
}

View file

@ -0,0 +1,621 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.DataAccessObjects.Csoport;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Util;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class CsoportHelper : LogicBase
{
public CsoportHelper(IConnectionType connectionType) : base(connectionType) { }
public IDictionary<string, string> GetCsoportok(string baseText = null, int? tanarId = null)
{
if (GridParameters == null)
{
GridParameters = new GridParameters() { OrderBy = "Evfolyam ASC" };
}
var ds = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport(GridParameters);
return dal.GetCsoportokForDDL(tanarId: tanarId);
});
return LogicUtil.CreateDropdownContent(ds, "ID", "Nev", baseText, sort: false);
}
public IDictionary<string, string> GetNapkozisCsoportok(string baseText = null, int? tanarId = null)
{
if (GridParameters == null)
{
GridParameters = new GridParameters() { OrderBy = "Evfolyam ASC" };
}
var ds = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport(GridParameters);
return dal.GetNapkozisCsoportokForDDL(tanarId: tanarId);
});
return LogicUtil.CreateDropdownContent(ds, "ID", "Nev", baseText, sort: false);
}
public IDictionary<string, string> GetSzakmaiGyCsoportok(string baseText = null, int? tanarId = null)
{
if (GridParameters == null)
{
GridParameters = new GridParameters() { OrderBy = "Evfolyam ASC" };
}
var ds = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport(GridParameters);
return dal.GetSzakmaiGyCsoportokForDDL(tanarId: tanarId);
});
return LogicUtil.CreateDropdownContent(ds, "ID", "Nev", baseText, sort: false);
}
public IDictionary<string, string> GetTanoranKivuliCsoportok()
{
if (GridParameters == null)
{
GridParameters = new GridParameters() { OrderBy = "Evfolyam ASC" };
}
var ds = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport(GridParameters);
return dal.GetTanoranKivuliCsoportokForDDL(TanevId, IntezmenyId);
});
return LogicUtil.CreateDropdownContent(ds, "Id", "Nev", null);
}
public CsoportCO GetGroupByID(int csoportId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport();
var entity = dal.Get(csoportId);
var co = ConvertEntityToCo(entity);
co.HasTanuloBesorolas = h.OsztalyCsoport().HasTanuloBesorolas(csoportId);
if (entity.FeladatEllatasiHelyId.IsEntityId())
{
var oktNevFeladatNev = entity.FeladatEllatasiHely.OktatasiNevelesiFeladatTipus.GetDisplayName<OktatasiNevelesiFeladatEnum>(TanevId);
co.FeladatEllatasiHelyName = $"{entity.FeladatEllatasiHely.MukodesiHely.Nev ?? string.Empty} - {oktNevFeladatNev}";
}
return co;
});
}
public IEnumerable<NemTanoraiCeluCsoportTipusCO> GetNemTanoraiCeluCsoportTipusokForErtekeles()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var nemTanoraiCeluCsoportTipusok = new List<NemTanoraiCeluCsoportTipusDao>();
var isNemTanoraiCeluCsoportokErtekelesEnabled = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.nem_tanorai_celu_csoportok_ertekelesi_lehetosege);
if (!isNemTanoraiCeluCsoportokErtekelesEnabled)
{
nemTanoraiCeluCsoportTipusok = h.Csoport().GetNemTanoraiCeluCsoportTipusList();
}
var response = new List<NemTanoraiCeluCsoportTipusCO>();
foreach (var item in nemTanoraiCeluCsoportTipusok)
{
response.Add(new NemTanoraiCeluCsoportTipusCO
{
CsoportTipusId = item.CsoportTipusId
});
}
return response;
});
}
public void DeleteGroupById(int classId, bool updateTanoraEvesSorszam = true)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport();
var entity = dal.Get(classId);
var osztalyCsoport = new OsztalyCsoportHelper(new DalHandlerConnectionType(ConnectionType, h));
if (h.OsztalyCsoport().HasTanuloBesorolas(classId))
{
throw new CannotBeDeletedException(string.Format(ErrorResource.Az0OsztalyCsoportNemTorolthetoMertKapcsolodikVagyKapcsolodottHozzaTanulo, entity.Nev));
}
if (!osztalyCsoport.HasTanitasiOra(classId))
{
var orarendiOraDal = h.OrarendiOra();
var orarendiOraList = entity.OrarendiOra.Where(x => !x.Torolt).ToList();
orarendiOraList.ForEach(x => orarendiOraDal.Delete(x.ID));
}
if (entity.Foglalkozasok.Any(x => !x.Torolt))
{
throw new CannotBeDeletedException(string.Format(ErrorResource.A0CsoporthozTantargyfelosztasElemVanRogzitveKerjukToroljeATTFetEztKovetoenMarTorolhetoACsoportIs, entity.Nev));
}
var fogadooraList = entity.Fogadoora_OsztalyCsoport.Where(x => !x.Torolt).ToList();
if (fogadooraList.Any())
{
if (fogadooraList.All(x => x.Fogadoora.FogadooraKezdete < DateTime.Today))
{
var fogadooraDal = h.Fogadoora();
fogadooraList.ForEach(x => fogadooraDal.DeleteFogadooraOsztalyCsoportByFogadooraIdOsztalyCsoportId(x.FogadooraId, classId));
}
}
dal.Delete(classId, IntezmenyId, TanevId, updateTanoraEvesSorszam);
});
}
public void UpdateCo(CsoportCO co, int modifierId)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport(GridParameters);
var entity = dal.Get(co.Id);
if (entity.FeladatEllatasiHelyId != co.FeladatEllatasiHelyId
&& !new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)).IsAzonosKategoria(entity.FeladatEllatasiHelyId, co.FeladatEllatasiHelyId)
&& h.OsztalyCsoport().HasTanuloBesorolas(co.Id)
&& co.FeladatEllatasiHelyId.IsEntityId() && !co.IsFromSzervezet)
{
throw new BlException(OsztalyCsoportResource.FeladatellatasiHelyNemModosithatoMertVanTanuloBesorolva);
}
var utkozoTanevrendDatumok = new List<string>();
var tanevrendHelper = new TanevrendHelper(new DalHandlerConnectionType(ConnectionType, h));
int? ocsEvfolyamTipusa = null;
if (co.OsztalyBontasId.HasValue)
{
var ocsDal = h.OsztalyCsoport(GridParameters);
var osztaly = ocsDal.Get(co.OsztalyBontasId.Value);
ocsEvfolyamTipusa = osztaly.EvfolyamTipusa;
entity.KepzesiForma = osztaly.KepzesiForma;
var osztalyTanevrendjei = tanevrendHelper.GetOsztalycsoportTanevrendje(null, osztaly.ID, false);
var csoportTanevrendjei = tanevrendHelper.GetOsztalycsoportTanevrendje(null, co.Id, false);
utkozoTanevrendDatumok = osztalyTanevrendjei.Where(x => csoportTanevrendjei.Exists(y => y.TanevrendId == x.TanevrendId)).Select(x => x.Datum.ToString(Constants.ToStringPattern.HungarianDateWithSuffix)).ToList();
}
var mustInsertOrUpdateTanevrendje = false;
var oldOsztalyId = -1;
if (co.OsztalyBontasId != entity.OsztalyBontasId)
{
mustInsertOrUpdateTanevrendje = true;
oldOsztalyId = entity.OsztalyBontasId;
}
var needTTFFoglalkozasTipusUpdate = entity.Tipusa != co.CsoportTipus;
ConvertToEntity(h, entity, co, true, ocsEvfolyamTipusa);
dal.Update(entity);
if (mustInsertOrUpdateTanevrendje)
{
if (co.OsztalyBontasId.IsEntityId())
{
if (utkozoTanevrendDatumok.Count > 0)
{
throw new BlException(string.Format(OsztalyCsoportResource.OsztalybontasEsetenLeteznekMegegyezoTanevrendek, string.Join(",", utkozoTanevrendDatumok)));
}
tanevrendHelper.InsertTanevRendjeNewBontottCsoport(co.OsztalyBontasId.Value, co.Id);
}
else
{
tanevrendHelper.DeleteTanevRendjeNewBontottCsoport(oldOsztalyId, co.Id, modifierId);
}
}
if (needTTFFoglalkozasTipusUpdate && co.CsoportTipus.HasValue)
{
h.Csoport().UpdateTTFFoglalkozasTipusByCsoportTipus(TanevId, co.Id, co.CsoportTipus.Value, co.OsztalyBontasId.HasValue, modifierId);
}
});
}
public int InsertCo(CsoportCO co)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport(GridParameters);
var entity = dal.Get();
ConvertToEntity(h, entity, co, false, null);
return dal.Insert(entity);
});
}
public List<CsoportGridItemCo> GetCsoportKeresesCoList(CsoportSearchCo co, int? felhasznaloSzervezetId = null)
{
var isFromSzervezet = co?.IsFromSzervezet ?? false;
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dataSet = h.Csoport(GridParameters).CsoportKereses(TanevId, IntezmenyId, co.ConvertToPco());
List<CsoportGridItemCo> coList;
if (isFromSzervezet)
{
var szervezetIds = !felhasznaloSzervezetId.IsEntityId() ? new List<int>() : h.SzervezetDal().GetLathatoSzervezetek(IntezmenyId, TanevId, felhasznaloSzervezetId, (int)SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek);
var intezmenyiAdminIds = felhasznaloSzervezetId.IsEntityId() ? new List<int>() : h.Felhasznalo().GetAllIntezmenyiAdmin(TanevId);
coList = dataSet.Tables[0].AsEnumerable().Select(dataRow =>
{
var szervezetId = dataRow.Field<int?>("SzervezetId");
var isSzerkesztheto = (felhasznaloSzervezetId.IsEntityId() && szervezetId.IsEntityId() && szervezetIds.Contains(szervezetId.Value)) ||
(!felhasznaloSzervezetId.IsEntityId() && intezmenyiAdminIds.Contains(FelhasznaloId) && intezmenyiAdminIds.Contains(dataRow.Field<int?>("RogzitoId") ?? FelhasznaloId));
return new CsoportGridItemCo(dataRow, isSzerkesztheto, true);
}).ToList();
}
else
{
coList = dataSet.Tables[0].AsEnumerable().Select(x => new CsoportGridItemCo(x, true, false)).ToList();
}
return coList;
});
return result;
}
public string CsoportTobbesModify(CsoportTobbesModCO csoportTobbesModCO, bool updateTanoraEvesSorszam = true)
{
if (!csoportTobbesModCO.CsoportId.HasValue)
{
throw new BlException(OsztalyCsoportResource.NemLetezoCsoport);
}
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport(GridParameters);
var entity = dal.Get(csoportTobbesModCO.CsoportId.Value);
if (csoportTobbesModCO.Tipusa.HasValue)
{
entity.Tipusa = csoportTobbesModCO.Tipusa.Value;
}
if (csoportTobbesModCO.EvfolyamTipusa.HasValue)
{
entity.EvfolyamTipusa = csoportTobbesModCO.EvfolyamTipusa.Value;
}
if (csoportTobbesModCO.FeladatEllatasiHelyId.HasValue)
{
if (entity.FeladatEllatasiHelyId != csoportTobbesModCO.FeladatEllatasiHelyId.Value && !new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)).IsAzonosKategoria(entity.FeladatEllatasiHelyId, csoportTobbesModCO.FeladatEllatasiHelyId.Value) && h.OsztalyCsoport().HasTanuloBesorolas(csoportTobbesModCO.CsoportId.Value))
{
return entity.Nev;
}
entity.FeladatEllatasiHelyId = csoportTobbesModCO.FeladatEllatasiHelyId.Value;
entity.FeladatKategoriaId = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatKategoriaId(csoportTobbesModCO.FeladatEllatasiHelyId.Value);
}
if (csoportTobbesModCO.OsztalyBontas.HasValue)
{
if (csoportTobbesModCO.OsztalyBontas > 0)
{
if (csoportTobbesModCO.OsztalyBontasId.HasValue)
{
var osztaly = h.Osztaly().Get(csoportTobbesModCO.OsztalyBontasId.Value);
entity.OsztalyBontas = osztaly;
}
}
else
{
entity.OsztalyBontasId = -1;
if (!csoportTobbesModCO.EvfolyamTipusa.HasValue)
{
entity.EvfolyamTipusa = (int)EvfolyamTipusEnum.na;
}
}
}
if (csoportTobbesModCO.Vegzos.HasValue)
{
entity.VegzosEvfolyam = csoportTobbesModCO.Vegzos.ToBool();
}
if (csoportTobbesModCO.TervezettLetszam.HasValue)
{
entity.TervezettLetszam = csoportTobbesModCO.TervezettLetszam;
}
if (csoportTobbesModCO.Keresztfeleves.HasValue)
{
entity.Keresztfeleves = csoportTobbesModCO.Keresztfeleves.ToBool();
}
if (csoportTobbesModCO.IsGyogypedagogiaiLogopediai.HasValue)
{
entity.IsGyogypedagogiaiLogopediai = csoportTobbesModCO.IsGyogypedagogiaiLogopediai.ToBool();
}
if (csoportTobbesModCO.TechnikaiCsoport.HasValue)
{
entity.IsTechnikai = csoportTobbesModCO.TechnikaiCsoport.ToBool();
}
if (csoportTobbesModCO.CsoportNaploMegnyitasa.HasValue)
{
entity.CsoportnaploMegnyitasa = csoportTobbesModCO.CsoportNaploMegnyitasa.Value;
}
if (csoportTobbesModCO.CsoportNaploLezarasa.HasValue)
{
entity.CsoportnaploZarasa = csoportTobbesModCO.CsoportNaploLezarasa.Value;
}
if (csoportTobbesModCO.MuveszetiAgId.HasValue)
{
entity.MuveszetiAgId = csoportTobbesModCO.MuveszetiAgId.Value;
}
if (csoportTobbesModCO.ZenemuveszetiAgTipusId.HasValue)
{
entity.ZenemuveszetiAgTipusId = csoportTobbesModCO.ZenemuveszetiAgTipusId.Value;
}
if (csoportTobbesModCO.CsoportVezeto.HasValue)
{
entity.CsoportVezetoId = csoportTobbesModCO.CsoportVezeto.Value;
}
if (csoportTobbesModCO.Terem.HasValue)
{
entity.TeremId = csoportTobbesModCO.Terem.Value;
}
if (csoportTobbesModCO.SzervezetId.HasValue)
{
entity.SzervezetId = csoportTobbesModCO.SzervezetId.Value;
}
dal.Update(entity, updateTanoraEvesSorszam);
return null;
});
}
public bool IsNyariSzakmaiGyakorlatos(int csoportId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport();
return dal.IsNyariSzakmaiGyakorlatos(TanevId, csoportId);
});
}
private CsoportCO ConvertEntityToCo(ICsoport entity)
{
var co = new CsoportCO
{
Id = entity.ID,
CsoportNeve = entity.Nev,
CsoportTipus = entity.Tipusa,
Megjegyzes = entity.Megjegyzes,
VegzosEvfolyamCsoport = entity.VegzosEvfolyam,
KeresztfelevesCsoport = entity.Keresztfeleves,
IsGyogypedagogiaiLogopediai = entity.IsGyogypedagogiaiLogopediai,
TechnikaiCsoport = entity.IsTechnikai,
CsoportvezetoId = entity.CsoportVezetoId > 0 ? entity.CsoportVezetoId : (int?)null,
EvfolyamTipusa = entity.EvfolyamTipusa > 0 ? entity.EvfolyamTipusa : (int?)null,
TeremID = entity.TeremId > 0 ? entity.TeremId : (int?)null,
FeladatEllatasiHelyId = entity.FeladatEllatasiHelyId > 0 ? entity.FeladatEllatasiHelyId : 0,
TanevNeve = entity.Tanev.Nev,
TanulokSzama = entity.Tanulo.Count(x => (!x.Torolt && (x.KilepesDatum == null || x.KilepesDatum > DateTime.Now))),
CsoportvezetoNeve = entity.CsoportVezeto == null ? string.Empty : entity.CsoportVezeto.NyomtatasiNev,
TeremNev = entity.Terem != null ? entity.Terem.Nev : string.Empty,
CsoportNaploLeirasa = entity.CsoportnaploLeiras,
Naploszam = entity.Naploszam,
CsoportNaploMegnyitasa = entity.CsoportnaploMegnyitasa,
CsoportNaploLezarasa = entity.CsoportnaploZarasa,
TervezettLetszam = entity.TervezettLetszam,
OsztalyBontasId = entity.OsztalyBontasId > 0 ? (int?)entity.OsztalyBontasId : null,
OsztalyBontas = entity.OsztalyBontasId > 0,
OsztalyBontasNev = entity.OsztalyBontasId > 0 ? entity.OsztalyBontas.Nev : string.Empty,
IsAutoEgyeniCsoport = entity.IsAutoEgyeniCsoport,
MuveszetiAgId = entity.MuveszetiAgId,
ZenemuveszetiAgTipusId = entity.ZenemuveszetiAgTipusId,
KepzesiFormaId = entity.KepzesiForma,
SzervezetNeve = entity.Szervezet == null ? string.Empty : entity.Szervezet.Nev,
SzervezetId = entity.SzervezetId,
};
return co;
}
private void ConvertToEntity(IDalHandler h, ICsoport entity, CsoportCO co, bool isUpdate, int? ocsEvfolyamTipusId)
{
if (co.IsAutoEgyeniCsoport && isUpdate)
{
entity.Nev = co.CsoportNeve;
List<int> osszevontEvfolyamTipusIds = EnumExtensions.GetEvfolyamTipusDictionaryItems(TanevId, true).Select(x => x.Id).ToList();
bool isOsszevontEvfolyamTipus = osszevontEvfolyamTipusIds.Any(x => x == ocsEvfolyamTipusId);
if (ocsEvfolyamTipusId == (int)EvfolyamTipusEnum.na || isOsszevontEvfolyamTipus)
{
entity.EvfolyamTipusa = co.EvfolyamTipusa ?? (int)EvfolyamTipusEnum.na;
}
}
else
{
entity.Nev = co.CsoportNeve;
entity.Megjegyzes = co.Megjegyzes;
entity.VegzosEvfolyam = co.VegzosEvfolyamCsoport;
entity.Keresztfeleves = co.KeresztfelevesCsoport;
entity.IsGyogypedagogiaiLogopediai = co.IsGyogypedagogiaiLogopediai;
entity.IsTechnikai = co.TechnikaiCsoport;
entity.OsztalyBontasId = co.OsztalyBontasId ?? -1;
entity.TervezettLetszam = co.TervezettLetszam;
entity.KepzesiForma = co.KepzesiFormaId;
if (co.TeremID.HasValue && co.TeremID.Value > 0)
{
entity.TeremId = co.TeremID.Value;
}
else
{ entity.TeremId = -1; }
entity.Tipusa = co.CsoportTipus;
if (co.CsoportvezetoId.HasValue && co.CsoportvezetoId.Value > 0)
{
entity.CsoportVezetoId = co.CsoportvezetoId.Value;
}
else if (isUpdate)
{
entity.CsoportVezeto = null;
}
entity.EvfolyamTipusa = co.EvfolyamTipusa ?? (int)EvfolyamTipusEnum.na;
if (co.FeladatEllatasiHelyId > 0)
{
entity.FeladatEllatasiHelyId = co.FeladatEllatasiHelyId;
entity.FeladatKategoriaId = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatKategoriaId(co.FeladatEllatasiHelyId);
}
else if (isUpdate)
{
entity.FeladatEllatasiHely = null;
}
entity.CsoportnaploMegnyitasa = co.CsoportNaploMegnyitasa.HasValue ? (DateTime?)co.CsoportNaploMegnyitasa.Value : null;
entity.CsoportnaploZarasa = co.CsoportNaploLezarasa.HasValue ? (DateTime?)co.CsoportNaploLezarasa.Value : null;
entity.Naploszam = co.Naploszam;
entity.CsoportnaploLeiras = co.CsoportNaploLeirasa;
entity.MuveszetiAgId = co.MuveszetiAgId;
entity.ZenemuveszetiAgTipusId = co.ZenemuveszetiAgTipusId;
if (co.SzervezetId.HasValue)
{
entity.SzervezetId = co.SzervezetId.Value;
}
entity.TanevId = TanevId;
}
}
public List<CsoportItemCo> GetCsoportCoList()
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Csoport().GetCsoportDataSet(TanevId));
var result = new List<CsoportItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new CsoportItemCo(dataRow);
result.Add(item);
}
return result;
}
public List<CsoportItemCo> GetCsoportListBySzervezet(int? szervezetTipus = null, int? szervezetId = null)
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Csoport().GetCsoportDataSet(TanevId));
var result = new List<CsoportItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new CsoportItemCo(dataRow);
if (item.SzervezetId.Equals(szervezetId))
{
result.Add(item);
}
}
return result;
}
public IDictionary<string, string> GetOsszefuggoSzakGyakosCsoportok()
{
var result = Dal.CustomConnection.Run(ConnectionType, (h) => h.Csoport().GetOsszefuggoSzakGyakosCsoportok(TanevId));
return LogicUtil.CreateDropdownContent(result, "ID", "Nev", sort: false);
}
public IDictionary<string, string> GetEgyeniCsoportData(int tanuloId, int osztalyId, bool isKovTanev)
{
var amiEgyeniCsoportok = Constants.AMIEgyeniCsoportok;
var ds = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
DateTime? kovTanevElsoNapja = null;
if (isKovTanev)
{
kovTanevElsoNapja = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanevKezdete();
}
return h.Csoport().GetEgyeniCsoportData(tanuloId, osztalyId, TanevId, amiEgyeniCsoportok, isKovTanev, kovTanevElsoNapja);
});
return LogicUtil.CreateDropdownContent(ds, "Id", "Nev", sort: false);
}
public int? GetCsoportOsztalyBontasId(int csoportId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var csoportDal = h.Csoport();
var csoport = csoportDal.Get(csoportId);
return csoport.OsztalyBontasId.IsEntityId() ? csoport.OsztalyBontasId : (int?)null;
});
}
public DataSet GetTanuloOsztalyByCsoportAndDatum(int csoportId, DateTime datum)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return h.Csoport().GetOsztalyIdByCsoportIdAndDatum(TanevId, IntezmenyId, csoportId, datum);
});
}
public (int munkarenddelNemRendelkezo, int munkarenddelRendelkezo) GetCsoportMunkarendSzama(int osztalyCsoportId, bool isAktivTanev)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport(GridParameters);
var dataSet = dal.GetCsoportMunkarendSzama(osztalyCsoportId, isAktivTanev);
var dataRow = dataSet.Tables[0].Rows[0];
return (munkarenddelNemRendelkezo: (int)dataRow[0], munkarenddelRendelkezo: (int)dataRow[1]);
});
}
public List<OsztalyCsoportTanuloMunkarendItemCo> GetCsoportTanuloiByMunkarend(int osztalycsoportId, bool hasMunkarend, bool isAktivTanev)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Csoport(GridParameters);
var dataSet = dal.GetCsoportTanuloiByMunkarend(osztalycsoportId, hasMunkarend, isAktivTanev);
var result = new List<OsztalyCsoportTanuloMunkarendItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new OsztalyCsoportTanuloMunkarendItemCo(dataRow);
result.Add(item);
}
return result;
});
}
}
}

View file

@ -0,0 +1,219 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Client;
using Kreta.Client.Mdsz.Dto;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Framework.Logging;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class DiakolimpiaHelper : LogicBase
{
public DiakolimpiaHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet GetDiakolimpiaGrid(DiakolimpiaSearchCO searchCO)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.DiakolimpiaDAL(GridParameters);
return dal.GetDiakolimpiaGrid(ConvertSearchCOToPCO(searchCO), TanevId);
});
}
public string GetFeladhelySorszam() //amit az mdsz feladatellátási hely sorszámnak hív, az nálunk a működési hely azonosítója
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var mukodesiHelyhelper = new MukodesiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var tanarHelper = new TanarHelper(new DalHandlerConnectionType(ConnectionType, h));
var feladHelyHelper = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var tanar = tanarHelper.GetTanarAdatok(FelhasznaloId);
if (!tanar.FeladatellatasiHely.IsEntityId())
{
return "001";
}
var feladHely = feladHelyHelper.GetFeladatEllatasiHelyAdatok(tanar.FeladatellatasiHely.Value);
var sorszam = mukodesiHelyhelper.GetMukodesiHelyAdatok(feladHely.MukodesiHelyID).MukodesiHelyAzonosito;
return string.IsNullOrWhiteSpace(sorszam) ? "001" : sorszam;
});
}
public string GetFeladhelySorszambyId(int id)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var mukodesiHelyhelper = new MukodesiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var feladHelyHelper = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var feladHely = feladHelyHelper.GetFeladatEllatasiHelyAdatok(id);
var data = mukodesiHelyhelper.GetMukodesiHelyAdatok(feladHely.MukodesiHelyID);
return string.IsNullOrWhiteSpace(data.MukodesiHelyAzonosito) ? "001" : data.MukodesiHelyAzonosito;
});
}
public string GetDataForMdszInterface(List<int> tanuloIds, string feladhelySorszam)
{
var dto = new MdszDto();
var tanar = new TanarAdatCO();
var mukodesiHely = new MukodesiHelyCO();
var elkuldottTanulok = new List<string>();
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var intezmeny = h.IntezmenyDal().Get(IntezmenyId);
var helper = new TanarHelper(new DalHandlerConnectionType(ConnectionType, h));
tanar = helper.GetTanarAdatok(FelhasznaloId);
if (tanar.FeladatellatasiHely.IsEntityId())
{
var feladHelyId = tanar.FeladatellatasiHely;
var mukodesiHelyHelper = new MukodesiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var feladHelyHelper = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var feladHely = feladHelyHelper.GetFeladatEllatasiHelyAdatok(feladHelyId.Value);
mukodesiHely = mukodesiHelyHelper.GetMukodesiHelyAdatok(feladHely.MukodesiHelyID);
var intezmenyAdatok = intezmeny.IntezmenyAdatok.First(x => x.IntezmenyId == IntezmenyId && x.TanevId == TanevId && !x.Torolt);
var intezmenyJellemzoi = feladHelyHelper.GetOsztalyJellemzoi();
var intezmenyTip = intezmenyJellemzoi[OsztalyJellemzoEnum.IsSzakkepzeses] ? "2" : "1";
SetMdszCoAlapAdatok(dto, intezmenyAdatok, tanar, mukodesiHely, feladhelySorszam, intezmenyTip);
SetMdszDiakok(tanuloIds, dto, h, elkuldottTanulok);
}
});
var mdszClient = new MdszClient(ApplicationData.MdszUrl);
var responseMessage = mdszClient.SendData(dto, ApplicationData.MdszUserName, ApplicationData.MdszPassword);
if (!responseMessage.Equals(AdminisztracioResource.AKuldesSikeresVolt))
{
throw new BlException(responseMessage);
}
if (elkuldottTanulok.Count < 11)
{
responseMessage += $"{Core.Constants.General.Sortores}{AdminisztracioResource.ElkuldottTanulok} {string.Join(", ", elkuldottTanulok)}";
}
else
{
responseMessage += string.Format($"{Core.Constants.General.Sortores}{AdminisztracioResource.SikeresenNevezve0Tanulo}", elkuldottTanulok.Count);
}
SDAServer.Instance.Logger.CustomEvent(Events.DiakolimpiaCsomag, LogLevel.INFO, responseMessage);
SikeresAdatokMentese(dto);
return responseMessage;
}
private void SikeresAdatokMentese(MdszDto dto)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.DiakolimpiaDAL();
foreach (var diak in dto.Diakok)
{
var entity = dal.Get();
entity.Datum = DateTime.Now;
entity.TanuloId = diak.Id;
entity.TanarId = dto.Tanar.Id;
dal.Insert(entity);
}
});
}
private void SetMdszDiakok(List<int> tanuloIds, MdszDto dto, IDalHandler h, List<string> elkuldottTanulok)
{
dto.Diakok = new List<MdszDto.DiakDto>();
var tanuloDal = h.Tanulo();
foreach (var tanuloId in tanuloIds)
{
var tanulo = tanuloDal.Get(tanuloId);
var diak = new MdszDto.DiakDto();
diak.Om = tanulo.OktatasiAzonosito ?? string.Empty;
diak.Nev = tanulo.NyomtatasiNev ?? string.Empty;
diak.SzuletesiNev = tanulo.SzuletesiNev ?? string.Empty;
diak.SzuletesiHely = tanulo.SzuletesiHely ?? string.Empty;
diak.SzuletesiIdo = tanulo.SzuletesiDatum.ToString("yyyy.MM.dd");
diak.AnyjaNeve = tanulo.AnyjaNeve ?? string.Empty;
diak.Neme = tanulo.Neme == (int)NemEnum.Ferfi ? "F" : "L";
diak.Id = tanulo.ID;
dto.Diakok.Add(diak);
if (!string.IsNullOrWhiteSpace(diak.Nev))
elkuldottTanulok.Add(diak.Nev);
}
}
private void SetMdszCoAlapAdatok(MdszDto dto, IIntezmenyAdatok intezmenyAdatok, TanarAdatCO tanar, MukodesiHelyCO mukodesiHely, string feladhelySorszam, string intezmenyTip)
{
dto.Iskola = new MdszDto.IskolaDto();
dto.Iskola.Om = $"{intezmenyAdatok.OMKod}/{feladhelySorszam}";
dto.Iskola.Nev = mukodesiHely.Nev ?? string.Empty;
dto.Iskola.RovidNev = /*intezmenyAdatok.RovidNev ??*/ string.Empty;
dto.Iskola.Adoszam = string.Empty;
dto.Iskola.Url = /*intezmenyAdatok.IntezmenyHonlapja ??*/ string.Empty;
dto.Iskola.Telefon = mukodesiHely.Telefonszam ?? string.Empty;
dto.Iskola.Fax = mukodesiHely.Fax ?? string.Empty;
dto.Iskola.Email = mukodesiHely.Email ?? string.Empty;
dto.Iskola.VezetoNeve = mukodesiHely.VezetoNeve ?? string.Empty;
dto.Iskola.CimIrsz = mukodesiHely.Iranyitoszam ?? string.Empty;
dto.Iskola.CimVaros = mukodesiHely.Varos ?? string.Empty;
dto.Iskola.CimKozteruletNevJelleg = $"{mukodesiHely.Kozterulet} {mukodesiHely.KozteruletJellegeNev}";
dto.Iskola.CimHsz = mukodesiHely.Szam ?? string.Empty;
dto.Iskola.IntezmenyNev = intezmenyAdatok.Nev ?? string.Empty;
dto.Iskola.IntezmenyRovidNev = intezmenyAdatok.RovidNev ?? string.Empty;
dto.Iskola.IntezmenyAdoszam = string.Empty;
dto.Iskola.IntezmenyUrl = intezmenyAdatok.IntezmenyHonlapja ?? string.Empty;
dto.Iskola.IntezmenyTelefon = intezmenyAdatok.Telefonszam ?? string.Empty;
dto.Iskola.IntezmenyFax = mukodesiHely.Fax ?? string.Empty;
dto.Iskola.IntezmenyEmail = intezmenyAdatok.EmailCim ?? string.Empty;
dto.Iskola.IntezmenyVezetoNev = intezmenyAdatok.IgazgatoNeve ?? string.Empty;
dto.Iskola.IntezmenyCimIrsz = intezmenyAdatok.IranyitoSzam ?? string.Empty;
dto.Iskola.IntezmenyCimVaros = intezmenyAdatok.Varos ?? string.Empty;
dto.Iskola.IntezmenyCimKozteruletNevJelleg = $"{intezmenyAdatok.KozteruletNev} {intezmenyAdatok.KozteruletJellegeNev}";
dto.Iskola.IntezmenyCimHsz = intezmenyAdatok.Hazszam ?? string.Empty;
dto.Iskola.IntezmenyAzon = IntezmenyAzonosito;
dto.Iskola.IntezmenyTip = intezmenyTip;
dto.Tanar = new MdszDto.TanarDto();
dto.Tanar.Om = tanar.OktatasiAzonosito ?? string.Empty;
dto.Tanar.Nev = Extensions.NameExtensions.GetNevSorrendben("F", tanar.Elotag, tanar.MunkavallaloCsaladiNev, tanar.MunkavallaloUtonev);
dto.Tanar.Login = tanar.BelepesiNev ?? string.Empty;
dto.Tanar.Email = tanar.Email ?? string.Empty;
dto.Tanar.Telefon = tanar.Telefon ?? string.Empty;
dto.Tanar.Id = tanar.Id.Value;
}
private DiakolimpiaSearchPCO ConvertSearchCOToPCO(DiakolimpiaSearchCO searchCO)
{
return new DiakolimpiaSearchPCO
{
SearchNev = searchCO.SearchNev,
SearchSzuletesiDatumtol = searchCO.SearchSzuletesiDatumtol,
SearchSzuletesiDatumig = searchCO.SearchSzuletesiDatumig,
SearchAnyjaNeve = searchCO.SearchAnyjaNeve,
SearchOktatasiAzonosito = searchCO.SearchOktatasiAzonosito,
SearchOsztalya = searchCO.SearchOsztalya
};
}
}
}

View file

@ -0,0 +1,563 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic;
using Kreta.Client.CoreApi;
using Kreta.Client.CoreApi.Request;
using Kreta.Client.CoreApi.Response;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Core.Validation.Exceptions;
using Kreta.Core.Validation.Exceptions.Enum;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Entities;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.Helpers
{
public class DktFeladatHelper : LogicBase
{
#region Constructors
public DktFeladatHelper(IConnectionType connectionType) : base(connectionType) { }
#endregion Constructors
#region CoreApi hívások
/// INFO @DevKornel: Mobil használja
public int SaveOrUpdateTanarHaziFeladat(TanarHaziFeladatCO tanarHaziFeladatCo, int? ooTanarId, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var hazifeladatId = 0;
IIntezmeny intezmeny = h.IntezmenyDal().Get(tanarHaziFeladatCo.IntezmenyId);
ITanev tanev = h.TanevDal().Get(tanarHaziFeladatCo.TanevId);
var dktFileHelper = new DktFileHelper(new DalHandlerConnectionType(ConnectionType, h), fileServiceHelper);
if (!tanarHaziFeladatCo.Id.IsEntityId())
{
bool isOsztaly = h.OsztalyCsoport().GetIsOsztaly(tanarHaziFeladatCo.OsztalyCsoportId.Value);
bool isNapirend = !tanarHaziFeladatCo.Oraszam.HasValue;
var insertModel = new DKTFeladatInsertRequest
{
IntezmenyGuid = intezmeny.Guid.ToString(),
TanevSorszam = tanev.Sorszam.Value,
AlkalmazottId = ooTanarId.Value,
TantargyId = tanarHaziFeladatCo.TantargyId.Value,
OsztalyId = isOsztaly ? tanarHaziFeladatCo.OsztalyCsoportId : null,
CsoportId = !isOsztaly ? tanarHaziFeladatCo.OsztalyCsoportId : null,
OraDatum = tanarHaziFeladatCo.FeladasDatuma,
Oraszam = !isNapirend ? tanarHaziFeladatCo.Oraszam : null,
BeadasHatarido = tanarHaziFeladatCo.Hatarido,
Szoveg = tanarHaziFeladatCo.Szoveg
};
if (isNapirend && tanarHaziFeladatCo.Idopont.HasValue)
{
insertModel.OraIdopont = tanarHaziFeladatCo.FeladasDatuma.AddHours(tanarHaziFeladatCo.Idopont.Value.Hour).AddMinutes(tanarHaziFeladatCo.Idopont.Value.Minute);
}
DKTFeladatInsertResponse result = coreApiClient.DKTFeladatInsert(insertModel, tanarHaziFeladatCo.RogzitoId);
CheckResponse(result);
if (tanarHaziFeladatCo.CsatolmanyId.IsEntityId())
{
h.DKT_FileDAL().ConnectToHaziFeladat(IntezmenyId, TanevId, result.NewHazifeladatId, tanarHaziFeladatCo.CsatolmanyId.Value);
}
hazifeladatId = result.NewHazifeladatId;
}
else
{
hazifeladatId = tanarHaziFeladatCo.Id.Value;
var updateModel = new DKTFeladatUpdateRequest
{
IntezmenyGuid = intezmeny.Guid.ToString(),
TanevSorszam = tanev.Sorszam.Value,
AlkalmazottId = ooTanarId.Value,
Id = tanarHaziFeladatCo.Id.Value,
BeadasHatarido = tanarHaziFeladatCo.Hatarido,
Szoveg = tanarHaziFeladatCo.Szoveg
};
DKTFeladatResponse result = coreApiClient.DKTFeladatUpdate(updateModel, tanarHaziFeladatCo.RogzitoId);
CheckResponse(result);
if (tanarHaziFeladatCo.CsatolmanyId.IsEntityId())
{
h.DKT_FileDAL().ConnectToHaziFeladat(IntezmenyId, TanevId, tanarHaziFeladatCo.Id.Value, tanarHaziFeladatCo.CsatolmanyId.Value);
}
}
return hazifeladatId;
});
}
private void CheckResponse(DKTFeladatResponse response)
{
if (response.Status == 404)
{
throw new ValidationException(ValidationErrorType.ResourceNotFound, response.Exception?.Message ?? ErrorResource.AzElemNemTalalhato);
}
if (response.Exception != null && !string.IsNullOrWhiteSpace(response.Exception.Message))
{
throw new ValidationException(ValidationErrorType.Undefined, response.Exception.Message);
}
if (response.ValidationResult != null && response.ValidationResult.Tiltasok.Count > 0)
{
string message = string.Join(@"<\br>", response.ValidationResult.Tiltasok);
throw new ValidationException(ValidationErrorType.Undefined, message, response.ValidationResult.Tiltasok.Select((x, index) => new ValidationExceptionItem(x.Id ?? index.ToString(), x.Uzenet)));
}
if (response.Errors?.Any() ?? false)
{
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.HibaTortentAMuveletSoran, response.Errors.Select(l => new ValidationExceptionItem(l.Key, string.Join(" , ", l.Value))));
}
}
/// INFO @DevKornel: Mobil használja
public void DeleteHazi(int id, ICoreApiClient coreApiClient)
{
try
{
IDKT_Feladat dktFeladat = null;
IIntezmeny intezmeny = null;
ITanev tanev = null;
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
dktFeladat = dalHandler.DKT_FeladatDal().Get(id);
intezmeny = dalHandler.IntezmenyDal().Get(dktFeladat.IntezmenyId);
tanev = dalHandler.TanevDal().Get(dktFeladat.TanevId);
});
var deleteModel = new DKTFeladatDeleteRequest
{
IntezmenyGuid = intezmeny.Guid.ToString(),
TanevSorszam = tanev.Sorszam.Value,
AlkalmazottId = dktFeladat.RogzitoAlkalmazottId,
Id = id
};
DKTFeladatResponse result = coreApiClient.DKTFeladatDelete(deleteModel);
CheckResponse(result);
}
catch (Exception e)
{
throw new ValidationException(ValidationErrorType.Undefined, e.Message);
}
}
#endregion CoreApi hívások
#region CoreApi hívásnak kellene lennie! Egy elem, a hf id-ja alapján!
/// INFO: Mobil használja
public TanarHaziFeladatDetailCO GetTanarHaziFeladatDetail(int id, bool isTanariFelulet = false)
{
try
{
TanarHaziFeladatDetailCO result = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
IDKT_Feladat tanarHaziFeladat = dalHandler.DKT_FeladatDal().Get(id);
if (tanarHaziFeladat != null && !tanarHaziFeladat.Torolt)
{
if (!IsFelhasznaloJogosultHaziFeladat(FelhasznaloId, tanarHaziFeladat, dalHandler, isTanariFelulet))
{
throw new BlException(BlExceptionType.NincsJogosultsag);
}
var csatolmanyok = new DktFileHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetCsatolmanyokForHaziFeladat(tanarHaziFeladat.ID);
var tanarHaziFeladatDetailCo = new TanarHaziFeladatDetailCO(tanarHaziFeladat, csatolmanyok);
return tanarHaziFeladatDetailCo;
}
throw new BlException(BlExceptionType.NemLetezoEntitas);
});
return result;
}
catch (EntityNotFoundException)
{
throw new BlException(BlExceptionType.NemLetezoEntitas);
}
}
/// INFO: Mobil használja
private bool IsFelhasznaloJogosultHaziFeladat(int felhasznaloId, IDKT_Feladat tanarHaziFeladatEntity, IDalHandler dalHandler, bool isTanariFelulet)
{
bool isTanulo = tanarHaziFeladatEntity.OsztalyCsoport.Tanulo.Select(x => x.TanuloId).Contains(felhasznaloId);
bool isOrarendiOratTartoVagyHelyettesito = false;
if (tanarHaziFeladatEntity.OrarendiOraGroupId.IsEntityId())
{
IOrarendiOra orarendiOra = dalHandler.OrarendiOra().Get(tanarHaziFeladatEntity.OrarendiOraGroupId.Value);
isOrarendiOratTartoVagyHelyettesito =
tanarHaziFeladatEntity.OrarendiOraGroupId != null &&
(orarendiOra.TanarId == felhasznaloId || orarendiOra.HelyettesTanarok.Select(x => x.HelyettesTanarokId).Contains(felhasznaloId));
}
bool isTanitasiOratTartoVagyHelyettesito = false;
if (tanarHaziFeladatEntity.TanitasiOraId.IsEntityId())
{
ITanitasiOra tanitasiOra = dalHandler.TanitasiOra().Get(tanarHaziFeladatEntity.TanitasiOraId.Value);
isTanitasiOratTartoVagyHelyettesito =
tanarHaziFeladatEntity.TanitasiOraId != null &&
(tanitasiOra.TanarId == felhasznaloId || tanitasiOra.HelyettesitoTanarId == felhasznaloId);
}
bool isHaziFeladatHelyettesito = tanarHaziFeladatEntity.HelyettesitoAlkalmazottId == felhasznaloId;
var result = isTanulo || isOrarendiOratTartoVagyHelyettesito || isTanitasiOratTartoVagyHelyettesito || isHaziFeladatHelyettesito || tanarHaziFeladatEntity.AlkalmazottId == felhasznaloId || tanarHaziFeladatEntity.RogzitoAlkalmazottId == felhasznaloId || isTanariFelulet;
return result;
}
#endregion CoreApi hívásnak kellene lennie! Egy elem, a hf id-ja alapján!
#region CoreApi hívásnak kellene lennie! Egy elem, az adott órarendi óra/tanítási órához tartozó tanár által feladott házifeladat kell!
public HaziFeladatokTabCO GetHaziFeladatTabCo(int eventId, CalendarOraTypeEnum oraType, DateTime date, bool isTanuloOrGondviselo, int feladatTipusId = (int)FeladatTipusEnum.HaziFeladat)
{
var haziFeladatokTabCo = new HaziFeladatokTabCO();
HaziFeladatokTabCO result = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
ITanitasiOra tanora = null;
IOrarendiOra orarendiOra = null;
switch (oraType)
{
case CalendarOraTypeEnum.TanitasiOra:
tanora = dalHandler.TanitasiOra().Get(eventId);
break;
case CalendarOraTypeEnum.OrarendiOra:
orarendiOra = dalHandler.OrarendiOra().Get(eventId);
break;
}
haziFeladatokTabCo.OraType = oraType;
haziFeladatokTabCo.OraDate = date;
if (tanora != null)
{
haziFeladatokTabCo.OraId = tanora.ID;
DataSet dataSet = dalHandler.DKT_FeladatDal().GetHaziFeladatForTanitasiOra(tanora.ID, null, feladatTipusId);
haziFeladatokTabCo.TanarHaziFeladat = GetTanarHaziFeladatDetailCo(dalHandler, dataSet, isTanuloOrGondviselo);
if (haziFeladatokTabCo.TanarHaziFeladat.Id.IsEntityId())
{
if (!haziFeladatokTabCo.TanarHaziFeladat.IsTanarRogzitette)
{
haziFeladatokTabCo.TanarHaziFeladat.Szoveg = OrarendResource.EhhezAzOrahozATanarMegNemRogzitettHaziFeladatotAzOnlineFeluleten;
}
}
else
{
haziFeladatokTabCo.TanarHaziFeladat.Rogzito = tanora.Tanar.NyomtatasiNev;
haziFeladatokTabCo.TanarHaziFeladat.FeladasDatuma = tanora.Datum;
haziFeladatokTabCo.TanarHaziFeladat.Szoveg = OrarendResource.EhhezAzOrahozATanarMegNemRogzitettHaziFeladatotAzOnlineFeluleten;
}
}
else if (orarendiOra != null)
{
haziFeladatokTabCo.OraId = orarendiOra.ID;
DataSet dataSet = dalHandler.DKT_FeladatDal().GetHaziFeladatForOrarendiOra(haziFeladatokTabCo.OraId.Value, date, null, null, feladatTipusId);
TanarHaziFeladatDetailCO tanarHazi = GetTanarHaziFeladatDetailCo(dalHandler, dataSet, isTanuloOrGondviselo);
if (tanarHazi?.Id != null && tanarHazi.Id > 0)
{
haziFeladatokTabCo.TanarHaziFeladat = tanarHazi;
if (!haziFeladatokTabCo.TanarHaziFeladat.IsTanarRogzitette)
{
haziFeladatokTabCo.TanarHaziFeladat.Szoveg = OrarendResource.EhhezAzOrahozATanarMegNemRogzitettHaziFeladatotAzOnlineFeluleten;
}
}
else
{
haziFeladatokTabCo.TanarHaziFeladat.Rogzito = orarendiOra.Tanar.NyomtatasiNev;
haziFeladatokTabCo.TanarHaziFeladat.FeladasDatuma = date;
haziFeladatokTabCo.TanarHaziFeladat.Szoveg = OrarendResource.EhhezAzOrahozATanarMegNemRogzitettHaziFeladatotAzOnlineFeluleten;
}
}
return haziFeladatokTabCo;
});
return result;
}
public TanarHaziFeladatDetailCO GetTanitasiOraHaziFeladatDetail(int? oraId, OktNevelesiKategoriaEnum? kategoria, bool isTanuloOrGondviselo)
{
if (!oraId.IsEntityId())
{
return new TanarHaziFeladatDetailCO();
}
TanarHaziFeladatDetailCO result = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
DataSet dataSet = dalHandler.DKT_FeladatDal().GetHaziFeladatForTanitasiOra(oraId.Value, kategoria);
TanarHaziFeladatDetailCO tanarHaziFeladatDetailCo = GetTanarHaziFeladatDetailCo(dalHandler, dataSet, isTanuloOrGondviselo);
return tanarHaziFeladatDetailCo;
});
return result;
}
public TanarHaziFeladatDetailCO GetOrarendiOraHaziFeladatDetail(int? orarendiOraId, DateTime? date, bool isTanuloOrGondviselo, int? oraszam = null, OktNevelesiKategoriaEnum? kategoria = null)
{
if (!orarendiOraId.IsEntityId())
{
return new TanarHaziFeladatDetailCO();
}
TanarHaziFeladatDetailCO result = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
DataSet dataSet = dalHandler.DKT_FeladatDal().GetHaziFeladatForOrarendiOra(orarendiOraId.Value, date, oraszam, kategoria);
TanarHaziFeladatDetailCO tanarHaziFeladatDetailCo = GetTanarHaziFeladatDetailCo(dalHandler, dataSet, isTanuloOrGondviselo);
return tanarHaziFeladatDetailCo;
});
return result;
}
private TanarHaziFeladatDetailCO GetTanarHaziFeladatDetailCo(IDalHandler dalHandler, DataSet dataSet, bool isTanuloOrGondviselo)
{
var tanarHaziFeladatDetailCo = new TanarHaziFeladatDetailCO();
if (dataSet?.Tables[0]?.Rows.Count > 0)
{
DataRow dataRow = dataSet.Tables[0].Rows[0];
DateTime? lathatosagIdopont = SDAConvert.ToDateTime(dataRow["LathatosagIdopont"]);
if (IsDktFeladatLathato(isTanuloOrGondviselo, lathatosagIdopont))
{
tanarHaziFeladatDetailCo.Id = SDAConvert.ToInt32(dataRow["ID"]);
tanarHaziFeladatDetailCo.FeladasDatuma = SDAConvert.ToDateTime(dataRow["FeladasDatuma"]).Value;
tanarHaziFeladatDetailCo.Hatarido = SDAConvert.ToDateTime(dataRow["Hatarido"]);
tanarHaziFeladatDetailCo.IsTanarRogzitette = SDAConvert.ToBoolean(dataRow["IsTanarRogzitette_BOOL"]);
tanarHaziFeladatDetailCo.Oraszam = SDAConvert.ToNullableInt32(dataRow["Oraszam"]);
tanarHaziFeladatDetailCo.OsztalyCsoport = SDAConvert.ToString(dataRow["OsztCsop"]);
tanarHaziFeladatDetailCo.OsztalyCsoportId = SDAConvert.ToInt32(dataRow["OsztalyCsoportId"]);
tanarHaziFeladatDetailCo.Rogzito = SDAConvert.ToString(dataRow["HelyettesitoTanarNev"], SDAConvert.ToString(dataRow["Rogzito"]));
tanarHaziFeladatDetailCo.RogzitoId = SDAConvert.ToInt32(dataRow["RogzitoId"]);
tanarHaziFeladatDetailCo.Szoveg = SDAConvert.ToString(dataRow["Szoveg"]);
tanarHaziFeladatDetailCo.TanitasiOraId = SDAConvert.ToNullableInt32(dataRow["TanoraId"]);
tanarHaziFeladatDetailCo.Tantargy = SDAConvert.ToString(dataRow["Tantargy"]);
tanarHaziFeladatDetailCo.RogzitesIdopontja = SDAConvert.ToDateTime(dataRow["HaziFeladatTenylegesRogzitesDatuma"]).Value;
tanarHaziFeladatDetailCo.FeladatTipusId = SDAConvert.ToInt32(dataRow["FeladatTipusId"]);
tanarHaziFeladatDetailCo.IsLathato = SDAConvert.ToBoolean(dataRow["IsLathato_BOOL"]);
}
}
if (tanarHaziFeladatDetailCo.Id.IsEntityId())
{
var csatolmanyok = new DktFileHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetCsatolmanyokForHaziFeladat(tanarHaziFeladatDetailCo.Id.Value);
foreach ((int csatolmanyId, string fajlNev) in csatolmanyok)
{
tanarHaziFeladatDetailCo.Csatolmanyok.Add(csatolmanyId, fajlNev);
}
}
return tanarHaziFeladatDetailCo;
}
#endregion CoreApi hívásnak kellene lennie! Egy elem, az adott órarendi óra/tanítási órához tartozó tanár által feladott házifeladat kell!
#region CoreApi hívásnak kellene lennie! Lista, szűrési paraméterekkel!
/// INFO: Mobil használja
public DataSet GetTanuloHaziFeladat(TanuloHaziFeladatSearchCO haziFeladatKereso, OktNevelesiKategoriaEnum? feladatKategoria, bool isFromMobil, bool isTanuloOrGondviselo)
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
dalHandler.DKT_FeladatDal(GridParameters).GetTanuloHaziFeladat(IntezmenyId, TanevId, FelhasznaloId, feladatKategoria, haziFeladatKereso.ConvertCoToPco()));
//NOTE: Azért haladunk visszafelé, hogy tudjuk az esetleges nem szükséges sorokat törölni!
for (int index = dataSet.Tables[0].Rows.Count - 1; index >= 0; index--)
{
DataRow dataRow = dataSet.Tables[0].Rows[index];
DateTime? lathatosagIdopont = SDAConvert.ToDateTime(dataRow["LathatosagIdopont"]);
if (IsDktFeladatLathato(isTanuloOrGondviselo, lathatosagIdopont))
{
string haziFeladatSzovege = isFromMobil ? SDAConvert.ToString(dataRow["HaziFeladatSzoveg"]) : RichTextLogic.CutHtmlTagsAndDecode(SDAConvert.ToString(dataRow["HaziFeladatSzoveg"]));
if (!isFromMobil)
{
string helyettesitoTanarNev = SDAConvert.ToString(dataRow["HelyettesitoNev"]);
if (!string.IsNullOrWhiteSpace(helyettesitoTanarNev))
{
dataRow["TanarNeve"] = helyettesitoTanarNev;
}
string[] splittedSzoveg = haziFeladatSzovege.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
var stringBuilder = new StringBuilder();
foreach (string szovegResz in splittedSzoveg)
{
if (stringBuilder.Length + szovegResz.Length + 1 > 100)
{
stringBuilder.Append("...");
break;
}
if (stringBuilder.Length > 0)
{
stringBuilder.Append(" ");
}
stringBuilder.Append(szovegResz);
}
string rovidHazifeladatSzoveg = stringBuilder.ToString();
dataRow["HaziFeladatSzoveg"] = rovidHazifeladatSzoveg;
}
}
else
{
dataSet.Tables[0].Rows.Remove(dataRow);
}
}
return dataSet;
}
/// INFO @DevKornel: Mobil használja
public List<IDKT_Feladat> GetFeladatokByDateRange(DateTime start, DateTime end, bool isTanuloOrGondviselo, FeladatTipusEnum? feladatTipus = null)
{
List<IDKT_Feladat> result = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
IDKT_FeladatDal dal = dalHandler.DKT_FeladatDal(GridParameters);
DataSet dataSet = dal.GetFeladatokByDateRange(IntezmenyId, TanevId, start, end, (int?)feladatTipus);
var feladatList = new List<IDKT_Feladat>();
if (dataSet.Tables.Count > 0 && dataSet.Tables[0].Rows.Count > 0)
{
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
DateTime? lathatosagIdopont = SDAConvert.ToDateTime(dataRow["LathatosagIdopont"]);
if (IsDktFeladatLathato(isTanuloOrGondviselo, lathatosagIdopont))
{
IDKT_Feladat feladat = dal.Get();
feladat.ID = SDAConvert.ToInt32(dataRow["ID"]);
feladat.Datum = SDAConvert.ToDateTime(dataRow["Datum"], DateTime.MinValue).Value;
feladat.OrarendiOraGroupId = SDAConvert.ToInt32(dataRow["OrarendiOraGroupId"]);
feladat.TanitasiOraId = SDAConvert.ToInt32(dataRow["TanitasiOraId"]);
feladat.BeadasHatarido = SDAConvert.ToDateTime(dataRow["BeadasHatarido"], DateTime.MinValue).Value;
feladat.AlkalmazottId = SDAConvert.ToInt32(dataRow["Tanar"]);
feladat.TantargyId = SDAConvert.ToInt32(dataRow["Tantargy"]);
feladat.OsztalyCsoportId = SDAConvert.ToInt32(dataRow["OsztalyCsoport"]);
feladat.Oraszam = SDAConvert.ToNullableInt32(dataRow["Oraszam"]);
feladat.FeladatTipusId = SDAConvert.ToInt32(dataRow["FeladatTipusId"]);
feladat.GroupId = SDAConvert.ToNullableGuid(dataRow["GroupId"]);
if (!feladat.Oraszam.HasValue)
feladat.Idopont = SDAConvert.ToDateTime(dataRow["Idopont"]);
feladatList.Add(feladat);
}
}
}
return feladatList;
});
return result;
}
public bool HasOrarendiOraKapcsolodoHazifeladatot(int? orarendiOraGroupId, DateTime oraErvenyessegKezdete, DateTime oraErvenyessegVege, bool idoszakonKivul = true)
{
if (!orarendiOraGroupId.IsEntityId())
{
return false;
}
bool result = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
dalHandler.DKT_FeladatDal().HasOrarendiOraKapcsolodoHazifeladatot(TanevId, orarendiOraGroupId.Value, oraErvenyessegKezdete, oraErvenyessegVege, idoszakonKivul));
return result;
}
#endregion CoreApi hívásnak kellene lennie! Lista, szűrési paraméterekkel!
private static bool IsDktFeladatLathato(bool isTanuloOrGondviselo, DateTime? lathatosagIdopont)
{
bool result = false;
//NOTE: Ha a felhasználó felhasználó tanuló vagy gondviselő, csak abban az esetben jelenhet meg a Dkt feladat, ha
// - van beállítva láthatóság időpont és
// - a láthatóság időpontnak dátuma kisebb vagy egyenlő, mint a mai nap dátuma.
if (isTanuloOrGondviselo)
{
if (lathatosagIdopont.HasValue && lathatosagIdopont.Value.Date <= DateTime.Today)
{
result = true;
}
}
//NOTE: Ha a felhasználó nem tanuló és nem gondviselő, minden esetben jelenjen meg a Dkt feladat.
else
{
result = true;
}
return result;
}
public void UpdateDktFeladatTanitasiOra(int tanitasiOraId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanarHaziFeladatDetailCO = GetTanitasiOraHaziFeladatDetail(tanitasiOraId, null, false);
if (tanarHaziFeladatDetailCO.Id.IsEntityId())
{
var dktFeladatDal = h.DKT_FeladatDal();
var hazifeladat = dktFeladatDal.Get(tanarHaziFeladatDetailCO.Id.Value);
if (!hazifeladat.TanitasiOraId.IsEntityId())
{
hazifeladat.TanitasiOraId = tanitasiOraId;
dktFeladatDal.Update(hazifeladat);
}
}
});
}
public void DeleteDktFeladatTanitasiOra(int tanitasiOraId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanarHaziFeladatDetailCO = GetTanitasiOraHaziFeladatDetail(tanitasiOraId, null, false);
if (tanarHaziFeladatDetailCO.Id.IsEntityId())
{
var dktFeladatDal = h.DKT_FeladatDal();
var hazifeladat = dktFeladatDal.Get(tanarHaziFeladatDetailCO.Id.Value);
hazifeladat.TanitasiOraId = null;
dktFeladatDal.Update(hazifeladat);
}
});
}
}
}

View file

@ -0,0 +1,246 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Utils;
using Kreta.Client.FileService.Request;
using Kreta.Client.FileService.Response;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class DktFileHelper : LogicBase
{
#region Fields
private readonly IFileServiceHelper fileServiceHelper;
#endregion Fields
#region Constructors
public DktFileHelper(IConnectionType connectionType, IFileServiceHelper fileServiceHelper) : base(connectionType)
{
this.fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
}
public DktFileHelper(IConnectionType connectionType) : base(connectionType) { }
#endregion Constructors
#region FileService Functions
public void DeleteCsatolmany(int id, bool withFileServiceDelete)
{
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
if (withFileServiceDelete)
{
IDKT_File csatolmany = dalHandler.DKT_FileDAL().Get(id);
if (!fileServiceHelper.Delete(IntezmenyAzonosito, new FileDeleteRequest(csatolmany.Utvonal, csatolmany.FileGuid.Value)))
{
throw new BlException(ErrorResource.FajlTorleseSikertelen);
}
}
dalHandler.DKT_FileDAL().Delete(id, FelhasznaloId);
});
}
public (string Name, byte[] Data) GetCsatolmanyData(IDalHandler h, int id)
{
IDKT_File csatolmany = h.DKT_FileDAL().Get(id);
var fileName = string.Concat(csatolmany.FileNev.TrimEnd('.'), '.', csatolmany.Extension.TrimStart('.'));
var fileContent = fileServiceHelper.GetFile(IntezmenyAzonosito, new GetUrlRequest(csatolmany.Utvonal, csatolmany.FileGuid.Value, fileName));
byte[] data = null;
if (!string.IsNullOrWhiteSpace(fileContent.Tartalom))
data = Convert.FromBase64String(fileContent.Tartalom);
return (fileName, data);
}
/// INFO @Tojcsi: Mobil használja
public (string Name, byte[] Data) GetCsatolmanyData(IDKT_File csatolmany)
{
var fileName = string.Concat(csatolmany.FileNev.TrimEnd('.'), '.', csatolmany.Extension.TrimStart('.'));
var fileContent = fileServiceHelper.GetFile(IntezmenyAzonosito, new GetUrlRequest(csatolmany.Utvonal, csatolmany.FileGuid.Value, fileName));
byte[] data = Convert.FromBase64String(fileContent.Tartalom);
return (fileName, data);
}
public FileDownloadCO GetCsatolmanyFile(int id)
{
var (Name, Data) = Dal.CustomConnection.Run(ConnectionType, dalHandler => GetCsatolmanyData(dalHandler, id));
return new FileDownloadCO() { Stream = new MemoryStream(Data), FileName = Name };
}
public int? UploadCsatolmany(string fileName, byte[] content, string contentType, int hazifeladatId, Guid globalIntezmenyId)
{
string path = $"DKT/{globalIntezmenyId}/{TanevId}/hazifeladatok/{hazifeladatId}";
FileUploadResponse fileUploadResponse = fileServiceHelper.Upload(new DKT_FileUploadRequest(fileName, content, contentType, path));
if (fileUploadResponse.IsSuccess)
{
int result = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
IDKT_FileDAL dktFileDal = dalHandler.DKT_FileDAL();
IDKT_File csatolmany = dktFileDal.Get();
csatolmany.FeltoltesDatum = DateTime.Now;
csatolmany.FileGuid = fileUploadResponse.FajlAzonosito;
csatolmany.FileSizeByte = fileUploadResponse.FajlMeretByteLength;
int lastIndex = fileName.LastIndexOf('.');
string fileNev = fileName.Substring(0, lastIndex);
string fileExt = fileName.Substring(lastIndex + 1);
csatolmany.FileNev = fileNev;
csatolmany.Extension = fileExt;
csatolmany.Utvonal = fileUploadResponse.Utvonal;
csatolmany.TanevId = TanevId;
csatolmany.IntezmenyId = IntezmenyId;
csatolmany.IntezmenyGuid = dalHandler.IntezmenyDal().Get(IntezmenyId).Guid.Value;
csatolmany.VeglegesitesDatum = DateTime.Now;
csatolmany.FeltoltoAlkalmazottId = FelhasznaloId;
var csatolmanyId = dktFileDal.Insert(csatolmany);
dktFileDal.ConnectToHaziFeladat(IntezmenyId, TanevId, hazifeladatId, csatolmanyId);
return csatolmanyId;
});
return result;
}
throw new BlException(ErrorResource.FajlFeltolteseSikertelen);
}
public int UploadFile(string fileName, byte[] content, string contentType, string path)
{
FileUploadResponse fileUploadResponse = fileServiceHelper.Upload(new FileUploadRequest(fileName, content, contentType, path));
if (fileUploadResponse.IsSuccess)
{
int result = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
IDKT_FileDAL dktFileDal = dalHandler.DKT_FileDAL();
IDKT_File csatolmany = dktFileDal.Get();
csatolmany.FeltoltesDatum = DateTime.Now;
csatolmany.FileGuid = fileUploadResponse.FajlAzonosito;
csatolmany.FileSizeByte = fileUploadResponse.FajlMeretByteLength;
int lastIndex = fileName.LastIndexOf('.');
string fileNev = fileName.Substring(0, lastIndex);
string fileExt = fileName.Substring(lastIndex + 1);
csatolmany.FileNev = fileNev;
csatolmany.Extension = fileExt;
csatolmany.Utvonal = fileUploadResponse.Utvonal;
csatolmany.TanevId = TanevId;
csatolmany.IntezmenyId = IntezmenyId;
csatolmany.IntezmenyGuid = dalHandler.IntezmenyDal().Get(IntezmenyId).Guid.Value;
csatolmany.VeglegesitesDatum = DateTime.Now;
csatolmany.FeltoltoAlkalmazottId = FelhasznaloId;
return dktFileDal.Insert(csatolmany);
});
return result;
}
throw new BlException(ErrorResource.FajlFeltolteseSikertelen);
}
#endregion
public double GetHaziFeladatCsatolmanyokOsszMeret(int? felhasznaloId = null)
{
double result = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.DKT_FileDAL().GetHaziFeladatCsatolmanyokOsszMeret(TanevId, felhasznaloId ?? FelhasznaloId));
return result;
}
public int GetMaxAdatmennyisegFelhasznalokent(int felhasznaloId)
{
IUserProfile userProfile = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Felhasznalo().Get(felhasznaloId).UserProfile.FirstOrDefault(x => !x.Torolt && x.TanevId == TanevId));
int result = userProfile?.OsszFeltolthetoFajlKb ?? Constants.General.MaxFeltolthetoAdatmennyisegInKByte;
return result;
}
public List<HaziFeladatCsatolmanyItemCo> GetHazifeladatCsatolmanyCoList(HFCsatolmanyokSearchCO co)
{
var result = new List<HaziFeladatCsatolmanyItemCo>();
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.DKT_FileDAL(GridParameters).GetHaziFeladatCsatolmanyok(TanevId, co.ConvertCoToPco()));
foreach (DataRow dataRow in dataSet.Tables[0].AsEnumerable())
{
result.Add(new HaziFeladatCsatolmanyItemCo(dataRow));
}
return result;
}
public List<(int CsatolmanyId, string FajlNev)> GetCsatolmanyokForHaziFeladat(int haziFeladatId)
{
DataSet dataSet = GetCsatolmanyokForHaziFeladatDataSet(haziFeladatId);
var result = new List<(int CsatolmanyId, string FajlNev)>();
foreach (DataRow row in dataSet.Tables[0].Rows)
{
int id = SDAConvert.ToInt32(row["ID"]);
string fajlNev = $"{SDAConvert.ToString(row["FajlNev"]).TrimEnd('.')}.{SDAConvert.ToString(row["FajlKiterjesztes"]).TrimStart('.')}";
result.Add((id, fajlNev));
}
return result;
}
public DataSet GetCsatolmanyokForHaziFeladatDataSet(int haziFeladatId)
{
DataSet result = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.DKT_FileDAL().GetCsatolmanyokForHaziFeladatDataSet(TanevId, IntezmenyId, haziFeladatId));
result.Tables[0].Columns.Add("FajlMeretMB", typeof(double));
foreach (DataRow dataRow in result.Tables[0].Rows)
{
double fajlMeret = SDAConvert.ToDouble(dataRow["FajlMeret"]);
dataRow["FajlMeretMB"] = CommonUtils.ConvertByteToMByte(fajlMeret);
}
return result;
}
/// INFO @Tojcsi: Mobil használja
public (bool jogosult, IDKT_File feltoltottFile) GetFile(IDalHandler h, int tanuloId, int fileId)
{
var file = h.DKT_FileDAL().Get(fileId);
if (file.Torolt)
{
throw new BlException(BlExceptionType.NemLetezoEntitas);
}
var jogosult = h.DKT_FileDAL().GetJogosultsag(tanuloId, fileId, TanevId);
return (jogosult, file);
}
public bool IsFelhasznaloToltotteFel(IDalHandler h, int id)
{
return h.DKT_FileDAL().Get(id).FeltoltoAlkalmazottId == FelhasznaloId;
}
}
}

View file

@ -0,0 +1,39 @@
using System.Collections.Generic;
using Kreta.BusinessLogic.HelperClasses.Dokumentum.TorzslapEsBizonyitvany;
using Kreta.Enums;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers.DokumentumHelpers
{
public class DokumentumNyelvesitesHelper
{
public void SetErtekelesek(List<ErtekelesDetails> data, string szorgalomIdegenNyelven, string magatartasIdegenNyelven)
{
foreach (var item in data)
{
if (item.TantargyNevIdegenNyelven == SzorgalomEsMagatartas.Szorgalom)
{
item.TantargyNevIdegenNyelven = szorgalomIdegenNyelven;
}
if (item.TantargyNevIdegenNyelven == SzorgalomEsMagatartas.Magatartas)
{
item.TantargyNevIdegenNyelven = magatartasIdegenNyelven;
}
item.NyelvesitettErtekeles =
!string.IsNullOrWhiteSpace(item.ErtekelesSzovegIdegenNyelven) ? item.ErtekelesSzovegIdegenNyelven
: !string.IsNullOrWhiteSpace(item.ErtekelesOsztalyzatIdegenNyelven) ? item.ErtekelesOsztalyzatIdegenNyelven
: !string.IsNullOrWhiteSpace(item.ErtekelesValueIdegenNyelven) ? item.ErtekelesValueIdegenNyelven
: !string.IsNullOrWhiteSpace(item.ErtekelesSzazalek) ? item.ErtekelesSzazalek
: item.ErtekelesMagyar;
}
}
public static bool IsNemzetiDokumentumNyelvActive(List<int> nemzetiDokumentumNyelvek, AnyanyelvEnum anyanyelvEnum)
{
var result = nemzetiDokumentumNyelvek.Contains((int)anyanyelvEnum);
return result;
}
}
}

View file

@ -0,0 +1,159 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Web;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Client.FileService.Request;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class DualisSzerzodesHelper : LogicBase
{
#region Fields
private readonly IFileServiceHelper fileServiceHelper;
#endregion Fields
#region Constructors
public DualisSzerzodesHelper(IConnectionType connectionType, IFileServiceHelper fileServiceHelper) : base(connectionType)
{
this.fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
}
public DualisSzerzodesHelper(IConnectionType connectionType) : base(connectionType) { }
#endregion Constructors
#region DualisSzerzodesFileService Functions
public DataSet GetTanarDualisSzerzodesek()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.DualisSzerzodesFileDal(GridParameters);
return dal.GetTanarDualisSzerzodesek(FelhasznaloId, TanevId);
});
}
public DataSet GetDualisSzerzodesek(DualisSzerzodesSearchCo searchCo)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.DualisSzerzodesFileDal(GridParameters);
return dal.GetDualisSzerzodesek(searchCo.ConvertToPCO(), TanevId);
});
}
public List<DualisSzerzodesCo> GetDualisSzerzodesekListajaCoList(DualisSzerzodesSearchCo searchCo)
{
DataSet dataSet = GetDualisSzerzodesek(searchCo);
var result = new List<DualisSzerzodesCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new DualisSzerzodesCo(dataRow);
result.Add(item);
}
return result;
}
public void SetFelhasznaloAltalTorolt(int id)
{
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
SetFelhasznaloAltalTorolt(dalHandler, id, true);
});
}
public (string Name, byte[] Data) GetFileData(int id)
{
IFile file = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.FileDAL().Get(id));
var fileName = string.Concat(file.FileNev.TrimEnd('.'), '.', file.Extension.TrimStart('.'));
var fileContent = fileServiceHelper.GetFile(IntezmenyAzonosito, new GetUrlRequest(file.Utvonal, file.FileGuid.Value, fileName));
byte[] data = Convert.FromBase64String(fileContent.Tartalom);
return (fileName, data);
}
public DualisSzerzodesCo Upload(HttpPostedFileBase postedFile, Guid globalIntezmenyId, int tanuloId)
{
string fileName = postedFile.FileName;
string contentType = postedFile.ContentType;
int contentLength = postedFile.ContentLength;
try
{
var ms = new MemoryStream(contentLength);
postedFile.InputStream.CopyTo(ms);
byte[] content = ms.ToArray();
ms.Dispose();
return Dal.CustomConnection.Run(ConnectionType, h =>
{
OsszesTorlese(tanuloId, h);
IDualisSzerzodesFileDal dualisSzerzodesFileDal = h.DualisSzerzodesFileDal();
IDualisSzerzodesFile dualisSzerzodesFile = dualisSzerzodesFileDal.Get();
string path = $"DualisSzerzodes/{globalIntezmenyId}/{TanevId}/{FelhasznaloId}/{tanuloId}";
var newFileId = new FileHelper(new DalHandlerConnectionType(ConnectionType, h), fileServiceHelper).UploadFile(fileName, content, contentType, path);
dualisSzerzodesFile.FileId = newFileId.Value;
dualisSzerzodesFile.TanuloId = tanuloId;
dualisSzerzodesFile.IntezmenyId = IntezmenyId;
dualisSzerzodesFile.TanevId = TanevId;
IFelhasznalo tanulo = h.Felhasznalo().Get(tanuloId);
dualisSzerzodesFileDal.Insert(dualisSzerzodesFile);
return ConvertToCo(tanuloId, dualisSzerzodesFile, tanulo);
});
}
catch (Exception)
{
throw new BlException(ErrorResource.FajlFeltolteseSikertelen);
}
}
private void OsszesTorlese(int tanuloId, IDalHandler dalHandler)
{
List<int> regiDualisSzerzodesFileIdList = dalHandler.DualisSzerzodesFileDal().GetDualisSzerzodesId(IntezmenyId, TanevId, FelhasznaloId, tanuloId);
foreach (var item in regiDualisSzerzodesFileIdList)
{
SetFelhasznaloAltalTorolt(dalHandler, item, true);
}
}
private void SetFelhasznaloAltalTorolt(IDalHandler dalHandler, int id, bool withFileServiceDelete)
{
IDualisSzerzodesFile dualisSzerzodesFile = dalHandler.DualisSzerzodesFileDal().Get(id);
dualisSzerzodesFile.IsAlkalmazottAltalTorolt = true;
dalHandler.DualisSzerzodesFileDal().Update(dualisSzerzodesFile);
}
private DualisSzerzodesCo ConvertToCo(int tanuloId, IDualisSzerzodesFile dualisSzerzodesFile, IFelhasznalo tanulo)
{
bool hasFile = dualisSzerzodesFile.File != null;
return new DualisSzerzodesCo
{
TanuloId = tanuloId,
FeltoltoId = FelhasznaloId,
SzerzodesFileId = dualisSzerzodesFile.ID,
FileId = hasFile ? dualisSzerzodesFile.File.ID : (int?)default,
Statusz = hasFile ? FileStatuszEnum.Feltoltve : FileStatuszEnum.NincsFeltoltve,
FileNev = hasFile ? string.Format("{0}.{1}", dualisSzerzodesFile.File.FileNev, dualisSzerzodesFile.File.Extension) : string.Empty,
FeltoltesDatuma = hasFile ? dualisSzerzodesFile.File.FeltoltesDatum : (DateTime?)default,
TanuloNev = tanulo.NyomtatasiNev
};
}
#endregion
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
namespace Kreta.BusinessLogic.Helpers
{
public class ElearningElerhetosegHelper : LogicBase
{
public ElearningElerhetosegHelper(IConnectionType connectionType) : base(connectionType) { }
public IEnumerable<string> GetElearningElerhetosegList(bool isGondviselo, bool isTanulo, int role, List<string> packages, int? gondviseloId)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h => h.ElearningElerhetosegDal().GetElearningElerhetosegDataSet(role, packages, TanevId, IntezmenyId, isGondviselo, isTanulo, FelhasznaloId, gondviseloId));
var courseIdList = new List<string>();
var now = DateTime.Now;
foreach (var course in ds.Tables[0].AsEnumerable())
{
var availabilityStartDate = course.Field<DateTime?>("elerhetosegKezdete");
var availabilityEndDate = course.Field<DateTime?>("elerhetosegVege") ?? now.AddYears(1);
if (availabilityStartDate <= now.Date && availabilityEndDate >= now.Date)
{
courseIdList.Add(course.Field<string>("azonosito"));
}
}
return courseIdList.Distinct();
}
}
}

View file

@ -0,0 +1,412 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.Enums;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class ErettsegiEredmenyekHelper : LogicBase
{
public ErettsegiEredmenyekHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet GetErettsegiEredmenyekGrid(int osztalyId)
{
var erettsegiEredmenyek = Dal.CustomConnection.Run(ConnectionType, h =>
{
var result = h.ErettsegiEredmeny(GridParameters).GetErettsegiEredmenyekData(osztalyId);
return result;
});
var dt = erettsegiEredmenyek.Tables[0];
dt.Columns.Add("SzuletesiIdoFormatted");
List<DataRow> rows = dt.Rows.Cast<DataRow>().ToList();
foreach (var row in rows)
{
row["SzuletesiIdoFormatted"] = SDAConvert.ToDateTime(row["SzuletesiIdo"]).ToShortDateString();
}
return erettsegiEredmenyek;
}
public DataSet GetErettsegiEredmenyekDetailGrid(int tanuloId)
{
DataSet erettsegiEredmenyekData = Dal.CustomConnection.Run(ConnectionType, h =>
{
var result = h.ErettsegiEredmeny(GridParameters).GetErettsegiEredmenyekReszletekData(IntezmenyId, TanevId, tanuloId);
return result;
});
bool isVegzos;
var helper = new FelhasznaloHelper(ConnectionType);
isVegzos = helper.GetVegzosEvfolyamTanulojaByUserId(tanuloId);
var dt = erettsegiEredmenyekData.Tables[0];
dt.Columns.Add("IsNew");
dt.Columns.Add("Szazalek");
dt.Columns.Add("Erdemjegy");
foreach (var row in dt.Rows.Cast<DataRow>().ToList())
{
row["IsNew"] = false;
}
if (isVegzos)
{
List<DataRow> erettsegiTantargyMagyarNyelvEsIrodalomIdList = erettsegiEredmenyekData.Tables[0].Select($"ErettsegiTantargyId = {(int)ErettsegiTantargyEnum.magyar_nyelv_es_irodalom}").ToList();
if (erettsegiTantargyMagyarNyelvEsIrodalomIdList.Count == 0)
{
var row = dt.NewRow();
row["ID"] = "tempMagyarNyelvEsIrodalomRowId";
row["ErettsegiTantargyId"] = (int)ErettsegiTantargyEnum.magyar_nyelv_es_irodalom;
row["IsNew"] = true;
dt.Rows.Add(row);
}
List<DataRow> erettsegiTantargyMatematikaIdList = erettsegiEredmenyekData.Tables[0].Select($"ErettsegiTantargyId = {(int)ErettsegiTantargyEnum.matematika}").ToList();
if (erettsegiTantargyMatematikaIdList.Count == 0)
{
var row = dt.NewRow();
row["ID"] = "tempMatematikaRowId";
row["ErettsegiTantargyId"] = (int)ErettsegiTantargyEnum.matematika;
row["IsNew"] = true;
dt.Rows.Add(row);
}
List<DataRow> erettsegiTantargyTortenelemIdList = erettsegiEredmenyekData.Tables[0].Select($"ErettsegiTantargyId = {(int)ErettsegiTantargyEnum.tortenelem}").ToList();
if (erettsegiTantargyTortenelemIdList.Count == 0)
{
var row = dt.NewRow();
row["ID"] = "tempTortenelemRowId";
row["ErettsegiTantargyId"] = (int)ErettsegiTantargyEnum.tortenelem;
row["IsNew"] = true;
dt.Rows.Add(row);
}
}
foreach (var row in dt.Rows.Cast<DataRow>().ToList())
{
int? osszMaxPontszam;
var irasbeliPontszam = SDAConvert.ToNullableInt32(row["IrasbeliPontszam"]);
if (SDAConvert.ToInt32(row["ErettsegiTantargyId"]) == (int)ErettsegiTantargyEnum.matematika && irasbeliPontszam.HasValue && irasbeliPontszam < 25)
{
osszMaxPontszam = SDAConvert.ToNullableInt32(row["OsszMaxPontszam"]) + 50;
}
else
{
osszMaxPontszam = SDAConvert.ToNullableInt32(row["OsszMaxPontszam"]);
}
double? szazalek = null;
string szazalekString;
int? osszPontszam = SDAConvert.ToNullableInt32(row["OsszPontszam"]);
string osszPontszamString;
if (osszPontszam.HasValue && osszMaxPontszam.HasValue)
{
if (osszMaxPontszam < osszPontszam)
{
osszPontszamString = ErettsegiEredmenyekResource.MagasabbAzOsszPontszamMintAMaxOsszPontszam;
szazalekString = ErettsegiEredmenyekResource.MagasabbAzOsszPontszamMintAMaxOsszPontszam;
}
else
{
osszPontszamString = $"{osszPontszam}/{osszMaxPontszam}";
szazalek = Math.Floor((double)osszPontszam.Value / osszMaxPontszam.Value * 100);
szazalekString = szazalek + "%";
}
}
else
{
osszPontszamString = osszMaxPontszam.HasValue ? $"-/{osszMaxPontszam}" : "-";
szazalekString = "-";
}
row["Szazalek"] = szazalekString;
row["OsszPontszam"] = osszPontszamString;
var erettsegiSzintId = SDAConvert.ToNullableInt32(row["ErettsegiSzintId"]);
string erdemjegyString;
if (erettsegiSzintId.IsEntityId() && szazalek.HasValue)
{
//NOTE: Az IsEntityId vizsgálat miatt nem lehet null az erettsegiSzintId!
if (erettsegiSzintId.Value == (int)ErettsegiSzintEnum.KozepSzint)
{
int erdemjegy;
if (0 <= szazalek.Value && szazalek.Value <= 24)
{
erdemjegy = 1;
}
else if (25 <= szazalek.Value && szazalek.Value <= 39)
{
erdemjegy = 2;
}
else if (40 <= szazalek.Value && szazalek.Value <= 59)
{
erdemjegy = 3;
}
else if (60 <= szazalek.Value && szazalek.Value <= 79)
{
erdemjegy = 4;
}
else if (80 <= szazalek.Value && szazalek.Value <= 100)
{
erdemjegy = 5;
}
else
{
throw new Exception("Hibás százalék érték!");
}
erdemjegyString = erdemjegy.ToString();
}
else if (erettsegiSzintId.Value == (int)ErettsegiSzintEnum.EmeltSzint)
{
int erdemjegy;
if (0 <= szazalek.Value && szazalek.Value <= 24)
{
erdemjegy = 1;
}
else if (25 <= szazalek.Value && szazalek.Value <= 32)
{
erdemjegy = 2;
}
else if (33 <= szazalek.Value && szazalek.Value <= 46)
{
erdemjegy = 3;
}
else if (47 <= szazalek.Value && szazalek.Value <= 59)
{
erdemjegy = 4;
}
else if (60 <= szazalek.Value && szazalek.Value <= 100)
{
erdemjegy = 5;
}
else
{
throw new Exception("Hibás százalék érték!");
}
erdemjegyString = erdemjegy.ToString();
}
else
{
erdemjegyString = "-";
}
}
else
{
erdemjegyString = "-";
}
row["Erdemjegy"] = erdemjegyString;
}
return erettsegiEredmenyekData;
}
public void SaveErettsegiEredmenyList(List<ErettsegiEredmenyItemCo> erettsegiEredmenyCoList)
{
foreach (var erettsegiEredmenyCo in erettsegiEredmenyCoList)
{
SaveOrUpdateErettsegiEredmeny(erettsegiEredmenyCo);
}
}
public void SaveOrUpdateErettsegiEredmeny(ErettsegiEredmenyItemCo co)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IErettsegiEredmenyDal dal = h.ErettsegiEredmeny();
bool isNew = !co.Id.IsEntityId();
//NOTE: Az IsEntityId vizsgálat miatt nem lehet null az co.Id!
IErettsegiEredmeny entity = isNew ? dal.Get() : dal.Get(co.Id.Value);
entity.ErettsegiSzint = co.ErettsegiSzintId;
entity.ErettsegiTantargy = co.ErettsegiTantargyId;
entity.ErettsegiTipus = co.ErettsegiTipusId;
entity.GyakorlatPontszam = co.GyakorlatiPontszam;
entity.IntezmenyId = co.IntezmenyId;
entity.IrasbeliPontszam = co.IrasbeliPontszam;
entity.Megjegyzes = co.Megjegyzes;
entity.OsszPontszam = co.OsszPontszam;
entity.SzobeliPontszam = co.SzobeliPontszam;
entity.TanevId = co.TanevId;
entity.TanuloId = co.TanuloId;
if (isNew)
{
dal.Insert(entity);
}
else
{
dal.FullUpdate(entity);
}
});
}
public void DeleteErettsegiEredmeny(int id)
{
Dal.CustomConnection.Run(ConnectionType, h => h.ErettsegiEredmeny().DeleteErettsegiEredmeny(id));
}
public IDictionary<string, string> GetErettsegiTantargyakForComboBox(string baseText = null)
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.ErettsegiEredmeny();
return dal.GetErettsegiTantargyakForComboBox(IntezmenyId, TanevId);
});
return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, sort: false);
}
public DataSet GetErettsegiTantargyakForValidate()
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.ErettsegiEredmeny();
return dal.GetErettsegiTantargyakForValidate(IntezmenyId, TanevId);
});
return result;
}
public IDictionary<string, string> GetErettsegiSzintekForComboBox(string baseText = null)
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.ErettsegiEredmeny();
return dal.GetErettsegiSzintekForComboBox(IntezmenyId, TanevId);
});
return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, false);
}
public IDictionary<string, string> GetErettsegiTipusokForComboBox(string baseText = null)
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.ErettsegiEredmeny();
return dal.GetErettsegiTipusokForComboBox(IntezmenyId, TanevId);
});
return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, false);
}
public IDictionary<string, int> GetErettsegiMaxPontszamList()
{
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.ErettsegiEredmeny();
return dal.GetErettsegiMaxPontszamList(IntezmenyId, TanevId);
});
var row = ds.Tables[0].Rows[0];
var maxPontszamDictionary = new Dictionary<string, int>
{
{"IrasbeliMaxPontszam", SDAConvert.ToInt32(row["IrasbeliMaxPontszam"])},
{"SzobeliMaxPontszam", SDAConvert.ToInt32(row["SzobeliMaxPontszam"])},
{"GyakorlatiMaxPontszam", SDAConvert.ToInt32(row["GyakorlatiMaxPontszam"])}
};
return maxPontszamDictionary;
}
public ErettsegiEredmenyItemCo GetErettsegiEredmeny(int erettsegiEredmenyId)
{
var searchCo = new ErettsegiEredmenyekKeresoCO
{
Id = erettsegiEredmenyId
};
return GetErettsegiEredmenyCoList(searchCo)[0];
}
public List<ErettsegiEredmenyItemCo> GetErettsegiEredmenyCoList(ErettsegiEredmenyekKeresoCO searchCo)
{
var coList = new List<ErettsegiEredmenyItemCo>();
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.ErettsegiEredmeny(GridParameters);
return dal.GetErettsegiEredmenyekData(IntezmenyId, TanevId, ErettsegiEredmenyekKeresoCO.ConvertCOToPCO(searchCo));
});
foreach (var row in ds.Tables[0].AsEnumerable())
{
coList.Add(new ErettsegiEredmenyItemCo(row));
}
return FilterErettsegiEredmenyCoList(coList, searchCo);
}
private List<ErettsegiEredmenyItemCo> FilterErettsegiEredmenyCoList(List<ErettsegiEredmenyItemCo> coList, ErettsegiEredmenyekKeresoCO searchCo)
{
if (searchCo == null)
{
return coList;
}
IEnumerable<ErettsegiEredmenyItemCo> result = coList;
if (!string.IsNullOrWhiteSpace(searchCo.Tanulo))
{
result = result.Where(x => x.Tanulo.ToComparableString().Contains(searchCo.Tanulo.ToComparableString()));
}
if (searchCo.OsztalyId.IsEntityId())
{
result = result.Where(x => x.OsztalyId == searchCo.OsztalyId);
}
if (!string.IsNullOrWhiteSpace(searchCo.OktatasiAzonosito))
{
result = result.Where(x => x.OktatasiAzonosito.ToComparableString().Contains(searchCo.OktatasiAzonosito.ToComparableString()));
}
if (!string.IsNullOrWhiteSpace(searchCo.Tantargy))
{
result = result.Where(x => x.Tantargy.ToComparableString().Contains(searchCo.Tantargy.ToComparableString()));
}
if (searchCo.SzintId.IsEntityId())
{
result = result.Where(x => x.ErettsegiSzintId == searchCo.SzintId);
}
if (searchCo.TipusId.IsEntityId())
{
result = result.Where(x => x.ErettsegiTipusId == searchCo.TipusId);
}
if (searchCo.SzobeliPontszam.HasValue)
{
result = result.Where(x => x.SzobeliPontszam == searchCo.SzobeliPontszam.Value);
}
if (searchCo.IrasbeliPontszam.HasValue)
{
result = result.Where(x => x.IrasbeliPontszam == searchCo.IrasbeliPontszam.Value);
}
if (searchCo.GyakorlatiPontszam.HasValue)
{
result = result.Where(x => x.GyakorlatiPontszam == searchCo.GyakorlatiPontszam.Value);
}
if (searchCo.OsszPontszam.HasValue)
{
result = result.Where(x => x.OsszPontszam == searchCo.OsszPontszam.Value);
}
if (!string.IsNullOrWhiteSpace(searchCo.Megjegyzes))
{
result = result.Where(x => x.Megjegyzes.ToComparableString().Contains(searchCo.Megjegyzes.ToComparableString()));
}
return result.ToList();
}
}
}

View file

@ -0,0 +1,371 @@
using System.Collections.Generic;
using System.Data;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
namespace Kreta.BusinessLogic.Helpers
{
public class EszkozHelper : LogicBase
{
public EszkozHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet EszkozKereses(EszkozokSearchCo co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.EszkozDal(GridParameters);
return dal.EszkozKereses(co.ConvertToPco());
});
}
public EszkozCO GetEszkozCo(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var oEszkoz = h.EszkozDal().Get(id);
EszkozCO co = new EszkozCO
{
Berelt = oEszkoz.Berelt.ToNullableInt(),
BeszerzesDatum = oEszkoz.BeszerzesDatum,
BeszerzesiAr = oEszkoz.BeszerzesiAr,
Darabszam = oEszkoz.Darabszam,
FokonyviSzam = oEszkoz.FokonyviSzam,
GyariSzam = oEszkoz.GyariSzam,
GyartasiEv = oEszkoz.GyartasiEv,
HalozatiKapcsolat = oEszkoz.HalozatiKapcsolat.ToNullableInt(),
Hordozhato = oEszkoz.Hordozhato.ToNullableInt(),
ID = oEszkoz.ID,
InternetKapcsolat = oEszkoz.InternetKapcsolat.ToNullableInt(),
Jelleg = oEszkoz.Jellege,
Kategoria = oEszkoz.Kategoria,
LeltariSzam = oEszkoz.LeltariSzam,
Megjegyzes = oEszkoz.Megjegyzes,
MennyisegiEgyseg = oEszkoz.MennyisegiEgyseg,
NemMukodik = oEszkoz.NemMukodik.ToNullableInt(),
Multimedias = oEszkoz.Multimedias.ToNullableInt(),
Nev = oEszkoz.Nev,
PedagogusHozzaferhet = oEszkoz.PedagogusHozzaferhet.ToNullableInt(),
Szallito = oEszkoz.Szallito,
SzemelyiFelelos = oEszkoz.Felelos == null ? (int?)null : oEszkoz.FelelosId,
FelelosNev = oEszkoz.Felelos == null ? "" : oEszkoz.Felelos.NyomtatasiNev,
TanuloHozzaferhet = oEszkoz.TanuloHozzaferhet.ToNullableInt(),
Tartozek = oEszkoz.Tartozek ?? false,
TartozekHivatkozas = oEszkoz.TartozekHivatkozas,
TeremID = oEszkoz.TeremId,
TeremNev = oEszkoz.Terem.Nev,
Tipus = oEszkoz.Tipus,
Celja = oEszkoz.Celja,
Vonalkod = oEszkoz.Vonalkod
};
return co;
});
}
public bool GetEszkozByName(string eszkozName, int? id, int teremId, int jelleg)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var helper = h.EszkozDal();
return helper.GetEszkozByName(eszkozName, TanevId, id, teremId, jelleg);
});
}
public bool GetEszkozByIds(string eszkozIdString, int teremId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var helper = h.EszkozDal();
return helper.GetEszkozByIds(eszkozIdString, TanevId, teremId);
});
}
public void InsertEszkozCo(EszkozCO eszkozCo)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
if (IsValid(eszkozCo))
{
var dal = h.EszkozDal(GridParameters);
var oEszkoz = ConvertEszkozCOToEszkoz(h, eszkozCo);
oEszkoz.TanevId = TanevId;
dal.Insert(oEszkoz);
}
});
}
public void UpdateEszkozCo(EszkozCO eszkozCo)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
if (IsValid(eszkozCo))
{
var dal = h.EszkozDal(GridParameters);
var oEszkoz = ConvertEszkozCOToEszkoz(h, eszkozCo, true);
oEszkoz.TanevId = TanevId;
dal.FullUpdate(oEszkoz);
}
});
}
public void UpdateCsopEszkoz(EszkozCO co)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var entity = h.EszkozDal().Get(co.ID.Value);
if (co.TeremID.HasValue)
{
entity.TeremId = co.TeremID.Value;
}
if (co.Tipus.HasValue)
{
entity.Tipus = co.Tipus.Value;
}
if (co.Kategoria.HasValue)
{
entity.Kategoria = co.Kategoria.Value;
}
if (co.BeszerzesDatum.HasValue)
{
entity.BeszerzesDatum = co.BeszerzesDatum.Value;
}
if (co.Darabszam.HasValue)
{
entity.Darabszam = co.Darabszam.Value;
}
if (co.SzemelyiFelelos.HasValue)
{
entity.FelelosId = co.SzemelyiFelelos.Value;
}
if (co.GyartasiEv.HasValue)
{
entity.GyartasiEv = co.GyartasiEv.Value;
}
if (co.PedagogusHozzaferhet.HasValue)
{
entity.PedagogusHozzaferhet = co.PedagogusHozzaferhet.ToBool();
}
if (co.TanuloHozzaferhet.HasValue)
{
entity.TanuloHozzaferhet = co.TanuloHozzaferhet.ToBool();
}
if (co.Multimedias.HasValue)
{
entity.Multimedias = co.Multimedias.ToBool();
}
if (co.HalozatiKapcsolat.HasValue)
{
entity.HalozatiKapcsolat = co.HalozatiKapcsolat.ToBool();
}
if (co.InternetKapcsolat.HasValue)
{
entity.InternetKapcsolat = co.InternetKapcsolat.ToBool();
}
if (co.Hordozhato.HasValue)
{
entity.Hordozhato = co.Hordozhato.ToBool();
}
if (co.Berelt.HasValue)
{
entity.Berelt = co.Berelt.ToBool();
}
if (co.Celja.HasValue)
{
entity.Celja = co.Celja.Value;
}
entity.Tartozek = co.Tartozek;
entity.TartozekHivatkozas = co.TartozekHivatkozas;
if (co.NemMukodik.HasValue)
{
entity.NemMukodik = co.NemMukodik.ToBool();
}
var dal = h.EszkozDal(GridParameters);
dal.FullUpdate(entity);
});
}
public void DeleteEszkoz(int id)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.EszkozDal(GridParameters);
dal.Delete(id);
});
}
public DataSet GetEszkozokForTerem(int teremId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.EszkozDal(GridParameters);
return dal.GetEszkozokWhereTeremID(teremId, TanevId);
});
}
private bool IsValid(EszkozCO eszkozCo)
{
bool ret = true;
try
{
if (string.IsNullOrWhiteSpace(eszkozCo.Nev))
{
ret = false;
}
else if (eszkozCo.TeremID < 1)
{
ret = false;
}
}
catch
{
ret = false;
}
return ret;
}
private IEszkoz ConvertEszkozCOToEszkoz(IDalHandler h, EszkozCO eszkozCo, bool isUpdate = false)
{
var dal = h.EszkozDal();
var oEszkoz = dal.Get();
if (isUpdate)
{
oEszkoz = dal.Get(eszkozCo.ID.Value);
}
//- TOKNOW: nem szükséges megnézni, hogy az eddigi értékhez képest változott-e, mert Framework szinten ezt még ellenőrizni fogja és nem módosít, ha nem változik az érték
oEszkoz.Berelt = eszkozCo.Berelt.ToBool();
if (eszkozCo.BeszerzesDatum.HasValue)
{
oEszkoz.BeszerzesDatum = eszkozCo.BeszerzesDatum.Value;
}
if (eszkozCo.BeszerzesiAr.HasValue)
{
oEszkoz.BeszerzesiAr = eszkozCo.BeszerzesiAr.Value;
}
if (eszkozCo.Celja.HasValue)
{
oEszkoz.Celja = eszkozCo.Celja.Value;
}
if (eszkozCo.Darabszam.HasValue)
{
oEszkoz.Darabszam = eszkozCo.Darabszam.Value;
}
oEszkoz.FokonyviSzam = eszkozCo.FokonyviSzam;
oEszkoz.GyariSzam = eszkozCo.GyariSzam;
if (eszkozCo.GyartasiEv.HasValue)
{
oEszkoz.GyartasiEv = eszkozCo.GyartasiEv.Value;
}
oEszkoz.HalozatiKapcsolat = eszkozCo.HalozatiKapcsolat.ToBool();
oEszkoz.Hordozhato = eszkozCo.Hordozhato.ToBool();
oEszkoz.InternetKapcsolat = eszkozCo.InternetKapcsolat.ToBool();
if (eszkozCo.Jelleg.HasValue)
{
oEszkoz.Jellege = eszkozCo.Jelleg.Value;
}
if (eszkozCo.Kategoria.HasValue)
{
oEszkoz.Kategoria = eszkozCo.Kategoria.Value;
}
oEszkoz.LeltariSzam = eszkozCo.LeltariSzam;
oEszkoz.Megjegyzes = eszkozCo.Megjegyzes;
if (eszkozCo.MennyisegiEgyseg.HasValue)
{
oEszkoz.MennyisegiEgyseg = eszkozCo.MennyisegiEgyseg.Value;
}
oEszkoz.Multimedias = eszkozCo.Multimedias.ToBool();
oEszkoz.Nev = eszkozCo.Nev;
oEszkoz.PedagogusHozzaferhet = eszkozCo.PedagogusHozzaferhet.ToBool();
oEszkoz.Szallito = eszkozCo.Szallito;
oEszkoz.TanuloHozzaferhet = eszkozCo.TanuloHozzaferhet.ToBool();
oEszkoz.Tartozek = eszkozCo.Tartozek;
oEszkoz.TartozekHivatkozas = eszkozCo.TartozekHivatkozas;
if (eszkozCo.Tipus.HasValue)
{
oEszkoz.Tipus = eszkozCo.Tipus.Value;
}
oEszkoz.Vonalkod = eszkozCo.Vonalkod;
oEszkoz.NemMukodik = eszkozCo.NemMukodik.ToBool();
//- TOKNOW: Update esetén vagy ID mezőt és Entitást is kap, vagy (a jobb megoldás, hogy) elég lehet az egyik is, de akkor FullUpdate()-et kell hívni!
if (eszkozCo.SzemelyiFelelos.HasValue)
{
oEszkoz.FelelosId = eszkozCo.SzemelyiFelelos.Value;
}
else
{
oEszkoz.FelelosId = -1;
}
if (eszkozCo.TeremID.HasValue && !eszkozCo.TeremID.Equals(oEszkoz.TeremId))
{
oEszkoz.TeremId = eszkozCo.TeremID.Value;
}
return oEszkoz;
}
public List<EszkozItemCo> GetEszkozCoList()
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.EszkozDal().GetEszkozDataSet(TanevId));
var result = new List<EszkozItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new EszkozItemCo(dataRow);
result.Add(item);
}
return result;
}
public IList<EszkozItemCo> GetEszkozKeresesExport(EszkozokSearchCo co)
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.EszkozDal().EszkozKeresesExport(co.ConvertToPco()));
var result = new List<EszkozItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new EszkozItemCo(dataRow);
result.Add(item);
}
return result;
}
}
}

View file

@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.Client.CoreApi;
using Kreta.Client.CoreApi.Response;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Validation.Exceptions;
using Kreta.Core.Validation.Exceptions.Enum;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Enums.ManualEnums;
namespace Kreta.BusinessLogic.Helpers
{
public class EszkozIgenylesHelper : LogicBase
{
public EszkozIgenylesHelper(IConnectionType connectionType) : base(connectionType)
{
}
public int EszkozIgenylesInsert(ICoreApiClient coreApiClient, EszkozIgenylesCreateDto dto, string intezmenyGuid, int tanevSorszam)
{
try
{
var response = coreApiClient.EszkozIgenylesInsert(dto, intezmenyGuid, tanevSorszam);
return response.NewId;
}
catch (Exception e)
{
throw new ValidationException(ValidationErrorType.Undefined, e.Message);
}
}
public void EszkozIgenylesUpdate(ICoreApiClient coreApiClient, EszkozIgenylesUpdateDto dto, string intezmenyGuid, int tanevSorszam)
{
try
{
var response = coreApiClient.EszkozIgenylesUpdate(dto, intezmenyGuid, tanevSorszam);
}
catch (Exception e)
{
throw new ValidationException(ValidationErrorType.Undefined, e.Message);
}
}
public List<EszkozIgenylesDto> EszkozIgenylesGet(ICoreApiClient coreApiClient, string intezmenyGuid, int tanevSorszam, int? alkalmazottId, int? gondviseloId)
{
try
{
var result = coreApiClient.EszkozIgenylesGet(intezmenyGuid, tanevSorszam);
if (alkalmazottId.HasValue)
{
result = result.Where(x => x.AlkalmazottId == alkalmazottId.Value).ToList();
}
if (gondviseloId.HasValue)
{
result = result.Where(x => x.GondviseloId == gondviseloId.Value).ToList();
}
return result;
}
catch (Exception e)
{
throw new ValidationException(ValidationErrorType.Undefined, e.Message);
}
}
public bool IsEszkozKiosztva(int tanuloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var eszkozIgenyles = h.EszkozigenylesDal();
var dataSet = eszkozIgenyles.IsEszkozKiosztva(IntezmenyId, TanevId, tanuloId);
if (dataSet.Tables[0].Rows.Count < 1)
{
return false;
}
return SDAConvert.ToBooleanFromTF(dataSet.Tables[0].Rows[0]["C_ISESZKOZKIOSZTVA"]);
});
}
public string EszkozUgyintezesUrl()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var intezmenyConfigHelper = new IntezmenyConfigHelper(new DalHandlerConnectionType(ConnectionType, h));
var eszkozUgyintezesUrl = intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.EszkozUgyintezes, IntezmenyConfigTipusEnum.Url);
return eszkozUgyintezesUrl;
});
}
}
}

View file

@ -0,0 +1,434 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Classes.ComboBox;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers
{
public class FeladatEllatasiHelyHelper : LogicBase
{
public FeladatEllatasiHelyHelper(IConnectionType connectionType) : base(connectionType) { }
public List<OktNevelesiKategoriaEnum> GetFeladatKategoriakForLogin(int aktTanevId, int? kovTanevId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.FeladatEllatasiHelyDal();
return dal.GetFeladatKategoriakForLogin(aktTanevId, kovTanevId, IntezmenyId);
});
}
public FeladatEllatasiHelyCO GetFeladatEllatasiHelyAdatok(int ID)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var feladathely = h.FeladatEllatasiHelyDal().Get(ID);
if (feladathely != null)
{
return new FeladatEllatasiHelyCO
{
ID = feladathely.ID,
OktatasiNevelesiFeladat = feladathely.OktatasiNevelesiFeladatTipus,
MukodesiHelyID = feladathely.MukodesiHelyId,
OktatasiNevelesiFeladatNev = feladathely.OktatasiNevelesiFeladatTipus.GetDisplayName<OktatasiNevelesiFeladatEnum>(TanevId).ReplaceMultipleSpacesAndTrim(),
MukodesiHelyNev = feladathely.MukodesiHely.Nev.ReplaceMultipleSpacesAndTrim(),
KIRFeladatellatasiHelySorszama = feladathely.FeladatellatasiHelyKod
};
}
return null;
});
}
public void SaveFeladatEllatasiHelyAdatok(FeladatEllatasiHelyCO model)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
if (!model.OktatasiNevelesiFeladat.IsEntityId())
{
throw new ArgumentNullException(nameof(model.OktatasiNevelesiFeladat));
}
var dal = h.FeladatEllatasiHelyDal(GridParameters);
var ellatottFeladatDal = h.OktatasNevelesiFeladatDal();
var entity = h.FeladatEllatasiHelyDal().Get();
if (model.ID.HasValue)
{
entity = dal.Get(model.ID.Value);
if (!ellatottFeladatDal.IsAzonosKategoria(entity.OktatasiNevelesiFeladatTipus, model.OktatasiNevelesiFeladat.Value))
{
if (dal.IsMukodesiHelyNemModosithato(entity.TanevId, entity.ID))
{
throw new BlException(ErrorResource.KoznevelesiFeladatNemModosithato);
}
}
}
entity.OktatasiNevelesiFeladatTipus = model.OktatasiNevelesiFeladat.Value;
entity.MukodesiHelyId = model.MukodesiHelyID;
entity.FeladatellatasiHelyKod = model.KIRFeladatellatasiHelySorszama;
entity.TanevId = model.TanevId;
if (model.ID.HasValue == false)
{
dal.Insert(entity);
}
else
{
dal.Update(entity);
}
});
}
public void FeladatEllatasiHelyTorles(int ID)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.FeladatEllatasiHelyDal(GridParameters);
dal.Delete(ID);
});
}
public DataSet GetFeladatEllatasiHelyByMukodesiHelyID(int mukodesiHelyID)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.FeladatEllatasiHelyDal(GridParameters);
var ds = dal.GetFeladatEllatasiHelyByMukodesiHelyID(mukodesiHelyID, TanevId);
return ds;
});
}
public DataSet GetFeladatellatasiHelyByFeladatellatasiHelyNev(string feladatellatasiHelyNev)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.FeladatEllatasiHelyDal(GridParameters);
var ds = dal.GetFeladatellatasiHelyByFeladatellatasiHelyNev(feladatellatasiHelyNev, TanevId);
return ds;
});
}
public List<int> GetGetFeladatEllatasiHelyIdListByMukodesiHelyID(int mukodesiHelyId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.FeladatEllatasiHelyDal(GridParameters);
var ds = dal.GetFeladatEllatasiHelyByMukodesiHelyID(mukodesiHelyId, TanevId);
var ret = new List<int>();
foreach (DataRow row in ds.Tables[0].Rows)
{
ret.Add(Convert.ToInt32(row["OktatasiNevelesiFeladatTipus"]));
}
return ret;
});
}
public DataSet GetFeladatellatasiHelyOsztalycsoportjai(int feladellHelyID)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.FeladatEllatasiHelyDal(GridParameters);
return dal.GetFeladatellatasiHelyOsztalycsoportjai(feladellHelyID, TanevId);
});
}
public DataSet GetFeladatellatasiHelyAlkalmazottjai(int feladellHelyID)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.FeladatEllatasiHelyDal(GridParameters);
return dal.GetFeladatellatasiHelyAlkalmazottjai(feladellHelyID, TanevId);
});
}
public DataSet GetFeladatellatasiHelyhezTartozoEvfolyamtipusokSzama(int feladHelyID)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.FeladatEllatasiHelyDal();
return dal.GetFeladatellatasiHelyhezTartozoEvfolyamtipusok(feladHelyID);
});
}
public IDictionary<string, string> GetFeladatEllatasiHelyDDl(string baseText = null, int? feladatKategoriaId = null, bool? hasKovTanev = null, int? customTanevId = null, bool forSzirStatTanulo = false)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanevId = customTanevId.HasValue ? customTanevId.Value : TanevId;
return LogicUtil.CreateDropdownContent(h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyekForkDropDown(tanevId, feladatKategoriaId: feladatKategoriaId, hasKovTanev: hasKovTanev, forSzirStatTanulo: forSzirStatTanulo), "ID", "Nev", baseText);
});
}
public List<ComboBoxListItem> GetFeladatEllatasiHelyDdlForEsl(string baseText = null)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dictionary = LogicUtil.CreateDropdownContent(h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyekForkDropDown(TanevId, true), "ID", "Nev", baseText);
var dropdownListItems = new List<ComboBoxListItem>();
foreach (var item in dictionary)
{
var comboBoxListItem = new ComboBoxListItem
{
Text = item.Value,
Value = item.Key
};
dropdownListItems.Add(comboBoxListItem);
}
return dropdownListItems;
});
}
public Dictionary<int, bool> GetFeladatellatasiHelyIsSzakkepzesesDictionary()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dictionary = new Dictionary<int, bool>();
var ds = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyekForkDropDown(TanevId);
if (ds.Tables[0].Rows.Count > 0)
{
var rows = ds.Tables[0].Rows;
foreach (DataRow row in rows)
{
var id = (int)row["ID"];
var isSzakkepzeses = IsSzakkepzesesOktNevFel((int)row["OktNevFel"]);
dictionary.Add(id, isSzakkepzeses);
}
}
return dictionary;
});
}
public Dictionary<int, bool> GetFeladatellatasiHelyIsNkt()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dictionary = new Dictionary<int, bool>();
var ds = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyekForkDropDown(TanevId);
if (ds.Tables[0].Rows.Count > 0)
{
var rows = ds.Tables[0].Rows;
foreach (DataRow row in rows)
{
var id = (int)row["ID"];
var isNkt = IsNKTSzakkepzesesOktNevFel((int)row["OktNevFel"]);
dictionary.Add(id, isNkt);
}
}
return dictionary;
});
}
public List<int> GetIdsBySelectedOktatasiNevelesiFeladat(int oktatasiNevelesiFeladatId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.FeladatEllatasiHelyDal(GridParameters).GetFeladatellatasiHelyIdsBySelectedOktatasiNevelesiFeladat(TanevId, oktatasiNevelesiFeladatId);
});
}
private bool IsSzakkepzesesOktNevFel(int oktNevFel)
{
return
oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakkozepiskola ||
oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakiskola ||
oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakgimnazium ||
oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakgimnazium_muveszeti_pedagogiai_kozmuvelodesi_ ||
oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakgimnazium_nemzetisegi_ ||
oktNevFel == (int)OktatasiNevelesiFeladatEnum.felnottkepzes ||
oktNevFel == (int)OktatasiNevelesiFeladatEnum.felnottoktatas ||
oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakkepzo_iskola ||
oktNevFel == (int)OktatasiNevelesiFeladatEnum.technikum
;
}
private bool IsNKTSzakkepzesesOktNevFel(int oktNevFel)
{
return IsSzakkepzesesOktNevFel(oktNevFel) ||
oktNevFel == (int)OktatasiNevelesiFeladatEnum.MuveszetiSzakgimnazium
;
}
public Dictionary<OsztalyJellemzoEnum, bool> GetOsztalyJellemzoi(int? osztalyId = null, int? tanulocsoportId = null)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var osztalycsoportId = osztalyId.HasValue ? osztalyId.Value : default;
if (!osztalycsoportId.IsEntityId() && tanulocsoportId.IsEntityId())
{
osztalycsoportId = h.TanuloCsoport().Get(tanulocsoportId.Value).OsztalyCsoportId;
}
var result = new Dictionary<OsztalyJellemzoEnum, bool>();
var ds = new DataSet();
if (osztalycsoportId.IsEntityId())
{
var feladHelyId = new OsztalyCsoportHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatEllatasiHelyByOsztalyId(osztalycsoportId);
ds = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyOktatasiNevelesiFeladatok(feladHelyId);
}
else
{
ds = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyekForkDropDown(TanevId);
}
result.Add(OsztalyJellemzoEnum.IsSzakkepzeses, IsSzakkepzesesDS(ds));
result.Add(OsztalyJellemzoEnum.IsNKTSzakkepzeses, IsNKTSzakkepzesesDS(ds));
return result;
});
}
public bool IsGimnazium(int osztalyId, int oktatasiNevelesiFeladatId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var feladatEllatasiHelyId = new OsztalyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetClassById(osztalyId).FeladatEllatasiHelyId;
var gimnaziumFeladHelyId = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatellatasiHelyIdsBySelectedOktatasiNevelesiFeladat(TanevId, oktatasiNevelesiFeladatId);
return gimnaziumFeladHelyId.Contains(feladatEllatasiHelyId);
});
}
public bool IsSzakkepzeses(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var ds = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyOktatasiNevelesiFeladatok(id);
return IsSzakkepzesesDS(ds);
});
}
private bool IsSzakkepzesesDS(DataSet ds)
{
if (ds.Tables[0].Rows.Count > 0)
{
var rows = ds.Tables[0].Rows;
foreach (DataRow row in rows)
{
if (IsSzakkepzesesOktNevFel((int)row["OktNevFel"]))
{
return true;
}
}
}
return false;
}
private bool IsNKTSzakkepzesesDS(DataSet ds)
{
if (ds.Tables[0].Rows.Count > 0)
{
var rows = ds.Tables[0].Rows;
foreach (DataRow row in rows)
{
if (IsNKTSzakkepzesesOktNevFel((int)row["OktNevFel"]))
{
return true;
}
}
}
return false;
}
#region Export
public byte[] GetMukodesiHelyekAdataiExcelExport()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.FeladatEllatasiHelyDal();
var dataTable = dal.GetMukodesiHelyekAdataiExcelExport(TanevId).Tables[0];
using (var stream = new MemoryStream())
{
using (var excel = new ExcelPackage(stream))
{
var workSheet = excel.Workbook.Worksheets.Add(IntezmenyResource.MukodesiHelyekAdatai);
workSheet.Cells[1, 1].LoadFromDataTable(dataTable, true);
ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, dataTable.Columns.Count]);
workSheet.Cells.AutoFitColumns();
excel.Save();
}
stream.Position = 0;
return stream.ToArray();
}
});
}
#endregion
public int GetMukodesiHelyIdByFeladatellatasiHelyId(int feladatellatasiHelyId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var feladatellatasiHely = h.FeladatEllatasiHelyDal().Get(feladatellatasiHelyId);
var result = feladatellatasiHely.MukodesiHelyId;
return result;
});
}
public int GetFeladatKategoriaId(int feladatEllatasiHelyId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.FeladatEllatasiHelyDal().GetFeladatKategoriaId(feladatEllatasiHelyId);
});
}
public bool IsAzonosKategoria(int oldFeladhelyId, int newFeladhelyId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.FeladatEllatasiHelyDal().IsAzonosKategoria(oldFeladhelyId, newFeladhelyId);
});
}
public List<OktNevelesiKategoriaEnum> GetFeladatKategoriak()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.FeladatEllatasiHelyDal().GetFeladatKategoriak(TanevId, IntezmenyId).Cast<OktNevelesiKategoriaEnum>().ToList();
});
}
public int GetKovTanevIdByAktTanevId(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var fDal = h.FeladatEllatasiHelyDal();
return fDal.GetKovTanevIdByAktTanevId(id);
});
}
}
}

View file

@ -0,0 +1,287 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.Framework;
using Kreta.Framework.Security;
using Kreta.Framework.Security.PasswordCrypting;
using Kreta.Resources;
using SDA.Kreta.Entities;
namespace Kreta.BusinessLogic.Helpers
{
public class FelhasznaloBelepesHelper : LogicBase
{
public FelhasznaloBelepesHelper(IConnectionType connectionType) : base(connectionType) { }
public LoginInfo AuthenticateUser(string bejelentkezesiNev, string plainPassword)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var loginInfo = GetLoginInfo(h, bejelentkezesiNev);
if (loginInfo.FelhasznaloId <= 0)
{
throw new UserNotFoundException(bejelentkezesiNev);
}
loginInfo.PasswordState = !loginInfo.JelszotKotelezoValtoztatni ? PasswordState.VALID : PasswordState.EXPIRED_BY_DATABASE;
#if !DEBUG
bool isInvalidPassword = string.IsNullOrWhiteSpace(plainPassword);
if (!isInvalidPassword)
{
if (!string.IsNullOrWhiteSpace(loginInfo.NeptunNaploJelszo))
{
isInvalidPassword = loginInfo.NeptunNaploJelszo != BasePasswordCrypter.EncodePasswordMD5(plainPassword);
}
else
{
isInvalidPassword = loginInfo.KodoltJelszo != BasePasswordCrypter.EncodePasswordSHA1(plainPassword, loginInfo.So);
}
}
if (isInvalidPassword)
{
// Első lépés, a jelszó rossz.
// Egyik algoritmus sem volt sikeres.
loginInfo.MeghiusultBelepes += 1;
h.FelhasznaloBelepes().UpdateMeghiusultBelepesek(loginInfo.BelepesId, loginInfo.MeghiusultBelepes);
loginInfo.PasswordState = PasswordState.INVALID;
}
else
{
// Első lépes, a jelszó jó, beengedjük.
h.FelhasznaloBelepes().UpdateMeghiusultBelepesek(loginInfo.BelepesId, 0);
loginInfo.PasswordState = PasswordState.VALID;
}
#endif
return loginInfo;
});
}
public void GrantLogin(int felhasznaloId, string bejelentkezesiNev, string plainPassword, int? gondviseloId = null, bool storedplain = false, bool kotelezoValtoztatni = false)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
h.FelhasznaloBelepes().GrantLogin(felhasznaloId, bejelentkezesiNev, plainPassword, TanevId, gondviseloId, storedplain, IntezmenyId, kotelezoValtoztatni);
});
}
public LoginInfo GetLoginInfo(string bejelentkezesiNev, Guid? idpUniqueId = null)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
return GetLoginInfo(h, bejelentkezesiNev, idpUniqueId);
});
}
private LoginInfo GetLoginInfo(IDalHandler h, string bejelentkezesiNev, Guid? idpUniqueId = null)
{
if (idpUniqueId.HasValue)
{
bejelentkezesiNev = h.Felhasznalo().GetBejelentkezesiNev(idpUniqueId.Value);
}
var belepes = GetBelepes(h, bejelentkezesiNev);
if (string.IsNullOrEmpty(belepes.Jelszo) && string.IsNullOrEmpty(belepes.NeptunNaploJelszo))
{
throw new DataIntegrityException(ErrorResource.NemLetezikAFelhasznalohozJelszo);
}
var elsodlegesEmailCim = belepes.GondviseloId > 0 ?
belepes.Gondviselo.Email.FirstOrDefault(x => !x.Torolt)?.EmailCim :
belepes.Felhasznalo.Email.FirstOrDefault(x => x.Alapertelmezett && !x.Torolt)?.EmailCim;
var loginInfo = new LoginInfo
{
UniqueIdentifier = belepes.FelhasznaloId,
FelhasznaloId = belepes.FelhasznaloId,
BelepesiNev = belepes.BejelentkezesiNev,
KodoltJelszo = belepes.Jelszo,
So = belepes.So,
NeptunNaploJelszo = belepes.NeptunNaploJelszo,
Vezeteknev = belepes.Felhasznalo.Vezeteknev,
Utonev = belepes.Felhasznalo.Utonev,
NyomtatasiNev = belepes.Felhasznalo.NyomtatasiNev,
AnyjaNeve = belepes.Felhasznalo.AnyjaNeve,
SzuletesiDatum = belepes.Felhasznalo.SzuletesiDatum,
SzuletesiHely = belepes.Felhasznalo.SzuletesiHely ?? string.Empty,
GondviseloId = belepes.GondviseloId > 0 ? belepes.GondviseloId : new int?(),
GondviseloNeve = belepes.GondviseloId > 0 ? belepes.Gondviselo.Nev : string.Empty,
FelhasznaloEgyediAzonosito = belepes.Felhasznalo.EgyediAzonosito,
FelhasznaloIdpEgyediAzonosito = belepes.Felhasznalo.IdpEgyediAzonosito,
GondviseloIdpEgyediAzonosito = belepes.GondviseloId > 0 ? (Guid?)belepes.Gondviselo.IdpEgyediAzonosito : null,
GondviseloEgyediAzonosito = belepes.GondviseloId > 0 ? belepes.Gondviselo.EgyediAzonosito : null,
IntezmenyId = belepes.IntezmenyId,
AktivTanevId = belepes.TanevId,
SelectedTanevId = belepes.TanevId,
IntezmenyAzonosito = belepes.Intezmeny.Azonosito,
AktivTanevEgyediAzonosito = belepes.Tanev.Sorszam,
IsDeniedSzirIntezmenyUser = IsDeniedSzirIntezmenyUser(belepes),
IsDeniedArchivIntezmenyUser = IsDeniedArchivIntezmenyUser(h, belepes.FelhasznaloId, belepes.IntezmenyId, belepes.TanevId),
ElsodlegesEmailCim = elsodlegesEmailCim,
BelepesId = belepes.ID,
MeghiusultBelepes = belepes.MeghiusultBelepesek.HasValue && belepes.MeghiusultBelepesek.Value != -1 ? belepes.MeghiusultBelepesek.Value : 0
};
if (belepes.UtolsoBelepes.HasValue)
{
loginInfo.UtolsoBelepesIdeje = belepes.UtolsoBelepes.Value;
}
if (belepes.KotelezoValtoztatni.HasValue)
{
loginInfo.JelszotKotelezoValtoztatni = belepes.KotelezoValtoztatni.Value;
}
if (belepes.MeghiusultBelepesek.HasValue)
{
loginInfo.MeghiusultBelepes = belepes.MeghiusultBelepesek.Value;
}
return loginInfo;
}
private static bool IsDeniedSzirIntezmenyUser(FelhasznaloBelepes belepes)
{
return !string.Equals(belepes.BejelentkezesiNev, "admin", StringComparison.OrdinalIgnoreCase) && !string.Equals(belepes.BejelentkezesiNev, "KRETA_TECHNICAL_FORI", StringComparison.OrdinalIgnoreCase) && belepes.Intezmeny.IntezmenyAdatok.First(x => x.TanevId == belepes.TanevId && !x.Torolt).IsSzirIntezmeny;
}
private static bool IsDeniedArchivIntezmenyUser(IDalHandler h, int userId, int intezmenyId, int tanevId)
{
return h.Felhasznalo().IsTanuloOrGondviselo(userId, intezmenyId, tanevId);
}
public void ChangeUserPassword(string bejelentkezesiNev, string newPassword, bool kotelezoValtoztatni = false)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var felhasznaloBelepes = GetBelepes(h, bejelentkezesiNev);
var salt = SaltGenerator.GenerateSalt();
var encodedPassword = BasePasswordCrypter.EncodePasswordSHA1(newPassword, salt);
felhasznaloBelepes.Jelszo = encodedPassword;
felhasznaloBelepes.So = salt;
felhasznaloBelepes.JelszoValtoztatasIdeje = DateTime.Now;
felhasznaloBelepes.KotelezoValtoztatni = kotelezoValtoztatni;
felhasznaloBelepes.NeptunNaploJelszo = null;
h.FelhasznaloBelepes().Update(felhasznaloBelepes);
});
}
private FelhasznaloBelepes GetBelepes(IDalHandler h, string bejelentkezesiNev)
{
var felhasznaloDal = h.Felhasznalo();
var belepesId = felhasznaloDal.GetAktualisFelhasznaloBelepesID(bejelentkezesiNev);
FelhasznaloBelepes belepes = null;
if (belepesId.IsEntityId())
{
belepes = h.FelhasznaloBelepes().Get(belepesId.Value) as FelhasznaloBelepes;
}
if (belepes != null && !belepesId.IsEntityId())
{
var kovBelepesId = felhasznaloDal.GetKovFelhasznaloBelepesID(bejelentkezesiNev);
if (kovBelepesId.IsEntityId())
{
throw new NextTanevBelepesException(bejelentkezesiNev);
}
throw new UserNotFoundException(bejelentkezesiNev);
}
if (belepes == null)
{
throw new UserNotFoundException(bejelentkezesiNev);
}
return belepes;
}
public FelhasznaloBelepesCo Get(string felhasznaloNev)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var ds = h.FelhasznaloBelepes().Get(felhasznaloNev);
if (ds?.Tables[0]?.Rows?.Count > 0)
{
var row = ds.Tables[0].Rows[0];
var co = new FelhasznaloBelepesCo();
co.Id = row.Field<int>("ID");
co.FelhasznaloId = row.Field<int>("C_FELHASZNALOID");
co.GondviseloId = row.Field<int?>("C_GONDVISELOID");
co.KotelezoValtoztatni = SDAConvert.ToBooleanFromTF(row.Field<string>("C_KOTELEZOVALTOZTATNI"));
co.MeghiusultBelepesek = SDAConvert.ToInt32(row.Field<int?>("C_MEGHIUSULTBELEPESEK"));
co.UtolsoBelepes = row.Field<DateTime?>("C_UTOLSOBELEPES");
co.JelszovaltoztatasIdeje = row.Field<DateTime?>("C_JELSZOVALTOZTATASIDEJE");
co.ElfogadottGdprNyilatkozat = SDAConvert.ToBooleanFromTF(row.Field<string>("C_ELFOGADOTTGDPRNYILATKOZAT"));
co.GdprElfogadasDatuma = row.Field<DateTime?>("C_GDPRELFOGADASDATUMA");
return co;
}
return null;
});
}
public List<FelhasznaloBelepesItemCo> GetFelhasznaloBelepesCoList(int? tanevId = null)
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.FelhasznaloBelepes().GetFehasznaloBelepesDataSet(tanevId ?? TanevId));
var result = new List<FelhasznaloBelepesItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new FelhasznaloBelepesItemCo(dataRow);
result.Add(item);
}
return result;
}
public bool IsUserNameExistsInTanev(string userName)
{
return Dal.CustomConnection.Run(ConnectionType, h => IsUserNameExistsInTanev(h, userName));
}
public bool IsUserNameExistsInTanev(string userName, int felhasznaloId, bool isgondviselo)
{
return Dal.CustomConnection.Run(ConnectionType, h => IsUserNameExistsInTanev(h, userName, felhasznaloId, isgondviselo));
}
private bool IsUserNameExistsInTanev(IDalHandler h, string userName, int? felhasznaloId = null, bool isgondviselo = false)
{
var dal = h.FelhasznaloBelepes();
return dal.IsUserNameExistsInTanev(userName, TanevId, felhasznaloId, isgondviselo);
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,192 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Logic.Feljegyzes;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
namespace Kreta.BusinessLogic.Helpers
{
public class FeljegyzesekHelper : LogicBase
{
public FeljegyzesekHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet FeljegyzesekKeresese(FeljegyzesekKereseseCO feljegyzesekKereseseCo)
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
List<int> szervezetIdList = null;
if (feljegyzesekKereseseCo.SzervezetId.IsEntityId())
{
szervezetIdList = h.SzervezetDal(GridParameters).GetLathatoSzervezetek(IntezmenyId, TanevId, feljegyzesekKereseseCo.SzervezetId.Value, (int)SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek);
}
var pco = feljegyzesekKereseseCo.ToPco(TanevId, szervezetIdList);
// NOTE: több felület is használja ugyanazt a lekérdezést, viszont az elektronikus üzenetek listája felületen le lett szedve a Fel.Kat. és a Fel.hely
// szűrő, ezért a default FeladatKategoriaId-t ebben az esetben ki kell ütni
if (feljegyzesekKereseseCo.TipusId == (int)EsemenyTipusEnum.ElektronikusUzenet)
{
pco.FeladatKategoriaId = null;
}
var dataSet = h.Feljegyzes(GridParameters).FeljegyzesekKereses(pco, IntezmenyId);
return dataSet;
});
return result;
}
public List<FeljegyzesekItemCo> GetFeljegyzesekCoList(FeljegyzesekKereseseCO feljegyzesekKereseseCo)
{
var dataSet = FeljegyzesekKeresese(feljegyzesekKereseseCo);
var result = new List<FeljegyzesekItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new FeljegyzesekItemCo(dataRow);
result.Add(item);
}
return result;
}
public DataSet FaliujsagKeresese(FeljegyzesekKereseseCO feljegyzesekKereseseCo)
{
var result = Dal.CustomConnection.Run(ConnectionType, h => h.Feljegyzes(GridParameters).FaliujsagKereses(feljegyzesekKereseseCo.ToPco(TanevId)));
return result;
}
public DataTable GetFaliujsagonMegjelenoBejegyzesek(DateTime? date, OktNevelesiKategoriaEnum? feladatKategoria, int? startindex = null, int? count = null)
{
var result = Dal.CustomConnection.Run(ConnectionType, h => h.Feljegyzes(GridParameters).GetFaliujsagonMegjelenoBejegyzesek(FelhasznaloId, date, feladatKategoria, startindex, count));
return result;
}
public FeljegyzesekCO GetFeljegyzesById(int feljegyzesId, int? tanuloId = null, int? osztalyId = null, string osztalyNev = null) => Dal.CustomConnection.Run(ConnectionType, h =>
{
var entity = h.Feljegyzes().Get(feljegyzesId);
var co = new FeljegyzesekCO
{
ID = entity.ID,
Datum = entity.EsemenyDatuma,
Tartalom = entity.Tartalom,
Tipus = entity.Tipus,
TipusNev = entity.Tipus.GetDisplayName<EsemenyTipusEnum>(TanevId),
Megjegyzes = entity.Megjegyzes,
TanarId = entity.FeljegyzoId,
Cim = entity.Targy,
FeljegyzesRogzitesenekDatuma = entity.RogzitesDatuma,
};
var isRendszeruzenetNev = entity.FeljegyzoId.IsEntityId() && !h.Alkalmazott().IsAlkalmazott(entity.FeljegyzoId, TanevId);
co.TanarNev = isRendszeruzenetNev ? Constants.SpecialUserName.Rendszeruzenet : entity.Feljegyzo.NyomtatasiNev;
if (tanuloId.IsEntityId())
{
var tanuloEntity = h.Tanulo().Get(tanuloId.Value);
co.TanuloId = tanuloEntity.ID;
co.TanuloNev = tanuloEntity.NyomtatasiNev;
}
var tanuloOsztalyaId = osztalyId.IsEntityId() ? osztalyId : entity.RogziteskoriOsztalyId;
if (tanuloOsztalyaId.IsEntityId())
{
var osztalyCsoportEntity = h.OsztalyCsoport().Get(tanuloOsztalyaId.Value);
co.OsztalyId = osztalyCsoportEntity.ID;
co.OsztalyNev = osztalyCsoportEntity.Nev;
}
if (!string.IsNullOrWhiteSpace(osztalyNev) && string.IsNullOrWhiteSpace(co.OsztalyNev))
{
co.OsztalyNev = osztalyNev;
}
return co;
});
public QuadrupleList<string, string, string, string> GetLegutobbiFeljegyzesek()
{
return Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var feljegyzesQuadrupleList = new QuadrupleList<string, string, string, string>();
var dataTable = dalHandler.Feljegyzes().GetLegutobbiFeljegyzesek(FelhasznaloId).Tables[0];
new FeljegyzesLogic(new DalHandlerConnectionType(ConnectionType, dalHandler)).RemoveHiddenRowsFromFeljegyzesDataSet(dataTable, "Tipus", FelhasznaloId);
foreach (var row in dataTable.AsEnumerable())
{
feljegyzesQuadrupleList.Add(SDAConvert.ToString(row["Tipus_DNAME"]), SDAConvert.ToString(row["Tanar"]), SDAConvert.ToDateTime(row["EsemenyDatuma"])?.ToString("MMMM d."), SDAConvert.ToInt32(row["Id"]).ToString());
}
return feljegyzesQuadrupleList;
});
}
internal TanoraFeljegyzeseiCO GetTanoraFeljegyzesei(int? tanoraId) => Dal.CustomConnection.Run(ConnectionType, h =>
{
if (!tanoraId.HasValue || tanoraId < 1)
{
return new TanoraFeljegyzeseiCO();
}
var entity = h.TanitasiOra().Get(tanoraId.Value);
var result = new TanoraFeljegyzeseiCO();
foreach (var item in entity.TanuloEsemeny.Where(a => !a.Torolt))
{
var tanulo = item.Tanulo.FirstOrDefault(a => !a.Torolt);
if (tanulo != null)
{
result.Add(new TanoraFeljegyzeseCO() { FeljegyzesId = item.ID, FeljegyzesTipus = item.Tipus, TanuloId = tanulo.ID });
}
}
return result;
});
//public MemoryStream GetFeljegyzesExcelExport(FeljegyzesekKereseseCO searchModel)
//{
// return Dal.CustomConnection.Run(ConnectionType, dalHandler =>
// {
// DataSet dataSet = dalHandler.Feljegyzes().GetFeljegyzesekExcelExport(searchModel.ToPco());
// DataTable dataTable = dataSet.Tables[0];
// ExportLogic.TryCreateHeaderIfNotExist(dataTable);
// MemoryStream memoryStream = FeljegyzesLogic.GetExport(dataTable);
// return memoryStream;
// });
//}
//public MemoryStream GetFaliujsagExcelExport(FeljegyzesekKereseseCO searchModel)
//{
// return Dal.CustomConnection.Run(ConnectionType, dalHandler =>
// {
// DataSet dataSet = dalHandler.Feljegyzes().GetFaliujsagExcelExport(searchModel.ToPco());
// DataTable dataTable = dataSet.Tables[0];
// ExportLogic.TryCreateHeaderIfNotExist(dataTable);
// MemoryStream memoryStream = FeljegyzesLogic.GetExport(dataTable);
// return memoryStream;
// });
//}
public List<FeljegyzesekCO> GetFaliujsagFeljegyzesCoList(FeljegyzesekKereseseCO searchModel)
{
var coList = new List<FeljegyzesekCO>();
var ds = FaliujsagKeresese(searchModel);
foreach (var row in ds.Tables[0].AsEnumerable())
{
coList.Add(new FeljegyzesekCO(row));
}
return coList;
}
}
}

View file

@ -0,0 +1,85 @@
using System.Collections.Generic;
using System.Data;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
namespace Kreta.BusinessLogic.Helpers
{
public class FelmentesHelper : LogicBase
{
public FelmentesHelper(IConnectionType connectionType) : base(connectionType) { }
public List<FelmentesGridItemCo> GetFelmentesGrid(FelmentesSearchCo co)
{
FelmentesSearchPco pco = ConvertToPco(co);
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
IFelmentesDal dal = h.FelmentesDal(GridParameters);
return dal.GetFelmentesGrid(pco, IntezmenyId, TanevId);
});
var result = new List<FelmentesGridItemCo>();
if (ds != null && ds.Tables.Count > 0)
{
foreach (DataRow dataRow in ds.Tables[0].Rows)
{
var item = new FelmentesGridItemCo(dataRow);
result.Add(item);
}
}
return result;
}
public FelmentesGridItemCo GetFelmentesById(int felmentesId)
{
FelmentesSearchPco pco = new FelmentesSearchPco { ID = felmentesId };
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
IFelmentesDal dal = h.FelmentesDal(GridParameters);
return dal.GetFelmentesGrid(pco, IntezmenyId, TanevId);
});
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
return new FelmentesGridItemCo(ds.Tables[0].Rows[0]);
}
else
{
return new FelmentesGridItemCo();
}
}
private FelmentesSearchPco ConvertToPco(FelmentesSearchCo co)
{
FelmentesSearchPco pco = new FelmentesSearchPco()
{
ID = co.ID,
TanuloNeve = co.TanuloNeve,
TanuloOsztalyId = co.TanuloOsztalyId,
TantargyId = co.TantargyId,
KezdeteDateFrom = co.KezdeteDateFrom,
KezdeteDateTo = co.KezdeteDateTo,
VegeDateFrom = co.VegeDateFrom,
VegeDateTo = co.VegeDateTo,
IsTanoraLatogatasaAloli = co.IsTanoraLatogatasaAloli,
IsErtekelesAloli = co.IsErtekelesAloli,
IsSzovegesenErtekelheto = co.IsSzovegesenErtekelheto,
FelmentesOka = co.FelmentesOka,
RogzitesDateFrom = co.RogzitesDateFrom,
RogzitesDateTo = co.RogzitesDateTo,
RogzitoNeve = co.RogzitoNeve,
ModositasDateFrom = co.ModositasDateFrom,
ModositasDateTo = co.ModositasDateTo,
ModositoNeve = co.ModositoNeve,
Torolt = co.Torolt
};
return pco;
}
}
}

View file

@ -0,0 +1,48 @@
using System.Linq;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.Enums;
namespace Kreta.BusinessLogic.Helpers
{
public class FeltarAlkalmazottHelper : FeltarHelper
{
#region Constructors
public FeltarAlkalmazottHelper(IConnectionType connectionType) : base(connectionType)
{
}
#endregion Constructors
public bool IsEszkozIgenyelheto(int alkalmazottId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return h.EszkozigenylesDal().IsAlkalmazottEszkozIgenyelheto(IntezmenyId, TanevId, alkalmazottId);
});
}
public void EszkozIgenyles(int alkalmazottId)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
IEszkozIgenyles eszkozIgenyles = h.EszkozigenylesDal().Get();
var feladatEllatasiHelyId = h.Alkalmazott().GetAlkalmazottFeladatEllatasiHelyId(alkalmazottId, TanevId);
eszkozIgenyles.IntezmenyId = IntezmenyId;
eszkozIgenyles.TanevId = TanevId;
eszkozIgenyles.AlkalmazottId = alkalmazottId;
eszkozIgenyles.IsElfogadottAszf = true;
eszkozIgenyles.EszkozIgenylesStatuszId = (int)EszkozIgenylesStatuszEnum.regisztraciot_benyujtotta;
if (feladatEllatasiHelyId.IsEntityId())
{
eszkozIgenyles.FeladatEllatasiHelyId = feladatEllatasiHelyId.Value;
}
h.EszkozigenylesDal().Insert(eszkozIgenyles);
});
}
}
}

View file

@ -0,0 +1,137 @@
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.Client.CoreApi;
using Kreta.Client.CoreApi.Response;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class FeltarGondviseloHelper : FeltarHelper
{
#region Constructors
public FeltarGondviseloHelper(IConnectionType connectionType) : base(connectionType)
{
}
#endregion Constructors
public bool IsEszkozIgenyelheto(ICoreApiClient coreApiClient, int gondviseloId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var intezmenyDal = h.IntezmenyDal();
var tanevDal = h.TanevDal();
var intezmenyAdatok = intezmenyDal.Get(IntezmenyId);
var tanevAdatok = tanevDal.Get(TanevId);
var eszkozAdatok = new EszkozIgenylesHelper(new DalHandlerConnectionType(ConnectionType, h)).EszkozIgenylesGet(coreApiClient, intezmenyAdatok.Guid.ToString(), tanevAdatok.Sorszam.Value, null, gondviseloId);
return !eszkozAdatok.Any(x => x.ElfogadottAszf);
});
}
public bool IsEszkozIgenyelheto(int tanuloId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return h.EszkozigenylesDal().GetGondviseloEszkozIgenylesAdat(IntezmenyId, TanevId, tanuloId).Tables[0].Rows.Count < 1;
});
}
public bool? IsRegisztralt(int tanuloId, int gondviseloId)
{
var dataSet = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return h.EszkozigenylesDal().GetGondviseloEszkozIgenylesAdat(IntezmenyId, TanevId, tanuloId);
});
return dataSet.Tables[0].Rows.Count < 1 ? (bool?)null : SDAConvert.ToInt32(dataSet.Tables[0].Rows[0]["C_GONDVISELOID"]) == gondviseloId;
}
public bool EszkozIgenyles(ICoreApiClient coreApiClient, int gondviseloId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var intezmenyDal = h.IntezmenyDal();
var tanevDal = h.TanevDal();
var intezmenyAdatok = intezmenyDal.Get(IntezmenyId);
var tanevAdatok = tanevDal.Get(TanevId);
var eszkozIgenylesDto = new EszkozIgenylesCreateDto() { GondviseloId = gondviseloId, ElfogadottAszf = true };
var response = new EszkozIgenylesHelper(new DalHandlerConnectionType(ConnectionType, h)).EszkozIgenylesInsert(coreApiClient, eszkozIgenylesDto, intezmenyAdatok.Guid.ToString(), tanevAdatok.Sorszam.Value);
if (response.IsEntityId())
{
return true;
}
else
{
throw new BlException(ErrorResource.SikertelenMentes);
}
});
}
public void EszkozIgenyles(int tanuloId, int gondviseloId)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var tanuloOsztalyCsoportjai = h.OsztalyCsoport().GetTanuloOsztalyCsoportjai(tanuloId);
var egyediFeladatEllatasiHelyIdSorrend = new List<int> { (int)OktNevelesiKategoriaEnum.NevelesOktatas, (int)OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas, (int)OktNevelesiKategoriaEnum.EGYMI, (int)OktNevelesiKategoriaEnum.Kollegium, (int)OktNevelesiKategoriaEnum.Felnottkepzes };
IEszkozIgenyles eszkozIgenyles = h.EszkozigenylesDal().Get();
eszkozIgenyles.IntezmenyId = IntezmenyId;
eszkozIgenyles.TanevId = TanevId;
eszkozIgenyles.TanuloId = tanuloId;
eszkozIgenyles.GondviseloId = gondviseloId;
eszkozIgenyles.IsElfogadottAszf = true;
var list = tanuloOsztalyCsoportjai.Where(x => Core.Constants.FeltarEvfolyamList.Contains(x.EvfolyamTipusa));
if (list.Any())
{
eszkozIgenyles.FeladatEllatasiHelyId = list.OrderBy(x => egyediFeladatEllatasiHelyIdSorrend.IndexOf(x.FeladatKategoriaId.Value)).FirstOrDefault().FeladatEllatasiHelyId;
}
else
{
var tanulo = new TanuloHelper(ConnectionType).GetTanuloiAdatok(tanuloId, null, true, true);
if (tanulo.IsOsszevontOsztaly && Core.Constants.FeltarEvfolyamList.Contains(tanulo.TanuloEvfolyamTipus.Value))
{
eszkozIgenyles.FeladatEllatasiHelyId = h.OsztalyCsoport().Get(tanulo.OsztalyId.Value).FeladatEllatasiHelyId;
}
}
eszkozIgenyles.EszkozIgenylesStatuszId = (int)EszkozIgenylesStatuszEnum.regisztraciot_benyujtotta;
h.EszkozigenylesDal().Insert(eszkozIgenyles);
});
}
public int? GetTanuloOsztalyaEszkozigenyles(int tanuloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.OsztalyCsoport();
var ds = dal.GetTanuloOsztalyEsFeladatkategoriaList(tanuloId, TanevId, IntezmenyId);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
var tanuloOsztalyCsoportjai = ds.Tables[0].AsEnumerable().Select(x => new { ID = x.Field<int>("ID"), FeladatKategoriaId = x.Field<int>("FeladatKategoriaId") });
var egyediFeladatEllatasiHelyIdSorrend = new List<int> { (int)OktNevelesiKategoriaEnum.NevelesOktatas, (int)OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas, (int)OktNevelesiKategoriaEnum.EGYMI, (int)OktNevelesiKategoriaEnum.Kollegium, (int)OktNevelesiKategoriaEnum.Felnottkepzes };
return tanuloOsztalyCsoportjai.OrderBy(x => egyediFeladatEllatasiHelyIdSorrend.IndexOf(x.FeladatKategoriaId)).FirstOrDefault().ID;
}
return (int?)null;
});
}
}
}

View file

@ -0,0 +1,41 @@
using Kreta.BusinessLogic.Security;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Enums.ManualEnums;
namespace Kreta.BusinessLogic.Helpers
{
public class FeltarHelper : LogicBase
{
#region Constructors
public FeltarHelper(IConnectionType connectionType) : base(connectionType)
{
}
#endregion Constructors
public string FeltarASZFUrl()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var intezmenyConfigHelper = new IntezmenyConfigHelper(new DalHandlerConnectionType(ConnectionType, h));
var feltarASZFUrl = intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.FeltarASZF, IntezmenyConfigTipusEnum.Url);
return feltarASZFUrl;
});
}
public string FeltarASZFGondviseloUrl()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var intezmenyConfigHelper = new IntezmenyConfigHelper(new DalHandlerConnectionType(ConnectionType, h));
var feltarASZFUrl = intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.FeltarASZFGondviselo, IntezmenyConfigTipusEnum.Url);
return feltarASZFUrl;
});
}
}
}

View file

@ -0,0 +1,107 @@
using System;
using System.IO;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Client.FileService.Request;
using Kreta.Client.FileService.Response;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.DataAccessManual;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class FileHelper : LogicBase
{
#region Fields
private readonly IFileServiceHelper _fileServiceHelper;
#endregion Fields
#region Constructors
public FileHelper(IConnectionType connectionType, IFileServiceHelper fileServiceHelper) : base(connectionType)
{
_fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
}
public FileHelper(IConnectionType connectionType) : base(connectionType) { }
#endregion Constructors
#region FileService Functions
public void DeleteFile(int id, bool withFileServiceDelete)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
if (withFileServiceDelete)
{
var file = h.FileDAL().Get(id);
if (!_fileServiceHelper.Delete(IntezmenyAzonosito, new FileDeleteRequest(file.Utvonal, file.FileGuid.Value)))
{
throw new BlException(ErrorResource.FajlTorleseSikertelen);
}
}
h.FileDAL().Delete(id, FelhasznaloId);
});
}
public (string Name, byte[] Data) GetFileData(int id)
{
var file = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.FileDAL().Get(id));
var fileName = string.Concat(file.FileNev.TrimEnd('.'), '.', file.Extension.TrimStart('.'));
var fileContent = _fileServiceHelper.GetFile(IntezmenyAzonosito, new GetUrlRequest(file.Utvonal, file.FileGuid.Value, fileName));
var data = Convert.FromBase64String(fileContent.Tartalom);
return (fileName, data);
}
public FileDownloadCO GetFileDownload(int id)
{
var (name, data) = GetFileData(id);
return new FileDownloadCO() { Stream = new MemoryStream(data), FileName = name };
}
public int? UploadFile(string fileName, byte[] content, string contentType, string path)
{
FileUploadResponse fileUploadResponse = _fileServiceHelper.Upload(new FileUploadRequest(fileName, content, contentType, path));
if (fileUploadResponse.IsSuccess)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var fileDal = h.FileDAL();
var file = fileDal.Get();
file.FeltoltesDatum = DateTime.Now;
file.FileGuid = fileUploadResponse.FajlAzonosito;
file.FileSizeByte = fileUploadResponse.FajlMeretByteLength;
var lastIndex = fileName.LastIndexOf('.');
var fileNev = fileName.Substring(0, lastIndex);
var fileExt = fileName.Substring(lastIndex + 1);
file.FileNev = fileNev;
file.Extension = fileExt;
file.Utvonal = fileUploadResponse.Utvonal;
file.TanevId = TanevId;
file.IntezmenyId = IntezmenyId;
file.IntezmenyGuid = h.IntezmenyDal().Get(IntezmenyId).Guid.Value;
file.VeglegesitesDatum = DateTime.Now;
file.FelhasznaloId = FelhasznaloId;
var fileId = fileDal.Insert(file);
return fileId;
});
}
throw new BlException(ErrorResource.FajlFeltolteseSikertelen);
}
#endregion
}
}

View file

@ -0,0 +1,100 @@
using System;
using Kreta.BusinessLogic.Caching;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Client.FileService;
using Kreta.Client.FileService.Request;
using Kreta.Client.FileService.Response;
namespace Kreta.BusinessLogic.Helpers
{
internal class FileServiceHelper : IFileServiceHelper
{
private readonly IFileServiceClient fileServiceClient;
private readonly IFileServiceClientV3 fileServiceClientV3;
private readonly ITokenServiceHelper tokenServiceHelper;
private FileServiceCache FileServiceCache => KretaServer.KretaServer.Instance.CacheManager.AquireCache<FileServiceCache>();
public FileServiceHelper(IFileServiceClient fileServiceClient, IFileServiceClientV3 fileServiceClientV3, ITokenServiceHelper tokenServiceHelper)
{
this.fileServiceClient = fileServiceClient ?? throw new ArgumentNullException(nameof(fileServiceClient));
this.fileServiceClientV3 = fileServiceClientV3 ?? throw new ArgumentNullException(nameof(fileServiceClientV3));
this.tokenServiceHelper = tokenServiceHelper ?? throw new ArgumentNullException(nameof(tokenServiceHelper));
}
public FileUploadResponse Upload(IFileUploadRequest fileUploadRequest)
{
var response = fileServiceClientV3.Upload(FileServiceCache.GetPrivateToken(tokenServiceHelper), fileUploadRequest);
if (response.TryAgain)
{
return fileServiceClientV3.Upload(FileServiceCache.GetPrivateToken(tokenServiceHelper, forceUpdate: true), fileUploadRequest);
}
return response;
}
public FileFinalizeResponseV3 Veglegesites(FileFinalizeRequestV3 fileVeglegesitesRequest)
{
var response = fileServiceClientV3.Veglegesites(FileServiceCache.GetPrivateToken(tokenServiceHelper), fileVeglegesitesRequest);
if (response.TryAgain)
{
response = fileServiceClientV3.Veglegesites(FileServiceCache.GetPrivateToken(tokenServiceHelper, forceUpdate: true), fileVeglegesitesRequest);
}
return response;
}
public string GetUrl(string intezmenyAzonosito, GetUrlRequest fileDownloadRequest)
{
var response = fileServiceClient.GetUrl(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper), fileDownloadRequest);
if (response.TryAgain)
{
response = fileServiceClient.GetUrl(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper, forceUpdate: true), fileDownloadRequest);
}
return response.Url;
}
public GetFileResponse GetFile(string intezmenyAzonosito, GetUrlRequest fileDownloadRequest)
{
fileDownloadRequest.Utvonal = CalculateFajlUtvonalKorabbiKompatibilitasMiatt(intezmenyAzonosito, fileDownloadRequest.Utvonal);
var response = fileServiceClientV3.GetFile(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper), fileDownloadRequest);
if (response.TryAgain)
{
response = fileServiceClientV3.GetFile(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper, forceUpdate: true), fileDownloadRequest);
}
return response;
}
public bool Delete(string intezmenyAzonosito, FileDeleteRequest fileDeleteRequest)
{
fileDeleteRequest.Utvonal = CalculateFajlUtvonalKorabbiKompatibilitasMiatt(intezmenyAzonosito, fileDeleteRequest.Utvonal);
var response = fileServiceClientV3.Delete(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper), fileDeleteRequest);
if (response.TryAgain)
{
response = fileServiceClientV3.Delete(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper, forceUpdate: true), fileDeleteRequest);
}
return response.IsSuccess;
}
private string CalculateFajlUtvonalKorabbiKompatibilitasMiatt(string intezmenyAzonosito, string utvonal)
{
bool regiUtvonalFormatum = utvonal.Length == 8;
if (regiUtvonalFormatum)
{
var fajlUtvonalEv = utvonal.Substring(0, 4);
var fajlUtvonalHonapNap = utvonal.Substring(4, 4);
return $"HaziFeladatok/{intezmenyAzonosito}/{fajlUtvonalEv}/{fajlUtvonalHonapNap}";
}
return utvonal;
}
}
}

View file

@ -0,0 +1,30 @@
using System;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Client.FileService;
namespace Kreta.BusinessLogic.Helpers
{
internal class TokenServiceHelper : ITokenServiceHelper
{
private readonly IFileServiceClient fileServiceClient;
public TokenServiceHelper(IFileServiceClient fileServiceClient)
{
this.fileServiceClient = fileServiceClient ?? throw new ArgumentNullException(nameof(fileServiceClient));
}
public (string, int) GetPublicTokenWithExpiresIn()
{
var response = fileServiceClient.GetPublicToken();
return (response.AccessToken, response.ExpiresIn);
}
public (string, int) GetPrivateTokenWithExpiresIn()
{
var response = fileServiceClient.GetPrivateToken();
return (response.AccessToken, response.ExpiresIn);
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,395 @@
using System;
using System.Collections.Generic;
using System.Data;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Framework.Util;
namespace Kreta.BusinessLogic.Helpers
{
public class FoglalkozasHelper : LogicBase
{
public FoglalkozasHelper(IConnectionType connectionType) : base(connectionType) { }
public IDictionary<string, string> GetSablonok(int osztalyId)
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
if (GridParameters == null)
{
GridParameters = new GridParameters();
}
GridParameters.OrderBy = "Evfolyam ASC, Tantargy ASC, Tagozat ASC";
var dal = h.Foglalkozas(GridParameters);
return dal.GetSablonok(TanevId, osztalyId);
});
return LogicUtil.CreateDropdownContent(result, "ID", "SablonNev", sort: false);
}
public DataSet GetSablon(int sablonId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas();
return dal.GetSablon(sablonId);
});
}
public DataSet GetOsztalyCsoportFoglalkozasai(int id, OktNevelesiKategoriaEnum? kategoria)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas(GridParameters);
return dal.GetOsztalyCsoportFoglalkozasai(id, TanevId, kategoria);
});
}
public DataSet GetTanuloCsoportosFoglalkozasai(int tanuloId, int osztalyId, OktNevelesiKategoriaEnum? kategoria)
{
var amiEgyeniCsoportok = Constants.AMIEgyeniCsoportok;
return Dal.CustomConnection.Run(ConnectionType, h =>
{
if (GridParameters == null)
{
GridParameters = new GridParameters();
}
GridParameters.OrderBy = "Osztaly ASC, Tantargy ASC, Tanar ASC";
var tanevElsoNapja = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanevKezdete();
var dal = h.Foglalkozas(GridParameters);
return dal.GetTanuloFoglalkozasai(tanuloId, osztalyId, TanevId, egyeni: false, amiEgyeniCsoportok, kategoria, tanevElsoNapja);
});
}
public DataSet GetTanuloEgyeniFoglalkozasai(int tanuloId, int osztalyId, OktNevelesiKategoriaEnum? kategoria)
{
var amiEgyeniCsoportok = Constants.AMIEgyeniCsoportok;
return Dal.CustomConnection.Run(ConnectionType, h =>
{
if (GridParameters == null)
{
GridParameters = new GridParameters();
}
GridParameters.OrderBy = "Osztaly ASC, Tantargy ASC, Tanar ASC";
var tanevElsoNapja = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanevKezdete();
var dal = h.Foglalkozas(GridParameters);
return dal.GetTanuloFoglalkozasai(tanuloId, osztalyId, TanevId, egyeni: true, amiEgyeniCsoportok, kategoria, tanevElsoNapja);
});
}
public TantargyFoglalkozasCO GetFoglalkozas(int foglalkozasId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas(GridParameters);
var entity = dal.Get(foglalkozasId);
var result = new TantargyFoglalkozasCO
{
ID = foglalkozasId,
OsztalyCsoportId = entity.OsztalyCsoportId,
OsztalyCsoportNev = entity.OsztalyCsoport.Nev,
TantargyNev = entity.Tantargy.Nev,
TantargyId = entity.Tantargy.ID,
IsOsztalyfonoki = entity.Tantargy.TargyKategoria == (int)TargyKategoriaTipusEnum.osztalyfonoki_elet_es_palyatervezes,
Oraszam = entity.Oraszam
};
return result;
});
}
public string GetTanarokTanoranKivuliFoglalkozashoz(int tanoranKivuliFoglalkozasId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas(GridParameters);
var ret = "";
var ds = dal.GetTanarokTanoranKivuliFoglalkozashoz(tanoranKivuliFoglalkozasId, TanevId);
foreach (DataRow row in ds.Tables[0].Rows)
{
ret += row["TanarNev"] + Environment.NewLine;
}
return ret;
});
}
public void SaveTanoranKivuliFoglalkozas(FoglalkozasCO co)
{
ValidateFoglalkozasCO(co);
Dal.CustomConnection.Run(ConnectionType, h =>
{
var orarendiOraDal = h.OrarendiOra(GridParameters);
IOrarendiOra ora = co.ID.HasValue ? orarendiOraDal.Get(co.ID.Value) : orarendiOraDal.Get();
switch (co.Kezdete.Value.DayOfWeek)
{
case DayOfWeek.Monday:
ora.HetNapja = (int)HetNapjaTipusEnum.Hetfo;
break;
case DayOfWeek.Tuesday:
ora.HetNapja = (int)HetNapjaTipusEnum.Kedd;
break;
case DayOfWeek.Wednesday:
ora.HetNapja = (int)HetNapjaTipusEnum.Szerda;
break;
case DayOfWeek.Thursday:
ora.HetNapja = (int)HetNapjaTipusEnum.Csutortok;
break;
case DayOfWeek.Friday:
ora.HetNapja = (int)HetNapjaTipusEnum.Pentek;
break;
case DayOfWeek.Saturday:
ora.HetNapja = (int)HetNapjaTipusEnum.Szombat;
break;
case DayOfWeek.Sunday:
ora.HetNapja = (int)HetNapjaTipusEnum.Vasarnap;
break;
}
ora.Bontott = co.Bontott;
ora.Hetirend = co.Hetirend;
ora.IKTTanora = co.IKTTanora;
ora.IPRTanora = co.IPRTanora;
ora.Kooperativ = co.Kooperativ;
ora.Meres = co.Meres;
ora.MindennaposTestneveles = co.MindennaposTestneveles;
ora.NemSzakrendszeruOra = co.NemSzakrendszeruOra;
ora.NemzetisegiOra = co.NemzetisegiOra;
ora.IsFelnottoktatasiSzerzodes = co.IsFelnottoktatasiSzerzodes;
if (co.ErvenyessegKezdete.HasValue)
ora.OraErvenyessegKezdete = co.ErvenyessegKezdete.Value;
if (co.ErvenyessegVege.HasValue)
ora.OraErvenyessegVege = co.ErvenyessegVege.Value;
ora.OraKezdete = co.Kezdete.Value;
ora.OraVege = co.Vege.Value;
ora.Differencialt = co.Differencialt;
ora.Drama = co.Drama;
ora.ParhuzamosOra = co.ParhuzamosOra;
ora.Sorszamozando = co.Sorszamozando;
ora.TAMOPOra = co.TAMOPOra;
ora.KIPOra = co.KIPOra;
ora.VEKOP73317 = co.VEKOP73317;
ora.KAPOra = co.KAPOra;
ora.TanarId = co.TanarID;
ora.OraTulajdonosId = co.TanarID;
//Tanórán kivüli foglalkozás esetében nincs óraszám, mert nem csengetési rendhez kötött!
ora.Oraszam = 0;
if (co.TanoranKivuliFoglalkozas.HasValue)
{
ora.FoglalkozasId = co.TanoranKivuliFoglalkozas.Value;
var foglalkozasDal = h.Foglalkozas();
var f = foglalkozasDal.Get(co.TanoranKivuliFoglalkozas.Value);
ora.TantargyId = f.TantargyId;
ora.OsztalyCsoportId = f.OsztalyCsoportId;
}
else
{
if (co.OsztalyCsoportId.HasValue)
{
ora.OsztalyCsoportId = co.OsztalyCsoportId.Value;
}
if (co.TantargyId.HasValue)
{
ora.TantargyId = co.TantargyId.Value;
}
}
ora.TeremId = co.TeremID.Value;
ora.TIOP12 = co.Tiop;
ora.Tulora = co.Tulora;
if (co.ID.HasValue)
{
orarendiOraDal.FullUpdate(ora);
}
else
{
orarendiOraDal.Insert(ora);
}
});
}
public int SaveFoglalkozas(int tantargyId, int osztalyCsoportId, int tanarId, double oraszam = 1D, bool isOsszevontOra = false, bool isNemzetisegiOra = false)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas();
var entity = dal.Get();
entity.TanevId = TanevId;
entity.FoglalkozasTipusa = (int)FoglalkozasTipusEnum.tanora;
entity.Oraszam = oraszam;
entity.Nev = null;
entity.ErtekelesKell = false;
entity.MulasztasKell = false;
entity.TanarFelveheti = false;
entity.TantargyId = tantargyId;
entity.OsztalyCsoportId = osztalyCsoportId;
entity.TanarId = tanarId;
entity.IsOsszevontOra = isOsszevontOra;
entity.IsNemzetisegi = isNemzetisegiOra;
dal.Insert(entity);
return entity.ID;
});
}
public string GetFoglalkozasNeve(int foglalkozasId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas();
var f = dal.Get(foglalkozasId);
return f.Tantargy.Nev + "_" + f.OsztalyCsoport.Nev;
});
}
public IDictionary<string, string> GetTanarFoglalkozasok(int tanarId, string typeId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas();
var ds = dal.GetTanarFoglalkozasok(tanarId, TanevId, typeId);
return LogicUtil.CreateDropdownContent(ds, "ID", "Nev", null, false);
});
}
public IDictionary<string, string> GetTanarNemTanitottFoglalkozasok(int tanarId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas();
var ds = dal.GetTanarNemTanitottFoglalkozasok(tanarId, TanevId);
return LogicUtil.CreateDropdownContent(ds, "OCSID", "Nev", null, false);
});
}
public IDictionary<string, string> GetOsszesFoglalkozas()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas();
var ds = dal.GetOsszesFoglalkozas(TanevId, null);
return LogicUtil.CreateDropdownContent(ds, "ID", "Nev");
});
}
public IDictionary<string, string> GetTanarFoglalkozasTipusok(int felhasznaloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas();
var ds = dal.GetTanarFoglalkozasTipusok(felhasznaloId, TanevId);
return LogicUtil.CreateDropdownContent(ds, "Tipus", "Tipus_DNAME", StringResourcesUtils.GetString(2672));
});
}
public IDictionary<string, string> GetTanoranKivuliFoglalkozasok(int? tanarId, int? stringResourceId = null)
{
IDictionary<string, string> result = new Dictionary<string, string>();
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas();
return dal.GetTanoranKivuliFoglalkozasok(tanarId, TanevId);
});
if (stringResourceId.HasValue)
{
result.Add("", StringResourcesUtils.GetString(stringResourceId.Value));
}
foreach (DataRow row in ds.Tables[0].Rows)
{
var id = row["ID"].ToString();
var value = $"{row["FoglalkozasNev"]} ({row["FoglalkozasTipusa_DNAME"]}) - {row["TantargyNev"]} - {row["OsztalyCsoportNev"]}";
result.Add(id, value);
}
return result;
}
public FoglalkozasTipusEnum GetFoglalkozasTipusByOsztalyCsoportTipus(CsoportTipusEnum osztalyCsoportTipus, bool? isBontott)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Foglalkozas();
var result = dal.GetFoglalkozasTipusByOsztalyCsoportTipus((int)osztalyCsoportTipus, isBontott);
return result.HasValue ? (FoglalkozasTipusEnum)result : FoglalkozasTipusEnum.na;
});
}
private void ValidateFoglalkozasCO(FoglalkozasCO co)
{
if (co.UseFoglalkozas && co.TanoranKivuliFoglalkozas.HasValue == false)
{
throw new ArgumentNullException("TanoranKivuliFoglalkozas");
}
if (!co.UseFoglalkozas)
{
if (co.OsztalyCsoportId.HasValue == false)
{
throw new ArgumentNullException("OsztalyCsoportId");
}
if (co.TantargyId.HasValue == false)
{
throw new ArgumentNullException("TantargyId");
}
}
if (co.Kezdete.HasValue == false)
{
throw new ArgumentNullException("Kezdete");
}
if (co.Vege.HasValue == false)
{
throw new ArgumentNullException("Vege");
}
if (co.TeremID.HasValue == false)
{
throw new ArgumentNullException("TeremID");
}
}
public (double oraszam, double ttfKorrekcioOraszam) GetFoglalkozasOsszOraszamok(bool IsFromSzervezet = false)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h => h.Foglalkozas().GetFoglalkozasOsszOraszamok(TanevId, IsFromSzervezet));
var oraszam = SDAConvert.ToDouble(ds.Tables[0].Rows[0]["Oraszam"]);
var ttfKorrekcioOraszam = SDAConvert.ToDouble(ds.Tables[0].Rows[0]["TtfKorrekcioOraszam"]);
return (oraszam, ttfKorrekcioOraszam);
}
}
}

View file

@ -0,0 +1,143 @@
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using SDA.Kreta.Entities;
namespace Kreta.BusinessLogic.Helpers
{
public class GondviseloHelper : LogicBase
{
#region Constructors
public GondviseloHelper(IConnectionType connectionType) : base(connectionType) { }
#endregion Constructors
public List<GondviseloItemCo> GetGondviseloCoList()
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Gondviselo().GetGondviseloDataSet(TanevId));
var gondviseloItemCoList = new List<GondviseloItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
GondviseloItemCo gondviseloItemCo;
int gondviseloId = SDAConvert.ToInt32(dataRow["Id"]);
//NOTE: Csak akkor adunk hozzá új gondviselőt a listához, ha még nincs a listában, különben a már benne lévővel dolgozunk tovább!
// Erre azért van szükség, mert a left join-ok miatt többször visszajöhet!
if (gondviseloItemCoList.All(x => x.Id != gondviseloId))
{
gondviseloItemCo = new GondviseloItemCo(dataRow, TanevId);
gondviseloItemCoList.Add(gondviseloItemCo);
}
else
{
gondviseloItemCo = gondviseloItemCoList.Single(x => x.Id == gondviseloId);
}
int? cimId = SDAConvert.ToNullableInt32(dataRow["CimId"]);
//NOTE: Csak akkor adjuk hozzá a gondviselőhöz az címet, ha az létezik és még nincs hozzáadva korábban!
// Erre azért van szükség, mert a left join-ok miatt többször visszajöhet!
if (cimId.IsEntityId() && gondviseloItemCo.CimList.All(x => x.Id != cimId.Value))
{
var cimItemCo = new CimItemCo(gondviseloItemCo, dataRow);
gondviseloItemCo.CimList.Add(cimItemCo);
}
int? emailId = SDAConvert.ToNullableInt32(dataRow["EmailId"]);
//NOTE: Csak akkor adjuk hozzá a gondviselőhöz az email-t, ha az létezik és még nincs hozzáadva korábban!
// Erre azért van szükség, mert a left join-ok miatt többször visszajöhet!
if (emailId.IsEntityId() && gondviseloItemCo.EmailList.All(x => x.Id != emailId.Value))
{
var emailItemCo = new EmailItemCo(gondviseloItemCo, dataRow);
gondviseloItemCo.EmailList.Add(emailItemCo);
}
int? telefonId = SDAConvert.ToNullableInt32(dataRow["TelefonId"]);
//NOTE: Csak akkor adjuk hozzá a gondviselőhöz az telefont, ha az létezik és még nincs hozzáadva korábban!
// Erre azért van szükség, mert a left join-ok miatt többször visszajöhet!
if (telefonId.IsEntityId() && gondviseloItemCo.TelefonList.All(x => x.Id != telefonId.Value))
{
var telefonItemCo = new TelefonItemCo(gondviseloItemCo, dataRow);
gondviseloItemCo.TelefonList.Add(telefonItemCo);
}
}
return gondviseloItemCoList;
}
public List<GondviseloItemCo> GetTanuloGonviseloiItemCoList(int tanuloId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var gonviselokDs = h.Tanulo().GetGondviselok(tanuloId, TanevId);
var gondviseloItemCoList = new List<GondviseloItemCo>();
foreach (DataRow dataRow in gonviselokDs.Tables[0].Rows)
{
gondviseloItemCoList.Add(GondviseloItemCo.ConvertToGondviseloItemCoFromTanuloDalGetGondviselok(dataRow));
}
return gondviseloItemCoList;
});
}
public bool IsCsokkentettGondviselo(int gondviseloId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return h.Felhasznalo().IsCsokkentettGondviselo(gondviseloId, IntezmenyId, TanevId);
});
}
public bool HasTanuloTorvenyesGondviselo(int tanuloId)
{
var tanuloGondviseloje = GetTanuloGonviseloiItemCoList(tanuloId);
return tanuloGondviseloje.Any(t => t.IsTorvenyesKepviselo);
}
public Felhasznalo4TAdatokCo GetGondviselo4TAdatok(int gondviseloId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return (Gondviselo)h.Gondviselo().Get(gondviseloId);
});
}
/// INFO: Mobil használja
public void SaveGondviselo4TAdatok(int gondviseloId, Felhasznalo4TAdatokCo co)
{
Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Gondviselo();
var gondviselo = dal.Get(gondviseloId);
gondviselo.AnyjaUtonev = co.AnyjaUtonev.ReplaceMultipleSpacesAndTrim();
gondviselo.AnyjaVezeteknev = co.AnyjaVezeteknev.ReplaceMultipleSpacesAndTrim();
gondviselo.Elotag = Extensions.NameExtensions.CleanElotag(co.Elotag);
gondviselo.SzuletesiDatum = co.SzuletesiDatum;
gondviselo.SzuletesiHely = co.SzuletesiHely.ReplaceMultipleSpacesAndTrim();
gondviselo.SzuletesiUtonev = co.SzuletesiUtonev.ReplaceMultipleSpacesAndTrim();
gondviselo.SzuletesiVezeteknev = co.SzuletesiVezeteknev.ReplaceMultipleSpacesAndTrim();
gondviselo.Utonev = co.Utonev.ReplaceMultipleSpacesAndTrim();
gondviselo.Vezeteknev = co.Vezeteknev.ReplaceMultipleSpacesAndTrim();
gondviselo.Nev = Extensions.NameExtensions.GetNevSorrendben("F", gondviselo.Elotag, gondviselo.Vezeteknev, gondviselo.Utonev);
dal.Update(gondviselo);
});
}
public bool IsGondviseloTanuloinakEvfolyamTipusaLetezik(int gondviseloId, IEnumerable<int> evfolyamTipusIdList)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return h.Gondviselo().IsGondviseloTanuloinakEvfolyamTipusaLetezik(gondviseloId, IntezmenyId, TanevId, evfolyamTipusIdList);
});
}
}
}

View file

@ -0,0 +1,500 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using Hangfire;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Iktatas;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Iktato.Poszeidon.Factory.Interface;
using Kreta.Core.SAP.CommunicationModels;
using Kreta.Core.SAP.CommunicationModels.SzamfejtettTavolletek;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Job.Tasks.Core;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class HRModulHelper : LogicBase
{
public HRModulHelper(IConnectionType connectionType) : base(connectionType) { }
public bool IsTorolheto(TavolletjelentoListaData item, bool isIntezmenyvezeto)
{
if (item.TavolletStatuszId == (int)TavolletStatuszEnum.Munkaugynek_atadva || item.IsTorolt)
{
return false;
}
if (isIntezmenyvezeto)
{
return Constants.TavolletStatuszTorolhetoseg.IntezmenyVezetoAltalTorolhetok.Contains(item.TavolletStatuszId);
}
return Constants.TavolletStatuszTorolhetoseg.BarkiAltalTorolhetok.Contains(item.TavolletStatuszId);
}
public DataSet TavolletjelentoDokList(int tavolletId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.HRModulDAL(GridParameters);
return dal.TavolletjelentoDokList(tavolletId);
});
}
public MemoryStream GetTavolletjelentoExport(TavolletjelentoListaResponseModel kozpontiResult)
{
var coList = new List<TavolletjelentoCO>();
if (kozpontiResult != null && kozpontiResult.IsSuccess && kozpontiResult.TavolletjelentoResultList != null && kozpontiResult.TavolletjelentoResultList.Count > 0)
{
foreach (var item in kozpontiResult.TavolletjelentoResultList)
{
coList.Add(new TavolletjelentoCO
{
TavolletOka = item.TavolletTipusId.GetDisplayName<TavolletTipusEnum>(TanevId),
AlkalmazottNeve = item.AlkalmazottNev,
SzTSzAzonosito = item.AlkalmazottSzTSz,
RogzitesDatuma = item.RogzitesIdopontja,
RogzitoNeve = item.RogzitoNev,
MelleklettelRendelkezik = item.IsMellekletTartozikHozza,
StatuszNeve = item.TavolletStatuszId.GetDisplayName<TavolletStatuszEnum>(TanevId),
Torolt = item.IsTorolt,
TavolletKezdet = item.TavolletKezdete,
TavolletVeg = item.TavolletVege,
TavolletIdotartamNap = item.TavolletIdotartamaNap,
HatralevoNapokSzama = item.HatralevoNapokSzama
});
}
}
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TavolletjelentoCO>(TavolletjelentoCO.ExportPropertyId);
return SimpleExportLogic.GetExport(HRModulResource.TavolletIgenyek, simpleExportColumnCos, coList.OrderByDescending(o => o.RogzitesDatuma).ToList(), TanevId);
}
public MemoryStream GetTavolletListaExport(IntezmenyiTavolletBefogadottResponseModel kozpontiResult, List<string> sztszAzonositok, AlkalmazottHelper alkalmazottHelper)
{
var coList = new List<TavolletListaCo>();
if (kozpontiResult != null && kozpontiResult.IsSuccess && kozpontiResult.Data != null && kozpontiResult.Data.Count > 0)
{
var aa = alkalmazottHelper.GetAlkalmazottSztszAzonositoTavolletAlkalmazott(sztszAzonositok);
foreach (var item in kozpontiResult.Data)
{
coList.Add(new TavolletListaCo
{
TavolletOka = item.TavolletTipusId.GetDisplayName<TavolletTipusEnum>(TanevId),
FoglalkoztatottNeve = aa.TryGetValue(item.SzTSzAzonosito, out var value) ? value.AlkalmazottNev : ErrorResource.NevSzinkronizalasaSikertelen,
SzTSzAzonosito = item.SzTSzAzonosito,
IdoszakKezdet = item.TavolletKezdete,
IdoszakVeg = item.TavolletVege,
TavolletIdotartamNap = item.TavolletIdotartamaNap,
EvesSzabadsagKeret = item.EvesKeret,
});
}
}
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TavolletListaCo>(TavolletListaCo.ExportPropertyId);
return SimpleExportLogic.GetExport(HRModulResource.SzamfejtettTavolletek, simpleExportColumnCos, coList, TanevId);
}
public MemoryStream GetTavolletAlkalmazottakAdataiExport(TavolletAdatokResponseModel kozpontiResult)
{
var coList = new List<TavolletAlkalmazottAdatokCo>();
if (kozpontiResult.IsSuccess && kozpontiResult.TavolletAdatokResultList != null)
{
foreach (var item in kozpontiResult.TavolletAdatokResultList)
{
coList.Add(new TavolletAlkalmazottAdatokCo
{
AlkalmazottNev = item.AlkalmazottNev,
SzTSzAzonosito = item.SzTSzAzonosito,
IsFointezmenyeE = item.IsTavolletFoIntezmenye,
IsFointezmenyeE_BNAME = item.IsTavolletFoIntezmenye ? CommonResource.Igen : CommonResource.Nem,
SzabadsagKeret = item.EvesKeret,
IgenybeVehetoTavolletek = item.FelhasznalhatoKeret,
IgenybeVettTavolletek = item.FelhasznaltKeret,
FuggobenLevoTavolletek = item.FuggoTavolletIgenyek,
});
}
}
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TavolletAlkalmazottAdatokCo>(TavolletAlkalmazottAdatokCo.ExportPropertyId);
return SimpleExportLogic.GetExport(HRModulResource.AlkalmazottakAdatai, simpleExportColumnCos, coList, TanevId);
}
public void InsertDokumentum(IIktatoRepositoryFactory iktatoRepositoryFactory, IktatoServiceConfiguration iktatoServiceConfiguration, IFileServiceHelper fileServiceHelper, TavolletjelentoCO co, List<int> entityIds)
{
var dokuId = Dal.CustomConnection.Run(ConnectionType, h =>
{
var ret = InsertDokumentumWithDal(h, iktatoRepositoryFactory, iktatoServiceConfiguration, co);
foreach (var tavolletId in entityIds)
{
h.HRModulDAL().InsertDokumentum(tavolletId, ret);
}
return ret;
});
var path = $"TavolletCsatolmany/{IntezmenyAzonosito}/{TanevId}/{dokuId}";
Dal.CustomConnection.Run(ConnectionType, h =>
{
var iktatottDokumentumDal = h.IktatottDokumentumDal();
var iktatottDokumentumCsatolmanyDal = h.IktatottDokumentumCsatolmanyDal();
var iktatottDokumentum = iktatottDokumentumDal.Get(dokuId);
var idFilename = new Dictionary<int, string>();
var fileHelper = new FileHelper(new DalHandlerConnectionType(ConnectionType, h), fileServiceHelper);
foreach (var item in co.FilesArray)
{
var fileId = fileHelper.UploadFile(item.Name, Convert.FromBase64String(item.ContentAsBase64EncodedString), MimeMapping.GetMimeMapping(item.Name), path);
if (fileId.HasValue)
{
var csatolmany = iktatottDokumentumCsatolmanyDal.Get();
csatolmany.IktatottDokumentumId = dokuId;
csatolmany.FileId = fileId.Value;
csatolmany.Fajlnev = item.Name;
var csatolmanyId = iktatottDokumentumCsatolmanyDal.Insert(csatolmany);
BackgroundJob.ContinueWith<ITavolletIktatasJob>(iktatottDokumentum.EnqueuedJobId.Value.ToString(), (iktatas) => iktatas.AddCsatolmanyokDokumentumhoz(dokuId, csatolmanyId, IntezmenyAzonosito, TanevId, null));
}
//idFilename.Add(kapottDokumentumId, item.Name);
}
//BackgroundJob.ContinueWith<ITavolletIktatasJob>(iktatottDokumentum.EnqueuedJobId.Value.ToString(), (iktatas) => iktatas.AddCsatolmanyokDokumentumhoz(dokuId, IntezmenyAzonosito, TanevId, idFilename, null));
});
}
private int InsertDokumentumWithDal(IDalHandler h, IIktatoRepositoryFactory iktatoRepositoryFactory, IktatoServiceConfiguration iktatoServiceConfiguration, TavolletjelentoCO co)
{
var dal = h.HRModulDAL();
var poszeidonHelper = new PoszeidonHelper(new DalHandlerConnectionType(ConnectionType, h), iktatoRepositoryFactory, iktatoServiceConfiguration);
var kulcsszoHelper = new KulcsszoHelper(new DalHandlerConnectionType(ConnectionType, h));
var alkalmazottHelper = new AlkalmazottHelper(new DalHandlerConnectionType(ConnectionType, h));
var felhasznaloHelper = new FelhasznaloHelper(new DalHandlerConnectionType(ConnectionType, h));
var dokumentumTipus = DokumentumTipusEnum.tavollet;
var kulcsszodefiniciok = new List<KulcsszoDefinicioModel>()
{
new KulcsszoDefinicioModel()
{
Type = DokumentumKulcsszoTipusEnum.tavollet_oka,
TableName = "Kulcsszavak",
ColumnName = "TavolletOka",
},
new KulcsszoDefinicioModel()
{
Type = DokumentumKulcsszoTipusEnum.igenylo_SZTSZ_szama,
TableName = "Kulcsszavak",
ColumnName = "SZTSZazonosito",
},
new KulcsszoDefinicioModel()
{
Type = DokumentumKulcsszoTipusEnum.igenylo_neve,
TableName = "Kulcsszavak",
ColumnName = "IgenyloNeve",
},
new KulcsszoDefinicioModel()
{
Type = DokumentumKulcsszoTipusEnum.rogzito_neve,
TableName = "Kulcsszavak",
ColumnName = "RogzitoNeve",
},
new KulcsszoDefinicioModel()
{
Type = DokumentumKulcsszoTipusEnum.tavollet_napok_szama,
TableName = "Kulcsszavak",
ColumnName = "TavolletNapokSzama",
},
new KulcsszoDefinicioModel()
{
Type = DokumentumKulcsszoTipusEnum.AlkalmazottEgyediAzonosito,
TableName = "Kulcsszavak",
ColumnName = "AlkalmazottEgyediAzonosito",
},
};
var ds = new DataSet();
var table = new DataTable("Kulcsszavak");
ds.Tables.Add(table);
table.Columns.AddRange(new DataColumn[]
{
new DataColumn("TavolletOka", typeof(int)),
new DataColumn("SZTSZazonosito", typeof(string)),
new DataColumn("IgenyloNeve", typeof(int)),
new DataColumn("RogzitoNeve", typeof(int)),
new DataColumn("TavolletNapokSzama", typeof(int)),
new DataColumn("AlkalmazottEgyediAzonosito", typeof(string)),
});
var row = table.NewRow();
row["TavolletOka"] = co.TavolletOkaId;
var sztszAzonosito = alkalmazottHelper.GetAlkalmazottSztszKod(int.Parse(co.AlkalmazottList[0]));
row["SZTSZazonosito"] = sztszAzonosito;
row["IgenyloNeve"] = co.AlkalmazottList[0];
row["RogzitoNeve"] = co.RogzitoId;
row["TavolletNapokSzama"] = co.TavolletIdotartamNap;
row["AlkalmazottEgyediAzonosito"] = sztszAzonosito;
table.Rows.Add(row);
var kulcsSzavak = kulcsszoHelper.GetKulcsszavak(dokumentumTipus, kulcsszodefiniciok, ds);
var foszamDefinicio = new FoszamDefinicioModel()
{
IntezmenyId = true,
TanevId = true,
Szint = DokumentumElemiSzintEnum.Tanulo,
AlkalmazottEgyediAzonosito = true,
};
var foszamDefinicioErtekek = kulcsszoHelper.FillFoszamDefinicioErtekek(kulcsSzavak, foszamDefinicio);
var sablonPath = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, @"Resources\HRModulSablonok\TavolletIktatasSablon.docx");
Aspose.Words.Replacing.FindReplaceOptions options = new Aspose.Words.Replacing.FindReplaceOptions
{
MatchCase = true,
FindWholeWordsOnly = false,
ReplacingCallback = new Job.Tasks.Helpers.Iktatas.WordIktatoszamVonalkodTextReplacer(),
};
var doc = new Aspose.Words.Document(sablonPath, new Aspose.Words.LoadOptions());
Aspose.Words.Story body = doc.FirstSection.Body;
body.Range.Replace(new Regex("{igenylo}"), felhasznaloHelper.GetNyomtatasiNev(int.Parse(co.AlkalmazottList[0])), options);
body.Range.Replace(new Regex("{rogzito}"), felhasznaloHelper.GetNyomtatasiNev(co.RogzitoId), options);
body.Range.Replace(new Regex("{sztsz}"), sztszAzonosito, options);
body.Range.Replace(new Regex("{ok}"), co.TavolletOkaId.GetItemNameFromCache(TanevId), options);
body.Range.Replace(new Regex("{napokszama}"), $"{co.TavolletIdotartamNap}", options);
body.Range.Replace(new Regex("{datum}"), DateTime.Today.ToString(Constants.ToStringPattern.HungarianDate), options);
body.Range.Replace(new Regex("{tavollettol}"), co.TavolletKezdet.ToString(Constants.ToStringPattern.HungarianDate), options);
body.Range.Replace(new Regex("{tavolletig}"), co.TavolletVeg.ToString(Constants.ToStringPattern.HungarianDate), options);
body.Range.Replace(new Regex("{megjegyzes}"), co.Megjegyzes ?? "", options);
var ms = new MemoryStream();
doc.Save(ms, Aspose.Words.SaveFormat.Pdf);
ms.Position = 0;
return poszeidonHelper.Iktatas(ms, HRModulResource.TavolletIktatasSablonGeneraltFajlNeve, co.RogzitoId, DokumentumKategoriaEnum.szemelyzeti_ugyek, dokumentumTipus, null, kulcsSzavak, foszamDefinicioErtekek, Constants.ContentTypes.Pdf);
}
private static readonly List<string> s_leaderTypes = new List<string>
{
((int)VezetoiOraszamokTipusEnum.Intezmenyvezeto).ToString(),
((int)VezetoiOraszamokTipusEnum.IntezmenyvezetoHelyettes).ToString(),
((int)VezetoiOraszamokTipusEnum.TagintezmenyVezeto).ToString(),
((int)VezetoiOraszamokTipusEnum.IntezmenyegysegVezeto).ToString(),
((int)VezetoiOraszamokTipusEnum.igazgato).ToString(),
((int)VezetoiOraszamokTipusEnum.igazgatohelyettes).ToString(),
};
public bool IsLeader()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Alkalmazott(GridParameters);
var result = dal.IsLeader(FelhasznaloId, TanevId);
return s_leaderTypes.Any(x => x == result);
});
}
public bool IsIntezmenyvezeto(int alkalmazottId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Alkalmazott(GridParameters);
var result = dal.IsLeader(alkalmazottId, TanevId);
return result == ((int)VezetoiOraszamokTipusEnum.Intezmenyvezeto).ToString() ||
result == ((int)VezetoiOraszamokTipusEnum.igazgato).ToString();
});
}
public int GetTavolletIdotartam(DateTime tavolletKezdet, DateTime tavolletVeg)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.HRModulDAL();
return dal.GetTavolletIdotartam(tavolletKezdet, tavolletVeg);
});
}
public AlkalmazottEmailDataCo GetAlkalmazottEmailDataByGuid(Guid felhasznaloEgyediAzonosito)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo(null);
var ds = dal.GetFelhasznaloEmailByGuid(felhasznaloEgyediAzonosito.ToString(), IntezmenyId, TanevId);
if (ds.Tables[0].Rows.Count == 0)
{
return null;
}
var row = ds.Tables[0].Rows[0];
var co = new AlkalmazottEmailDataCo
{
AlkalmazottId = SDAConvert.ToInt32(row["AlkalmazottId"]),
AlkalmazottGuid = SDAConvert.ToGuid(row["AlkalmazottGuid"]),
AlkalmazottNev = SDAConvert.ToString(row["AlkalmazottNev"]),
EmailCim = SDAConvert.ToString(row["EmailCim"]),
EmailGuid = SDAConvert.ToGuid(row["EmailGuid"]),
};
return co;
});
}
public string GetTavolletOkaDictionaryItemName(int tavolletOkaId)
=> tavolletOkaId.GetItemNameFromCache(TanevId);
/// <summary>
/// Azoknak a TavolletTipus-oknak a listája, amiknél 'Engedélyezem' szöveg fog megjelenni
/// </summary>
public IList<int> EngedelyezList =>
new List<int>
{
(int)TavolletTipusEnum.Szabadsag,
(int)TavolletTipusEnum.Apat_megilleto_potszabadsag_gyermeke_szuletese_eseten,
(int)TavolletTipusEnum.Tanulmanyi_munkaido_kedvezmeny,
(int)TavolletTipusEnum.tanulmanyi_szabadsag_illetmeny_szamfejtessel,
(int)TavolletTipusEnum.Fizetes_nelkuli_szabadsag_kerelemre_30_napot_meghalado_tartamu_biztositas_szunetel,
(int)TavolletTipusEnum.Fizetes_nelkuli_szabadsag_kerelemre_30_napot_nem_meghalado_tartamu_biztositas_szunetel,
(int)TavolletTipusEnum.Egyeb_hianyzas_dijazassal,
(int)TavolletTipusEnum.Egyeb_hianyzas_dijazas_nelkul,
(int)TavolletTipusEnum.egyeb_hianyzas_dijazas_nelkul_ora,
(int)TavolletTipusEnum.Mentesites_a_munkavegzes_alol_felmentesi_felmondasi_ido_tartamara,
(int)TavolletTipusEnum.Munkaszuneti_nap_miatti_tavollet_ora_vagy_teljesitmenyberezes_eseten,
(int)TavolletTipusEnum.Fizetes_nelkuli_szabadsag_biztositas_nem_szunetel,
(int)TavolletTipusEnum.Onkentes_tartalekos_katonai_szolgalatteljesites,
(int)TavolletTipusEnum.Jogviszony_folyositas,
(int)TavolletTipusEnum.Kirendeles_a_fogado_munkaltato_fizet,
(int)TavolletTipusEnum.Munkaltato_engedelye_alapjan,
(int)TavolletTipusEnum.munkaltato_engedelye_alapjan_ora,
(int)TavolletTipusEnum.Allasido_dijazassal,
(int)TavolletTipusEnum.allasido_dijazassal_ora,
(int)TavolletTipusEnum.Felfuggesztes_jogviszonyt_megszunteto_hatarozat_kezbesitese,
(int)TavolletTipusEnum.Munkaszuneti_nap_miatti_tavollet,
(int)TavolletTipusEnum.Kotelezettsegszeges_korulmenyei_kivizsgalasanak_idotartamara_mentesites_munkavegzes_alol_max_30_nap_,
(int)TavolletTipusEnum.kotelezettsegszeges_korulmenyei_kivizsgalasanak_idotartamara_mentesites_munkavegzes_alol_max_30_nap_ora,
(int)TavolletTipusEnum.Allasido_dijazas_nelkul,
(int)TavolletTipusEnum.allasido_dijazas_nelkul_ora,
(int)TavolletTipusEnum.nagyszulot_megilleto_potszabadsag,
(int)TavolletTipusEnum.elso_hazassag_utani_potszabadsag,
(int)TavolletTipusEnum.igazolatlan_tortnapi,
(int)TavolletTipusEnum.veszelyhelyzet_miatti_fizetes_nelkuli_szabadsag_biztositas_szunetel,
(int)TavolletTipusEnum.orokbefogadas_elokeszitese_celjabol,
(int)TavolletTipusEnum.vedooltas_hianya_miatti_fizetes_nelkuli_szabadsag,
(int)TavolletTipusEnum.szuletesnapi_szabadsag,
};
/// <summary>
/// TavolletTipus alapján visszaadja a megfelelő 'Elfogadó' TavolletStatusz-t
/// </summary>
/// <param name="tipusId"></param>
/// <returns></returns>
public static TavolletStatuszEnum GetElfogadasStatuszByTipus(TavolletTipusEnum tipusId)
{
switch (tipusId)
{
case TavolletTipusEnum.Szabadsag:
case TavolletTipusEnum.Apat_megilleto_potszabadsag_gyermeke_szuletese_eseten:
case TavolletTipusEnum.Tanulmanyi_munkaido_kedvezmeny:
case TavolletTipusEnum.tanulmanyi_szabadsag_illetmeny_szamfejtessel:
case TavolletTipusEnum.Fizetes_nelkuli_szabadsag_kerelemre_30_napot_meghalado_tartamu_biztositas_szunetel:
case TavolletTipusEnum.Fizetes_nelkuli_szabadsag_kerelemre_30_napot_nem_meghalado_tartamu_biztositas_szunetel:
case TavolletTipusEnum.Egyeb_hianyzas_dijazassal:
case TavolletTipusEnum.Egyeb_hianyzas_dijazas_nelkul:
case TavolletTipusEnum.egyeb_hianyzas_dijazas_nelkul_ora:
case TavolletTipusEnum.Mentesites_a_munkavegzes_alol_felmentesi_felmondasi_ido_tartamara:
case TavolletTipusEnum.Munkaszuneti_nap_miatti_tavollet_ora_vagy_teljesitmenyberezes_eseten:
case TavolletTipusEnum.Fizetes_nelkuli_szabadsag_biztositas_nem_szunetel:
case TavolletTipusEnum.Onkentes_tartalekos_katonai_szolgalatteljesites:
case TavolletTipusEnum.Jogviszony_folyositas:
case TavolletTipusEnum.Kirendeles_a_fogado_munkaltato_fizet:
case TavolletTipusEnum.Munkaltato_engedelye_alapjan:
case TavolletTipusEnum.munkaltato_engedelye_alapjan_ora:
case TavolletTipusEnum.Allasido_dijazassal:
case TavolletTipusEnum.allasido_dijazassal_ora:
case TavolletTipusEnum.Felfuggesztes_jogviszonyt_megszunteto_hatarozat_kezbesitese:
case TavolletTipusEnum.Munkaszuneti_nap_miatti_tavollet:
case TavolletTipusEnum.Kotelezettsegszeges_korulmenyei_kivizsgalasanak_idotartamara_mentesites_munkavegzes_alol_max_30_nap_:
case TavolletTipusEnum.kotelezettsegszeges_korulmenyei_kivizsgalasanak_idotartamara_mentesites_munkavegzes_alol_max_30_nap_ora:
case TavolletTipusEnum.Allasido_dijazas_nelkul:
case TavolletTipusEnum.allasido_dijazas_nelkul_ora:
case TavolletTipusEnum.nagyszulot_megilleto_potszabadsag:
case TavolletTipusEnum.elso_hazassag_utani_potszabadsag:
case TavolletTipusEnum.igazolatlan_tortnapi:
case TavolletTipusEnum.veszelyhelyzet_miatti_fizetes_nelkuli_szabadsag_biztositas_szunetel:
case TavolletTipusEnum.orokbefogadas_elokeszitese_celjabol:
case TavolletTipusEnum.vedooltas_hianya_miatti_fizetes_nelkuli_szabadsag:
case TavolletTipusEnum.szuletesnapi_szabadsag:
return TavolletStatuszEnum.Engedelyezve_atadva_tankeruletnek;
case TavolletTipusEnum.Hozzatartozo_halalakor_mentesules_munkavegzes_alol:
case TavolletTipusEnum.Szakszervezeti_tisztsegviselo_munkaido_kedvezmenye:
case TavolletTipusEnum.Keresokeptelenseg:
case TavolletTipusEnum.Sztrajk:
case TavolletTipusEnum.Kulonos_meltanylast_erdemlo_szemelyi_csaladi_vagy_elharithatatlan_ok_miatt_indokolt_tavollet_tartamara_mentesules_munkavegzes_alol:
case TavolletTipusEnum.Szulesi_szabadsag:
case TavolletTipusEnum.Kotelezo_orvosi_vizsgalat_tartamara_mentesules_munkavegzes_alol:
case TavolletTipusEnum.Veradashoz_szukseges_idotartamra_mentesules_munkavegzes_alol:
case TavolletTipusEnum.Szoptatas_idotartamara_mentesules_munkavegzes_alol:
case TavolletTipusEnum.Valasztas_miatt_mentesules_munkavegzes_alol:
case TavolletTipusEnum.Tanukenti_meghallgatas:
case TavolletTipusEnum.Kepviseloi_feladatok_ellatasa:
case TavolletTipusEnum.Emberi_reprodukcios_eljarassal_osszefuggo_egeszsegugyi_intezmenyben_torteno_kezeles_tartamara_mentesules_munkavegzes_alol:
case TavolletTipusEnum.Kepzesben_tovabbkepzesben_felek_megallapodasa_alapjan_valo_reszvetelhez_szukseges_idotartamra_mentesules_munkavegzes_alol:
case TavolletTipusEnum.Onkentes_vagy_letesitmenyi_tuzoltoi_szolgalat_ellatasanak_tartamara_mentesules_munkavegzes_alol:
case TavolletTipusEnum.Birosag_hatosag_felhivasara_vagy_az_eljarasban_valo_reszvetelhez_szukseges_idotartamra_mentesules_munkavegzes_alol:
case TavolletTipusEnum.Fizetes_nelkuli_szabadsag_kulszolgalatba_helyezes_idotartamara:
case TavolletTipusEnum.Elozetes_letartoztatas_szabadsagvesztes:
default:
break;
}
return TavolletStatuszEnum.Tudomasul_veve_atadva_tankeruletnek;
}
public List<string> GetTavolletjelentoNaptariEvek(bool isAdministrator)
{
List<string> evek = new List<string>()
{
DateTime.Now.Year.ToString(),
DateTime.Now.AddYears(-1).Year.ToString()
};
if (isAdministrator || IsIntezmenyvezeto(FelhasznaloId))
{
var tanevHelper = new TanevHelper(ConnectionType);
var dictionary = tanevHelper.GetTanevekForDDL(string.Empty);
evek = string.Join("/", dictionary.Select(x => x.Value)).Split('/').ToList().Distinct().ToList();
}
return evek;
}
public DateTime GetMinimumNaptariEv(bool isAdministrator)
{
var minimumNaptariEv = GetTavolletjelentoNaptariEvek(isAdministrator).Select(int.Parse).ToList().Min();
return new DateTime(minimumNaptariEv, 1, 1);
}
public bool IsHrKezelo()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Alkalmazott(GridParameters);
var result = dal.IsHrKezelo(FelhasznaloId, TanevId);
return result;
});
}
}
}

View file

@ -0,0 +1,546 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Xml;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class HelyettesitesHelper : LogicBase
{
public HelyettesitesHelper(IConnectionType connectionType) : base(connectionType) { }
// TODO: párja: OrarendHelper.FilterOutEventByTanevRendje !!
public DataSet GetTanarOrai(HelyettesitesekKereseseCo co)
{
HelyettesitesekKeresesePCO pco = Convert_CO_to_PCO(co);
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IHelyettesitesDAL dal = h.HelyettesitesDAL(GridParameters);
var ds = dal.GetTanarOrai(pco, IntezmenyId, TanevId);
var orarendevents = ds.Tables[0].AsEnumerable();
var engedelyezettEventList = new List<DataRow>();
var ocsTiltottEventList = new List<DataRow>();
var globalTiltottEventList = new List<DataRow>();
var orarendHelper = new OrarendHelper(new DalHandlerConnectionType(ConnectionType, h));
var tanevRendHelper = new TanevrendHelper(new DalHandlerConnectionType(ConnectionType, h));
var tanevrendek = tanevRendHelper.GetTanevrendekOsztalyCsoportokkal(co.HelyettesitesKezdete, co.HelyettesitesVege);
var tanevRendjeLists = tanevRendHelper.GetTanevRendjeLists(tanevrendek.Tables[0]);
foreach (var t in tanevRendjeLists.OcsEngedelyezes)
{
engedelyezettEventList.AddRange(orarendevents.Where(x => x.Field<DateTime>("HelyettesitettOraKezdete").Date == t.Item1 &&
x.Field<int>("HelyettesitettOsztalyId") == t.Item2));
}
foreach (var d in tanevRendjeLists.GlobalTiltas)
{
globalTiltottEventList.AddRange(orarendevents.Where(x => x.Field<DateTime>("HelyettesitettOraKezdete").Date == d));
}
foreach (var t in tanevRendjeLists.OcsTiltas)
{
ocsTiltottEventList.AddRange(orarendevents.Where(x => x.Field<DateTime>("HelyettesitettOraKezdete").Date == t.Item1 &&
x.Field<int>("HelyettesitettOsztalyId") == t.Item2));
}
var foglalkozasok_Rogzitese_Hetvegere = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue<FoglalkozasokRogziteseHetvegere>(RendszerBeallitasTipusEnum.Foglalkozasok_Rogzitese_Hetvegere);
foreach (var item in orarendevents)
{
bool isErvenyesNap = false;
switch (foglalkozasok_Rogzitese_Hetvegere)
{
case FoglalkozasokRogziteseHetvegere.Engedelyezett:
isErvenyesNap = true;
break;
case FoglalkozasokRogziteseHetvegere.CsakSzombat:
isErvenyesNap = orarendHelper.IsHetkoznapWithSzombat(item.Field<DateTime>("HelyettesitettOraKezdete").Date);
break;
case FoglalkozasokRogziteseHetvegere.NemEngedelyezett:
default:
isErvenyesNap = orarendHelper.IsHetkoznap(item.Field<DateTime>("HelyettesitettOraKezdete").Date);
break;
}
if ((isErvenyesNap || tanevRendjeLists.GlobalEngedelyezes.Contains(item.Field<DateTime>("HelyettesitettOraKezdete").Date))
&& engedelyezettEventList.All(x => x.Field<Guid>("ID") != item.Field<Guid>("ID"))
&& ocsTiltottEventList.All(x => x.Field<Guid>("ID") != item.Field<Guid>("ID"))
&& globalTiltottEventList.All(x => x.Field<Guid>("ID") != item.Field<Guid>("ID")))
{
engedelyezettEventList.Add(item);
}
}
var resultDs = ds.Clone();
foreach (var item in engedelyezettEventList)
{
resultDs.Tables[0].Rows.Add(item.ItemArray);
}
return resultDs;
});
}
public DataSet GetHelyettesitesekListajaGrid(HelyettesitesekListajaSearchCO co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IHelyettesitesDAL dal = h.HelyettesitesDAL(GridParameters);
return dal.GetHelyettesitesekListajaGrid(co.ConvertToPCO(), TanevId);
});
}
public DataSet GetHelyettesitesekAjanlasa(LehetsegesHelyettesitoTanarokCO co)
{
LehetsegesHelyettesitoTanarokPCO pco = Convert_CO_to_PCO(co);
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, h =>
{
IHelyettesitesDAL dal = h.HelyettesitesDAL(GridParameters);
return dal.GetHelyettesitesekAjanlasa(pco, TanevId, IntezmenyId);
});
dataSet.Tables[0].ChangeColumnDataType("ID", typeof(string));
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
string tanarId = SDAConvert.ToString(dataRow["TanarId"]);
dataRow["ID"] = tanarId;
string tantargyId = SDAConvert.ToString(dataRow["TantargyId"]);
if (!string.IsNullOrWhiteSpace(tantargyId))
{
dataRow["ID"] += $"_{tantargyId}";
}
string osztalyCsoportId = SDAConvert.ToString(dataRow["OsztalyCsoportId"]);
if (!string.IsNullOrWhiteSpace(osztalyCsoportId))
{
dataRow["ID"] += $"_{osztalyCsoportId}";
}
}
DataTable tanarDataTable = dataSet.Tables[0].Clone();
foreach (DataRow sourceDataRow in dataSet.Tables[0].Rows)
{
var listabanSzereploTanar = tanarDataTable.AsEnumerable().FirstOrDefault(x => x.Field<int>("TanarId").Equals(sourceDataRow["TanarId"]));
if (listabanSzereploTanar == null)
{
tanarDataTable.ImportRow(sourceDataRow);
}
else
{
listabanSzereploTanar["TantargyNev"] = $"{listabanSzereploTanar["TantargyNev"]}, {sourceDataRow["TantargyNev"]}";
listabanSzereploTanar["OsztalyCsoportNev"] = $"{listabanSzereploTanar["OsztalyCsoportNev"]}, {sourceDataRow["OsztalyCsoportNev"]}";
}
}
var tanarDataSet = new DataSet();
tanarDataSet.Tables.Add(tanarDataTable);
return tanarDataSet;
}
public bool IsOrarendiOraHelyettesitoTanar(int tanoraId, int tanarId, int hetSorszam)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.OrarendiOra();
return dal.IsOrarendiOraHelyettesitoTanar(tanoraId, tanarId, hetSorszam);
});
}
public HelyettesitesResultCO SaveHelyettesites(int orarendiOraId, int tanarId, int helyettesitesTipus, string helyettesItesOka, int hetSorszam, DateTime helyettesitesNapja, bool isTuloraMentes)
{
try
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.OrarendiOra();
var (helyettesItesId, errorId) = dal.SaveHelyettesites(orarendiOraId, tanarId, helyettesitesTipus, helyettesItesOka, hetSorszam, helyettesitesNapja.Date, isTuloraMentes);
return new HelyettesitesResultCO
{
HelyettesitesId = helyettesItesId,
ErrorId = errorId
};
});
}
catch (Exception ex)
{
throw new BlException(StringResourcesUtil.GetString(4296) /*Hiba a helyettesítés mentése során!*/, ex);
}
}
public List<HelyettesitesResultCO> SaveGroupHelyettesites(int orarendiOraId, int tanarId, int helyettesitesTipus, string helyettesItesOka, int hetSorszam, DateTime helyettesitesNapja, DateTime tartosHelyettesitesVegeDate, bool isTuloraMentes)
{
try
{
var result = Dal.CustomConnection.Run(ConnectionType, handler =>
{
var dal = handler.OrarendiOra();
var (helyettesItesId, errorId) = dal.SaveHelyettesites(orarendiOraId, tanarId, helyettesitesTipus, helyettesItesOka, hetSorszam, helyettesitesNapja, isTuloraMentes);
var helyettesitesResultCoList = new List<HelyettesitesResultCO>
{
new HelyettesitesResultCO
{
HelyettesitesId = helyettesItesId,
ErrorId = errorId
}
};
int groupId;
if (helyettesItesId.IsEntityId())
{
groupId = helyettesItesId.Value;
}
else
{
return helyettesitesResultCoList;
}
var hetHelper = new NaptariHetHelper(new DalHandlerConnectionType(ConnectionType, handler));
var utolsoNapDate = new TanevHelper(new DalHandlerConnectionType(ConnectionType, handler)).GetTanevInfo().UtolsoNap;
int currentHetszam = hetHelper.GetNaptariHetSorszamByDate(helyettesitesNapja);
int mentettOraHetirendje = dal.Get(orarendiOraId).Hetirend;
do
{
int? aktualisHetHetirendje = hetHelper.GetNaptariHetHetirendByDate(helyettesitesNapja);
bool isTanitasiNap;
var tanevrendHelper = new TanevrendHelper(new DalHandlerConnectionType(ConnectionType, handler));
isTanitasiNap = tanevrendHelper.IsTanitasiNap(helyettesitesNapja, null);
if (mentettOraHetirendje == aktualisHetHetirendje || mentettOraHetirendje == (int)HetiRendTipusEnum.MindegyikHet)
{
helyettesitesResultCoList.Add(isTanitasiNap ?
SaveHelyettesites(orarendiOraId, tanarId, helyettesitesTipus, helyettesItesOka, currentHetszam, helyettesitesNapja, isTuloraMentes) :
new HelyettesitesResultCO { ErrorId = 8020 }
);
}
helyettesitesNapja = helyettesitesNapja.AddDays(7);
currentHetszam = hetHelper.GetNaptariHetSorszamByDate(helyettesitesNapja);
} while (helyettesitesNapja <= tartosHelyettesitesVegeDate && helyettesitesNapja.AddDays(7) <= utolsoNapDate);
foreach (int helyettesitesId in helyettesitesResultCoList.Where(x => x.HelyettesitesId.IsEntityId()).Select(x => x.HelyettesitesId.Value))
{
dal.UpdateHelyettesitesGroupId(helyettesitesId, groupId);
}
return helyettesitesResultCoList;
});
return result;
}
catch (Exception ex)
{
throw new BlException(StringResourcesUtil.GetString(4296) /*Hiba a helyettesítés mentése során!*/, ex);
}
}
public HelyettesitesResultCO UpdateHelyettesitoTanar(int orarendiOraId, int helyettesitesId, int ujTanarId, int helyettesitesTipus, string helyettesitesOka, DateTime helyettesitesNapja, int? groupId, bool isTuloraMentes)
{
try
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.OrarendiOra();
var (helyettesItesId, errorId) = dal.UpdateHelyettesitoTanar(orarendiOraId, helyettesitesId, ujTanarId, helyettesitesTipus, helyettesitesOka, helyettesitesNapja, groupId, isTuloraMentes);
return new HelyettesitesResultCO
{
HelyettesitesId = helyettesItesId,
ErrorId = errorId
};
});
}
catch (Exception ex)
{
throw new BlException(StringResourcesUtil.GetString(4296) /*Hiba a helyettesítés mentése során!*/, ex);
}
}
public void DeleteHelyettesites(int helyettesitesId)
{
Dal.CustomConnection.Run(ConnectionType, dal =>
{
dal.HelyettesitesDAL().Delete(helyettesitesId);
});
}
public void ClearHelyettesitesGroupId(int helyettesitesId)
{
Dal.CustomConnection.Run(ConnectionType, dal =>
{
var helyettesitesDAL = dal.HelyettesitesDAL();
var helyettesitesiIdoszak = helyettesitesDAL.Get(helyettesitesId);
helyettesitesiIdoszak.GroupId = null;
helyettesitesDAL.FullUpdate(helyettesitesiIdoszak);
});
}
public DataSet GetHelyettesitesDataById(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.OrarendiOra();
return dal.GetTanarFromHelyettesites(id, IntezmenyId, TanevId);
});
}
public DataSet GetHelyettesitettTanorak(TanarHelyettesitesekKereseseCO co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IHelyettesitesDAL dal = h.HelyettesitesDAL(GridParameters);
return dal.GetHelyettesitettTanorak(ConvertTanarHelyettesitesekKereseseCoToPco(co));
});
}
public HelyettesitesCO GetHelyettesitesEmailDataById(int id)
{
DataSet ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
IHelyettesitesDAL dal = h.HelyettesitesDAL(GridParameters);
return dal.GetHelyettesitesEmailDataById(id);
});
DataRow dr = ds.Tables[0].Rows[0];
var co = new HelyettesitesCO()
{
HelyettesitoNev = dr.Field<string>("HelyettesitoNev"),
HelyettesitoEmail = dr.Field<string>("HelyettesitoEmail"),
OsztalyCsoportNev = dr.Field<string>("OsztalyCsoportNev"),
TantargyNev = dr.Field<string>("TantargyNev"),
OraDatuma = dr.Field<DateTime>("OraDatuma").ToString("yyyy.MM.dd."),
OraKezdete = dr.Field<DateTime>("OraKezdete").ToString("HH:mm"),
OraVege = dr.Field<DateTime>("OraVege").ToString("HH:mm"),
OraSzama = dr.Field<int?>("OraSzama").HasValue ? dr.Field<int>("OraSzama") : 0,
IsNapirend = dr.Field<bool>("IsNapirend_BOOL"),
TeremNev = dr.Field<string>("TeremNev"),
HelyettesitesTipusa = dr.Field<string>("HelyettesitesTipus"),
HelyettesitettNev = dr.Field<string>("HelyettesitettNev"),
HelyettesitoID = SDAConvert.ToInt32(dr["HelyettesitoID"]),
HelyettesitoEmailGuid = SDAConvert.ToNullableGuid(dr["HelyettesitoEmailGuid"])
};
return co;
}
public DataSet GetNemkotottMunkaidoByHelyettesites(int? id, int? groupId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IHelyettesitesDAL dal = h.HelyettesitesDAL();
return dal.GetNemkotottMunkaidoByHelyettesites(id, groupId, TanevId);
});
}
public Dictionary<int, int> GetNemkotottMunkaidoByHelyettesitesTorleshez(int? id, int? groupId, DateTime helyettesitesBevitelOraKezdeteDate)
{
Dictionary<int, int> nemKotottMunkaidoDictionary = new Dictionary<int, int>();
DataSet ds = GetNemkotottMunkaidoByHelyettesites(id, groupId);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dataRow in ds.Tables[0].Rows)
{
var helyettesitesNapjaDate = SDAConvert.ToDateTime(dataRow["HelyettesitesNapjaDate"]);
if (helyettesitesBevitelOraKezdeteDate.Date <= helyettesitesNapjaDate)
{
int nemKotottMunkaidoId = SDAConvert.ToInt32(dataRow["NemKotottMunkaidoId"]);
int helyettesitesId = SDAConvert.ToInt32(dataRow["HelyettesitesId"]);
nemKotottMunkaidoDictionary.Add(helyettesitesId, nemKotottMunkaidoId);
}
}
}
return nemKotottMunkaidoDictionary;
}
public List<string> GetNemkotottMunkaidoByHelyettesitesHibakListaja(int? id, int? groupId, DateTime helyettesitesBevitelOraKezdeteDate)
{
List<string> textList = new List<string>();
DataSet ds = GetNemkotottMunkaidoByHelyettesites(id, groupId);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dataRow in ds.Tables[0].Rows)
{
var helyettesitesNapjaDate = SDAConvert.ToDateTime(dataRow["HelyettesitesNapjaDate"]);
if (helyettesitesBevitelOraKezdeteDate.Date <= helyettesitesNapjaDate)
{
string kezdetiDatum = SDAConvert.ToDateTime(dataRow["NemKotottMunkaidoKezdete"]).Value.ToString(Kreta.Core.Constants.ToStringPattern.HungarianDateTime);
string vegDatum = SDAConvert.ToDateTime(dataRow["NemKotottMunkaidoVege"]).Value.ToString(Kreta.Core.Constants.ToStringPattern.HungarianDateTime);
textList.Add(string.Format(HelyettesitesResource.NemKotottMunkaidoTorlesreFogKerulni, kezdetiDatum, vegDatum));
}
}
}
return textList;
}
public TanoraCO GetHelyettesitesAdatok(int searchId)
{
return Dal.CustomConnection.Run(ConnectionType, dal =>
{
var helyettesitesDal = dal.HelyettesitesDAL();
var helyettesites = helyettesitesDal.Get(searchId);
var co = new TanoraCO
{
Datum = helyettesites.HelyettesitesNapja,
TeremNev = helyettesites.HelyettesitettOrarend.Terem.Nev,
HetNapjaNev = helyettesites.HelyettesitettOrarend.HetNapja.GetDisplayName<HetNapjaTipusEnum>(TanevId),
ID = helyettesites.HelyettesitettOrarend.ID,
Oraszam = helyettesites.HelyettesitettOrarend.Oraszam,
OsztalyCsoportNev = helyettesites.HelyettesitettOrarend.OsztalyCsoport.Nev,
TanarNev = helyettesites.HelyettesitettOrarend.Tanar.NyomtatasiNev,
HelyettesitoTanarNev = helyettesites.HelyettesTanarok.NyomtatasiNev,
TantargyNev = helyettesites.HelyettesitettOrarend.Tantargy.Nev,
Megtartott = false,
OraKezd = helyettesites.HelyettesitettOrarend.OraKezdete.Value,
OraVeg = helyettesites.HelyettesitettOrarend.OraVege.Value,
Terem = helyettesites.HelyettesitettOrarend.TeremId,
OsztCsop = helyettesites.HelyettesitettOrarend.OsztalyCsoportId,
Targy = helyettesites.HelyettesitettOrarend.TantargyId,
AdminAltalKiirt = true,
CsengetesiRendOraId = helyettesites.HelyettesitettOrarend.CsengetesirendOraId,
Sorszamozando = helyettesites.HelyettesitettOrarend.Sorszamozando,
Megjegyzes = helyettesites.HelyettesitesOka,
HetirendNev = helyettesites.HelyettesitettOrarend.Hetirend.GetDisplayName<HetiRendTipusEnum>(TanevId),
HelyettesitesTipus = helyettesites.HelyettesitesTipus
};
co.HelyettesitesElrendelesenekIdopontja = helyettesitesDal.GetHelyettesitesElrendelese(helyettesites.ID);
if (helyettesites.HelyettesitettOrarend.FoglalkozasId > 0)
{
co.FoglalkozasNev = helyettesites.HelyettesitettOrarend.Foglalkozas?.Nev;
}
return co;
});
}
private LehetsegesHelyettesitoTanarokPCO Convert_CO_to_PCO(LehetsegesHelyettesitoTanarokCO co)
{
return new LehetsegesHelyettesitoTanarokPCO()
{
orarendiOraId = co.orarendiOraId,
datum = co.datum,
};
}
private TanarHelyettesitesekKeresesePCO ConvertTanarHelyettesitesekKereseseCoToPco(TanarHelyettesitesekKereseseCO co)
{
TanarHelyettesitesekKeresesePCO pco = new TanarHelyettesitesekKeresesePCO()
{
HelyettesitesKezdete = co.HelyettesitesKezdete,
HelyettesitesVege = co.HelyettesitesVege,
HelyettesitettId = co.HelyettesitettId,
HelyettesitoId = co.HelyettesitoId
};
return pco;
}
private HelyettesitesekKeresesePCO Convert_CO_to_PCO(HelyettesitesekKereseseCo co)
{
HelyettesitesekKeresesePCO pco = new HelyettesitesekKeresesePCO()
{
HelyettesitesKezdete = co.HelyettesitesKezdete,
HelyettesitesVege = co.HelyettesitesVege,
HelyettesitettId = co.HelyettesitettId,
};
return pco;
}
public bool GetUserHelyettesitesProfilData(int userId)
{
string xmlResult = string.Empty;
Dal.CustomConnection.Run(ConnectionType, h =>
{
IFelhasznaloDal dal = h.Felhasznalo();
xmlResult = dal.GetUserProfile(userId);
});
if (!string.IsNullOrWhiteSpace(xmlResult))
{
var profilXml = new XmlDocument();
profilXml.LoadXml(xmlResult);
XmlNode node = profilXml.SelectSingleNode("UserProfile/EmailHelyettesites");
if (node == null)
{
return true;
}
return bool.TryParse(node.InnerText, out bool result) && result;
}
return true;
}
public string GetHelyettesitoTanarEmailCim(int userId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Felhasznalo();
var ds = dal.GetUserEmailCim(userId).Tables[0];
if (ds.Rows.Count > 0)
{ return ds.Rows[0].Field<string>("EmailCim"); }
return "";
});
}
public void DeleteHelyettesitesek(int orarendiOraId, DateTime start, DateTime end)
{
Dal.CustomConnection.Run(ConnectionType, dal =>
{
dal.HelyettesitesDAL().DeleteHelyettesitesek(orarendiOraId, start, end, TanevId);
});
}
public DataSet GetHelyettesitesDataSetByGroupId(int groupId)
{
return Dal.CustomConnection.Run(ConnectionType, dal =>
{
return dal.HelyettesitesDAL().GetHelyettesitesDataSetByGroupId(IntezmenyId, TanevId, groupId);
});
}
public List<HelyettesitesItemCo> GetHelyettesitesekListajaCoList(HelyettesitesekListajaSearchCO co)
{
DataSet dataSet = GetHelyettesitesekListajaGrid(co);
var result = new List<HelyettesitesItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new HelyettesitesItemCo(dataRow);
result.Add(item);
}
return result;
}
}
}

View file

@ -0,0 +1,199 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.Enums;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class HetesekHelper : LogicBase
{
public HetesekHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet GetHetSorszamokTanulokkal(int osztalyCsoportId, int? hetSorszam = null)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IHetesDal dal = h.HetesDal();
return dal.GetHetSorszamokTanulokkal(TanevId, osztalyCsoportId, hetSorszam);
});
}
public DataSet GetHetesek(int osztalyCsoportId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IHetesDal dal = h.HetesDal();
return dal.GetHetesek(TanevId, osztalyCsoportId);
});
}
public void DeleteFutureHetesInOsztalyCsoport(int osztalyCsoportId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IHetesDal dal = h.HetesDal();
dal.DeleteFutureHetesInOsztalyCsoport(TanevId, osztalyCsoportId);
});
}
public void SaveOrDeleteHetesekFeljegyzessel(List<HetesekCO> hetesekCoList, int osztalyCsoportId, int felhasznaloId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IHetesDal hetesDal = h.HetesDal();
IFeljegyzesDal feljegyzesDal = h.Feljegyzes();
List<int> beallitottHetesTanuloIdList = new List<int>();
List<int> toroltHetesTanuloIdList = new List<int>();
foreach (var hetesekCO in hetesekCoList)
{
var (toroltHetesek, beallitottHetesek) = SaveOrDeleteHetesek(osztalyCsoportId, hetesekCO.HetSorszam, hetesekCO.TanuloIdList, hetesDal);
beallitottHetesTanuloIdList.AddRange(beallitottHetesek);
toroltHetesTanuloIdList.AddRange(toroltHetesek);
}
if (toroltHetesTanuloIdList.Any())
{
DataSet toroltHetesekIdoszakbanDataSet = hetesDal.GetHetesAdatokFeljegyzeshez(TanevId, osztalyCsoportId, toroltHetesTanuloIdList.Distinct().ToList(), true);
foreach (var hetesId in toroltHetesTanuloIdList.Distinct().ToList())
{
var hetesData = toroltHetesekIdoszakbanDataSet.Tables[0].AsEnumerable().Where(x => x.Field<int>("ID") == hetesId).ToList();
SaveHetesFeljegyzes(true, feljegyzesDal, felhasznaloId, hetesId, hetesData);
}
}
if (beallitottHetesTanuloIdList.Any())
{
DataSet beallitottHetesekIdoszakbanDataSet = hetesDal.GetHetesAdatokFeljegyzeshez(TanevId, osztalyCsoportId, beallitottHetesTanuloIdList.Distinct().ToList(), false);
foreach (var hetesId in beallitottHetesTanuloIdList.Distinct().ToList())
{
var hetesData = beallitottHetesekIdoszakbanDataSet.Tables[0].AsEnumerable().Where(x => x.Field<int>("ID") == hetesId).ToList();
SaveHetesFeljegyzes(false, feljegyzesDal, felhasznaloId, hetesId, hetesData);
}
}
});
}
private void SaveHetesFeljegyzes(bool isTorles, IFeljegyzesDal dal, int felhasznaloId, int hetesId, List<DataRow> hetesData)
{
var entity = dal.Get();
//entity.Kezdete =
entity.FaliujsagMegjelenes = true;
entity.EsemenyDatuma = hetesData[0].Field<DateTime>("KezdoNap");
entity.Tipus = (int)EsemenyTipusEnum.ElektronikusUzenet;
//entity.Vege =;
entity.FeljegyzoId = felhasznaloId;
entity.Mindenkinek = false;
entity.Targy = HetesResource.HetesnekTortenoBeallitas;
entity.Tartalom = CreateHetesFeljegyzesSzoveg(isTorles, hetesData);
entity.BeirasTanuloId = hetesId;
dal.Insert(entity);
dal.AddTanulo(entity, hetesId);
}
private string CreateHetesFeljegyzesSzoveg(bool isTorles, List<DataRow> hetesData)
{
var hetesFirst = hetesData[0];
var hetesNev = hetesFirst.Field<string>("Nev");
var hetesOsztalyNev = hetesFirst.Field<string>("OsztalyCsoportNev");
var hetesIdoszakokString = new StringBuilder();
foreach (var hetes in hetesData)
{
hetesIdoszakokString.Append($"{ hetes.Field<DateTime>("KezdoNap").ToString(Constants.ToStringPattern.HungarianDate)} - {hetes.Field<DateTime>("UtolsoNap").ToString(Constants.ToStringPattern.HungarianDateWithSuffix)}, ");
}
return string.Format(HetesResource.HetesekFaliujsag, Environment.NewLine, hetesNev, hetesIdoszakokString.ToString().TrimEnd(','), isTorles ? HetesResource.hetesBeallitasaTorlesreKerult : HetesResource.hetesnekLettBeallitva, hetesOsztalyNev);
}
public (List<int> toroltHetesek, List<int> beallitottHetesek) SaveOrDeleteHetesek(int osztalyCsoportId, int hetSorszam, List<int> selectedTanuloIds, IHetesDal hetesDal)
{
return hetesDal.SaveOrDeleteHetesek(TanevId, osztalyCsoportId, hetSorszam, selectedTanuloIds);
}
public string GetHetesekForDatum(int osztalyCsoportId, DateTime datum)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IHetesDal dal = h.HetesDal();
return dal.GetHetesekForDatum(TanevId, osztalyCsoportId, datum);
});
}
public Dictionary<int, string> GetHetesSzovegHetsorszammal(List<int> osztalyCsoportIdList)
{
var hetesString = new StringBuilder();
var hetesDataRowList = Dal.CustomConnection.Run(ConnectionType, h =>
{
IHetesDal dal = h.HetesDal();
return dal.GetHetesNevekHetsorszammal(TanevId, osztalyCsoportIdList).Tables[0].AsEnumerable().ToList();
});
var hetesDictionary = new Dictionary<int, string>();
var hetsorszamList = hetesDataRowList.Select(x => x.Field<int>("Hetsorszama")).Distinct().OrderBy(x => x).ToList();
foreach (var hetSorszam in hetsorszamList)
{
hetesDictionary.Add(hetSorszam, CreateHetesSzovegFromDataRowList(hetesString, hetesDataRowList.Where(x => x.Field<int>("Hetsorszama") == hetSorszam)));
hetesString.Clear();
}
return hetesDictionary;
}
private string CreateHetesSzovegFromDataRowList(StringBuilder hetesString, IEnumerable<DataRow> hetesDataRowList)
{
var nevelesOktatasosHetesek = hetesDataRowList.Where(x => x.Field<int>("FeladatKategoriaId") == (int)OktNevelesiKategoriaEnum.NevelesOktatas);
var amiHetesek = hetesDataRowList.Where(x => x.Field<int>("FeladatKategoriaId") == (int)OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas);
var amiHetesekMuveszetiSzakkgimnazium = amiHetesek.Where(x => x.Field<int>("OktNevFeladatId") == (int)OktatasiNevelesiFeladatEnum.MuveszetiSzakgimnazium);
var amiHetesekAmi = amiHetesek.Where(x => x.Field<int>("OktNevFeladatId") == (int)OktatasiNevelesiFeladatEnum.AlapfokuMuveszetoktatas);
var kolisHetesek = hetesDataRowList.Where(x => x.Field<int>("FeladatKategoriaId") == (int)OktNevelesiKategoriaEnum.Kollegium);
var egymisHetesek = hetesDataRowList.Where(x => x.Field<int>("FeladatKategoriaId") == (int)OktNevelesiKategoriaEnum.EGYMI);
hetesString.Append(HetesResource.AHetenHetesnekLettBeallitva);
hetesString.Append(" ");
AddHetesStringToStringBuilder(hetesString, nevelesOktatasosHetesek);
AddHetesStringToStringBuilder(hetesString, amiHetesekMuveszetiSzakkgimnazium);
AddHetesStringToStringBuilder(hetesString, amiHetesekAmi);
AddHetesStringToStringBuilder(hetesString, kolisHetesek);
AddHetesStringToStringBuilder(hetesString, egymisHetesek);
hetesString.Remove(hetesString.Length - 2, 2);
hetesString.Append(".");
return hetesString.ToString();
}
private void AddHetesStringToStringBuilder(StringBuilder hetesString, IEnumerable<DataRow> hetesDataRowList)
{
var osztalyCsoportIdList = hetesDataRowList.Select(x => x.Field<int>("osztalyCsoportId")).Distinct();
foreach (var osztalyId in osztalyCsoportIdList)
{
var osztalyraszurtDataRowList = hetesDataRowList.Where(x => x.Field<int>("osztalyCsoportId") == osztalyId);
if (osztalyraszurtDataRowList.Any())
{
hetesString.Append(string.Join(", ", osztalyraszurtDataRowList.Select(x => x.Field<string>("TanuloNev"))));
hetesString.Append(" ");
hetesString.Append(osztalyraszurtDataRowList.First().Field<string>("OsztalyNev"));
hetesString.Append(" ");
hetesString.Append(HetesResource.Osztalyban);
hetesString.Append(", ");
}
}
}
}
}

View file

@ -0,0 +1,730 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Xml.Serialization;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Enums.ManualEnums.SystemSettings;
using Kreta.Framework;
using Kreta.Framework.Security.PasswordCrypting;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class HozzaferesGeneralasaHelper : LogicBase
{
public HozzaferesGeneralasaHelper(IConnectionType connectionType) : base(connectionType) { }
#region Tanuló azonosító generálás
public BelepesiAdatokListCO TanuloAzonositoGeneralas(List<int> tanuloIdList, bool isPasswordReset, int modositoUserId, bool csakAkiknekNincsAzonositojuk = true, bool emailKuldesSzukseges = false, bool toroltFelhasznaloBelepes = false)
{
var belepesiAdatokPdfGeneralasList = new BelepesiAdatokListCO();
var belepesiAdatokList = new BelepesiAdatokListCO();
var felhasznaloNevGeneralasModja = (int)FelhasznaloiNevGeneralasModjaEnum.Oktatasi_azonosito_alapjan;
var felhasznaloNevGeneralasAlap = "C_OKTATASIAZONOSITO";
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloGondviseloBelepesList = new List<DataRow>();
if (tanuloIdList != null && tanuloIdList.Count > 0)
{
tanuloGondviseloBelepesList = h.Tanulo(GridParameters).GetTanulokForBelepesiAzonositoGeneralas(IntezmenyId, TanevId, tanuloIdList, false, false, toroltFelhasznaloBelepes).Tables[0].AsEnumerable().OrderBy(x => x.Field<string>(felhasznaloNevGeneralasAlap)).ToList();
}
else
{
tanuloGondviseloBelepesList = h.Tanulo(GridParameters).GetTanulokForBelepesiAzonositoGeneralas(IntezmenyId, TanevId, tanuloIdList, false, csakAkiknekNincsAzonositojuk && !isPasswordReset, toroltFelhasznaloBelepes).Tables[0].AsEnumerable().OrderBy(x => x.Field<string>(felhasznaloNevGeneralasAlap)).ToList();
}
var jelszoGeneralasModja = (int)new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue<JelszoGeneralasModjaEnum>(RendszerBeallitasTipusEnum.Tanuloi_jelszavak_generalasa_az_alabbi_ertek_alapjan);
if ((felhasznaloNevGeneralasModja == (int)FelhasznaloiNevGeneralasModjaEnum.Egyeni) || jelszoGeneralasModja == (int)JelszoGeneralasModjaEnum.Egyeni)
{
belepesiAdatokPdfGeneralasList.ErrorList.Add("-1");
belepesiAdatokPdfGeneralasList.ErrorList.Add(FelhasznaloBelepesResource.EgyeniMegadasSzerepelARendszerbeallitasoknalIgyAFelhasznalonevetEsJelszotATanuloknalAllithatjaBe);
}
else
{
var tanulok = isPasswordReset
? tanuloGondviseloBelepesList.Where(x =>
(!string.IsNullOrWhiteSpace(x.Field<string>("C_BEJELENTKEZESINEV")) &&
(x.Field<int?>("C_GONDVISELOID") == null)))
: tanuloGondviseloBelepesList.Where(x => x.Field<int?>("C_GONDVISELOID") == null);
List<DataRow> tanulokList = tanulok.ToList();
var uresBejelentkezesiNevesTanulok = new List<string>();
if (isPasswordReset)
{
uresBejelentkezesiNevesTanulok.AddRange(tanuloGondviseloBelepesList.Where(x => string.IsNullOrWhiteSpace(x.Field<string>("C_BEJELENTKEZESINEV")) && (x.Field<int?>("C_GONDVISELOID") == null))
.Select(x => x.Field<string>("C_TANULONEV")));
}
if (uresBejelentkezesiNevesTanulok.Any())
{
var msg = string.Format(ErrorResource.TanulokNemRendelkeznekFelhasznalonevvelJelszoUjrageneralashoz, string.Join(", ", uresBejelentkezesiNevesTanulok));
belepesiAdatokPdfGeneralasList.ErrorList.Add(msg);
belepesiAdatokPdfGeneralasList.IsUresFelhasznaloNevError = true;
return belepesiAdatokPdfGeneralasList;
}
if (!isPasswordReset)
{
var oktatasiAzonositoNelkuliTanulok = new List<string>();
oktatasiAzonositoNelkuliTanulok.AddRange(tanuloGondviseloBelepesList.Where(x => string.IsNullOrWhiteSpace(x.Field<string>("C_OKTATASIAZONOSITO")) && (x.Field<int?>("C_GONDVISELOID") == null))
.Select(x => x.Field<string>("C_TANULONEV")));
if (oktatasiAzonositoNelkuliTanulok.Any())
{
var msg = string.Format(ErrorResource.FelhasznalonevGeneralasNemLehetsegesMertNincsMegadvaOktatasiAzonositoTanuloNeveOktatasiAzonosito, string.Join(", ", oktatasiAzonositoNelkuliTanulok));
belepesiAdatokPdfGeneralasList.ErrorList.Add(msg);
belepesiAdatokPdfGeneralasList.IsUresOktatasiAzonositoError = true;
return belepesiAdatokPdfGeneralasList;
}
}
var intezmenyCo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivIntezmenyNevCim();
JelszoModositasLinkHelper jelszoModositasLinkHelper = new JelszoModositasLinkHelper(new DalHandlerConnectionType(ConnectionType, h));
foreach (var tanulo in tanulok)
{
string currentError = string.Empty;
if (!isPasswordReset)
{
currentError = CheckTanuloAdatok(tanulo, tanulokList, felhasznaloNevGeneralasModja, true,
tanuloGondviseloBelepesList);
}
var belepesAdat = new BelepesiAdatok
{
Id = tanulo.Field<int>("C_TANULOID"),
Password = jelszoGeneralasModja == (int)JelszoGeneralasModjaEnum.Veletlenszeru
? CommonUtils.GenerateJelszo()
: tanulo.Field<DateTime>("C_SZULETESIDATUM").Date.ToString("yyyy'-'MM'-'dd"),
GondviseloId = -1,
NemGeneralhato = "F",
Osztaly = tanulo.Field<string>("C_OSZTALYNEV"),
TanuloNev = tanulo.Field<string>("C_TANULONEV"),
UserName = tanulo.Field<string>("C_BEJELENTKEZESINEV")
};
if (!isPasswordReset)
{
belepesAdat.UserName = tanulo.Field<string>(felhasznaloNevGeneralasAlap);
}
if (!string.IsNullOrWhiteSpace(currentError))
{
belepesAdat.NemGeneralhato = "T";
belepesiAdatokPdfGeneralasList.ErrorList.Add(currentError);
}
belepesiAdatokPdfGeneralasList.BelepesiAdatokList.Add(belepesAdat);
if (emailKuldesSzukseges)
{
var tanuloEntity = h.Tanulo().Get(belepesAdat.Id);
var email = tanuloEntity.Email.FirstOrDefault(x => !x.Torolt && !x.IsHibasanMegadva && x.Alapertelmezett && x.Gondviselo == null);
if (email != null && !string.IsNullOrWhiteSpace(email.EmailCim))
{
var message = string.Format(EmailResource.UjTanuloBelepesiAdatokGeneralasErtesitesEmail, tanuloEntity.NyomtatasiNev, tanuloEntity.NyomtatasiNev,
tanuloEntity.OktatasiAzonosito, CommonUtils.GetIntezmenyUrl(IntezmenyAzonosito), intezmenyCo.Nev, intezmenyCo.IntezmenyCim, "{0}");
jelszoModositasLinkHelper.FelhasznaloBelepesLinkGeneralasEsKuldes(tanuloEntity.ID,
null, email.EmailCim, message, email.Guid);
}
else
{
belepesiAdatokPdfGeneralasList.EmailErrors +=
$"{tanuloEntity.NyomtatasiNev} - {tanuloEntity.OktatasiAzonosito}{Constants.General.Sortores}";
}
}
}
if (csakAkiknekNincsAzonositojuk && !isPasswordReset)
{
// kiszedni azokat amelyeknek nincs felhasznalojuk de van gondviselofelhasznalojuk
var tanulokWithOutBelepesWithGondviseloList = h.Tanulo(GridParameters)
.GetTanulokWithOutBelepesWithGondviselo(IntezmenyId,
TanevId, tanuloIdList, false).Tables[0].AsEnumerable()
.OrderBy(x => x.Field<string>(felhasznaloNevGeneralasAlap)).ToList();
foreach (DataRow tanuloWithOutBelepesWithGondviselo in tanulokWithOutBelepesWithGondviseloList)
{
if (!tanulok.Select(x => x.Field<int>("C_TANULOID"))
.Contains(tanuloWithOutBelepesWithGondviselo.Field<int>("C_TANULOID")))
{
string currentError = string.Empty;
currentError = CheckTanuloAdatok(tanuloWithOutBelepesWithGondviselo, tanulokList,
felhasznaloNevGeneralasModja, true, tanuloGondviseloBelepesList);
var belepesAdat = new BelepesiAdatok
{
Id = tanuloWithOutBelepesWithGondviselo.Field<int>("C_TANULOID"),
Password = jelszoGeneralasModja == (int)JelszoGeneralasModjaEnum.Veletlenszeru
? CommonUtils.GenerateJelszo()
: tanuloWithOutBelepesWithGondviselo.Field<DateTime>("C_SZULETESIDATUM").Date
.ToString("yyyy'-'MM'-'dd"),
GondviseloId = -1,
NemGeneralhato = "F",
Osztaly = tanuloWithOutBelepesWithGondviselo.Field<string>("C_OSZTALYNEV"),
TanuloNev = tanuloWithOutBelepesWithGondviselo.Field<string>("C_TANULONEV"),
UserName = tanuloWithOutBelepesWithGondviselo
.Field<string>(felhasznaloNevGeneralasAlap).ToString()
};
if (!string.IsNullOrWhiteSpace(currentError))
{
belepesAdat.NemGeneralhato = "T";
belepesiAdatokPdfGeneralasList.ErrorList.Add(currentError);
}
belepesiAdatokPdfGeneralasList.BelepesiAdatokList.Add(belepesAdat);
}
}
}
}
foreach (var belepes in belepesiAdatokPdfGeneralasList.BelepesiAdatokList)
{
var salt = SaltGenerator.GenerateSalt();
if (belepes.NemGeneralhato == "F")
{
belepesiAdatokList.BelepesiAdatokList.Add(
new BelepesiAdatok
{
Id = belepes.Id,
UserName = belepes.UserName,
Password = BasePasswordCrypter.EncodePasswordSHA1(belepes.Password, salt),
GondviseloId = -1,
NemGeneralhato = "F",
Salt = salt
});
}
}
if (isPasswordReset && tanuloIdList.Count == 0)
{
JelszoFrissites(h, belepesiAdatokList, true, modositoUserId);
}
else
{
HozzaferesGeneralasa(h, belepesiAdatokList);
}
if (belepesiAdatokPdfGeneralasList.BelepesiAdatokList.Count == 0)
{
if (!isPasswordReset && tanuloIdList.Count == 0)
{
belepesiAdatokPdfGeneralasList.ErrorList.Add(TanuloResource.TanuloAzonositoGeneralasUresDokumentum);
}
}
return belepesiAdatokPdfGeneralasList;
});
}
#endregion Tanuló azonosító generálás
#region Gondviselő azonosító generálás
public BelepesiAdatokListCO GondviseloAzonositoGeneralas(List<int> tanuloIdList, bool isPasswordReset, int modositoUserId, bool csakAkiknekNincsAzonositojuk = true)
{
var belepesiAdatokPdfGeneralasList = new BelepesiAdatokListCO();
var belepesiAdatokList = new BelepesiAdatokListCO();
var felhasznaloNevGeneralasModja = (int)FelhasznaloiNevGeneralasModjaEnum.Oktatasi_azonosito_alapjan;
var jelszoGeneralasModja = (int)JelszoGeneralasModjaEnum.Veletlenszeru;
var felhasznaloNevGeneralasAlap = "C_OKTATASIAZONOSITO";
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloList = h.Tanulo(GridParameters).GetTanulokGondviseloIdvalForBelepesiAzonositoGeneralas(IntezmenyId, TanevId, tanuloIdList, false, csakAkiknekNincsAzonositojuk && !isPasswordReset && tanuloIdList.Count == 0).Tables[0].AsEnumerable().OrderBy(x => x.Field<string>(felhasznaloNevGeneralasAlap)).ToList();
if ((felhasznaloNevGeneralasModja == (int)FelhasznaloiNevGeneralasModjaEnum.Egyeni) || jelszoGeneralasModja == (int)JelszoGeneralasModjaEnum.Egyeni)
{
belepesiAdatokPdfGeneralasList.ErrorList.Add("-1");
belepesiAdatokPdfGeneralasList.ErrorList.Add(StringResourcesUtil.GetString(5404));
}
else
{
var felhasznaloBelepesDal = h.FelhasznaloBelepes();
var tanulok = isPasswordReset ? tanuloList.Where(x => !string.IsNullOrWhiteSpace(x.Field<string>("C_BEJELENTKEZESINEV"))) : tanuloList;
var gondviseloIndex = 1;
var tanuloId = 0;
foreach (var tanulo in tanulok.Where(x => x.Field<int?>("C_BELEPESGONDVISELOID") == null || isPasswordReset || tanuloIdList != null && tanuloIdList.Contains(x.Field<int>("C_TANULOID"))))
{
if (tanuloId != tanulo.Field<int>("C_TANULOID"))
{ gondviseloIndex = 1; }
var currentError = CheckTanuloAdatok(tanulo, tanuloList, felhasznaloNevGeneralasModja, false);
var salt = SaltGenerator.GenerateSalt();
var belepesAdat = new BelepesiAdatok
{
Id = tanulo.Field<int>("C_TANULOID"),
Password = jelszoGeneralasModja == (int)JelszoGeneralasModjaEnum.Veletlenszeru ? CommonUtils.GenerateJelszo() : (tanulo.Field<DateTime>("C_SZULETESIDATUM").Date.ToString("yyyy'-'MM'-'dd")),
GondviseloId = tanulo.Field<int>("C_GONDVISELOID"),
NemGeneralhato = "F",
UserName = isPasswordReset ? tanulo.Field<string>(8) : tanulo.Field<string>(felhasznaloNevGeneralasAlap),
Salt = salt,
Osztaly = tanulo.Field<string>("C_OSZTALYNEV"),
TanuloNev = tanulo.Field<string>("C_TANULONEV"),
GondviseloNev = tanulo.Field<string>("C_GONDVISELONEV")
};
if (!isPasswordReset)
{
belepesAdat.UserName = CommonUtils.GenerateGondviseloBejelentkezesiNev(felhasznaloBelepesDal, belepesAdat.UserName, ref gondviseloIndex, TanevId);
}
if (!string.IsNullOrWhiteSpace(currentError))
{
belepesAdat.NemGeneralhato = "T";
belepesiAdatokPdfGeneralasList.ErrorList.Add(currentError);
}
belepesiAdatokPdfGeneralasList.BelepesiAdatokList.Add(belepesAdat);
tanuloId = belepesAdat.Id;
}
foreach (var belepes in belepesiAdatokPdfGeneralasList.BelepesiAdatokList)
{
var salt = SaltGenerator.GenerateSalt();
belepesiAdatokList.BelepesiAdatokList.Add(
new BelepesiAdatok
{
Id = belepes.Id,
UserName = belepes.UserName,
Password = BasePasswordCrypter.EncodePasswordSHA1(belepes.Password, salt),
GondviseloId = belepes.GondviseloId,
NemGeneralhato = "F",
Salt = salt
});
}
}
if (isPasswordReset && tanuloIdList.Count == 0)
{
JelszoFrissites(h, belepesiAdatokList, false, modositoUserId);
}
else
{
HozzaferesGeneralasa(h, belepesiAdatokList);
}
if (belepesiAdatokPdfGeneralasList.BelepesiAdatokList.Count == 0)
{
if (!isPasswordReset)
{
belepesiAdatokPdfGeneralasList.ErrorList.Add(tanuloIdList.Count == 0 ?
TanuloResource.GondviselpAzonositoGeneralasUresDokumentum :
TanuloResource.TanulokhozNemTartozikGondviselo);
}
}
return belepesiAdatokPdfGeneralasList;
});
}
private string GetNumberOfGondviselo(BelepesiAdatok belepesAdat, List<BelepesiAdatok> belepesiAdatokList, List<string> letezo)
{
string result;
var num = 0;
do
{
num++;
result = num < 10 ? "0" + num : num.ToString();
} while (letezo.Contains(belepesAdat.UserName + result) || belepesiAdatokList.Select(x => x.UserName).ToList().Contains(belepesAdat.UserName + result));
return result;
}
#endregion Gondviselő azonosító generálás
private string CheckTanuloAdatok(DataRow aktTanulo, List<DataRow> tanuloList, int felhasznaloNevGeneralasModja, bool isTanulo, List<DataRow> tanuloGondviseloBelepesList = null)
{
var oktatasiAzonosito = aktTanulo.Field<string>("C_OKTATASIAZONOSITO");
//NOTE: Megvizsgálja, hogy tanulónak van-e oktatási azonosítója, ha az alapján generáljuk a hozzáféréseket.
if (felhasznaloNevGeneralasModja == (int)FelhasznaloiNevGeneralasModjaEnum.Oktatasi_azonosito_alapjan &&
string.IsNullOrWhiteSpace(oktatasiAzonosito))
{
return StringResourcesUtil.GetString(5401) + " " + Environment.NewLine + TanuloErrorListBuilder(aktTanulo, isTanulo);
}
//NOTE: Megvizsgálja, hogy tanuló oktatási azonosítója szerepel-e más tanulónál, ha az alapján generáljuk a hozzáféréseket.
if (isTanulo &&
felhasznaloNevGeneralasModja == (int)FelhasznaloiNevGeneralasModjaEnum.Oktatasi_azonosito_alapjan &&
tanuloList.Any(x => x.Field<string>("C_OKTATASIAZONOSITO") == oktatasiAzonosito && x.Field<int>("C_TANULOID") != aktTanulo.Field<int>("C_TANULOID")))
{
return StringResourcesUtil.GetString(5402) + " " + Environment.NewLine + TanuloErrorListBuilder(aktTanulo, true);
}
//NOTE: Megvizsgálja, hogy gondviselő tanulójának az oktatási azonosítója szerepel-e más tanulónál, ha az alapján generáljuk a hozzáféréseket.
if (!isTanulo &&
felhasznaloNevGeneralasModja == (int)FelhasznaloiNevGeneralasModjaEnum.Oktatasi_azonosito_alapjan &&
tanuloList.Any(x => x.Field<string>("C_OKTATASIAZONOSITO") == oktatasiAzonosito && x.Field<int>("C_TANULOID") != aktTanulo.Field<int>("C_TANULOID")))
{
return StringResourcesUtil.GetString(5402) + " " + Environment.NewLine + TanuloErrorListBuilder(aktTanulo, false);
}
if (tanuloGondviseloBelepesList != null)
{
//NOTE: Megvizsgálja, hogy gondviselő tanulójának az oktatási azonosítója szerepel-e más gondviselőnél, ha az alapján generáljuk a hozzáféréseket.
if (isTanulo &&
felhasznaloNevGeneralasModja == (int)FelhasznaloiNevGeneralasModjaEnum.Oktatasi_azonosito_alapjan &&
tanuloGondviseloBelepesList.Any(x => x.Field<string>("C_BEJELENTKEZESINEV") == oktatasiAzonosito && x.Field<int?>("C_GONDVISELOID") != null))
{
return StringResourcesUtil.GetString(2680) + " " + Environment.NewLine + TanuloErrorListBuilder(aktTanulo, isTanulo, true);
}
}
return "";
}
public string TanuloErrorListBuilder(DataRow tanuloDataRow, bool isTanulo, bool csakTanuloNev = false)
{
string ret;
if (csakTanuloNev == true)
{
ret = "\t" + StringResourcesUtil.GetString(455) + ": " /*Tanuló neve*/+ tanuloDataRow.Field<string>("C_TANULONEV") + Environment.NewLine;
}
else
{
ret = "\t" + StringResourcesUtil.GetString(455) + ": " /*Tanuló neve*/+ tanuloDataRow.Field<string>("C_TANULONEV") + Environment.NewLine +
"\t" + StringResourcesUtil.GetString(32) + ": " /*Oktatási azonosító*/+ tanuloDataRow.Field<string>("C_OKTATASIAZONOSITO") + Environment.NewLine;
}
return isTanulo ? ret : ret + "\t" + StringResourcesUtil.GetString(75) + ": " + tanuloDataRow.Field<string>("C_GONDVISELONEV") + Environment.NewLine;
}
public static class RandomGeneretator
{
private static readonly Random GlobalRandom = new Random(Environment.TickCount);
[ThreadStatic]
private static Random localRandom;
public static int Next(int maxValue)
{
if (localRandom == null)
{
int seed;
lock (GlobalRandom)
{
seed = GlobalRandom.Next();
}
localRandom = new Random(seed);
}
return localRandom.Next(maxValue);
}
}
private void HozzaferesGeneralasa(IDalHandler h, BelepesiAdatokListCO belepesiAdatokList)
{
if (belepesiAdatokList.BelepesiAdatokList.Count == 0)
{
return;
}
string belepesiAdatokXml;
var serializer = new XmlSerializer(typeof(BelepesiAdatokListCO));
using (var stream = new StringWriter())
{
serializer.Serialize(stream, belepesiAdatokList);
belepesiAdatokXml = stream.ToString();
}
h.Felhasznalo(GridParameters).HozzaferesGeneralas(IntezmenyId, TanevId, FelhasznaloId, belepesiAdatokXml);
}
private void JelszoFrissites(IDalHandler h, BelepesiAdatokListCO belepesiAdatokList, bool isTanulo, int modositoUserId)
{
if (belepesiAdatokList.BelepesiAdatokList.Count == 0)
{
return;
}
string belepesiAdatokXml;
var serializer = new XmlSerializer(typeof(BelepesiAdatokListCO));
using (var stream = new StringWriter())
{
serializer.Serialize(stream, belepesiAdatokList);
belepesiAdatokXml = stream.ToString();
}
h.Felhasznalo(GridParameters).JelszoFrissites(IntezmenyId, TanevId, FelhasznaloId, belepesiAdatokXml, isTanulo, modositoUserId);
}
public DataSet ConvertBelepesiAdatokCoToDataset(BelepesiAdatokListCO belepesiAdatokListCo, bool isTanulo)
{
var intezmenyiAdatok = new IntezmenyHelper(ConnectionType).GetIntezmenyiAdatok();
var intezmenyAlternativAzonositio = intezmenyiAdatok.AlternativAzonosito;
string link = string.IsNullOrWhiteSpace(intezmenyAlternativAzonositio) ? IntezmenyAzonosito : intezmenyAlternativAzonositio;
var ds = new DataSet();
var dataTable = new DataTable();
var rendezettLista = belepesiAdatokListCo.BelepesiAdatokList.OrderBy(x => x.Osztaly).ThenBy(x => x.TanuloNev);
dataTable.Columns.Add(new DataColumn("Osztaly"));
dataTable.Columns.Add(new DataColumn("Intezmeny"));
dataTable.Columns.Add(new DataColumn("TanuloNev"));
dataTable.Columns.Add(new DataColumn("Azonosito"));
dataTable.Columns.Add(new DataColumn("Jelszo"));
dataTable.Columns.Add(new DataColumn("Link"));
if (!isTanulo)
{
dataTable.Columns.Add(new DataColumn("Gondviselo"));
}
foreach (var belepes in rendezettLista)
{
var row = dataTable.NewRow();
if (belepes.NemGeneralhato == "F" || string.IsNullOrWhiteSpace(belepes.NemGeneralhato))
{
row["Osztaly"] = belepes.Osztaly;
row["Intezmeny"] = intezmenyiAdatok.Nev;
row["TanuloNev"] = belepes.TanuloNev;
row["Azonosito"] = belepes.UserName;
row["Jelszo"] = belepes.Password;
row["Link"] = $"https://{link.ToLower()}.e-kreta.hu";
if (!isTanulo)
{
row["Gondviselo"] = belepes.GondviseloNev;
}
dataTable.Rows.Add(row);
}
}
ds.Tables.Add(dataTable);
ds.Tables[0].TableName = "Table";
return ds;
}
public FelhasznalonevUjrageneralasModel TanuloFelhasznalonevGeneralas(int tanuloId, int? gondviseloId)
{
var felhasznaloBelepesModel = new FelhasznalonevUjrageneralasModel
{
TanuloId = tanuloId,
GondviseloId = gondviseloId
};
var gondviseloFelhasznalonevGeneralasTipus = SystemSettingFelhasznalonevGeneralas.OktatasiAzonosito; //RendszerBeallitasTipusEnum.Gondviselo_felhasznalonev_generalasa_az_alabbi_ertek_alapjan
var tanuloFelhasznalonevGeneralasTipus = SystemSettingFelhasznalonevGeneralas.OktatasiAzonosito; //RendszerBeallitasTipusEnum.Tanulo_felhasznaloi_nev_generalas_modja
string oktatasiAzonosito = string.Empty;
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IFelhasznaloDal dal = h.Felhasznalo();
var tanulo = dal.Get(tanuloId);
oktatasiAzonosito = tanulo.OktatasiAzonosito;
if (gondviseloId.HasValue)
{
string currentGondviseloName = string.Empty;
List<string> gondviselonevList = new List<string>();
ITanuloDal tanuloDal = h.Tanulo();
IEnumerable<DataRow> gondviseloData = tanuloDal.GetTanuloGondviseloListData(IntezmenyId, TanevId, tanuloId).Tables[0].AsEnumerable();
gondviselonevList = gondviseloData.Select(x => SDAConvert.ToString(x["BelepesiNev"])).Where(x => !string.IsNullOrWhiteSpace(x)).ToList();
currentGondviseloName = gondviseloData.FirstOrDefault(x => x.Field<int>("ID") == gondviseloId)?.Field<string>("BelepesiNev");
felhasznaloBelepesModel.IsNewFelhasznaloBelepes = string.IsNullOrWhiteSpace(currentGondviseloName);
if (gondviseloFelhasznalonevGeneralasTipus == SystemSettingFelhasznalonevGeneralas.OktatasiAzonosito)
{
felhasznaloBelepesModel.FelhasznaloNev = GetGondviseloFelhasznalonev(gondviselonevList, currentGondviseloName, oktatasiAzonosito);
}
}
else
{
felhasznaloBelepesModel.IsNewFelhasznaloBelepes = !tanulo.FelhasznaloBelepes.Any(x => !x.Torolt && !x.GondviseloId.IsEntityId());
if (tanuloFelhasznalonevGeneralasTipus == SystemSettingFelhasznalonevGeneralas.OktatasiAzonosito)
{
felhasznaloBelepesModel.FelhasznaloNev = oktatasiAzonosito;
}
}
return felhasznaloBelepesModel;
});
}
private string GetGondviseloFelhasznalonev(List<string> gondviselonevList, string currentGondviseloName, string belepesiNevGeneralasAlap)
{
string result;
if (!string.IsNullOrWhiteSpace(currentGondviseloName) && gondviselonevList.Count(x => x.Equals(currentGondviseloName, StringComparison.OrdinalIgnoreCase)) == 1)
{
gondviselonevList.Remove(currentGondviseloName);
}
var sorszam = 0;
do
{
sorszam++;
result = $"{(sorszam < 10 ? "0" + sorszam : sorszam.ToString())}";
} while (gondviselonevList.Any(x => x.Equals($"{belepesiNevGeneralasAlap}{result}", StringComparison.OrdinalIgnoreCase)));
return $"{belepesiNevGeneralasAlap}{result}";
}
public void FelhasznalonevUpdate(int tanuloId, int? gondviseloId, string felhasznalonev)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IFelhasznaloBelepesDal dal = h.FelhasznaloBelepes();
dal.UpdateFelhasznalonev(IntezmenyId, TanevId, FelhasznaloId, tanuloId, gondviseloId, felhasznalonev);
});
}
public FelhasznaloBelepesModel GenerateNewFelhasznaloBelepes(int jelszoGeneralasModja, string oktatasiAzonosito, DateTime szuletesiDatum)
{
var felhasznaloBelepes = new FelhasznaloBelepesModel();
felhasznaloBelepes.So = SaltGenerator.GenerateSalt();
felhasznaloBelepes.BejelentkezesiNev = oktatasiAzonosito;
var jelszo = jelszoGeneralasModja == (int)JelszoGeneralasModjaEnum.Veletlenszeru ? CommonUtils.GenerateJelszo() : szuletesiDatum.ToString("yyyy'-'MM'-'dd");
felhasznaloBelepes.Jelszo = BasePasswordCrypter.EncodePasswordSHA1(jelszo, felhasznaloBelepes.So);
return felhasznaloBelepes;
}
public BelepesiAdatokListCO SetKijeloltTanulokGondviseloiToBovitett(List<int> tanuloIdList, bool emailKuldesSzukseges)
{
List<int> distinctTanuloIdList = tanuloIdList
.Distinct()
.ToList();
var belepesiAdatokPdfGeneralasList = new BelepesiAdatokListCO();
Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloDal = h.Tanulo();
var gondviseloDal = h.Gondviselo();
var felhasznaloBelepesDal = h.FelhasznaloBelepes();
foreach (var tanuloId in distinctTanuloIdList)
{
var tanulo = tanuloDal.Get(tanuloId);
foreach (var gondviselo in tanulo.Gondviselo.Where(x => !x.Torolt))
{
GondviseloToBovitett(gondviseloDal, felhasznaloBelepesDal, tanulo, gondviselo, emailKuldesSzukseges, belepesiAdatokPdfGeneralasList, h);
}
}
});
return belepesiAdatokPdfGeneralasList;
}
public BelepesiAdatokListCO SetGondviseloToBovitett(List<int> gondviseloIdList, bool emailKuldesSzukseges)
{
var belepesiAdatokPdfGeneralasList = new BelepesiAdatokListCO();
Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloDal = h.Tanulo();
var gondviseloDal = h.Gondviselo();
var felhasznaloBelepesDal = h.FelhasznaloBelepes();
foreach (var gondviseloId in gondviseloIdList)
{
var gondviselo = gondviseloDal.Get(gondviseloId);
var tanulo = tanuloDal.Get(gondviselo.TanuloId);
GondviseloToBovitett(gondviseloDal, felhasznaloBelepesDal, tanulo, gondviselo, emailKuldesSzukseges, belepesiAdatokPdfGeneralasList, h);
}
});
return belepesiAdatokPdfGeneralasList;
}
public void UjGondviseloBelepesiAdatokPdfGeneralasEsEmailKuldes(int tanuloId, int gondviseloId, bool emailKuldesSzukseges, BelepesiAdatokListCO belepesiAdatokPdfGeneralasList, string gondviseloBelepesiNeve, string gondviseloJelszava)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanulo = h.Tanulo().Get(tanuloId);
var gondviselo = h.Gondviselo().Get(gondviseloId);
UjGondviseloBelepesiAdatokPdfGeneralasEsEmailKuldes(tanulo, gondviselo, emailKuldesSzukseges, belepesiAdatokPdfGeneralasList, gondviseloBelepesiNeve, gondviseloJelszava, h);
});
}
private void UjGondviseloBelepesiAdatokPdfGeneralasEsEmailKuldes(ITanulo tanulo, IGondviselo gondviselo, bool emailKuldesSzukseges, BelepesiAdatokListCO belepesiAdatokPdfGeneralasList, string gondviseloBelepesiNeve, string gondviseloJelszava, IDalHandler h)
{
var intezmenyCo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivIntezmenyNevCim();
var message = string.Format(EmailResource.UjGondviseloBelepesiAdatokGeneralasErtesitesEmail, gondviselo.Nev, tanulo.NyomtatasiNev, tanulo.OktatasiAzonosito, CommonUtils.GetIntezmenyUrl(IntezmenyAzonosito), intezmenyCo.Nev, intezmenyCo.IntezmenyCim, "{0}");
GondviseloBelepesiAdatokPdfGeneralasEsEmailKuldes(tanulo, gondviselo, emailKuldesSzukseges, belepesiAdatokPdfGeneralasList, gondviseloBelepesiNeve, gondviseloJelszava, message, h);
}
private void GondviseloBelepesiAdatokPdfGeneralasEsEmailKuldes(ITanulo tanulo, IGondviselo gondviselo, bool emailKuldesSzukseges, BelepesiAdatokListCO belepesiAdatokPdfGeneralasList, string gondviseloBelepesiNeve, string gondviseloJelszava, string message, IDalHandler h)
{
if (emailKuldesSzukseges)
{
var gondviseloEmail = gondviselo.Email.SingleOrDefault(x => !x.Torolt && !x.IsHibasanMegadva && x.Alapertelmezett);
if (gondviseloEmail != null && !string.IsNullOrWhiteSpace(gondviseloEmail.EmailCim))
{
new JelszoModositasLinkHelper(new DalHandlerConnectionType(ConnectionType, h)).BeazonositottGondvilseoLinkGeneralasEsKuldes(tanulo.ID, gondviselo.ID, gondviseloEmail.EmailCim, message, gondviseloEmail.Guid);
}
else
{
belepesiAdatokPdfGeneralasList.EmailErrors += $"{gondviselo.Nev} - {tanulo.NyomtatasiNev} - {tanulo.OktatasiAzonosito}{Core.Constants.General.Sortores}";
}
}
var osztalyNev = new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanuloOsztalyokNevei(tanulo.ID);
belepesiAdatokPdfGeneralasList.BelepesiAdatokList.Add(ConvertToBelepesiAdat(gondviseloBelepesiNeve, gondviselo.Nev, tanulo.NyomtatasiNev, osztalyNev, gondviseloJelszava));
}
private BelepesiAdatok ConvertToBelepesiAdat(string bejelentkezesiNev, string gondviseloNev, string tanuloNev, string osztalyNev, string jelszo)
{
var belepesiAdat = new BelepesiAdatok();
belepesiAdat.GondviseloNev = gondviseloNev;
belepesiAdat.TanuloNev = tanuloNev;
belepesiAdat.Osztaly = osztalyNev ?? string.Empty;
belepesiAdat.Password = jelszo;
belepesiAdat.UserName = bejelentkezesiNev;
return belepesiAdat;
}
private void GondviseloToBovitett(IGondviseloDal gondviseloDal, IFelhasznaloBelepesDal felhasznaloBelepesDal, ITanulo tanulo, IGondviselo gondviselo, bool emailKuldesSzukseges, BelepesiAdatokListCO belepesiAdatokPdfGeneralasList, IDalHandler h)
{
var message = string.Empty;
var connectionType = new DalHandlerConnectionType(ConnectionType, h);
var felhasznaloBelepesHelper = new FelhasznaloBelepesHelper(connectionType);
var intezmenyCo = new IntezmenyHelper(connectionType).GetAktivIntezmenyNevCim();
var belepes = gondviselo.FelhasznaloBelepes.SingleOrDefault(x => !x.Torolt);
if (belepes != null && belepes.ID.IsEntityId())
{
/*if (gondviselo.IsCsokkentettGondviselo) {*/
message = EmailResource.BovitettGondviseloBelepesiAdatokErtesitesEmail;
/*} else { message = EmailResource.GondviseloUjJelszoErtesitesEmail; }*/
gondviselo.IsCsokkentettGondviselo = false;
gondviseloDal.Update(gondviselo);
var bejelentkezesiNev = belepes.BejelentkezesiNev;
var ujJelszo = CommonUtils.GenerateJelszo();
felhasznaloBelepesHelper.ChangeUserPassword(bejelentkezesiNev, ujJelszo, kotelezoValtoztatni: true);
message = string.Format(message, gondviselo.Nev, CommonUtils.GetIntezmenyUrl(IntezmenyAzonosito), intezmenyCo.Nev, intezmenyCo.IntezmenyCim, "{0}", tanulo.OktatasiAzonosito);
GondviseloBelepesiAdatokPdfGeneralasEsEmailKuldes(tanulo, gondviselo, emailKuldesSzukseges, belepesiAdatokPdfGeneralasList, bejelentkezesiNev, ujJelszo, message, h);
}
else
{
gondviselo.IsCsokkentettGondviselo = false;
gondviseloDal.Update(gondviselo);
int gondviseloIndex = 1;
var bejelentkezesiNev = CommonUtils.GenerateGondviseloBejelentkezesiNev(felhasznaloBelepesDal, tanulo.OktatasiAzonosito, ref gondviseloIndex, TanevId);
var jelszo = CommonUtils.GenerateJelszo();
felhasznaloBelepesHelper.GrantLogin(gondviselo.TanuloId, bejelentkezesiNev, jelszo, gondviselo.ID, kotelezoValtoztatni: true);
message = string.Format(EmailResource.BovitettGondviseloBelepesiAdatokErtesitesEmail, gondviselo.Nev, CommonUtils.GetIntezmenyUrl(IntezmenyAzonosito), intezmenyCo.Nev, intezmenyCo.IntezmenyCim, "{0}", tanulo.OktatasiAzonosito);
GondviseloBelepesiAdatokPdfGeneralasEsEmailKuldes(tanulo, gondviselo, emailKuldesSzukseges, belepesiAdatokPdfGeneralasList, bejelentkezesiNev, jelszo, message, h);
}
}
}
}

View file

@ -0,0 +1,280 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Logic;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.Enums;
using Kreta.Resources;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers
{
public class IgazolasHelper : LogicBase
{
public IgazolasHelper(IConnectionType connectionType) : base(connectionType) { }
public IgazolasCO GetIgazolasCoById(int id)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
var igazolasDal = helper.IgazolasDal(GridParameters);
var entity = igazolasDal.Get(id);
return new IgazolasCO(entity);
});
}
public IgazolasCO GetIgazolasInfo(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var iDal = h.IgazolasDal();
var tDal = h.TanuloCsoport();
var igazolasInfok = iDal.GetIgazolasInfo(id);
var tanuloIdList = igazolasInfok.Tables[0].AsEnumerable().Select(d => d.Field<int>("TanuloId")).Distinct();
var dsTanulok = tDal.GetTanulokOsztalyai(tanuloIdList.ToList());
MergeOsztalyokColumnIntoIgazolasok(igazolasInfok, dsTanulok);
var igazolasCo = new IgazolasCO();
if (igazolasInfok.Tables.Count > 0 && igazolasInfok.Tables[0].Rows.Count > 0)
{
var row = igazolasInfok.Tables[0].Rows[0];
igazolasCo.ID = SDAConvert.ToInt32(row["ID"]);
igazolasCo.TanuloId = SDAConvert.ToInt32(row["TanuloId"]);
igazolasCo.TanuloNev = row["Nev"].ToString();
//igazolasCo.OsztCsop = SDAConvert.ToInt32(row["OsztalyCsoportId"]);
igazolasCo.OsztCsopNev = row["OsztalyCsoport"].ToString();
igazolasCo.ErvKezdete = SDAConvert.ToDateTime(row["Kezdete"]).Value;
igazolasCo.ErvVege = SDAConvert.ToDateTime(row["Vege"]).Value;
igazolasCo.IgazolasTipus = SDAConvert.ToInt32(row["IgazolasTipusa"]);
igazolasCo.Megjegyzes = row["Megjegyzes"].ToString();
igazolasCo.RogzDatum = SDAConvert.ToDateTime(row["RogzitesDatuma"]).Value;
igazolasCo.RogzitoNev = row["Rogzito"].ToString();
}
return igazolasCo;
});
}
public DataSet GetIgazolasByTanuloId(int tanuloId)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
var igazolasDal = helper.IgazolasDal(GridParameters);
return igazolasDal.GetIgazolasDataSet(tanuloId);
});
}
public DataSet GetInformaciokIgazolasGrid(IgazolasSearchCo co)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
var igazolasDal = helper.IgazolasDal(GridParameters);
return igazolasDal.GetIgazolasSearchDataSet(co.ConvertToPco());
});
}
public void SaveOrUpdateIgazolas(IgazolasCO co)
{
Dal.CustomConnection.Run(ConnectionType, helper =>
{
var igazolasDal = helper.IgazolasDal(GridParameters);
var igazolas = igazolasDal.Get();
if (co.ID.HasValue && co.ID.Value > 0)
{
igazolas = igazolasDal.Get(co.ID.Value);
}
igazolas.IgazolasTipusa = co.IgazolasTipus ?? 0;
igazolas.Kezdete = co.ErvKezdete;
igazolas.Vege = co.ErvVege;
igazolas.Megjegyzes = co.Megjegyzes;
igazolas.TanuloId = co.TanuloId;
igazolas.RogzitoId = co.RogzitoId;
igazolas.RogzitesDatuma = co.RogzDatum;
if (!string.IsNullOrWhiteSpace(co.Ugyiratszam))
{
igazolas.Ugyiratszam = co.Ugyiratszam;
}
igazolas.TanevId = TanevId;
igazolas.IntezmenyId = IntezmenyId;
if(co.SzervezetId.HasValue)
{
igazolas.SzervezetId = co.SzervezetId.Value;
}
if (igazolas.ID > 0)
{
igazolasDal.Update(igazolas);
}
else
{
igazolasDal.Insert(igazolas);
}
});
}
public void DeleteIgazolasById(int igazolasId)
{
Dal.CustomConnection.Run(ConnectionType, helper =>
{
var igazolasDal = helper.IgazolasDal(GridParameters);
igazolasDal.Delete(igazolasId);
});
}
public DataSet GetOsztalyCsoportIgazolasok(int id, OktNevelesiKategoriaEnum? kategoria)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
var igazolasDal = helper.IgazolasDal(GridParameters);
return igazolasDal.GetOsztalyCsoportIgazolasok(id, kategoria);
});
}
public DataSet GetOsztalyCsoportIgazolasokForValidate(DataTable igazolasDT)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
var igazolasDal = helper.IgazolasDal(GridParameters);
return igazolasDal.GetOsztalyCsoportIgazolasokForValidate(igazolasDT);
});
}
public DataSet IgazolasKereses(int? osztCsopID, int? szervezetTipusId = null)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
var igazolasDal = helper.IgazolasDal(GridParameters);
return igazolasDal.IgazolasKereses(osztCsopID, null, szervezetTipusId: szervezetTipusId);
});
}
public DataSet IgazolasDetailKereses(int tanuloID, int? szervezetTipusId = null)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
var igazolasDal = helper.IgazolasDal(GridParameters);
return igazolasDal.IgazolasDetailKereses(tanuloID, szervezetTipusId);
});
}
public DataSet GetIgazolasokListajaGrid(IgazolasokListajaSearchCO co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var iDal = h.IgazolasDal(GridParameters);
var tDal = h.TanuloCsoport();
var dsIgazolasok = iDal.GetIgazolasokListajaGrid(co.ConvertToPCO(), null);
var tanuloIdList = dsIgazolasok.Tables[0].AsEnumerable().Select(d => d.Field<int>("TanuloId")).Distinct();
var dsTanulok = tDal.GetTanulokOsztalyai(tanuloIdList.ToList());
MergeOsztalyokColumnIntoIgazolasok(dsIgazolasok, dsTanulok);
return dsIgazolasok;
});
}
public MemoryStream GetInformaciokIgazolasExcelExport(IgazolasSearchCo igazolasSearchCo)
{
var igazolasokListajaCO = new IgazolasokListajaSearchCO()
{
IgazolasKezdteteSearch = igazolasSearchCo.IgazolasKezdeteSearch,
IgazolasVegeSearch = igazolasSearchCo.IgazolasVegeSearch,
IgazolasTipusaSearch = igazolasSearchCo.IgazolasTipusaSearch,
TanuloId = igazolasSearchCo.TanuloId,
FeladatEllatasiHelyId = igazolasSearchCo.FeladatEllatasiHelyId
};
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var igazolasDal = h.IgazolasDal(GridParameters);
var dsIgazolasok = igazolasDal.GetIgazolasExcelExport(igazolasokListajaCO.ConvertToPCO());
var dataTable = dsIgazolasok.Tables[0];
(string fromColumn, string toColumn, Type type)[] exportColumns = new (string, string, Type)[]
{
("Kezdete", HianyzasResource.ErvenyessegKezdete, typeof(DateTime)),
("Vege", HianyzasResource.ErvenyessegVege, typeof(DateTime)),
("IgazolasTipusa_DNAME", HianyzasResource.IgazolasTipusa, typeof(string)),
("Megjegyzes", HianyzasResource.Megjegyzes, typeof(string)),
};
ExportLogic.MapDataTable(dataTable, exportColumns, true);
ExportLogic.TryCreateHeaderIfNotExist(dataTable);
var stream = new MemoryStream();
using (var excel = new ExcelPackage(stream))
{
var workSheet = excel.Workbook.Worksheets.Add(IgazolasResource.IgazolasExport);
workSheet.Cells[1, 1].LoadFromDataTable(dataTable, true);
ExportLogic.FormatDateFields(exportColumns, workSheet);
ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, dataTable.Columns.Count]);
workSheet.Cells.AutoFitColumns();
excel.Save();
}
stream.Position = 0;
return stream;
});
}
private static void MergeOsztalyokColumnIntoIgazolasok(DataSet dsIgazolasok, DataSet dsTanulok)
{
// Az igazolasok listája alapesetben nem tartalmazza a tanuló osztály rekordját
// Az igazolások soraiban a tanuló osztályainak befrissítése ("többosztály" kezelése):
dsIgazolasok.Tables[0].Columns.Add("OsztalyCsoport");
foreach (DataRow item in dsIgazolasok.Tables[0].Rows)
{
var tanuloId = item.Field<int>("TanuloId");
var queryR = from f in dsTanulok.Tables[0].AsEnumerable()
where f.Field<int>("C_TANULOID") == tanuloId
&& f.Field<DateTime>("C_BELEPESDATUM") <= item.Field<DateTime>("Kezdete")
&& (f.Field<DateTime?>("C_KILEPESDATUM") is null || f.Field<DateTime?>("C_KILEPESDATUM") >= item.Field<DateTime>("Vege"))
select
f.Field<string>("C_NEV");
if (queryR.Any())
{
item["OsztalyCsoport"] = string.Join(", ", queryR);
}
}
}
public List<IgazolasItemCo> GetIgazolasCoList(IgazolasokListajaSearchCO searchModel)
{
var igazolasok = new List<IgazolasItemCo>();
var ds = GetIgazolasokListajaGrid(searchModel);
foreach (DataRow dataRow in ds.Tables[0].Rows)
{
var itemCo = new IgazolasItemCo(dataRow);
igazolasok.Add(itemCo);
}
return igazolasok;
}
}
}

View file

@ -0,0 +1,398 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data;
using System.IO;
using System.Linq;
using System.Runtime.Caching;
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.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class AlkalmazottMunkaugyiAdatokImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusNeve },
{ 01, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusNevElotag },
{ 02, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusVezetekneve },
{ 03, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusUtoneve },
{ 04, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusAnyjaNeve },
{ 05, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusSzuletesiDatuma },
{ 06, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusSzuletesiHelye },
{ 07, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusOktatasiAzonosito },
{ 08, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAdoazonositoJel },
{ 09, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusFokozat },
{ 10, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkakor },
{ 11, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoglalkoztatasiJogviszony },
{ 12, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKotelezoOraszama },
{ 13, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkaidokedvezmenyOraszama },
{ 14, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFeladattalTerheltOraszamOka },
{ 15, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAlkalmazasKezdete },
{ 16, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoglalkoztatasTipusa },
{ 17, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameVezetoiOraszamOka },
{ 18, CommonResource.Feladatellatasihely },
{ 19, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameTartosanTavollevo },
{ 20, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameBetoltetlenAllashely },
{ 21, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKulsoAlkalmazott },
{ 22, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoallasu },
{ 23, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameNyugdijasTovabbfoglalkoztatott },
{ 24, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakertoiVagyvizsgaelnokiTevekenyseg },
{ 25, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakmaiTovabbkepzes },
{ 26, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakvizsga },
{ 27, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAttanitoIntezmenyenBelul },
{ 28, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAttanitoMasIntezmenynel },
{ 29, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameTartosHelyettesites },
{ 30, ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakertoSzaktanacsado }
};
public AlkalmazottMunkaugyiAdatokImportCo ImportCo
{
get => (AlkalmazottMunkaugyiAdatokImportCo)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 AlkalmazottMunkaugyiAdatokImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(AlkalmazottMunkaugyiAdatokImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, bool isSzakkepzoIntezmeny)
{
AlkalmazottMunkaugyiAdatokImportCo importCo = GetImportCoFromImportData(importData);
importCo.ImportMuvelet = 1;
SetNemImportalhatoSorokByValidation(importCo, isSzakkepzoIntezmeny);
SetOperationAndNemImportalhatoSorokByOperation(importCo);
var mainImportJsonItemList = new List<AlkalmazottMunkaugyiAdatokImportJsonItemCo>(importCo.MainImportItemList.Select(x => new AlkalmazottMunkaugyiAdatokImportJsonItemCo(x, TanevId, IntezmenyId, FelhasznaloId)));
importCo.MainImportJsonItemList = mainImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(AlkalmazottMunkaugyiAdatokImportCo importCo, bool isSzakkepzoIntezmeny)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate(isSzakkepzoIntezmeny);
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (AlkalmazottMunkaugyiAdatokImportItemCo 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 void SetOperationAndNemImportalhatoSorokByOperation(AlkalmazottMunkaugyiAdatokImportCo importCo)
{
int importMuvelet = importCo.ImportMuvelet;
//NOTE: Azért van szükség Dictionary-re, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary = GetCompareHashImportItemCompareCoDictionary(importCo.AlkalmazottMunkaugyiAdatokCoList);
foreach (AlkalmazottMunkaugyiAdatokImportItemCo importItem in importCo.MainImportItemList)
{
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 az import művelet DeleteAndInsert és a db-ből jövő adat Importalt(a nem importáltakat egyelőre nem töröljük), akkor Insert, mert töröljük a korábbi elemeket és újra be kell szúrni!
if (importMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && importItemCompareCo.Importalt)
{
importItem.Operation = (int)ImportItemOperationEnum.Insert;
}
//NOTE: ...ha nincs törlés, akkor...
else
{
//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 vagy DeleteAndInsert műveletnél. A DeleteAndInsert csak akkor fut be ide, ha az elem nem importált.)!
else
{
importItem.ErrorList.Add(ImportExportCommonResource.NemImportalhatoMertMarSzerepelAzAdatbazisban);
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);
}
public AlkalmazottMunkaugyiAdatokImportCo GetImportCoFromImportData(List<List<string>> importData)
{
List<AlkalmazottMunkaugyiAdatokCo> alkalmazottMunkaugyiAdatokCoList = null;
DataSet feladatellatasiHelyDataSet = null;
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
alkalmazottMunkaugyiAdatokCoList = new AlkalmazottMunkaugyiAdatokHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetAlkalmazottMunkaugyiAdatokCoList();
feladatellatasiHelyDataSet = dalHandler.FeladatEllatasiHelyDal().GetFeladatellatasiHelyDataSet(TanevId);
});
var importCo = new AlkalmazottMunkaugyiAdatokImportCo
{
AlkalmazottMunkaugyiAdatokCoList = alkalmazottMunkaugyiAdatokCoList
};
var feladatellatasiHelyTuple = new List<(int FeladatellatasiHelyId, string FeladatellatasiHely)>();
foreach (DataRow dataRow in feladatellatasiHelyDataSet.Tables[0].Rows)
{
feladatellatasiHelyTuple.Add((
SDAConvert.ToInt32(dataRow["Id"]),
$"{SDAConvert.ToString(dataRow["MukodesiHelyNev"])} - {SDAConvert.ToString(dataRow["OktatasiNevelesiFeladatTipusId_DNAME"])}"));
}
int lineNumber = 1;
foreach (List<string> importDataRow in importData.Skip(1))
{
var importItemCo = new AlkalmazottMunkaugyiAdatokImportItemCo(TanevId)
{
LineNumber = lineNumber,
PedagogusNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusNeve)],
PedagogusNevElotagImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusNevElotag)],
PedagogusVezetekneveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusVezetekneve)],
PedagogusUtoneveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusUtoneve)],
PedagogusAnyjaNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusAnyjaNeve)],
PedagogusSzuletesiDatumaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusSzuletesiDatuma)],
PedagogusSzuletesiHelyeImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusSzuletesiHelye)],
PedagogusOktatasiAzonositoImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusOktatasiAzonosito)],
AdoazonositoJelImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAdoazonositoJel)],
PedagogusFokozatImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusFokozat)],
MunkakorImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkakor)],
FoglalkoztatasiJogviszonyImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoglalkoztatasiJogviszony)],
KotelezoOraszamaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKotelezoOraszama)],
MunkaidokedvezmenyOraszamaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkaidokedvezmenyOraszama)],
FeladattalTerheltOraszamOkaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFeladattalTerheltOraszamOka)],
AlkalmazasKezdeteImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAlkalmazasKezdete)],
FoglalkoztatasTipusaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoglalkoztatasTipusa)],
VezetoiOraszamOkaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameVezetoiOraszamOka)],
FeladatellatasiHelyImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(CommonResource.Feladatellatasihely)],
TartosanTavollevoImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameTartosanTavollevo)],
BetoltetlenAllashelyImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameBetoltetlenAllashely)],
KulsoAlkalmazottImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameKulsoAlkalmazott)],
FoallasuImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoallasu)],
NyugdijasTovabbfoglalkoztatottImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameNyugdijasTovabbfoglalkoztatott)],
SzakertoiVagyVizsgaelnokiTevekenyseguImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakertoiVagyvizsgaelnokiTevekenyseg)],
SzakmaiTovabbkepzesImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakmaiTovabbkepzes)],
SzakvizsgaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakvizsga)],
AttanitoIntezmenyenBelulImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAttanitoIntezmenyenBelul)],
IsAttanitoMasIntezmenynelImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameAttanitoMasIntezmenynel)],
IsTartosanTavollevoHelyettesitesImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameTartosHelyettesites)],
SzakertoImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameSzakertoSzaktanacsado)]
};
int? feladatellatasiHelyId = feladatellatasiHelyTuple.FirstOrDefault(x => x.FeladatellatasiHely == importItemCo.FeladatellatasiHelyImportData).FeladatellatasiHelyId;
if (feladatellatasiHelyId.IsEntityId())
{
importItemCo.FeladatellatasiHelyId = feladatellatasiHelyId;
}
var md5HashInput =
$"{importItemCo.Vezeteknev?.ToComparableString()} {importItemCo.Keresztnev?.ToComparableString()}" +
importItemCo.AnyjaNeve?.ToComparableString() +
importItemCo.SzuletesiIdoString?.ToComparableString() +
importItemCo.SzuletesiHely?.ToComparableString();
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
#region Template
public MemoryStream GetTemplate()
{
var dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<AlkalmazottMunkaugyiAdatokCo>(AlkalmazottMunkaugyiAdatokCo.AlkalmazottMunkaugyiAdatokExportAttributeId, dropDownColumnSourceDictionary);
return SimpleExportLogic.GetTemplate(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportDefaultSheetName, simpleExportColumnCos);
}
#endregion Template
#region Export
public MemoryStream GetExport()
{
var dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary();
List<AlkalmazottMunkaugyiAdatokCo> coList = new AlkalmazottMunkaugyiAdatokHelper(ConnectionType).GetAlkalmazottMunkaugyiAdatokCoList().OrderBy(x => x.NevElotagNelkul).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<AlkalmazottMunkaugyiAdatokCo>(AlkalmazottMunkaugyiAdatokCo.AlkalmazottMunkaugyiAdatokExportAttributeId, dropDownColumnSourceDictionary);
return SimpleExportLogic.GetExport(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
public MemoryStream GetNemImportalhatoSorokExport()
{
var dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary();
List<AlkalmazottMunkaugyiAdatokImportItemCo> coList = ImportCo.NemImportalhatoItemList;
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<AlkalmazottMunkaugyiAdatokImportItemCo>(AlkalmazottMunkaugyiAdatokImportItemCo.NemImportalhatoSorokExportAttributeId, dropDownColumnSourceDictionary);
return ImportExportHelper.NemImportalhatoSorokExport(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
#endregion Export
public void Import(List<AlkalmazottMunkaugyiAdatokImportJsonItemCo> importCo)
{
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var dal = dalHandler.AlkalmazottMunkaugyiAdatokDal();
foreach (AlkalmazottMunkaugyiAdatokImportJsonItemCo item in importCo)
{
var alkalmazottMunkaugyiAdatokImportPco = new AlkalmazottMunkaugyiAdatokImportPco
{
Id = item.Id.Value,
BesorolasiFokozat = item.BesorolasiFokozat,
MunkakorTipusa = item.Munkakor,
MunkaviszonyTipusa = item.Munkaviszony,
KotelezoOraszam = item.KotelezoOraszam ?? 0,
MunkaidoKedvezmenyOraszam = item.MunkaidoKedvezmenyOraszam,
MunkaidoKedvezmenyOka = item.MunkaidoKedvezmenyOka,
AlkalmazasKezdete = item.AlkalmazasKezdete,
FoglalkoztatasTipus = item.FoglalkoztatasTipus,
VezetoiOraszamOka = item.VezetoiOraszamOka,
FeladatEllatasiHelyId = item.FeladatellatasiHelyId,
AllandoHelyettesitesre = item.IsTartosTavollevoHelyettesites ?? false,
TartosHelyettesites = item.IsTartosTavollet ?? false,
BetoltetlenAllashely = item.IsBetoltetlenAllashely ?? false,
IsKulsoAlkalmazott = item.IsKulsoAlkalmazott ?? false,
Nyugdijas = item.IsNyugdijas ?? false,
Attanito = item.IsAttanito ?? false,
AdoazonositoJel = item.AdoazonositoJel,
Foallas = item.IsFoallasu ?? false,
SzakertoiVizsgaelnoki = item.IsSzakertoiVagyVizsgaelnokiTevekenysegu ?? false,
Szakvizsga = item.IsSzakvizsga ?? false,
OktatasiAzonosito = item.OktatasiAzonosito,
Tovabbkepzes = item.IsSzakmaiTovabbkepzes ?? false,
SzakertoMesterpedagogus = item.BesorolasiFokozat.HasValue && item.BesorolasiFokozat.Value == (int)BesorolasiFokozatTipusEnum.mesterpedagogus && item.IsSzakerto.HasValue && item.IsSzakerto.Value,
IsSzakertoKutatotanar = item.BesorolasiFokozat.HasValue && item.BesorolasiFokozat.Value == (int)BesorolasiFokozatTipusEnum.kutatotanar && item.IsSzakerto.HasValue && item.IsSzakerto.Value,
IsAttanitoMasIntezmenynel = item.IsAttanitoMasIntezmenynel ?? false
};
dal.Import(alkalmazottMunkaugyiAdatokImportPco);
}
});
}
private Dictionary<string, ImportItemCompareCo> GetCompareHashImportItemCompareCoDictionary(List<AlkalmazottMunkaugyiAdatokCo> coList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (var co in coList)
{
string md5HashInput =
$"{co.FelhasznaloVezeteknevComparableString} {co.FelhasznaloKeresztnevComparableString}" +
co.FelhasznaloAnyjaNeveComparableString +
co.FelhasznaloSzuletesiIdoComparableString +
co.FelhasznaloSzuletesiHelyComparableString;
string compareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = co.MunkaugyiAdatId,
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, IList<string>> GetDefaultDropDownColumnSourceDictionary()
{
//NOTE: Create dropdown lists
var logicalColumnDictionary = new Dictionary<string, IList<string>>();
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>(logicalColumnDictionary)
{
{ ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusNevElotag, Constants.ElotagList },
};
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
dropDownColumnSourceDictionary.Add(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusFokozat, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.BesorolasiFokozatTipus));
dropDownColumnSourceDictionary.Add(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMunkakor, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.MunkakorTipus));
dropDownColumnSourceDictionary.Add(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoglalkoztatasiJogviszony, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.MunkaviszonyTipus));
dropDownColumnSourceDictionary.Add(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFeladattalTerheltOraszamOka, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.MunkaidoKedvezmenyOka));
dropDownColumnSourceDictionary.Add(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameFoglalkoztatasTipusa, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.FoglalkoztatasTipusa));
dropDownColumnSourceDictionary.Add(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameVezetoiOraszamOka, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.VezetoiOraszamokTipus));
var helper = new ImportExportHelper(connectionType);
DataSet feladatellatasiHelyDataSet = dalHandler.FeladatEllatasiHelyDal().GetFeladatellatasiHelyDataSet(TanevId);
dropDownColumnSourceDictionary.Add(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNamePedagogusNeve, helper.GetTanarList());
dropDownColumnSourceDictionary.Add(CommonResource.Feladatellatasihely, helper.GetFeladatellatasiHelyList(feladatellatasiHelyDataSet));
dropDownColumnSourceDictionary.Add(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameMukodesiHely, helper.GetMukodesiHelyList(feladatellatasiHelyDataSet));
dropDownColumnSourceDictionary.Add(ImportExportAlkalmazottMunkaugyiAdatokResource.ImportHeaderNameEllatottKoznevelesiFeladat, helper.GetEllatottKoznevelesiFeladatList(feladatellatasiHelyDataSet));
});
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,977 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using Aspose.Cells;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.HelperClasses.AscImportExport;
using Kreta.BusinessLogic.Logic;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class AscImportExportHelper : LogicBase
{
#region Fields
private static readonly AscImport AscImportData = new AscImport();
#endregion Fields
#region Properties
private static List<string> AscEgeszOsztalyNevuCsoportIdList { get; set; } = new List<string>();
#endregion Properties
#region Constructors
public AscImportExportHelper(IConnectionType connectionType) : base(connectionType) { }
#endregion Constructors
public static List<List<string>> GetTantargyfelosztasImportDataFromAsc(Stream ascImportFileStream)
{
var importData = new List<List<string>>
{
TantargyfelosztasImportExportHelper.ImportHeaderListEgyszeru.Select(x => x.Value).ToList()
};
timetable ascTimeTable = new XmlSerializer(typeof(timetable)).Deserialize(ascImportFileStream.StripNonValidXmlCharacters()) as timetable;
ValidateAscFile(ascTimeTable, true);
List<TantargyfelosztasFromAscModel> tantargyfelosztasFromAscModelList = GetTantargyfelosztasFromAscModelList(ascTimeTable);
importData.AddRange(tantargyfelosztasFromAscModelList.Select(x =>
new List<string>
{
x.OsztalyNev.ReplaceMultipleSpacesAndTrim(),
x.CsoportNev.ReplaceMultipleSpacesAndTrim(),
x.TantargyNev.ReplaceMultipleSpacesAndTrim(),
x.Oraszam.ReplaceMultipleSpacesAndTrim(),
x.TanarNev.ReplaceMultipleSpacesAndTrim(),
0.ToString(),
CommonResource.Nem,
CommonResource.Nem,
0.ToString()
}));
return importData;
}
public static List<List<string>> GetOrarendImportDataFromAsc(Stream ascImportFileStream, string oraErvenyessegKezdeteString, string oraErvenyessegVegeString)
{
var importData = new List<List<string>>
{
OrarendImportExportHelper.ImportHeaderListOraErvenyessegiIdovel.Select(x => x.Value).ToList()
};
timetable ascTimeTable = new XmlSerializer(typeof(timetable)).Deserialize(ascImportFileStream.StripNonValidXmlCharacters()) as timetable;
ValidateAscFile(ascTimeTable, false);
List<OrarendFromAscModel> orarendFromAscModelList = GetOrarendFromAscModelList(ascTimeTable);
importData.AddRange(orarendFromAscModelList.Select(x =>
new List<string>
{
oraErvenyessegKezdeteString.ReplaceMultipleSpacesAndTrim(),
oraErvenyessegVegeString.ReplaceMultipleSpacesAndTrim(),
x.Hetirend.ReplaceMultipleSpacesAndTrim(),
x.Nap.ReplaceMultipleSpacesAndTrim(),
x.Ora.ReplaceMultipleSpacesAndTrim(),
x.OsztalyNev.ReplaceMultipleSpacesAndTrim(),
x.CsoportNev.ReplaceMultipleSpacesAndTrim(),
x.TantargyNev.ReplaceMultipleSpacesAndTrim(),
x.TanarNev.ReplaceMultipleSpacesAndTrim(),
x.TeremNev.ReplaceMultipleSpacesAndTrim()
}));
return importData;
}
private static void ValidateAscFile(timetable ascTimeTable, bool isOnlyTtfImport)
{
var errorList = new List<string>();
if (ascTimeTable.classes?.@class == null && ascTimeTable.groups?.group == null)
{
errorList.Add(ImportExportOrarendResource.AzImportalniKivantFileNemTartalmazOsztalyokatEsVagyCsoportokat);
}
if (ascTimeTable.subjects?.subject == null)
{
errorList.Add(ImportExportOrarendResource.AzImportalniKivantFileNemTartalmazTantargyakat);
}
if (ascTimeTable.teachers?.teacher == null)
{
errorList.Add(ImportExportOrarendResource.AzImportalniKivantFileNemTartalmazTanarokat);
}
if (ascTimeTable.lessons?.lesson == null)
{
errorList.Add(ImportExportOrarendResource.AzImportalniKivantFileNemTartalmazFoglalkozasokat);
}
if (!isOnlyTtfImport)
{
if (ascTimeTable.cards?.card == null)
{
errorList.Add(ImportExportOrarendResource.AzImportalniKivantFileNemTartalmazOrakat);
}
if (ascTimeTable.classrooms?.classroom == null)
{
errorList.Add(ImportExportOrarendResource.AzImportalniKivantFileNemTartalmazTermeket);
}
//NOTE: Különböző módon kell validálni a 2008-as és az azt követő ASC fájlokat!
if (ascTimeTable.displayname == null || ascTimeTable.displayname.Contains("2008"))
{
if (ascTimeTable.lessons?.lesson != null)
{
var lesson = ascTimeTable.lessons.lesson;
if (lesson.Any(x => string.IsNullOrWhiteSpace(x.weeks)))
{
errorList.Add(ImportExportOrarendResource.InvalidHetirendNincsKitoltve);
}
else if (lesson.Any(x => x.weeks.Length != lesson[0].weeks.Length))
{
errorList.Add(ImportExportOrarendResource.InvalidHetirendForLesson);
}
}
if (ascTimeTable.days?.days == null)
{
errorList.Add(ImportExportOrarendResource.AzImportalniKivantFileNemTartalmazNapirendet);
}
}
else
{
if (ascTimeTable.weeksdefs?.weeksdef == null)
{
errorList.Add(ImportExportOrarendResource.AzImportalniKivantFileNemTartalmazHetirendet);
}
else
{
//NOTE: A hetirendek közül képesek az ASC-vel olyan fájlt generálni, ahol az Id megegyezhet, ezeket meg kell vizsgálnunk, hogy ilyen ne fordulhasson elő!
List<AscHetirend> ascHetirendList = GetHetirendListFromAsc(ascTimeTable);
Dictionary<string, List<AscHetirend>> duplicatedHetirendByIdIdDictionary = ascHetirendList
.GroupBy(x => x.Id)
.Where(x => x.Count() > 1)
.ToDictionary(x => x.Key, x => x.ToList());
foreach (var duplicatedItem in duplicatedHetirendByIdIdDictionary)
{
List<string> duplacatedItemNevList = duplicatedItem.Value.Select(x => $"\"{x.Nev}\"").ToList();
errorList.Add(string.Format(ImportExportOrarendResource.InvalidHetirendEgyezes, string.Join(", ", duplacatedItemNevList)));
}
}
if (ascTimeTable.daysdefs?.daysdef == null)
{
errorList.Add(ImportExportOrarendResource.AzImportalniKivantFileNemTartalmazNapirendet);
}
}
}
if (errorList.Count > 0)
{
throw new BlException(string.Join(Constants.General.Sortores, errorList));
}
}
private static List<OrarendFromAscModel> GetOrarendFromAscModelList(timetable ascTimeTable)
{
var orarendFromAscModelList = new List<OrarendFromAscModel>();
List<TantargyfelosztasFromAscModel> tantargyfelosztasFromAscModelList = GetTantargyfelosztasFromAscModelList(ascTimeTable);
List<AscHetirend> ascHetirendList;
Dictionary<string, AscNapok> ascNapDictionary;
List<AscTimeCards> ascTimeCardList;
if (ascTimeTable.displayname == null || ascTimeTable.displayname.Contains("2008"))
{
ascHetirendList = GetHetirendListFromAsc2008(ascTimeTable);
ascNapDictionary = GetNapDictionaryFromAsc2008(ascTimeTable);
ascTimeCardList = GetAscTimeCardList2008(ascTimeTable, ascNapDictionary);
}
else
{
ascHetirendList = GetHetirendListFromAsc(ascTimeTable);
ascNapDictionary = GetNapDictionaryFromAsc(ascTimeTable);
ascTimeCardList = GetAscTimeCardList(ascTimeTable, ascNapDictionary);
}
List<AscTerem> ascTeremList = GetTeremListFromAsc(ascTimeTable);
foreach (AscTimeCards ascTimeCard in ascTimeCardList)
{
List<TantargyfelosztasFromAscModel> tantargyfelosztasList = tantargyfelosztasFromAscModelList.Where(x => x.Id.Equals(ascTimeCard.LessonId)).ToList();
if (tantargyfelosztasList.Count > 0)
{
foreach (var tantargyfelosztas in tantargyfelosztasList)
{
string hetirendId = string.IsNullOrWhiteSpace(ascTimeCard.Het) ? tantargyfelosztas.LessonHetirendIdFromAsc : ascTimeCard.Het;
orarendFromAscModelList.Add(new OrarendFromAscModel
{
Hetirend = ascHetirendList.Single(x => x.Id.Equals(hetirendId)).Nev,
Nap = ascTimeCard.Nap,
Ora = ascTimeCard.Sorszam,
OsztalyNev = tantargyfelosztas.OsztalyNev,
CsoportNev = tantargyfelosztas.CsoportNev,
TantargyNev = tantargyfelosztas.TantargyNev,
TanarNev = tantargyfelosztas.TanarNev,
TeremNev = GetTeremNev(ascTimeCard.TeremIdListString, ascTeremList)
});
}
}
}
return orarendFromAscModelList;
}
private static List<AscHetirend> GetHetirendListFromAsc2008(timetable ascTimeTable)
{
var ascHetirendList = new List<AscHetirend>();
var hetirendNevList = new List<string> { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
int hetirendNevIndex = 0;
List<string> hetirendIdListFromAsc = new List<string>();
var hetirendCount = ascTimeTable.lessons.lesson[0].weeks.Length;
hetirendIdListFromAsc.Insert(0, string.Concat(Enumerable.Repeat("1", hetirendCount)));
var defaultHetirend = string.Concat(Enumerable.Repeat("0", hetirendCount));
if (hetirendCount > 1)
{
for (int i = 0; i < hetirendCount; i++)
{
StringBuilder stringBuilder = new StringBuilder(defaultHetirend)
{
[i] = '1'
};
hetirendIdListFromAsc.Add(stringBuilder.ToString());
}
}
foreach (string hetirendIdFromAsc in hetirendIdListFromAsc)
{
if (!string.IsNullOrWhiteSpace(hetirendIdFromAsc))
{
string hetNeve;
string hetirendId;
if (hetirendIdFromAsc.All(x => x.Equals('1')))
{
hetirendId = hetirendIdFromAsc;
hetNeve = $"{CommonResource.MindenHeten}";
}
else
{
hetirendId = GenerateHetirendId(hetirendIdListFromAsc, hetirendNevIndex);
hetNeve = $"{hetirendNevList[hetirendNevIndex]} {CommonResource.Het}";
hetirendNevIndex++;
}
ascHetirendList.Add(new AscHetirend
{
Id = hetirendId,
Nev = hetNeve
});
}
}
return ascHetirendList;
}
private static string GenerateHetirendId(List<string> hetirendIdListByLesson, int hetirendNevIndex)
{
string tempString = string.Empty;
tempString = tempString.PadLeft(hetirendIdListByLesson.Count - 1, '0');
var stringBuilder = new StringBuilder(tempString)
{
[hetirendNevIndex] = '1'
};
string result = stringBuilder.ToString();
return result;
}
private static List<AscHetirend> GetHetirendListFromAsc(timetable ascTimeTable)
{
var ascHetirendList = new List<AscHetirend>();
foreach (timetableWeeksdefsWeeksdef het in ascTimeTable.weeksdefs.weeksdef)
{
ascHetirendList.Add(new AscHetirend
{
Id = het.weeks,
Nev = het.name.ReplaceMultipleSpacesAndTrim()
});
}
return ascHetirendList;
}
private static Dictionary<string, AscNapok> GetNapDictionaryFromAsc2008(timetable ascTimeTable)
{
var ascNapDictionary = new Dictionary<string, AscNapok>();
foreach (timetableDaysDays nap in ascTimeTable.days.days)
{
ascNapDictionary.Add(nap.day,
new AscNapok
{
Id = nap.day,
Nev = nap.name.ReplaceMultipleSpacesAndTrim()
});
}
return ascNapDictionary;
}
private static Dictionary<string, AscNapok> GetNapDictionaryFromAsc(timetable ascTimeTable)
{
var ascNapDictionary = new Dictionary<string, AscNapok>();
foreach (timetableDaysdefsDaysdef nap in ascTimeTable.daysdefs.daysdef)
{
ascNapDictionary.Add(nap.days,
new AscNapok
{
Id = nap.id,
Nev = nap.name.ReplaceMultipleSpacesAndTrim(),
});
}
return ascNapDictionary;
}
//NOTE: Itt a "card.day" kell!
private static List<AscTimeCards> GetAscTimeCardList2008(timetable ascTimeTable, Dictionary<string, AscNapok> ascNapDictionary)
{
var ascTimeCardList = new List<AscTimeCards>();
foreach (timetableCardsCard card in ascTimeTable.cards.card)
{
ascTimeCardList.Add(new AscTimeCards
{
Sorszam = card.period,
Het = string.IsNullOrWhiteSpace(card.weeks) ? string.Empty : card.weeks,
Nap = ascNapDictionary[card.day].Nev,
LessonId = card.lessonid,
TeremIdListString = card.classroomids
});
}
return ascTimeCardList;
}
//NOTE: Itt a "card.days" kell!
private static List<AscTimeCards> GetAscTimeCardList(timetable ascTimeTable, Dictionary<string, AscNapok> ascNapDictionary)
{
var ascTimeCardList = new List<AscTimeCards>();
foreach (timetableCardsCard card in ascTimeTable.cards.card)
{
if (!ascTimeCardList.Any(x => x.LessonId == card.lessonid && x.Sorszam == card.period && x.Het == card.weeks && x.Nap == ascNapDictionary[card.days].Nev)) //A periodspercard miatt megegyszer ne fusson bele mert elso korben mar letrehozta (online xmlben tombonkent 1 card, dektopban minden ora kulon card)
{
var lesson = ascTimeTable.lessons.lesson.SingleOrDefault(x => x.id == card.lessonid);
var periodsPerCard = int.TryParse(lesson.periodspercard, out int result) ? result : 0;
for (int i = 0; i < periodsPerCard; i++)
{
var newCard = new AscTimeCards
{
Sorszam = int.TryParse(card.period, out int period) ? (period + i).ToString() : card.period,
Het = string.IsNullOrWhiteSpace(card.weeks) ? string.Empty : card.weeks,
Nap = ascNapDictionary[card.days].Nev,
LessonId = card.lessonid,
TeremIdListString = card.classroomids
};
if (!ascTimeCardList.Any(x => x.LessonId == newCard.LessonId && x.Sorszam == newCard.Sorszam && x.Het == newCard.Het && x.Nap == newCard.Nap))
{
ascTimeCardList.Add(newCard);
}
}
}
}
return ascTimeCardList;
}
private static List<AscTerem> GetTeremListFromAsc(timetable ascTimeTable)
{
var ascTeremList = new List<AscTerem>();
foreach (timetableClassroomsClassroom terem in ascTimeTable.classrooms.classroom)
{
ascTeremList.Add(new AscTerem
{
Id = terem.id,
Nev = terem.name.ReplaceMultipleSpacesAndTrim()
});
}
return ascTeremList;
}
private static string GetTeremNev(string teremIdListString, List<AscTerem> ascTeremList)
{
List<string> teremIdList = teremIdListString.Split(',').ToList();
string teremNev = string.Empty;
foreach (string teremId in teremIdList)
{
if (!string.IsNullOrWhiteSpace(teremId))
{
teremNev += ascTeremList.First(x => x.Id.Equals(teremId)).Nev;
}
}
return teremNev;
}
private static List<TantargyfelosztasFromAscModel> GetTantargyfelosztasFromAscModelList(timetable ascTimeTable)
{
List<LessonModel> lessonList = CreateLessonListFromAscXml(ascTimeTable);
var tantargyfelosztasFromAscModelList = new List<TantargyfelosztasFromAscModel>();
//NOTE: 1A/I
List<LessonModel> filteredLessonList = GetFilteredLessonList(lessonList, isTobbOsztaly: false, isTobbCsoport: false, isTobbTanar: false, isNincsMegadvaOsztaly: false, isNincsMegadvaCsoport: false);
tantargyfelosztasFromAscModelList.AddRange(CreateTantargyfelosztasEgyOsztalyEgyCsoportEgyTanar(filteredLessonList));
//NOTE: 1A/II
filteredLessonList = GetFilteredLessonList(lessonList, isTobbOsztaly: false, isTobbCsoport: false, isTobbTanar: true, isNincsMegadvaOsztaly: false, isNincsMegadvaCsoport: false);
tantargyfelosztasFromAscModelList.AddRange(CreateTantargyfelosztasEgyOsztalyEgyCsoportTobbTanar(filteredLessonList));
//NOTE: 1B/I
filteredLessonList = GetFilteredLessonList(lessonList, isTobbOsztaly: false, isTobbCsoport: true, isTobbTanar: false, isNincsMegadvaOsztaly: false, isNincsMegadvaCsoport: false);
tantargyfelosztasFromAscModelList.AddRange(CreateTantargyfelosztasEgyOsztalyTobbCsoportEgyTanar(filteredLessonList));
//NOTE: 1B/II
filteredLessonList = GetFilteredLessonList(lessonList, isTobbOsztaly: false, isTobbCsoport: true, isTobbTanar: true, isNincsMegadvaOsztaly: false, isNincsMegadvaCsoport: false);
tantargyfelosztasFromAscModelList.AddRange(CreateTantargyfelosztasEgyOsztalyTobbCsoportTobbTanar(filteredLessonList));
//NOTE: 2B/I
filteredLessonList = GetFilteredLessonList(lessonList, isTobbOsztaly: true, isTobbCsoport: true, isTobbTanar: false, isNincsMegadvaOsztaly: false, isNincsMegadvaCsoport: false);
tantargyfelosztasFromAscModelList.AddRange(CreateTantargyfelosztasTobbOsztalyTobbCsoportEgyTanar(filteredLessonList));
//NOTE: 2B/II
filteredLessonList = GetFilteredLessonList(lessonList, isTobbOsztaly: true, isTobbCsoport: true, isTobbTanar: true, isNincsMegadvaOsztaly: false, isNincsMegadvaCsoport: false);
tantargyfelosztasFromAscModelList.AddRange(CreateTantargyfelosztasTobbOsztalyTobbCsoportTobbTanar(filteredLessonList));
//NOTE: 3C/I
filteredLessonList = GetFilteredLessonList(lessonList, isTobbOsztaly: false, isTobbCsoport: false, isTobbTanar: false, isNincsMegadvaOsztaly: true, isNincsMegadvaCsoport: true);
tantargyfelosztasFromAscModelList.AddRange(CreateTantargyfelosztasNincsOsztalyNincsCsoportEgyTanar(filteredLessonList));
//NOTE: 3C/II
filteredLessonList = GetFilteredLessonList(lessonList, isTobbOsztaly: false, isTobbCsoport: false, isTobbTanar: true, isNincsMegadvaOsztaly: true, isNincsMegadvaCsoport: true);
tantargyfelosztasFromAscModelList.AddRange(CreateTantargyfelosztasNincsOsztalyNincsCsoportTobbTanar(filteredLessonList));
return tantargyfelosztasFromAscModelList;
}
private static List<LessonModel> GetFilteredLessonList(List<LessonModel> lessonList, bool isTobbOsztaly, bool isTobbCsoport, bool isTobbTanar, bool isNincsMegadvaOsztaly, bool isNincsMegadvaCsoport)
{
List<LessonModel> result = lessonList.Where(x =>
x.IsTobbOsztaly == isTobbOsztaly &&
x.IsTobbCsoport == isTobbCsoport &&
x.IsTobbTanar == isTobbTanar &&
x.IsNincsMegadvaOsztaly == isNincsMegadvaOsztaly &&
x.IsNincsMegadvaCsoport == isNincsMegadvaCsoport).ToList();
return result;
}
private static List<TantargyfelosztasFromAscModel> CreateTantargyfelosztasEgyOsztalyEgyCsoportEgyTanar(List<LessonModel> filteredLessonList)
{
var tantargyfelosztasFromAscModelList = new List<TantargyfelosztasFromAscModel>();
foreach (LessonModel lesson in filteredLessonList)
{
string osztalyNevFromLesson = lesson.OsztalyDictionary.SingleOrDefault().Value;
string csoportNevFromLesson = GetCsoportNevById(lesson.CsoportDictionary.SingleOrDefault().Key);
string osztalyCsoportNevFromLesson = $"{osztalyNevFromLesson} {csoportNevFromLesson}";
string osztalyNev = osztalyNevFromLesson;
string csoportNev = osztalyNevFromLesson.ToComparableString() == osztalyCsoportNevFromLesson.ToComparableString() ? string.Empty : osztalyCsoportNevFromLesson;
string tanarNev = lesson.TanarDictionary.SingleOrDefault().Value;
tantargyfelosztasFromAscModelList.Add(GetTantargyfelosztasFromAscModel(lesson, osztalyNev, csoportNev, tanarNev));
}
return tantargyfelosztasFromAscModelList;
}
private static List<TantargyfelosztasFromAscModel> CreateTantargyfelosztasEgyOsztalyEgyCsoportTobbTanar(List<LessonModel> filteredLessonList)
{
var tantargyfelosztasFromAscModelList = new List<TantargyfelosztasFromAscModel>();
foreach (LessonModel lesson in filteredLessonList)
{
string osztalyNevFromLesson = lesson.OsztalyDictionary.SingleOrDefault().Value;
string csoportNevFromLesson = GetCsoportNevById(lesson.CsoportDictionary.SingleOrDefault().Key);
foreach (var tanar in lesson.TanarDictionary)
{
string osztalyNev = osztalyNevFromLesson;
string csoportNev = $"{osztalyNevFromLesson} {csoportNevFromLesson} - {lesson.TantargyNev} - {tanar.Value}";
string tanarNev = tanar.Value;
tantargyfelosztasFromAscModelList.Add(GetTantargyfelosztasFromAscModel(lesson, osztalyNev, csoportNev, tanarNev));
}
}
return tantargyfelosztasFromAscModelList;
}
private static List<TantargyfelosztasFromAscModel> CreateTantargyfelosztasEgyOsztalyTobbCsoportEgyTanar(List<LessonModel> filteredLessonList)
{
var tantargyfelosztasFromAscModelList = new List<TantargyfelosztasFromAscModel>();
foreach (LessonModel lesson in filteredLessonList)
{
string csoportNevFromLesson = string.Join(", ", lesson.CsoportDictionary.Select(x => GetCsoportNevById(x.Key)).Where(x => !string.IsNullOrWhiteSpace(x)));
string osztalyNev = lesson.OsztalyDictionary.SingleOrDefault().Value;
string csoportNev = $"{osztalyNev} {csoportNevFromLesson}";
string tanarNev = lesson.TanarDictionary.SingleOrDefault().Value;
tantargyfelosztasFromAscModelList.Add(GetTantargyfelosztasFromAscModel(lesson, osztalyNev, csoportNev, tanarNev));
}
return tantargyfelosztasFromAscModelList;
}
private static List<TantargyfelosztasFromAscModel> CreateTantargyfelosztasEgyOsztalyTobbCsoportTobbTanar(List<LessonModel> filteredLessonList)
{
var tantargyfelosztasFromAscModelList = new List<TantargyfelosztasFromAscModel>();
foreach (LessonModel lesson in filteredLessonList)
{
string csoportNevFromLesson = string.Join(", ", lesson.CsoportDictionary.Select(x => GetCsoportNevById(x.Key)).Where(x => !string.IsNullOrWhiteSpace(x)));
foreach (var tanar in lesson.TanarDictionary)
{
string osztalyNev = lesson.OsztalyDictionary.SingleOrDefault().Value;
string csoportNev = $"{osztalyNev} {csoportNevFromLesson} - {lesson.TantargyNev} - {tanar.Value}";
string tanarNev = tanar.Value;
tantargyfelosztasFromAscModelList.Add(GetTantargyfelosztasFromAscModel(lesson, osztalyNev, csoportNev, tanarNev));
}
}
return tantargyfelosztasFromAscModelList;
}
private static List<TantargyfelosztasFromAscModel> CreateTantargyfelosztasTobbOsztalyTobbCsoportEgyTanar(List<LessonModel> filteredLessonList)
{
var tantargyfelosztasFromAscModelList = new List<TantargyfelosztasFromAscModel>();
foreach (LessonModel lesson in filteredLessonList)
{
List<List<string>> osztalyonkentiCsoportNevList = GetCsoportNevekOsztalyonkent(lesson);
bool isOsztalyonkentAzonosCsoportok = CheckOsztalyonkentAzonosCsoportok(osztalyonkentiCsoportNevList);
string osztalyCsoportNevFromLesson;
if (isOsztalyonkentAzonosCsoportok)
{
List<string> osztalyNevList = lesson.OsztalyDictionary.Select(x => x.Value).ToList();
string osztalyNevFromLesson = string.Join(", ", osztalyNevList);
Dictionary<string, string> uniqueCsoportDictionary = GetDictionaryUniqueItemsByValue(lesson.CsoportDictionary);
string csoportNevFromLesson = string.Join(", ", uniqueCsoportDictionary.Select(x => GetCsoportNevById(x.Key)).Where(x => !string.IsNullOrWhiteSpace(x)));
osztalyCsoportNevFromLesson = $"{osztalyNevFromLesson} {csoportNevFromLesson}";
}
else
{
string csoportNevFromLesson = string.Empty;
foreach (var osztaly in lesson.OsztalyDictionary)
{
IEnumerable<AscCsoport> osztalyhozTartozoCsoportok = AscImportData.CsoportLista.Where(x => x.OsztalyId.Equals(osztaly.Key, StringComparison.OrdinalIgnoreCase) && lesson.CsoportDictionary.Select(c => c.Key).Contains(x.Id) && !AscEgeszOsztalyNevuCsoportIdList.Contains(x.Id));
List<string> distinctCsoportNevek = osztalyhozTartozoCsoportok.Select(x => x.Nev).Distinct().ToList();
string csoportNevListString = string.Join(", ", distinctCsoportNevek);
csoportNevFromLesson += $"{osztaly.Value} {csoportNevListString}; ";
}
csoportNevFromLesson = csoportNevFromLesson.TrimEnd(' ', ';');
osztalyCsoportNevFromLesson = csoportNevFromLesson;
}
//NOTE: Az osztály neve itt üres, mert ha több osztály van megadva az ASC-ben, akkor azok nálunk csoportonként jönnek létre pl.:
// 8.A, 8.B testnevelés, az nálunk egy közös csoport lesz.
string osztalyNev = string.Empty;
string csoportNev = osztalyCsoportNevFromLesson;
string tanarNev = lesson.TanarDictionary.SingleOrDefault().Value;
tantargyfelosztasFromAscModelList.Add(GetTantargyfelosztasFromAscModel(lesson, osztalyNev, csoportNev, tanarNev));
}
return tantargyfelosztasFromAscModelList;
}
private static List<TantargyfelosztasFromAscModel> CreateTantargyfelosztasTobbOsztalyTobbCsoportTobbTanar(List<LessonModel> filteredLessonList)
{
var tantargyfelosztasFromAscModelList = new List<TantargyfelosztasFromAscModel>();
foreach (LessonModel lesson in filteredLessonList)
{
List<List<string>> osztalyonkentiCsoportNevList = GetCsoportNevekOsztalyonkent(lesson);
bool isOsztalyonkentAzonosCsoportok = CheckOsztalyonkentAzonosCsoportok(osztalyonkentiCsoportNevList);
string osztalyCsoportNevFromLesson;
if (isOsztalyonkentAzonosCsoportok)
{
List<string> osztalyNevList = lesson.OsztalyDictionary.Select(x => x.Value).ToList();
string osztalyNevFromLesson = string.Join(", ", osztalyNevList);
Dictionary<string, string> uniqueCsoportDictionary = GetDictionaryUniqueItemsByValue(lesson.CsoportDictionary);
string csoportNevFromLesson = string.Join(", ", uniqueCsoportDictionary.Select(x => GetCsoportNevById(x.Key)).Where(x => !string.IsNullOrWhiteSpace(x)));
osztalyCsoportNevFromLesson = $"{osztalyNevFromLesson} {csoportNevFromLesson} - {lesson.TantargyNev}";
}
else
{
string csoportNevFromLesson = string.Empty;
foreach (var osztaly in lesson.OsztalyDictionary)
{
IEnumerable<AscCsoport> osztalyhozTartozoCsoportok = AscImportData.CsoportLista.Where(x => x.OsztalyId.Equals(osztaly.Key, StringComparison.OrdinalIgnoreCase) && lesson.CsoportDictionary.Select(c => c.Key).Contains(x.Id) && !AscEgeszOsztalyNevuCsoportIdList.Contains(x.Id));
List<string> distinctCsoportNevek = osztalyhozTartozoCsoportok.Select(x => x.Nev).Distinct().ToList();
string csoportNevListString = string.Join(", ", distinctCsoportNevek);
csoportNevFromLesson += $"{osztaly.Value} {csoportNevListString}; ";
}
csoportNevFromLesson = csoportNevFromLesson.TrimEnd(' ', ';');
osztalyCsoportNevFromLesson = $"{csoportNevFromLesson} - {lesson.TantargyNev} ";
}
foreach (var tanar in lesson.TanarDictionary)
{
//NOTE: Az osztály neve itt üres, mert ha több osztály van megadva az ASC-ben, akkor azok nálunk csoportonként jönnek létre pl.:
// 8.A, 8.B testnevelés, az nálunk egy közös csoport lesz.
string osztalyNev = string.Empty;
string csoportNev = $"{osztalyCsoportNevFromLesson} - {tanar.Value}";
string tanarNev = tanar.Value;
tantargyfelosztasFromAscModelList.Add(GetTantargyfelosztasFromAscModel(lesson, osztalyNev, csoportNev, tanarNev));
}
}
return tantargyfelosztasFromAscModelList;
}
private static List<TantargyfelosztasFromAscModel> CreateTantargyfelosztasNincsOsztalyNincsCsoportEgyTanar(List<LessonModel> filteredLessonList)
{
var tantargyfelosztasFromAscModelList = new List<TantargyfelosztasFromAscModel>();
foreach (LessonModel lesson in filteredLessonList)
{
string tanarNevFromLesson = lesson.TanarDictionary.SingleOrDefault().Value;
int counter = tantargyfelosztasFromAscModelList.Select(x => x.CsoportNev).Count(x => x.Contains($"{lesson.TantargyNev} - {tanarNevFromLesson}")) + 1;
//NOTE: Az osztály neve itt üres, mert ha több osztály van megadva az ASC-ben, akkor azok nálunk csoportonként jönnek létre pl.:
// 8.A, 8.B testnevelés, az nálunk egy közös csoport lesz.
string osztalyNev = string.Empty;
string csoportNev = $"{lesson.TantargyNev} - {tanarNevFromLesson} {counter}";
string tanarNev = tanarNevFromLesson;
tantargyfelosztasFromAscModelList.Add(GetTantargyfelosztasFromAscModel(lesson, osztalyNev, csoportNev, tanarNev));
}
return tantargyfelosztasFromAscModelList;
}
private static List<TantargyfelosztasFromAscModel> CreateTantargyfelosztasNincsOsztalyNincsCsoportTobbTanar(List<LessonModel> filteredLessonList)
{
var tantargyfelosztasFromAscModelList = new List<TantargyfelosztasFromAscModel>();
foreach (LessonModel lesson in filteredLessonList)
{
foreach (var tanar in lesson.TanarDictionary)
{
string tanarNevFromLesson = tanar.Value;
int counter = tantargyfelosztasFromAscModelList.Select(x => x.CsoportNev).Count(x => x.Contains($"{lesson.TantargyNev} - {tanarNevFromLesson}")) + 1;
//NOTE: Az osztály neve itt üres, mert ha több osztály van megadva az ASC-ben, akkor azok nálunk csoportonként jönnek létre pl.:
// 8.A, 8.B testnevelés, az nálunk egy közös csoport lesz.
string osztalyNev = string.Empty;
string csoportNev = $"{lesson.TantargyNev} - {tanarNevFromLesson} {counter}";
string tanarNev = tanarNevFromLesson;
tantargyfelosztasFromAscModelList.Add(GetTantargyfelosztasFromAscModel(lesson, osztalyNev, csoportNev, tanarNev));
}
}
return tantargyfelosztasFromAscModelList;
}
private static TantargyfelosztasFromAscModel GetTantargyfelosztasFromAscModel(LessonModel lesson, string osztalyNev, string csoportNev, string tanarNev)
{
var tantargyfelosztas = new TantargyfelosztasFromAscModel
{
Id = lesson.LessonIdFromAscXml.ReplaceMultipleSpacesAndTrim(),
TantargyNev = lesson.TantargyNev.ReplaceMultipleSpacesAndTrim(),
Oraszam = lesson.HetiOraszam.ReplaceMultipleSpacesAndTrim(),
LessonHetirendIdFromAsc = lesson.LessonHetirendId.ReplaceMultipleSpacesAndTrim(),
OsztalyNev = osztalyNev.ReplaceMultipleSpacesAndTrim(),
CsoportNev = csoportNev.ReplaceMultipleSpacesAndTrim(),
TanarNev = tanarNev.ReplaceMultipleSpacesAndTrim()
};
return tantargyfelosztas;
}
private static List<List<string>> GetCsoportNevekOsztalyonkent(LessonModel lesson)
{
var osztalyonkentiCsoportNevList = new List<List<string>>();
foreach (var osztaly in lesson.OsztalyDictionary)
{
IEnumerable<AscCsoport> osztalyhozTartozoCsoportok = AscImportData.CsoportLista.Where(x => x.OsztalyId.Equals(osztaly.Key, StringComparison.OrdinalIgnoreCase) && lesson.CsoportDictionary.Select(c => c.Key).Contains(x.Id));
osztalyonkentiCsoportNevList.Add(osztalyhozTartozoCsoportok.Select(x => x.Nev).OrderBy(x => x).ToList());
}
return osztalyonkentiCsoportNevList;
}
private static Dictionary<string, string> GetDictionaryUniqueItemsByValue(Dictionary<string, string> dictionary)
{
Dictionary<string, string> result = dictionary
.GroupBy(x => x.Value)
.Select(x => x.First())
.OrderBy(x => x.Value)
.ToDictionary(x => x.Key, x => x.Value);
return result;
}
private static bool CheckOsztalyonkentAzonosCsoportok(List<List<string>> osztalyonkentiCsoportNevList)
{
bool isOsztalyonkentEgyezoCsoport = true;
for (int i = 1; i < osztalyonkentiCsoportNevList.Count; i++)
{
isOsztalyonkentEgyezoCsoport = isOsztalyonkentEgyezoCsoport && osztalyonkentiCsoportNevList[0].ToList().SequenceEqual(osztalyonkentiCsoportNevList[i].ToList());
}
return isOsztalyonkentEgyezoCsoport;
}
private static string GetCsoportNevById(string csoportId)
{
AscCsoport csoport = AscImportData.CsoportLista.SingleOrDefault(x => x.Id.Equals(csoportId));
string csoportNev = string.Empty;
if (csoport != null)
{
csoportNev = AscEgeszOsztalyNevuCsoportIdList.Contains(csoport.Id) ? string.Empty : csoport.Nev;
}
return csoportNev;
}
private static List<LessonModel> CreateLessonListFromAscXml(timetable ascTimeTable)
{
var lessonList = new List<LessonModel>();
AscImportData.OsztalyLista = GetOsztalyListFromAsc(ascTimeTable.classes?.@class?.ToList() ?? new List<timetableClassesClass>());
AscImportData.CsoportLista = GetCsoportListFromAsc(ascTimeTable.groups?.group?.ToList() ?? new List<timetableGroupsGroup>());
AscImportData.TantargyLista = GetTantargyListFromAsc(ascTimeTable.subjects.subject.ToList());
AscImportData.TanarLista = GetTanarListFromAsc(ascTimeTable.teachers.teacher.ToList());
AscEgeszOsztalyNevuCsoportIdList = AscImportData.CsoportLista.Where(x => x.FelosztasId == "0").Select(x => x.Id).ToList();
foreach (timetableLessonsLesson lessonItem in ascTimeTable.lessons.lesson)
{
var tantargy = AscImportData.TantargyLista.SingleOrDefault(x => x.Id == lessonItem.subjectid);
string tantargyNev = string.Empty;
if (tantargy != null)
{
tantargyNev = tantargy.Nev;
}
var lesson = new LessonModel
{
OsztalyDictionary = GetOsztalyDictionary(lessonItem.classids, AscImportData.OsztalyLista),
CsoportDictionary = GetCsoportDictionary(lessonItem.groupids, AscImportData.CsoportLista),
TanarDictionary = GetTanarDictionary(lessonItem.teacherids, AscImportData.TanarLista),
TantargyNev = tantargyNev,
HetiOraszam = lessonItem.periodsperweek,
LessonHetirendId = string.IsNullOrWhiteSpace(lessonItem.weeksdefid) ? lessonItem.weeks : lessonItem.weeksdefid,
LessonIdFromAscXml = lessonItem.id
};
lesson.IsTobbOsztaly = lesson.OsztalyDictionary.Count > 1;
lesson.IsTobbCsoport = lesson.CsoportDictionary.Count > 1;
lesson.IsTobbTanar = lesson.TanarDictionary.Count > 1;
lesson.IsNincsMegadvaOsztaly = lesson.OsztalyDictionary.Count == 0;
lesson.IsNincsMegadvaCsoport = lesson.CsoportDictionary.Count == 0;
lessonList.Add(lesson);
}
return lessonList;
}
private static List<AscOsztaly> GetOsztalyListFromAsc(List<timetableClassesClass> classList)
{
var ascOsztalyList = new List<AscOsztaly>();
foreach (timetableClassesClass osztaly in classList)
{
ascOsztalyList.Add(new AscOsztaly
{
Id = osztaly.id,
Nev = osztaly.name.ReplaceMultipleSpacesAndTrim()
});
}
return ascOsztalyList;
}
private static List<AscCsoport> GetCsoportListFromAsc(List<timetableGroupsGroup> groupList)
{
var ascCsoportList = new List<AscCsoport>();
foreach (timetableGroupsGroup csoport in groupList)
{
csoport.divisiontag = string.IsNullOrWhiteSpace(csoport.divisiontag) ? "0" : csoport.divisiontag;
ascCsoportList.Add(new AscCsoport
{
Id = csoport.id,
Nev = csoport.name.ReplaceMultipleSpacesAndTrim(),
OsztalyId = csoport.classid,
FelosztasId = csoport.divisiontag
});
}
return ascCsoportList;
}
private static List<AscTantargy> GetTantargyListFromAsc(List<timetableSubjectsSubject> subjectList)
{
var ascTantargyList = new List<AscTantargy>();
foreach (timetableSubjectsSubject tantargy in subjectList)
{
ascTantargyList.Add(new AscTantargy
{
Id = tantargy.id,
Nev = tantargy.name.ReplaceMultipleSpacesAndTrim(),
});
}
return ascTantargyList;
}
private static List<AscTanar> GetTanarListFromAsc(List<timetableTeachersTeacher> teacherList)
{
var ascTanarList = new List<AscTanar>();
foreach (timetableTeachersTeacher tanar in teacherList)
{
ascTanarList.Add(new AscTanar
{
Id = tanar.id,
Nev = tanar.name.ReplaceMultipleSpacesAndTrim()
});
}
return ascTanarList;
}
private static Dictionary<string, string> GetOsztalyDictionary(string osztalyIdListString, List<AscOsztaly> ascOsztalyList)
{
var osztalyDictionary = new Dictionary<string, string>();
if (!string.IsNullOrWhiteSpace(osztalyIdListString))
{
foreach (string osztalyId in osztalyIdListString.Split(',').ToList())
{
var osztaly = ascOsztalyList.SingleOrDefault(x => x.Id.Equals(osztalyId));
if (osztaly != null)
{
osztalyDictionary.Add(osztalyId, osztaly.Nev);
}
}
}
return osztalyDictionary;
}
private static Dictionary<string, string> GetCsoportDictionary(string csoportIdListString, List<AscCsoport> ascCsoportList)
{
var csoportDictionary = new Dictionary<string, string>();
if (!string.IsNullOrWhiteSpace(csoportIdListString))
{
foreach (string csoportId in csoportIdListString.Split(',').ToList())
{
var csoport = ascCsoportList.SingleOrDefault(x => x.Id.Equals(csoportId));
if (csoport != null)
{
csoportDictionary.Add(csoportId, csoport.Nev);
}
}
}
return csoportDictionary;
}
private static Dictionary<string, string> GetTanarDictionary(string tanarIdListString, List<AscTanar> ascTanarList)
{
var tanarDictionary = new Dictionary<string, string>();
if (!string.IsNullOrWhiteSpace(tanarIdListString))
{
foreach (string tanarId in tanarIdListString.Split(',').ToList())
{
var tanar = ascTanarList.SingleOrDefault(x => x.Id.Equals(tanarId));
if (tanar != null && !tanarDictionary.ContainsKey(tanar.Id))
{
tanarDictionary.Add(tanarId, tanar.Nev);
}
}
}
return tanarDictionary;
}
public MemoryStream ConvertAscXmlToExcel(Stream ascImportFileStream)
{
var dropDownColumnSourceDictionary = new OrarendImportExportHelper(ConnectionType).GetDefaultDropDownColumnSourceDictionary(false);
List<List<string>> importData = GetOrarendImportDataFromAsc(ascImportFileStream, DateTime.Now.ToShortDateString(), DateTime.Now.ToShortDateString());
using (var workbook = new Workbook())
{
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(OrarendImportExportHelper.ImportHeaderList, dropDownColumnSourceDictionary);
Worksheet worksheet = SimpleExportLogic.GetWorksheet(workbook, ImportExportOrarendResource.OrarendImport, simpleExportColumnCos);
int rowIndex = 1;
//NOTE: A Skip(1), azért kell, mert az asc-ből generált string listába beletesszük a header-öket az importálásokhoz, de a konvertáláshoz mi saját header-t generálunk!
foreach (List<string> importDataRow in importData.Skip(1))
{
int columnIndex = 0;
//NOTE: A Skip(2), azért kell, mert az óra érvényességi idők(kezdete, vége) nincs benne az xml-ben, viszont, mi belegeneráljuk a string lista első két elemeként!
foreach (string importDataCell in importDataRow.Skip(2).ToList())
{
worksheet.Cells[rowIndex, columnIndex].Value = importDataCell;
columnIndex++;
}
rowIndex++;
}
MemoryStream memoryStream = SimpleExportLogic.GetWorkbookMemoryStream(workbook);
return memoryStream;
}
}
}
public class TantargyfelosztasFromAscModel : BaseTantargyfelosztasFromAscModel
{
public string Oraszam { get; set; }
public string LessonHetirendIdFromAsc { get; set; }
}
public class OrarendFromAscModel : BaseTantargyfelosztasFromAscModel
{
public string Hetirend { get; set; }
public string Nap { get; set; }
public string Ora { get; set; }
public string TeremNev { get; set; }
}
public class BaseTantargyfelosztasFromAscModel
{
public string Id { get; set; }
public string OsztalyNev { get; set; }
public string CsoportNev { get; set; }
public string TantargyNev { get; set; }
public string TanarNev { get; set; }
}
}

View file

@ -0,0 +1,164 @@
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.HelperClasses.ImportCo;
using Kreta.Core.ConnectionType;
using Kreta.Enums.ManualEnums.ImportExport;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class BaseTantargyfelosztasImportExportHelper : LogicBase
{
public BaseTantargyfelosztasImportExportHelper(IConnectionType connectionType) : base(connectionType) { }
protected static void SetOperationTantargy(BaseTantargyfelosztasImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary)
{
var compareHash = importItem.CompareHashTantargy;
//NOTE: Ha nem találtunk egyezést, akkor Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationTantargy = (int)ImportItemOperationEnum.Insert;
}
}
protected static void SetOperationOsztaly(BaseTantargyfelosztasImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary)
{
var compareHash = importItem.CompareHashOsztaly;
if (!string.IsNullOrWhiteSpace(compareHash))
{
//NOTE: Ha nem találtunk egyezést, akkor Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationOsztaly = (int)ImportItemOperationEnum.Insert;
}
}
}
protected static void SetOperationCsoport(BaseTantargyfelosztasImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary)
{
var compareHash = importItem.CompareHashCsoport;
if (!string.IsNullOrWhiteSpace(compareHash))
{
//NOTE: Ha nem találtunk egyezést, akkor Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationCsoport = (int)ImportItemOperationEnum.Insert;
}
}
}
protected Dictionary<string, ImportItemCompareCo> GetTantargyCompareHashImportItemCompareCoDictionary()
{
List<TantargyItemCo> coList = new TantargyHelper(ConnectionType).GetTantargyCoList();
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (TantargyItemCo co in coList)
{
string md5HashInput = co.NevComparableString;
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;
}
protected Dictionary<string, ImportItemCompareCo> GetOsztalyCompareHashImportItemCompareCoDictionary()
{
List<OsztalyItemCo> coList = new OsztalyHelper(ConnectionType).GetOsztalyCoList();
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (OsztalyItemCo co in coList)
{
string md5HashInput = co.NevComparableString;
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;
}
protected Dictionary<string, ImportItemCompareCo> GetCsoportCompareHashImportItemCompareCoDictionary()
{
List<CsoportItemCo> coList = new CsoportHelper(ConnectionType).GetCsoportCoList();
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (CsoportItemCo co in coList)
{
string md5HashInput = co.NevComparableString;
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;
}
protected Dictionary<string, ImportItemCompareCo> GetTantargyfelosztasCompareHashImportItemCompareCoDictionary(List<BaseTantargyfelosztasImportItemCo> baseTantargyfelosztasImportItemList)
{
List<TantargyfelosztasItemCo> coList = new TantargyFelosztasHelper(ConnectionType).GetTantargyfelosztasCoList();
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (TantargyfelosztasItemCo co in coList)
{
var md5HashInput =
co.OsztalyCsoportNevComparableString +
co.TantargyNevComparableString +
co.TanarNevComparableString;
//NOTE: Ha a tanar neve szerepel az import-ban és van hozzá tartozó születési idő, akkor hozzá kell tenni a compare-he a születési idő-t is
if (baseTantargyfelosztasImportItemList.Any(x => x.TanarNev.ToComparableString() == co.TanarNevComparableString && x.TanarSzuletesiIdo.HasValue))
{
md5HashInput += co.TanarSzuletesiIdoComparableString;
}
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;
}
}
}

View file

@ -0,0 +1,278 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Linq;
using System.Runtime.Caching;
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.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class EszkozImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportEszkozResource.ImportHeaderNameEszkozNeve },
{ 01, ImportExportEszkozResource.ImportHeaderNameHelyiseg },
{ 02, ImportExportEszkozResource.ImportHeaderNameEszkozTipus },
{ 03, ImportExportEszkozResource.ImportHeaderNameMennyiseg },
{ 04, ImportExportEszkozResource.ImportHeaderNameEszkozSzemelyiFelelose },
{ 05, ImportExportEszkozResource.ImportHeaderNameLeltariSzam }
};
public EszkozImportCo ImportCo
{
get => (EszkozImportCo)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 EszkozImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(EszkozImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, int importMuvelet)
{
EszkozImportCo importCo = GetImportCoFromImportData(importData);
importCo.ImportMuvelet = importMuvelet;
SetNemImportalhatoSorokByValidation(importCo);
SetOperationAndNemImportalhatoSorokByOperation(importCo);
var mainImportJsonItemList = new List<EszkozImportJsonItemCo>(importCo.MainImportItemList.Select(x => new EszkozImportJsonItemCo(x, importCo.TeremCoList, importCo.FelelosCoList, TanevId, IntezmenyId, FelhasznaloId)));
importCo.MainImportJsonItemList = mainImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(EszkozImportCo importCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate();
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (EszkozImportItemCo 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 void SetOperationAndNemImportalhatoSorokByOperation(EszkozImportCo importCo)
{
int importMuvelet = importCo.ImportMuvelet;
//NOTE: Azért van szükség Dictionary-re, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary = GetCompareHashImportItemCompareCoDictionary(importCo.EszkozCoList);
foreach (EszkozImportItemCo importItem in importCo.MainImportItemList)
{
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 az import művelet DeleteAndInsert és a db-ből jövő adat Importalt(a nem importáltakat egyelőre nem töröljük), akkor Insert, mert töröljük a korábbi elemeket és újra be kell szúrni!
if (importMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && importItemCompareCo.Importalt)
{
importItem.Operation = (int)ImportItemOperationEnum.Insert;
}
//NOTE: ...ha nincs törlés, akkor...
else
{
//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 vagy DeleteAndInsert műveletnél. A DeleteAndInsert csak akkor fut be ide, ha az elem nem importált.)!
else
{
importItem.ErrorList.Add(ImportExportCommonResource.NemImportalhatoMertMarSzerepelAzAdatbazisban);
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 EszkozImportCo GetImportCoFromImportData(List<List<string>> importData)
{
var importCo = new EszkozImportCo
{
EszkozCoList = new EszkozHelper(ConnectionType).GetEszkozCoList(),
FelelosCoList = new AlkalmazottHelper(ConnectionType).GetAlkalmazottCoList(),
TeremCoList = new TeremHelper(ConnectionType).GetTeremCoList(),
};
int lineNumber = 1;
foreach (List<string> importDataRow in importData.Skip(1))
{
var importItemCo = new EszkozImportItemCo(TanevId)
{
LineNumber = lineNumber,
EszkozNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportEszkozResource.ImportHeaderNameEszkozNeve)],
HelyisegImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportEszkozResource.ImportHeaderNameHelyiseg)],
EszkozTipusImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportEszkozResource.ImportHeaderNameEszkozTipus)],
DarabszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportEszkozResource.ImportHeaderNameMennyiseg)],
EszkozSzemelyiFeleloseImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportEszkozResource.ImportHeaderNameEszkozSzemelyiFelelose)],
LeltariSzamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportEszkozResource.ImportHeaderNameLeltariSzam)]
};
string md5HashInput = importItemCo.Nev?.ToComparableString();
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
#region Template
public MemoryStream GetTemplate()
{
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<EszkozItemCo>(EszkozItemCo.EszkozTemplateExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetTemplate(ImportExportEszkozResource.ImportDefaultSheetName, simpleExportColumnCos);
}
#endregion Template
#region Export
public MemoryStream GetExport()
{
List<EszkozItemCo> coList = new EszkozHelper(ConnectionType).GetEszkozCoList().OrderBy(o => o.Nev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<EszkozItemCo>(EszkozItemCo.EszkozExportAttributeId, GetExportDropDownColumnSourceDictionary());
return SimpleExportLogic.GetExport(ImportExportEszkozResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
public MemoryStream GetEszkozKeresesExport(EszkozokSearchCo co)
{
List<EszkozItemCo> coList = new EszkozHelper(ConnectionType).GetEszkozKeresesExport(co).OrderBy(o => o.Nev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<EszkozItemCo>(EszkozItemCo.EszkozExportAttributeId);
return SimpleExportLogic.GetExport(ImportExportEszkozResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
public MemoryStream GetNemImportalhatoSorokExport()
{
List<EszkozImportItemCo> coList = ImportCo.NemImportalhatoItemList;
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<EszkozImportItemCo>(EszkozImportItemCo.NemImportalhatoSorokExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return ImportExportHelper.NemImportalhatoSorokExport(ImportExportEszkozResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
#endregion Export
private Dictionary<string, ImportItemCompareCo> GetCompareHashImportItemCompareCoDictionary(IList<EszkozItemCo> coList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (EszkozItemCo co in coList)
{
string md5HashInput = co.NevComparableString;
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, IList<string>> GetDefaultDropDownColumnSourceDictionary()
{
//NOTE: Create dropdown lists
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
dropDownColumnSourceDictionary.Add(ImportExportEszkozResource.ImportHeaderNameEszkozTipus, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.EszkozTipus));
var helper = new ImportExportHelper(connectionType);
dropDownColumnSourceDictionary.Add(ImportExportEszkozResource.ImportHeaderNameHelyiseg, helper.GetTeremList());
dropDownColumnSourceDictionary.Add(ImportExportEszkozResource.ImportHeaderNameEszkozSzemelyiFelelose, helper.GetTanarList(true));
});
return dropDownColumnSourceDictionary;
}
private Dictionary<string, IList<string>> GetExportDropDownColumnSourceDictionary()
{
//NOTE: Create dropdown lists
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
dropDownColumnSourceDictionary.Add(ImportExportEszkozResource.ImportHeaderNameEszkozTipus, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.EszkozTipus));
dropDownColumnSourceDictionary.Add(ImportExportEszkozResource.ExportHeaderNameKategoria, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.EszkozKategoria));
dropDownColumnSourceDictionary.Add(ImportExportEszkozResource.ExportHeaderNameCel, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.EszkozCel));
dropDownColumnSourceDictionary.Add(ImportExportEszkozResource.ExportHeaderNameJelleg, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.EszkozJelleg));
dropDownColumnSourceDictionary.Add(ImportExportEszkozResource.ExportHeaderNameMennyisegiEgyseg, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.MertekegysegTipus));
var helper = new ImportExportHelper(connectionType);
dropDownColumnSourceDictionary.Add(ImportExportEszkozResource.ImportHeaderNameHelyiseg, helper.GetTeremList());
dropDownColumnSourceDictionary.Add(ImportExportEszkozResource.ImportHeaderNameEszkozSzemelyiFelelose, helper.GetTanarList(true));
});
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,465 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Linq;
using System.Runtime.Caching;
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.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class FelhasznaloBelepesImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderListForAlkalmazott => new Dictionary<int, string>
{
{ 00, ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottNeve },
{ 01, ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottOktatasiAzonosito },
{ 02, ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottSzuletesiDatuma },
{ 03, ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottFelhasznaloneve },
{ 04, ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottJelszava }
};
public static Dictionary<int, string> ImportHeaderListForTanulo => new Dictionary<int, string>
{
{ 00, ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNevSzulidoOktazon },
{ 01, ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloFelhasznaloneve },
{ 02, ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloJelszava }
};
public static Dictionary<int, string> ImportHeaderListForGondviselo => new Dictionary<int, string>
{
{ 00, ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNeve },
{ 01, ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloOktatasiAzonosito },
{ 02, ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloSzuletesiDatuma },
{ 03, ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloOsztalya },
{ 04, ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloNeve },
{ 05, ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloRokonsagiFoka },
{ 06, ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloFelhasznaloneve },
{ 07, ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloJelszava }
};
public FelhasznaloBelepesImportCo ImportCo
{
get => (FelhasznaloBelepesImportCo)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 FelhasznaloBelepesImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(FelhasznaloBelepesImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, int importMuvelet, FelhasznaloBelepesExportImportTipusEnum tipusEnum, bool isGeneraltFileLetoltes, bool isEmailKuldes, int? anotherYearId, bool isKovTanev, bool isSzakkepzoIntezmeny)
{
FelhasznaloBelepesImportCo importCo = GetImportCoFromImportData(importData, tipusEnum, anotherYearId, isKovTanev);
importCo.ImportMuvelet = importMuvelet;
importCo.IsGeneraltFileLetoltes = isGeneraltFileLetoltes;
importCo.IsEmailKuldes = isEmailKuldes;
importCo.TipusEnum = tipusEnum;
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate(ConnectionType, isSzakkepzoIntezmeny);
SetNemImportalhatoSorokByValidation(importCo, validationResultDictionary);
SetOperationAndNemImportalhatoSorokByOperation(importCo);
var mainImportJsonItemList = new List<FelhasznaloBelepesImportJsonItemCo>(importCo.MainImportItemList.Select(x => new FelhasznaloBelepesImportJsonItemCo(x, TanevId, IntezmenyId, FelhasznaloId)));
importCo.MainImportJsonItemList = mainImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(FelhasznaloBelepesImportCo importCo, Dictionary<int, List<ValidationResult>> validationResultDictionary)
{
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (FelhasznaloBelepesImportItemCo 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 void SetOperationAndNemImportalhatoSorokByOperation(FelhasznaloBelepesImportCo importCo)
{
int importMuvelet = importCo.ImportMuvelet;
//NOTE: Azért van szükség Dictionary-re, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary = GetCompareHashImportItemCompareCoDictionary(importCo.FelhasznaloBelepesCoList, importCo.TipusEnum);
foreach (FelhasznaloBelepesImportItemCo importItem in importCo.MainImportItemList)
{
string compareHash = importItem.CompareHash;
ImportItemCompareCo importItemCompareCo = null;
if (compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItemCompareCo = compareHashImportItemCompareCoDictionary[compareHash];
}
//NOTE: Ha nem találtunk egyezést és nincs felhasználó belépése a felhasználónak, akkor mindeképpen Insert!
if (importItemCompareCo == null || !importItemCompareCo.Id.IsEntityId())
{
importItem.Operation = (int)ImportItemOperationEnum.Insert;
}
//NOTE: Ha találtunk egyezést, akkor...
else
{
//NOTE: ...ha az import művelet DeleteAndInsert és a db-ből jövő adat Importalt(a nem importáltakat egyelőre nem töröljük), akkor Insert, mert töröljük a korábbi elemeket és újra be kell szúrni!
if (importMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && importItemCompareCo.Importalt)
{
importItem.Operation = (int)ImportItemOperationEnum.Insert;
}
//NOTE: ...ha nincs törlés, akkor...
else
{
//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 vagy DeleteAndInsert műveletnél. A DeleteAndInsert csak akkor fut be ide, ha az elem nem importált.)!
else
{
importItem.ErrorList.Add(ImportExportCommonResource.NemImportalhatoMertMarSzerepelAzAdatbazisban);
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 FelhasznaloBelepesImportCo GetImportCoFromImportData(List<List<string>> importData, FelhasznaloBelepesExportImportTipusEnum tipusEnum, int? anotherYearId, bool isKovTanev)
{
var felhasznaloBelepesHelper = new FelhasznaloBelepesHelper(ConnectionType);
var felhasznaloBelepesCoList = new List<FelhasznaloBelepesItemCo>();
felhasznaloBelepesCoList.AddRange(felhasznaloBelepesHelper.GetFelhasznaloBelepesCoList().OrderBy(x => x.FelhasznaloVezeteknev).ThenBy(x => x.FelhasznaloKeresztnev));
if (anotherYearId.HasValue)
{
var anotherYearFelBelCoList = felhasznaloBelepesHelper.GetFelhasznaloBelepesCoList(anotherYearId);
anotherYearFelBelCoList.ForEach(x => x.AnotherYearTanevMegnevezes = (isKovTanev ? ErrorResource.AzAktualisTaneven : ErrorResource.AKovetkezoTaneven));
felhasznaloBelepesCoList.AddRange(anotherYearFelBelCoList.OrderBy(x => x.FelhasznaloVezeteknev).ThenBy(x => x.FelhasznaloKeresztnev));
}
var importCo = new FelhasznaloBelepesImportCo
{
FelhasznaloBelepesCoList = felhasznaloBelepesCoList,
TipusEnum = tipusEnum
};
int lineNumber = 1;
foreach (List<string> importDataRow in importData.Skip(1))
{
FelhasznaloBelepesImportItemCo importItemCo;
switch (tipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
importItemCo = new FelhasznaloBelepesImportItemCo(TanevId)
{
NeveImportData = importDataRow[ImportHeaderListForAlkalmazott.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottNeve)],
OktatasiAzonositoImportData = importDataRow[ImportHeaderListForAlkalmazott.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottOktatasiAzonosito)],
SzuletesiDatumaImportData = importDataRow[ImportHeaderListForAlkalmazott.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottSzuletesiDatuma)],
FelhasznaloNeveImportData = importDataRow[ImportHeaderListForAlkalmazott.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottFelhasznaloneve)],
JelszavaImportData = importDataRow[ImportHeaderListForAlkalmazott.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottJelszava)]
};
break;
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
importItemCo = new FelhasznaloBelepesImportItemCo(TanevId)
{
TanuloNevOktAzonSzulDatumImportData = importDataRow[ImportHeaderListForTanulo.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNevSzulidoOktazon)],
FelhasznaloNeveImportData = importDataRow[ImportHeaderListForTanulo.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloFelhasznaloneve)],
JelszavaImportData = importDataRow[ImportHeaderListForTanulo.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloJelszava)]
};
(importItemCo.NeveImportData, importItemCo.SzuletesiDatumaImportData, importItemCo.OktatasiAzonositoImportData) = GetNevSzulDatumOktAzonFromTanuloImportData(importItemCo.TanuloNevOktAzonSzulDatumImportData);
break;
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
importItemCo = new FelhasznaloBelepesImportItemCo(TanevId)
{
NeveImportData = importDataRow[ImportHeaderListForGondviselo.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNeve)],
OktatasiAzonositoImportData = importDataRow[ImportHeaderListForGondviselo.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloOktatasiAzonosito)],
SzuletesiDatumaImportData = importDataRow[ImportHeaderListForGondviselo.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloSzuletesiDatuma)],
GondviseloNeveImportData = importDataRow[ImportHeaderListForGondviselo.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloNeve)],
GondviseloRokonsagiFokaImportData = importDataRow[ImportHeaderListForGondviselo.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloRokonsagiFoka)],
FelhasznaloNeveImportData = importDataRow[ImportHeaderListForGondviselo.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloFelhasznaloneve)],
JelszavaImportData = importDataRow[ImportHeaderListForGondviselo.GetKeyByUniqueValue(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloJelszava)]
};
break;
default:
throw new Exception();
}
importItemCo.TipusEnum = tipusEnum;
importItemCo.LineNumber = lineNumber;
//NOTE: Azért nem SingleOrDefault, mert az adatbázisban lehet olyan hiba, hogy egy tanulóhoz több olyan gondviselő van, akinek a neve és rokonsági foka megegyezik
importItemCo.FelhasznaloBelepes = importCo.FelhasznaloBelepesCoList.Where(x => x.TipusEnum == importItemCo.TipusEnum).FirstOrDefault(x =>
x.FelhasznaloNyomtatasiNevComparableString == importItemCo.NeveImportData?.ToComparableString() &&
x.FelhasznaloOktatasiAzonositoComparableString == importItemCo.OktatasiAzonosito?.ToComparableString() &&
x.FelhasznaloSzuletesiIdo == importItemCo.SzuletesiIdo &&
(x.TipusEnum != FelhasznaloBelepesExportImportTipusEnum.Gondviselo && !x.GondviseloId.IsEntityId() ||
x.TipusEnum == FelhasznaloBelepesExportImportTipusEnum.Gondviselo && x.GondviseloId.IsEntityId() && x.GondviseloNevComparableString == importItemCo.GondviseloNev?.ToComparableString() && x.GondviseloRokonsagiFokId == importItemCo.GondviseloRokonsagiFokId));
string md5HashInput =
importItemCo.NeveImportData?.ToComparableString() +
importItemCo.OktatasiAzonosito?.ToComparableString() +
importItemCo.SzuletesiIdoString?.ToComparableString();
if (importItemCo.TipusEnum == FelhasznaloBelepesExportImportTipusEnum.Gondviselo)
{
md5HashInput += importItemCo.GondviseloNev?.ToComparableString();
md5HashInput += importItemCo.GondviseloRokonsagiFokId;
}
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
private (string nev, string szulDatum, string oktAzon) GetNevSzulDatumOktAzonFromTanuloImportData(string tanuloNevOktAzonSzulDatumImportData)
{
var splittedTanuloNev = tanuloNevOktAzonSzulDatumImportData.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
var nev = splittedTanuloNev.ElementAtOrDefault(0);
var szulDatum = splittedTanuloNev.ElementAtOrDefault(1);
var oktAzon = splittedTanuloNev.ElementAtOrDefault(2);
return (nev, szulDatum, oktAzon);
}
#region Template
public MemoryStream GetTemplate(FelhasznaloBelepesExportImportTipusEnum tipusEnum)
{
string worksheetName = DetailsByEnum(tipusEnum).WorksheetName;
string simpleExportColumnAttributeId = null;
switch (tipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
simpleExportColumnAttributeId = FelhasznaloBelepesItemCo.AlkalmazottFelhasznaloBelepesExportAttributeId;
break;
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
simpleExportColumnAttributeId = FelhasznaloBelepesItemCo.TanuloFelhasznaloBelepesExportAttributeId;
break;
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
simpleExportColumnAttributeId = FelhasznaloBelepesItemCo.GondviseloFelhasznaloBelepesExportAttributeId;
break;
}
if (simpleExportColumnAttributeId == null)
{
throw new NullReferenceException(string.Format(ErrorResource.Az0ValtozoErtekeNemLehetNull, nameof(simpleExportColumnAttributeId)));
}
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<FelhasznaloBelepesItemCo>(simpleExportColumnAttributeId, GetDefaultDropDownColumnSourceDictionary(tipusEnum));
return SimpleExportLogic.GetTemplate(worksheetName, simpleExportColumnCos);
}
#endregion Template
#region Export
public MemoryStream GetExport(FelhasznaloBelepesExportImportTipusEnum tipusEnum)
{
string worksheetName = DetailsByEnum(tipusEnum).WorksheetName;
string simpleExportColumnAttributeId = null;
switch (tipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
simpleExportColumnAttributeId = FelhasznaloBelepesItemCo.AlkalmazottFelhasznaloBelepesExportAttributeId;
break;
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
simpleExportColumnAttributeId = FelhasznaloBelepesItemCo.TanuloFelhasznaloBelepesExportAttributeId;
break;
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
simpleExportColumnAttributeId = FelhasznaloBelepesItemCo.GondviseloFelhasznaloBelepesExportAttributeId;
break;
}
if (simpleExportColumnAttributeId == null)
{
throw new NullReferenceException(string.Format(ErrorResource.Az0ValtozoErtekeNemLehetNull, nameof(simpleExportColumnAttributeId)));
}
List<FelhasznaloBelepesItemCo> coList = new FelhasznaloBelepesHelper(ConnectionType).GetFelhasznaloBelepesCoList()
.Where(x => x.TipusEnum == tipusEnum)
.OrderBy(x => x.FelhasznaloVezeteknev)
.ThenBy(x => x.FelhasznaloKeresztnev)
.ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<FelhasznaloBelepesItemCo>(simpleExportColumnAttributeId, GetDefaultDropDownColumnSourceDictionary(tipusEnum));
return SimpleExportLogic.GetExport(worksheetName, simpleExportColumnCos, coList, TanevId);
}
public MemoryStream GetNemImportalhatoSorokExport(FelhasznaloBelepesExportImportTipusEnum tipusEnum)
{
string worksheetName = DetailsByEnum(tipusEnum).WorksheetName;
string simpleExportColumnAttributeId = null;
switch (tipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
simpleExportColumnAttributeId = FelhasznaloBelepesImportItemCo.AlkalmazottNemImportalhatoSorokExportAttributeId;
break;
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
simpleExportColumnAttributeId = FelhasznaloBelepesImportItemCo.TanuloNemImportalhatoSorokExportAttributeId;
break;
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
simpleExportColumnAttributeId = FelhasznaloBelepesImportItemCo.GondviseloNemImportalhatoSorokExportAttributeId;
break;
}
if (simpleExportColumnAttributeId == null)
{
throw new NullReferenceException(string.Format(ErrorResource.Az0ValtozoErtekeNemLehetNull, nameof(simpleExportColumnAttributeId)));
}
List<FelhasznaloBelepesImportItemCo> coList = ImportCo.NemImportalhatoItemList;
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<FelhasznaloBelepesImportItemCo>(simpleExportColumnAttributeId, GetDefaultDropDownColumnSourceDictionary(tipusEnum));
return ImportExportHelper.NemImportalhatoSorokExport(worksheetName, simpleExportColumnCos, coList, TanevId);
}
#endregion Export
private Dictionary<string, ImportItemCompareCo> GetCompareHashImportItemCompareCoDictionary(List<FelhasznaloBelepesItemCo> coList, FelhasznaloBelepesExportImportTipusEnum tipusEnum)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (FelhasznaloBelepesItemCo co in coList.Where(i => i.TipusEnum == tipusEnum))
{
string md5HashInput =
co.FelhasznaloNyomtatasiNevComparableString +
co.FelhasznaloOktatasiAzonositoComparableString +
co.FelhasznaloSzuletesiIdoComparableString;
if (tipusEnum == FelhasznaloBelepesExportImportTipusEnum.Gondviselo)
{
md5HashInput += co.GondviseloNevComparableString;
md5HashInput += co.GondviseloRokonsagiFokId;
}
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;
}
public (string WorksheetName, Dictionary<int, string> ExcelHeaderList) DetailsByEnum(FelhasznaloBelepesExportImportTipusEnum tipusEnum)
{
switch (tipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
return (ImportExportFelhasznaloBelepesResource.AlkalmazottFelhasznaloBelepesiAdatok, ImportHeaderListForAlkalmazott);
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
return (ImportExportFelhasznaloBelepesResource.TanuloFelhasznaloBelepesiAdatok, ImportHeaderListForTanulo);
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
return (ImportExportFelhasznaloBelepesResource.GondviseloFelhasznaloBelepesiAdatok, ImportHeaderListForGondviselo);
}
return (string.Empty, null);
}
private Dictionary<string, IList<string>> GetDefaultDropDownColumnSourceDictionary(FelhasznaloBelepesExportImportTipusEnum tipusEnum)
{
//NOTE: Create dropdown lists
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
switch (tipusEnum)
{
case FelhasznaloBelepesExportImportTipusEnum.Alkalmazott:
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var helper = new ImportExportHelper(new DalHandlerConnectionType(ConnectionType, dalHandler));
dropDownColumnSourceDictionary.Add(ImportExportFelhasznaloBelepesResource.ImportHeaderNameAlkalmazottNeve, helper.GetTanarList());
});
break;
case FelhasznaloBelepesExportImportTipusEnum.Tanulo:
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var helper = new ImportExportHelper(new DalHandlerConnectionType(ConnectionType, dalHandler));
dropDownColumnSourceDictionary.Add(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNevSzulidoOktazon, helper.GetTanuloNevOktAzonSzulDatumList());
});
break;
case FelhasznaloBelepesExportImportTipusEnum.Gondviselo:
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
var helper = new ImportExportHelper(connectionType);
dropDownColumnSourceDictionary.Add(ImportExportFelhasznaloBelepesResource.ImportHeaderNameTanuloNeve, helper.GetTanuloList());
dropDownColumnSourceDictionary.Add(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloNeve, helper.GetGondviseloList());
dropDownColumnSourceDictionary.Add(ImportExportFelhasznaloBelepesResource.ImportHeaderNameGondviseloRokonsagiFoka, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.RokonsagiFok));
});
break;
default:
throw new Exception();
}
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,529 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data;
using System.IO;
using System.Linq;
using System.Runtime.Caching;
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.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class GondviseloImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportGondviseloResource.ImportHeaderNameTanuloNeve },
{ 01, ImportExportGondviseloResource.ImportHeaderNameTanuloOktatasiAzonosito },
{ 02, ImportExportGondviseloResource.ImportHeaderNameGondviseloNevElotag },
{ 03, ImportExportGondviseloResource.ImportHeaderNameGondviseloVezetekNev },
{ 04, ImportExportGondviseloResource.ImportHeaderNameGondviseloKeresztNev },
{ 05, ImportExportGondviseloResource.ImportHeaderNameGondviseloRokonsagiFoka },
{ 06, ImportExportGondviseloResource.ImportHeaderNameTorvenyesKepviselo },
{ 07, ImportExportGondviseloResource.ImportHeaderNameGondviseloTelefonszama },
{ 08, ImportExportGondviseloResource.ImportHeaderNameTelefonTipus },
{ 09, ImportExportGondviseloResource.ImportHeaderNameGondviseloEmailCime },
{ 10, ImportExportGondviseloResource.ImportHeaderNameEmailTipus },
{ 11, ImportExportGondviseloResource.ImportHeaderNameGondviseloCimTipusa },
{ 12, ImportExportGondviseloResource.ImportHeaderNameGondviseloCimOrszag },
{ 13, ImportExportGondviseloResource.ImportHeaderNameGondviseloCimIranyitoszam },
{ 14, ImportExportGondviseloResource.ImportHeaderNameGondviseloCimHelysegNev },
{ 15, ImportExportGondviseloResource.ImportHeaderNameGondviseloCimKozteruletNev },
{ 16, ImportExportGondviseloResource.ImportHeaderNameGondviseloCimKozteruletJelleg },
{ 17, ImportExportGondviseloResource.ImportHeaderNameGondviseloCimHazszam },
{ 18, ImportExportGondviseloResource.ImportHeaderNameGondviseloCimEmelet },
{ 19, ImportExportGondviseloResource.ImportHeaderNameGondviseloCimAjto },
};
public static Dictionary<int, string> ExportHeaderList => new Dictionary<int, string>(ImportHeaderList);
public GondviseloImportCo ImportCo
{
get => (GondviseloImportCo)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 GondviseloImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(GondviseloImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, int importMuvelet, bool isGeneraltFileLetoltes, bool isEmailKuldes, bool isSzirIntezmeny)
{
GondviseloImportCo importCo = GetImportCoFromImportData(importData);
importCo.ImportMuvelet = importMuvelet;
importCo.IsGeneraltFileLetoltes = isGeneraltFileLetoltes;
importCo.IsEmailKuldes = isEmailKuldes;
SetNemImportalhatoSorokByValidation(importCo);
List<GondviseloItemCo> coList = importCo.GondviseloCoList;
//NOTE: Azért van szükség Dictionary-kre, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> telefonCompareHashImportItemCompareCoDictionary = GetTelefonCompareHashImportItemCompareCoDictionary(coList);
Dictionary<string, ImportItemCompareCo> emailCompareHashImportItemCompareCoDictionary = GetEmailCompareHashImportItemCompareCoDictionary(coList);
Dictionary<string, ImportItemCompareCo> cimCompareHashImportItemCompareCoDictionary = GetCimCompareHashImportItemCompareCoDictionary(coList);
Dictionary<string, ImportItemCompareCo> gondviseloCompareHashImportItemCompareCoDictionary = GetGondviseloCompareHashImportItemCompareCoDictionary(coList);
foreach (GondviseloImportItemCo importItem in importCo.MainImportItemList)
{
if (!string.IsNullOrWhiteSpace(importItem.Telefonszam))
{
SetOperationTelefon(importItem, telefonCompareHashImportItemCompareCoDictionary, importCo.ImportMuvelet);
}
if (!string.IsNullOrWhiteSpace(importItem.EmailCim))
{
SetOperationEmail(importItem, emailCompareHashImportItemCompareCoDictionary, importCo.ImportMuvelet);
}
if (!string.IsNullOrWhiteSpace(importItem.CimTipusaNev) && importItem.CimOrszagId.IsEntityId())
{
SetOperationCim(importItem, cimCompareHashImportItemCompareCoDictionary, importCo.ImportMuvelet);
}
SetOperationGondviselo(importItem, gondviseloCompareHashImportItemCompareCoDictionary, importCo.ImportMuvelet);
}
//NOTE: Azokat a sorokat, amelyek bekerültek a NemImportalhatoItemList-be, azokat kiveszzük a MainImportItemList-ből!
importCo.MainImportItemList.RemoveRange(importCo.NemImportalhatoItemList);
var telefonImportJsonItemList = new List<TelefonGondviseloImportJsonItemCo>();
var emailImportJsonItemList = new List<EmailGondviseloImportJsonItemCo>();
var cimImportJsonItemList = new List<CimGondviseloImportJsonItemCo>();
var mainImportJsonItemList = new List<GondviseloImportJsonItemCo>();
foreach (GondviseloImportItemCo importItem in importCo.MainImportItemList)
{
if (!string.IsNullOrWhiteSpace(importItem.Telefonszam))
{
telefonImportJsonItemList.Add(new TelefonGondviseloImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
}
if (!string.IsNullOrWhiteSpace(importItem.EmailCim))
{
emailImportJsonItemList.Add(new EmailGondviseloImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
}
if (!string.IsNullOrWhiteSpace(importItem.CimTipusaNev))
{
cimImportJsonItemList.Add(new CimGondviseloImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
}
mainImportJsonItemList.Add(new GondviseloImportJsonItemCo(importItem, isSzirIntezmeny, TanevId, IntezmenyId, FelhasznaloId));
}
importCo.TelefonGondviseloImportJsonItemList = telefonImportJsonItemList;
importCo.EmailGondviseloImportJsonItemList = emailImportJsonItemList;
importCo.CimGondviseloImportJsonItemList = cimImportJsonItemList;
importCo.MainImportJsonItemList = mainImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(GondviseloImportCo importCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate();
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (GondviseloImportItemCo 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 SetOperationTelefon(GondviseloImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, int importMuvelet)
{
var compareHash = importItem.CompareHashTelefon;
//NOTE: Ha nem találtunk egyezést, akkor mindeképpen Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationTelefon = (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.TelefonId = importItemCompareCo.Id;
importItem.OperationTelefon = (int)ImportItemOperationEnum.Update;
}
}
}
private static void SetOperationEmail(GondviseloImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, int importMuvelet)
{
var compareHash = importItem.CompareHashEmail;
//NOTE: Ha nem találtunk egyezést, akkor mindeképpen Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationEmail = (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.EmailId = importItemCompareCo.Id;
importItem.OperationEmail = (int)ImportItemOperationEnum.Update;
}
}
}
private static void SetOperationCim(GondviseloImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, int importMuvelet)
{
var compareHash = importItem.CompareHashCim;
//NOTE: Ha nem találtunk egyezést, akkor mindeképpen Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationCim = (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.CimId = importItemCompareCo.Id;
importItem.OperationCim = (int)ImportItemOperationEnum.Update;
}
}
}
private void SetOperationGondviselo(GondviseloImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, int 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;
}
}
}
private GondviseloImportCo GetImportCoFromImportData(List<List<string>> importData)
{
var importCo = new GondviseloImportCo
{
GondviseloCoList = new GondviseloHelper(ConnectionType).GetGondviseloCoList()
};
List<TanuloItemCo> tanuloCoList = new TanuloHelper(ConnectionType).GetTanuloCoList();
int lineNumber = 1;
foreach (List<string> importDataRow in importData.Skip(1))
{
var importItemCo = new GondviseloImportItemCo(TanevId)
{
LineNumber = lineNumber,
TanuloNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameTanuloNeve)],
TanuloOktatasiAzonositoImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameTanuloOktatasiAzonosito)],
GondviseloNevElotagImportData = Extensions.NameExtensions.CleanElotag(importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloNevElotag)]),
GondviseloVezeteknevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloVezetekNev)].ReplaceMultipleSpacesAndTrim(),
GondviseloKeresztnevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloKeresztNev)].ReplaceMultipleSpacesAndTrim(),
GondviseloRokonsagiFokaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloRokonsagiFoka)],
GondviseloTelefonszamaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloTelefonszama)],
GondviseloEmailCimeImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloEmailCime)],
CimAjtoImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimAjto)],
EmailTipusImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameEmailTipus)],
CimEmeletImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimEmelet)],
CimHazszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimHazszam)],
CimHelysegNevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimHelysegNev)],
CimIranyitoszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimIranyitoszam)],
CimKozteruletJellegeImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimKozteruletJelleg)],
CimKozteruletNevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimKozteruletNev)],
CimOrszagImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimOrszag)],
CimTipusaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimTipusa)],
TelefonTipusImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameTelefonTipus)],
TorvenyesKepviseloImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportGondviseloResource.ImportHeaderNameTorvenyesKepviselo)],
};
//NOTE: Azért nem SingleOrDefault, mert többször gondviselője is lehet egy tanulónak.
importItemCo.FelhasznaloId = tanuloCoList.FirstOrDefault(x =>
x.FelhasznaloNyomtatasiNevComparableString == importItemCo.TanuloNeveImportData?.ToComparableString() &&
x.FelhasznaloOktatasiAzonositoComparableString == importItemCo.FelhasznaloOktatasiAzonosito?.ToComparableString())?.Id;
var gondviseloNev = Extensions.NameExtensions.GetNevSorrendben("F", Extensions.NameExtensions.CleanElotag(importItemCo.GondviseloNevElotag), importItemCo.GondviseloVezeteknev, importItemCo.GondviseloKeresztnev);
//NOTE: Azért nem SingleOrDefault, mert hibásan lehet több gondviselő ugyanazzal a névvel és rokonsági fokkal
importItemCo.Gondviselo = importCo.GondviseloCoList.FirstOrDefault(x =>
x.FelhasznaloId == importItemCo.FelhasznaloId &&
x.NevComparableString == gondviseloNev?.ToComparableString() &&
x.RokonsagiFokId == importItemCo.RokonsagiFokId);
string telefonMd5HashInput =
importItemCo.FelhasznaloId +
gondviseloNev?.ToComparableString() +
importItemCo.RokonsagiFokId;
importItemCo.CompareHashTelefon = ImportExportHelper.GetMd5Hash(telefonMd5HashInput);
string emailMd5HashInput =
importItemCo.FelhasznaloId +
gondviseloNev?.ToComparableString() +
importItemCo.RokonsagiFokId;
importItemCo.CompareHashEmail = ImportExportHelper.GetMd5Hash(emailMd5HashInput);
string cimMd5HashInput =
importItemCo.FelhasznaloId +
gondviseloNev?.ToComparableString() +
importItemCo.RokonsagiFokId +
importItemCo.CimTipusaId;
importItemCo.CompareHashCim = ImportExportHelper.GetMd5Hash(cimMd5HashInput);
string gondviseloMd5HashInput =
importItemCo.FelhasznaloId +
gondviseloNev?.ToComparableString() +
importItemCo.RokonsagiFokId;
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(gondviseloMd5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
public MemoryStream GetTemplate()
{
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<GondviseloItemCo>(GondviseloItemCo.GondviselokExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetTemplate(ImportExportGondviseloResource.ImportDefaultSheetName, simpleExportColumnCos);
}
public MemoryStream GetExport()
{
List<GondviseloItemCo> coList = new GondviseloHelper(ConnectionType).GetGondviseloCoList().OrderBy(x => x.FelhasznaloVezeteknev).ThenBy(x => x.FelhasznaloKeresztnev).ThenBy(x => x.VezetekNev).ThenBy(x => x.KeresztNev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<GondviseloItemCo>(GondviseloItemCo.GondviselokExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetExport(ImportExportGondviseloResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
public MemoryStream GetNemImportalhatoSorokExport()
{
List<GondviseloImportItemCo> coList = ImportCo.NemImportalhatoItemList.OrderBy(x => x.TanuloNeveImportData).ThenBy(x => x.GondviseloVezeteknevImportData).ThenBy(x => x.GondviseloKeresztnevImportData).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<GondviseloImportItemCo>(GondviseloImportItemCo.NemImportalhatoSorokExportAttributeId);
return ImportExportHelper.NemImportalhatoSorokExport(ImportExportGondviseloResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
private Dictionary<string, ImportItemCompareCo> GetTelefonCompareHashImportItemCompareCoDictionary(List<GondviseloItemCo> gondviseloItemCoList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (GondviseloItemCo gondviseloItemCo in gondviseloItemCoList)
{
var telefon = gondviseloItemCo.TelefonList.FirstOrDefault();
if (telefon != null)
{
var md5HashInput =
gondviseloItemCo.FelhasznaloId +
gondviseloItemCo.NevComparableString +
gondviseloItemCo.RokonsagiFokId;
string compareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = telefon.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<GondviseloItemCo> gondviseloItemCoList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (GondviseloItemCo gondviseloItemCo in gondviseloItemCoList)
{
var email = gondviseloItemCo.EmailList.FirstOrDefault();
if (email != null)
{
var md5HashInput =
gondviseloItemCo.FelhasznaloId +
gondviseloItemCo.NevComparableString +
gondviseloItemCo.RokonsagiFokId;
string compareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = email.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> GetCimCompareHashImportItemCompareCoDictionary(List<GondviseloItemCo> gondviseloItemCoList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (GondviseloItemCo gondviseloItemCo in gondviseloItemCoList)
{
var cim = gondviseloItemCo.AllandoLakcim;
if (cim != null)
{
var md5HashInput =
gondviseloItemCo.FelhasznaloId +
gondviseloItemCo.NevComparableString +
gondviseloItemCo.RokonsagiFokId +
cim.TipusId;
string compareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = cim.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> GetGondviseloCompareHashImportItemCompareCoDictionary(List<GondviseloItemCo> gondviseloItemCoList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (GondviseloItemCo co in gondviseloItemCoList)
{
var md5HashInput =
co.FelhasznaloId +
co.NevComparableString +
co.RokonsagiFokId;
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;
}
public BelepesiAdatokListCO Import(object importJsonObject, bool isEmailKuldes, bool isActivTanev, bool isKovTanev, bool isSzirIntezmeny)
{
string importJson = JsonConvert.SerializeObject(importJsonObject);
var belepesiAdatokListCo = new BelepesiAdatokListCO();
if (!isSzirIntezmeny && (isActivTanev || isKovTanev))
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
DataSet result = h.ImportExportDal().GondviseloImport(IntezmenyId, TanevId, FelhasznaloId, importJson);
h.Felhasznalo().UpdateAllEgyediAzonosito();
if (isActivTanev && result.Tables[0].Rows.Count > 0)
{
var tanuloHelper = new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h));
foreach (DataRow dataRow in result.Tables[0].Rows)
{
tanuloHelper.AlapertelmezettGondviseloBelepesGeneralas(SDAConvert.ToInt32(dataRow["ID"]), isEmailKuldes, belepesiAdatokListCo);
}
}
});
}
return belepesiAdatokListCo;
}
private Dictionary<string, IList<string>> GetDefaultDropDownColumnSourceDictionary()
{
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
dropDownColumnSourceDictionary.Add(ImportExportGondviseloResource.ImportHeaderNameGondviseloRokonsagiFoka, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.RokonsagiFok));
dropDownColumnSourceDictionary.Add(ImportExportGondviseloResource.ImportHeaderNameTelefonTipus, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.TelefonTipus));
dropDownColumnSourceDictionary.Add(ImportExportGondviseloResource.ImportHeaderNameEmailTipus, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.EmailTipus));
dropDownColumnSourceDictionary.Add(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimOrszag, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.OrszagTipus));
dropDownColumnSourceDictionary.Add(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimTipusa, new List<string> { CimTipusEnum.allando_lakcim.GetDisplayName(TanevId) });
dropDownColumnSourceDictionary.Add(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimKozteruletJelleg, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.KozteruletJelleg));
var importExportHelper = new ImportExportHelper(connectionType);
dropDownColumnSourceDictionary.Add(ImportExportGondviseloResource.ImportHeaderNameTanuloNeve, importExportHelper.GetTanuloList());
var telepulesHelper = new TelepulesHelper(connectionType);
dropDownColumnSourceDictionary.Add(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimIranyitoszam, telepulesHelper.GetIranyitoszamok("").Select(i => i.Iranyitoszam).ToList());
dropDownColumnSourceDictionary.Add(ImportExportGondviseloResource.ImportHeaderNameGondviseloCimHelysegNev, telepulesHelper.GetTelepulesek().Select(t => t.TelepulesNev).ToList());
});
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,407 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using Aspose.Cells;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.HelperClasses.ImportCo;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Framework.Util;
using Kreta.Resources;
using Newtonsoft.Json;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class ImportExportHelper : LogicBase
{
public ImportExportHelper(IConnectionType connectionType) : base(connectionType) { }
public static List<List<string>> GetImportDataFromExcel(Stream uploadedFile, Dictionary<int, string> expectedImportHeaderList, out List<string> errorResult)
{
errorResult = new List<string>();
if (uploadedFile is FileStream fileStream)
{
var fileInfo = new FileInfo(fileStream.Name);
if (fileInfo.Extension != ".xlsx")
{
errorResult.Add(ErrorResource.CsakXlsxKiterjesztesuExcelFiletLehetImportalni);
return null;
}
}
using (var excelPackage = new ExcelPackage(uploadedFile))
{
var importData = new List<List<string>>();
var excelWorksheet = excelPackage.Workbook.Worksheets.First();
var startExcelCellAddress = excelWorksheet.Dimension.Start;
var endExcelCellAddress = excelWorksheet.Dimension.End;
var lastExpectedImportColumnIndex = expectedImportHeaderList.Count;
var excelHeaderList = new Dictionary<int, string>();
for (var columnIndex = startExcelCellAddress.Column; columnIndex <= lastExpectedImportColumnIndex; columnIndex++)
{
var value = excelWorksheet.Cells[1, columnIndex].Text.ReplaceMultipleSpacesAndTrim();
excelHeaderList.Add(columnIndex, value);
}
for (var expectedImportHeaderColumnIndex = 0; expectedImportHeaderColumnIndex < lastExpectedImportColumnIndex; expectedImportHeaderColumnIndex++)
{
var excelHeaderColumnIndex = expectedImportHeaderColumnIndex + 1;
if (!expectedImportHeaderList[expectedImportHeaderColumnIndex].Equals(excelHeaderList[excelHeaderColumnIndex]))
{
errorResult.Add(string.Format(ErrorResource.RosszImportHeader, excelHeaderColumnIndex, excelHeaderList[excelHeaderColumnIndex], expectedImportHeaderList[expectedImportHeaderColumnIndex]));
}
}
if (errorResult.Count > 0)
{
return null;
}
for (var rowIndex = startExcelCellAddress.Row; rowIndex <= endExcelCellAddress.Row; rowIndex++)
{
var currentRowDataList = new List<string>();
for (var columnIndex = startExcelCellAddress.Column; columnIndex <= lastExpectedImportColumnIndex; columnIndex++)
{
var value = excelWorksheet.Cells[rowIndex, columnIndex].Text.ReplaceMultipleSpacesAndTrim();
currentRowDataList.Add(value);
}
importData.Add(currentRowDataList);
}
//NOTE: Kitöröljük azokat a sorokat, ahol minden cella üres.
importData.RemoveAll(x => x.All(string.IsNullOrWhiteSpace));
return importData;
}
}
public static string GetMd5Hash(string input)
{
if (string.IsNullOrWhiteSpace(input))
{
return Constants.General.ImportMD5InvalidInput;
}
using (HashAlgorithm hashAlgorithm = MD5.Create())
{
var inputArray = hashAlgorithm.ComputeHash(Encoding.UTF8.GetBytes(input));
var stringBuilder = new StringBuilder();
foreach (var item in inputArray)
{
stringBuilder.Append(item.ToString("x2"));
}
var result = stringBuilder.ToString();
return result;
}
}
public void Import(object importJsonObject, int importMuvelet, bool isSubTable = false, bool isTorlesCsakImportalt = true)
{
var importJson = JsonConvert.SerializeObject(importJsonObject);
var isTorles = importMuvelet == (int)ImportMuveletEnum.DeleteAndInsert;
Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.ImportExportDal().Import(IntezmenyId, TanevId, FelhasznaloId, importJson, isTorles, isSubTable, isTorlesCsakImportalt));
}
public static MemoryStream NemImportalhatoSorokExport<T>(
string worksheetName,
List<SimpleExportColumnCo> simpleExportColumnCos,
List<T> coList, int tanevId) where T : BaseImportItemCo
{
using (var workbook = new Workbook())
{
var worksheet = SimpleExportLogic.GetWorksheet(workbook, worksheetName, simpleExportColumnCos);
worksheet.FillWithData(coList, simpleExportColumnCos, tanevId);
NemImportalhatoSorokExportEgyediHibaOszlop(worksheet, simpleExportColumnCos, coList);
var sheetCodeNameAndColumnsToWrapIndexDictionary = new Dictionary<string, List<int>>
{
{ workbook.Worksheets[0].CodeName, new List<int> { simpleExportColumnCos.Count } }
};
var memoryStream = SimpleExportLogic.GetWorkbookMemoryStream(workbook, sheetCodeNameAndColumnsToWrapIndexDictionary);
return memoryStream;
}
}
private static void NemImportalhatoSorokExportEgyediHibaOszlop<T>(Worksheet worksheet, List<SimpleExportColumnCo> simpleExportColumnCos, List<T> coList) where T : BaseImportItemCo
{
var errorHeaderColumn = simpleExportColumnCos.Count;
var errorHeaderCell = worksheet.Cells[0, errorHeaderColumn];
errorHeaderCell.Value = ImportExportCommonResource.ImportalastMeghiusitoOk;
var rowNumber = 1;
foreach (var errorList in coList.Select(x => x.ErrorList))
{
var errorCell = worksheet.Cells[rowNumber, errorHeaderColumn];
errorCell.Value = string.Join(Environment.NewLine, errorList);
errorCell.SetTextWrap();
rowNumber++;
}
worksheet.EgyediSzovegesOszlopFormazas(errorHeaderColumn);
}
public static MemoryStream GetTemplate(string worksheetName, Dictionary<int, string> headerNameDictionary, Dictionary<string, IList<string>> dropDownColumnSourceDictionary = null)
{
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(headerNameDictionary, dropDownColumnSourceDictionary);
return SimpleExportLogic.GetTemplate(worksheetName, simpleExportColumnCos);
}
public static Worksheet GetWorksheetsWithDropDownFormula(Workbook workbook, string worksheetName, Dictionary<int, string> headerNameDictionary, Dictionary<string, IList<string>> dropDownColumnSourceDictionary = null)
{
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(headerNameDictionary, dropDownColumnSourceDictionary);
var worksheet = SimpleExportLogic.GetWorksheet(workbook, worksheetName, simpleExportColumnCos);
return worksheet;
}
#region Az excel-ekben megjelenő dropdownlist-ek kiválasztható elemei
public IList<string> GetOsztalyCsoportList()
{
var result = new OsztalyCsoportHelper(ConnectionType).GetOsztalyCsoportCoList()
.OrderByDescending(x => x.IsOsztaly)
.ThenBy(x => x.Nev)
.Select(x => x.Nev)
.ToList();
return result;
}
public IList<string> GetOsztalyList()
{
var result = new OsztalyHelper(ConnectionType).GetOsztalyCoList().Select(x => x.Nev).OrderBy(o => o).ToList();
return result;
}
public IList<string> GetCsoportList()
{
var result = new CsoportHelper(ConnectionType).GetCsoportCoList().Select(x => x.Nev).OrderBy(o => o).ToList();
return result;
}
public IList<string> GetCsoportListBySzervezet(int? szervezetTipus = null, int? szervezetId = null)
{
var result = new CsoportHelper(ConnectionType).GetCsoportListBySzervezet(szervezetTipus, szervezetId).Select(x => x.Nev).OrderBy(o => o).ToList();
return result;
}
public IList<string> GetTantargyList(bool isExtended = false, bool isFromSzervezet = false, bool isSzakkepzo = false)
{
List<string> result;
if (isExtended)
{
var list = new List<string>
{
CommonResource.Mind,
TanuloErtekelesResource.Magatartas,
TanuloErtekelesResource.Szorgalom
};
result = list.Union(new TantargyHelper(ConnectionType).GetTantargyCoList().Select(x => x.Nev).OrderBy(o => o)).ToList();
}
else
{
result = new TantargyHelper(ConnectionType).GetTantargyCoList().Select(x => x.Nev).OrderBy(o => o).ToList();
}
if (!isFromSzervezet)
result.RemoveAll(x=> x.Contains(TantargyResource.DualisKepzes));
if (!isSzakkepzo)
result.RemoveAll(x => x.Contains(TantargyResource.ApaczaiKonzultacio));
return result;
}
public IList<string> GetTantargyListBySzervezet(bool isFromSzervezet = false, bool isSzakkepzo = false)
{
List<string> result;
result = new TantargyHelper(ConnectionType).GetTantargyCoList().Select(x => x.Nev).OrderBy(o => o).ToList();
if (!isSzakkepzo)
{
result.RemoveAll(x => x.Contains(TantargyResource.ApaczaiKonzultacio));
}
if (!isFromSzervezet)
{
result.RemoveAll(x => x.Contains(TantargyResource.DualisKepzes));
}
else
{
result = result.Where(x => x.Contains(TantargyResource.DualisKepzes)).ToList();
}
return result;
}
public IList<string> GetTanuloErtekelesTipusList()
{
var list = new List<string>
{
CommonResource.Mind
};
return Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
return list.Union(EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.ErtekelesTipus)).ToList();
});
}
public IList<string> GetEvfolyamTipusList()
{
var list = new List<string>
{
CommonResource.Mind
};
return Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
return list.Union(EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.EvfolyamTipus)).ToList();
});
}
public IList<string> GetTanarList(bool isSzuletesiIdovel = false)
{
List<string> result;
var tanarCoList = new AlkalmazottHelper(ConnectionType).GetAlkalmazottCoList();
if (isSzuletesiIdovel)
{
var tanarNevList = new List<string>();
//NOTE: Erre azért van szükség, ha több egyforma nevű tanár szerepel az adatbázisban, akkor zárójelben mögé tesszük a születési dátumát, hogy meg tudjuk őket különböztetni!
foreach (var item in tanarCoList)
{
var tanarNev = item.FelhasznaloNyomtatasiNev;
if (tanarCoList.Count(x => x.FelhasznaloNyomtatasiNevComparableString == item.FelhasznaloNyomtatasiNevComparableString) > 1)
{
tanarNev += $" ({item.FelhasznaloSzuletesiIdo.ToString(Core.Constants.ToStringPattern.HungarianDate)})";
}
tanarNevList.Add(tanarNev);
}
result = tanarNevList.Distinct().OrderBy(o => o).ToList();
}
else
{
result = tanarCoList.Select(x => x.FelhasznaloNyomtatasiNev).Distinct().OrderBy(o => o).ToList();
}
return result;
}
public IList<string> GetTanarListBySzervezet(bool isSzuletesiIdovel = false, int? szervezetTipus = null, int? szervezetId = null)
{
List<string> result;
var tanarCoList = new AlkalmazottHelper(ConnectionType).GetAlkalmazottCoListBySzervezet(szervezetTipus, szervezetId);
if (isSzuletesiIdovel)
{
var tanarNevList = new List<string>();
//NOTE: Erre azért van szükség, ha több egyforma nevű tanár szerepel az adatbázisban, akkor zárójelben mögé tesszük a születési dátumát, hogy meg tudjuk őket különböztetni!
foreach (var item in tanarCoList)
{
var tanarNev = item.FelhasznaloNyomtatasiNev;
if (tanarCoList.Count(x => x.FelhasznaloNyomtatasiNevComparableString == item.FelhasznaloNyomtatasiNevComparableString) > 1)
{
tanarNev += $" ({item.FelhasznaloSzuletesiIdo.ToString(Core.Constants.ToStringPattern.HungarianDate)})";
}
tanarNevList.Add(tanarNev);
}
result = tanarNevList.Distinct().OrderBy(o => o).ToList();
}
else
{
result = tanarCoList.Select(x => x.FelhasznaloNyomtatasiNev).Distinct().OrderBy(o => o).ToList();
}
return result;
}
public IList<string> GetTanuloList()
{
var result = new TanuloHelper(ConnectionType).GetTanuloCoList().Select(x => x.FelhasznaloNyomtatasiNev).Distinct().OrderBy(o => o).ToList();
return result;
}
public IList<string> GetTanuloNevOktAzonSzulDatumList()
{
var result = new TanuloHelper(ConnectionType).GetTanuloCoList().Select(x => $"{x.FelhasznaloNyomtatasiNev};{x.FelhasznaloSzuletesiIdo.ToString(Constants.ToStringPattern.HungarianDateWithSuffix)};{x.FelhasznaloOktatasiAzonosito}").Distinct().OrderBy(o => o).ToList();
return result;
}
public IList<string> GetGondviseloList()
{
var result = new GondviseloHelper(ConnectionType).GetGondviseloCoList().Select(x => Extensions.NameExtensions.GetNevSorrendben("F", x.Elotag, x.VezetekNev, x.KeresztNev)).Distinct().OrderBy(o => o).ToList();
return result;
}
public IList<string> GetHetiRendTipusList()
{
var hetiRendDictionaryItemList = ((int)GeneratedAdatszotarTipusEnum.HetiRendTipus).GetItemsByType(TanevId);
var result = hetiRendDictionaryItemList.OrderBy(o => o.Order).Select(x => x.Name).ToList();
return result;
}
public IList<string> GetHetNapjaTipusList()
{
var result = CommonUtils.OrderedHetNapjaTipusEnumList.Select(x => x.GetDisplayName(TanevId)).ToList();
return result;
}
public IList<string> GetTeremList()
{
var result = new TeremHelper(ConnectionType).GetTeremCoList().Select(x => x.Nev).OrderBy(o => o).ToList();
return result;
}
public IList<string> GetTeremListBySzervezet(int? szervezetTipus = null, int? szervezetId = null)
{
var result = new TeremHelper(ConnectionType).GetTeremCoListBySzervezet(szervezetTipus, szervezetId).Select(x => x.Nev).OrderBy(o => o).ToList();
return result;
}
public IList<string> GetMukodesiHelyList(DataSet feladatellatasiHelyDataSet)
{
var result = (from DataRow dataRow in feladatellatasiHelyDataSet.Tables[0].Rows select SDAConvert.ToString(dataRow["MukodesiHelyNev"])).ToList();
return result;
}
public IList<string> GetFeladatellatasiHelyList(DataSet feladatellatasiHelyDataSet)
{
var result = (from DataRow dataRow in feladatellatasiHelyDataSet.Tables[0].Rows select $"{SDAConvert.ToString(dataRow["MukodesiHelyNev"])} - {SDAConvert.ToString(dataRow["OktatasiNevelesiFeladatTipusId_DNAME"])}").ToList();
return result;
}
public IList<string> GetEllatottKoznevelesiFeladatList(DataSet feladatellatasiHelyDataSet)
{
var result = (from DataRow dataRow in feladatellatasiHelyDataSet.Tables[0].Rows select SDAConvert.ToString(dataRow["OktatasiNevelesiFeladatTipusId_DNAME"])).ToList();
return result;
}
#endregion Az excel-ekben megjelenő dropdownlist-ek kiválasztható elemei
}
}

View file

@ -0,0 +1,597 @@
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.Resources;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class NebuloImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportNebuloResource.ImportHeaderNameFenntartoAzonosito },
{ 01, ImportExportNebuloResource.ImportHeaderNameFenntartoMegnevezese },
{ 02, ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegTipusa },
{ 03, ImportExportNebuloResource.ImportHeaderNameOktatasiAzonositoSzam },
{ 04, ImportExportNebuloResource.ImportHeaderNameViseltElonev },
{ 05, ImportExportNebuloResource.ImportHeaderNameViseltVezeteknev },
{ 06, ImportExportNebuloResource.ImportHeaderNameViseltKeresztnev },
{ 07, ImportExportNebuloResource.ImportHeaderNameViseltNevNevsorrend },
{ 08, ImportExportNebuloResource.ImportHeaderNameSzuletesiElonev },
{ 09, ImportExportNebuloResource.ImportHeaderNameSzuletesiVezeteknev },
{ 10, ImportExportNebuloResource.ImportHeaderNameSzuletesiKeresztnev },
{ 11, ImportExportNebuloResource.ImportHeaderNameSzuletesiNevNevsorrend },
{ 12, ImportExportNebuloResource.ImportHeaderNameAnyjaNeveElonev },
{ 13, ImportExportNebuloResource.ImportHeaderNameAnyjaNeveVezeteknev },
{ 14, ImportExportNebuloResource.ImportHeaderNameAnyjaNeveKeresztnev },
{ 15, ImportExportNebuloResource.ImportHeaderNameAnyjaNeveNevsorrend },
{ 16, ImportExportNebuloResource.ImportHeaderNameSzuletesiIdo },
{ 17, ImportExportNebuloResource.ImportHeaderNameSzuletesiTelepules },
{ 18, ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimOrszag },
{ 19, ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimTelepules },
{ 20, ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimIranyitoszam },
{ 21, ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimKozteruletNev },
{ 22, ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimKozteruletJelleg },
{ 23, ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimHazszam },
{ 24, ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimPontositas },
{ 25, ImportExportNebuloResource.ImportHeaderNameAllandoLakcimOrszag },
{ 26, ImportExportNebuloResource.ImportHeaderNameAllandoLakcimTelepules },
{ 27, ImportExportNebuloResource.ImportHeaderNameAllandoLakcimIranyitoszam },
{ 28, ImportExportNebuloResource.ImportHeaderNameAllandoLakcimKozteruletNev },
{ 29, ImportExportNebuloResource.ImportHeaderNameAllandoLakcimKozteruletJelleg },
{ 30, ImportExportNebuloResource.ImportHeaderNameAllandoLakcimHazszam },
{ 31, ImportExportNebuloResource.ImportHeaderNameAllandoLakcimPontositas },
{ 32, ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegKezdete },
{ 33, ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegVege },
{ 34, ImportExportNebuloResource.ImportHeaderNameHalasztasJogcime },
{ 35, ImportExportNebuloResource.ImportHeaderNameHalasztastEngedelyezoSzervTipusa },
{ 36, ImportExportNebuloResource.ImportHeaderNameHalasztastEngedelyezoSzervMegnevezese },
{ 37, ImportExportNebuloResource.ImportHeaderNameHalasztasHatalyaVegdatuma },
{ 38, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoAktivVagySzuneteloJogviszonya },
{ 39, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyTipusa },
{ 40, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyStatusza },
{ 41, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyIntezmenyOmAzonositoja },
{ 42, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyIntezmenyNeve },
{ 43, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelySorszama },
{ 44, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyAzonositoja },
{ 45, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyNeve },
{ 46, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyCime },
{ 47, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyKezdete },
{ 48, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesenekKezdete },
{ 49, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesenekVarhatoVege },
{ 50, ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesJogcime },
{ 51, ImportExportNebuloResource.ImportHeaderNameKotelezettsegetAzIlletekesFenntartohozTartozoIntezmenybenTeljesiti },
{ 52, ImportExportNebuloResource.ImportHeaderNameAzUtolsoKotelezettsegetTeljesitoJogviszonyVegdatuma },
};
public static Dictionary<int, string> OldExportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportNebuloResource.ExportHeaderNameElotag },
{ 01, ImportExportNebuloResource.ExportHeaderNameTanuloCsaladneve },
{ 02, ImportExportNebuloResource.ExportHeaderNameTanuloUtoneve },
{ 03, ImportExportNebuloResource.ExportHeaderNameEdesanyjaSzuletesiCsaladneve },
{ 04, ImportExportNebuloResource.ExportHeaderNameEdesanyjaSzuletesiUtoneve },
{ 05, ImportExportNebuloResource.ExportHeaderNameSzuletesiHely },
{ 06, ImportExportNebuloResource.ExportHeaderNameSzuletesiIdo },
{ 07, ImportExportNebuloResource.ExportHeaderNameAllandoLakcimTelepules },
{ 08, ImportExportNebuloResource.ExportHeaderNameAllandoLakcimIranyitoszam },
{ 09, ImportExportNebuloResource.ExportHeaderNameAllandoLakcimKozteruletNev },
{ 10, ImportExportNebuloResource.ExportHeaderNameAllandoLakcimKozteruletJelleg },
{ 11, ImportExportNebuloResource.ExportHeaderNameAllandoLakcimHazszam },
{ 12, ImportExportNebuloResource.ExportHeaderNameAllandoLakcimEmelet },
{ 13, ImportExportNebuloResource.ExportHeaderNameAllandoLakcimAjto },
{ 14, ImportExportNebuloResource.ExportHeaderNameNeme },
{ 15, ImportExportNebuloResource.ExportHeaderNameNebuloOktatasiAzonositoSzama },
{ 16, ImportExportNebuloResource.ExportHeaderNameSzuletesiCsaladneve },
{ 17, ImportExportNebuloResource.ExportHeaderNameSzuletesiUtoneve },
{ 18, ImportExportNebuloResource.ExportHeaderNameSzuletesiOrszag },
{ 19, ImportExportNebuloResource.ExportHeaderNameAnyanyelv },
{ 20, ImportExportNebuloResource.ExportHeaderNameAllampolgarsag },
{ 21, ImportExportNebuloResource.ExportHeaderNameAllampolgarsag2 },
{ 22, ImportExportNebuloResource.ExportHeaderNameTartozkodasiHelyMegegyezikALakcimmel },
{ 23, ImportExportNebuloResource.ExportHeaderNameTHIRSZ },
{ 24, ImportExportNebuloResource.ExportHeaderNameTHHelysegNev },
{ 25, ImportExportNebuloResource.ExportHeaderNameTHKozteruletNev },
{ 26, ImportExportNebuloResource.ExportHeaderNameTHKozteruletJelleg },
{ 27, ImportExportNebuloResource.ExportHeaderNameTHSzam },
{ 28, ImportExportNebuloResource.ExportHeaderNameTHEmelet },
{ 29, ImportExportNebuloResource.ExportHeaderNameTHAjto },
{ 30, ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeNeve },
{ 31, ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojenekRokonsagiFoka },
{ 32, ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeEmailCime },
{ 33, ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeTelefonszama },
{ 34, ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviseloLakhelyMegegyezik },
{ 35, ImportExportNebuloResource.ExportHeaderNameTKIRSZ },
{ 36, ImportExportNebuloResource.ExportHeaderNameTKHelysegNev },
{ 37, ImportExportNebuloResource.ExportHeaderNameTKKozteruletNev },
{ 38, ImportExportNebuloResource.ExportHeaderNameTKKozteruletJelleg },
{ 39, ImportExportNebuloResource.ExportHeaderNameTKSzam },
{ 40, ImportExportNebuloResource.ExportHeaderNameTKEmelet },
{ 41, ImportExportNebuloResource.ExportHeaderNameTKAjto },
{ 42, ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeNeve2 },
{ 43, ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojenekRokonsagiFoka2 },
{ 44, ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeEmailCime2 },
{ 45, ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeTelefonszama2 },
{ 46, ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviseloLakhelyMegegyezik2 },
{ 47, ImportExportNebuloResource.ExportHeaderNameTKIRSZ2 },
{ 48, ImportExportNebuloResource.ExportHeaderNameTKHelysegNev2 },
{ 49, ImportExportNebuloResource.ExportHeaderNameTKKozteruletNev2 },
{ 50, ImportExportNebuloResource.ExportHeaderNameTKKozteruletJelleg2 },
{ 51, ImportExportNebuloResource.ExportHeaderNameTKSzam2 },
{ 52, ImportExportNebuloResource.ExportHeaderNameTKEmelet2 },
{ 53, ImportExportNebuloResource.ExportHeaderNameTKAjto2 },
{ 54, ImportExportNebuloResource.ExportHeaderNameOvodaAzonosito },
{ 55, ImportExportNebuloResource.ExportHeaderNameOvodaNeve },
{ 56, ImportExportNebuloResource.ExportHeaderNameEletvitelszeruOttLakasKorzetes },
{ 57, ImportExportNebuloResource.ExportHeaderNameSzakertoiBizottsagKormanyhivatalAltalKijelolttanulo },
{ 58, ImportExportNebuloResource.ExportHeaderNameSzulojeTestvereTartosanBetegVagyFogyatekkalElo },
{ 59, ImportExportNebuloResource.ExportHeaderNameTestvereAzIntezmenyTanuloja },
{ 60, ImportExportNebuloResource.ExportHeaderNameSzulojenekMunkahelyeAzIskolaKorzetebenTalalhato },
{ 61, ImportExportNebuloResource.ExportHeaderNameAzIskolaALakohelyetolEgyKilometerenBelulTalalhato },
{ 62, ImportExportNebuloResource.ExportHeaderNameSajatosNevelesiIgenyu },
{ 63, ImportExportNebuloResource.ExportHeaderNameSNILetszamSuly },
{ 64, ImportExportNebuloResource.ExportHeaderNameBeilleszkedesiTanulasiMagatartasiProblemak },
{ 65, ImportExportNebuloResource.ExportHeaderNameBTMLetszamSuly },
{ 66, ImportExportNebuloResource.ExportHeaderNameFeladatellatasiHely },
{ 67, ImportExportNebuloResource.ExportHeaderNameTagozat },
{ 68, ImportExportNebuloResource.ExportHeaderNameKirSzolgaltatas },
{ 69, ImportExportNebuloResource.ExportHeaderNameEtikaVagyHitEsErkolcstan },
{ 70, ImportExportNebuloResource.ExportHeaderNameEgyhaziJogiSzemelyekHitEsErkolcstanOktatasai },
{ 71, ImportExportNebuloResource.ExportHeaderNameMegjegyzes },
{ 72, ImportExportNebuloResource.ExportHeaderNameFelvetelStatusza },
{ 73, ImportExportNebuloResource.ExportHeaderNameOsszevontOsztalybaKerult },
{ 74, ImportExportNebuloResource.ExportHeaderNameIndoklas }
};
public NebuloImportCo ImportCo
{
get => (NebuloImportCo)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 NebuloImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(NebuloImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, int importMuvelet)
{
NebuloImportCo importCo = GetImportCoFromImportData(importData);
importCo.ImportMuvelet = importMuvelet;
SetNemImportalhatoSorokByValidation(importCo);
SetOperationAndNemImportalhatoSorokByOperation(importCo);
var mainImportJsonItemList = new List<NebuloImportJsonItemCo>(importCo.MainImportItemList.Select(x => new NebuloImportJsonItemCo(x, TanevId, IntezmenyId, FelhasznaloId)));
importCo.MainImportJsonItemList = mainImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(NebuloImportCo importCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate();
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (NebuloImportItemCo 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 void SetOperationAndNemImportalhatoSorokByOperation(NebuloImportCo importCo)
{
int importMuvelet = importCo.ImportMuvelet;
//NOTE: Azért van szükség Dictionary-re, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary = GetCompareHashImportItemCompareCoDictionary(importCo.NebuloCoList);
foreach (NebuloImportItemCo importItem in importCo.MainImportItemList)
{
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 az import művelet DeleteAndInsert és a db-ből jövő adat Importalt(a nem importáltakat egyelőre nem töröljük), akkor Insert, mert töröljük a korábbi elemeket és újra be kell szúrni!
if (importMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && importItemCompareCo.Importalt)
{
importItem.Operation = (int)ImportItemOperationEnum.Insert;
}
//NOTE: ...ha nincs törlés, akkor...
else
{
//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 vagy DeleteAndInsert műveletnél. A DeleteAndInsert csak akkor fut be ide, ha az elem nem importált.)!
else
{
importItem.ErrorList.Add(ImportExportCommonResource.NemImportalhatoMertMarSzerepelAzAdatbazisban);
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 NebuloImportCo GetImportCoFromImportData(List<List<string>> importData)
{
var importCo = new NebuloImportCo
{
NebuloCoList = new NebuloHelper(ConnectionType).GetNebuloList()
};
DataSet feladatellatasiHelyDataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.FeladatEllatasiHelyDal().GetFeladatEllatasiHelyekForkDropDown(TanevId));
int? feladatellatasiHelyId = feladatellatasiHelyDataSet.Tables[0].Rows.Count > 1 ? (int?)null : SDAConvert.ToInt32(feladatellatasiHelyDataSet.Tables[0].Rows[0]["ID"]);
int lineNumber = 1;
foreach (List<string> importDataRow in importData.Skip(1))
{
var importItemCo = new NebuloImportItemCo(TanevId)
{
LineNumber = lineNumber,
FenntartoAzonositoImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameFenntartoAzonosito)],
FenntartoMegnevezeseImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameFenntartoMegnevezese)],
ErvenyesKotelezettsegTipusaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegTipusa)],
OktatasiAzonositoSzamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameOktatasiAzonositoSzam)],
ViseltElonevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameViseltElonev)],
ViseltVezeteknevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameViseltVezeteknev)],
ViseltKeresztnevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameViseltKeresztnev)],
ViseltNevNevsorrendImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameViseltNevNevsorrend)],
SzuletesiElonevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiElonev)],
SzuletesiVezeteknevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiVezeteknev)],
SzuletesiKeresztnevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiKeresztnev)],
SzuletesiNevNevsorrendImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiNevNevsorrend)],
AnyjaNeveElonevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveElonev)],
AnyjaNeveVezeteknevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveVezeteknev)],
AnyjaNeveKeresztnevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveKeresztnev)],
AnyjaNeveNevsorrendImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveNevsorrend)],
SzuletesiIdoImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiIdo)],
SzuletesiTelepulesImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiTelepules)],
TartozkodasiCimOrszagImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimOrszag)],
TartozkodasiCimTelepulesImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimTelepules)],
TartozkodasiCimIranyitoszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimIranyitoszam)],
TartozkodasiCimKozteruletNevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimKozteruletNev)],
TartozkodasiCimKozteruletJellegImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimKozteruletJelleg)],
TartozkodasiCimHazszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimHazszam)],
TartozkodasiCimPontositasImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimPontositas)],
AllandoLakcimOrszagImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimOrszag)],
AllandoLakcimTelepulesImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimTelepules)],
AllandoLakcimIranyitoszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimIranyitoszam)],
AllandoLakcimKozteruletNevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimKozteruletNev)],
AllandoLakcimKozteruletJellegImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimKozteruletJelleg)],
AllandoLakcimHazszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimHazszam)],
AllandoLakcimPontositasImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimPontositas)],
ErvenyesKotelezettsegKezdeteImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegKezdete)],
ErvenyesKotelezettsegVegeImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegVege)],
HalasztasJogcimeImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameHalasztasJogcime)],
HalasztastEngedelyezoSzervTipusaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameHalasztastEngedelyezoSzervTipusa)],
HalasztastEngedelyezoSzervMegnevezeseImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameHalasztastEngedelyezoSzervMegnevezese)],
HalasztasHatalyaVegdatumaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameHalasztasHatalyaVegdatuma)],
KotelezettseghezKapcsolodoAktivVagySzuneteloJogviszonyaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoAktivVagySzuneteloJogviszonya)],
KotelezettseghezKapcsolodoJogviszonyTipusaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyTipusa)],
KotelezettseghezKapcsolodoJogviszonyStatuszaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyStatusza)],
KotelezettseghezKapcsolodoJogviszonyIntezmenyOmAzonositojaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyIntezmenyOmAzonositoja)],
KotelezettseghezKapcsolodoJogviszonyIntezmenyNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyIntezmenyNeve)],
KotelezettseghezKapcsolodoJogviszonyUgyviteliHelySorszamaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelySorszama)],
KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyAzonositojaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyAzonositoja)],
KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyNeve)],
KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyCimeImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyCime)],
KotelezettseghezKapcsolodoJogviszonyKezdeteImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyKezdete)],
KotelezettseghezKapcsolodoJogviszonySzunetelesenekKezdeteImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesenekKezdete)],
KotelezettseghezKapcsolodoJogviszonySzunetelesenekVarhatoVegeImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesenekVarhatoVege)],
KotelezettseghezKapcsolodoJogviszonySzunetelesJogcimeImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesJogcime)],
KotelezettsegetAzIlletekesFenntartohozTartozoIntezmenybenTeljesitiImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettsegetAzIlletekesFenntartohozTartozoIntezmenybenTeljesiti)],
AzUtolsoKotelezettsegetTeljesitoJogviszonyVegdatumaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAzUtolsoKotelezettsegetTeljesitoJogviszonyVegdatuma)],
FeladatellatasiHelyId = feladatellatasiHelyId
};
var nebulo = importCo.NebuloCoList.FirstOrDefault(x =>
$"{x.SzuletesiVezeteknevComparableString} {x.SzuletesiKeresztnevComparableString}" == $"{importItemCo.SzuletesiVezeteknev?.ToComparableString()} {importItemCo.SzuletesiKeresztnev?.ToComparableString()}" &&
$"{x.AnyjaVezetekneveComparableString} {x.AnyjaKeresztneveComparableString}" == $"{importItemCo.AnyjaVezeteknev?.ToComparableString()} { importItemCo.AnyjaKeresztnev?.ToComparableString()}" &&
x.SzuletesiHelyComparableString == importItemCo.SzuletesiHely?.ToComparableString() &&
x.SzuletesiIdo == importItemCo.SzuletesiIdo);
if (nebulo?.FelvetelStatuszaId == null)
{
importItemCo.FelvetelStatuszaId = (int)FelvetelStatuszaTipusEnum.NemJelentMeg;
}
else
{
importItemCo.FelvetelStatuszaId = nebulo.FelvetelStatuszaId.Value;
}
string md5HashInput =
$"{importItemCo.SzuletesiVezeteknev?.ToComparableString()} {importItemCo.SzuletesiKeresztnev?.ToComparableString()}" +
$"{importItemCo.AnyjaVezeteknev?.ToComparableString()} {importItemCo.AnyjaKeresztnev?.ToComparableString()}" +
importItemCo.SzuletesiHely?.ToComparableString() +
importItemCo.SzuletesiIdoString?.ToComparableString();
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
public MemoryStream GetExport(NebuloSearchCo searchCo = null)
{
var dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary();
List<NebuloCo> coList = new NebuloHelper(ConnectionType).GetNebuloListForExport(searchCo);
using (var workbook = new Workbook())
{
var worksheet = ImportExportHelper.GetWorksheetsWithDropDownFormula(workbook, ImportExportNebuloResource.ImportDefaultSheetName, OldExportHeaderList, dropDownColumnSourceDictionary);
int rowNumber = 1;
foreach (NebuloCo co in coList.OrderBy(x => x.Vezeteknev).ThenBy(x => x.Keresztnev).ToList())
{
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameElotag)].Value = co.Elotag ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTanuloCsaladneve)].Value = co.Vezeteknev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTanuloUtoneve)].Value = co.Keresztnev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameEdesanyjaSzuletesiCsaladneve)].Value = co.AnyjaVezetekneve ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameEdesanyjaSzuletesiUtoneve)].Value = co.AnyjaKeresztneve ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameSzuletesiHely)].Value = co.SzuletesiHely ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameSzuletesiIdo)].Value = co.SzuletesiIdo?.ToString(Constants.ToStringPattern.HungarianDate) ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameAllandoLakcimTelepules)].Value = co.Helyseg ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameAllandoLakcimIranyitoszam)].Value = co.Iranyitoszam ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameAllandoLakcimKozteruletNev)].Value = co.KozteruletNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameAllandoLakcimKozteruletJelleg)].Value = co.KozteruletJellegNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameAllandoLakcimHazszam)].Value = co.Hazszam ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameAllandoLakcimEmelet)].Value = co.Emelet ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameAllandoLakcimAjto)].Value = co.Ajto ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameNeme)].Value = co.NemeNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameNebuloOktatasiAzonositoSzama)].Value = co.OktatasiAzonositoSzama ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameSzuletesiCsaladneve)].Value = co.SzuletesiVezeteknev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameSzuletesiUtoneve)].Value = co.SzuletesiKeresztnev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameSzuletesiOrszag)].Value = co.SzuletesiOrszagNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameAnyanyelv)].Value = co.AnyanyelvNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameAllampolgarsag)].Value = co.AllampolgarsagNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameAllampolgarsag2)].Value = co.Allampolgarsag2Nev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTartozkodasiHelyMegegyezikALakcimmel)].Value = co.THCimeAzonos.GetDisplayName();
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTHIRSZ)].Value = co.THIranyitoszam ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTHHelysegNev)].Value = co.THHelyseg ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTHKozteruletNev)].Value = co.THKozteruletNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTHKozteruletJelleg)].Value = co.THKozteruletJellegNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTHSzam)].Value = co.THHazszam ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTHEmelet)].Value = co.THEmelet ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTHAjto)].Value = co.THAjto ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeNeve)].Value = co.TKNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojenekRokonsagiFoka)].Value = co.TKRokonsagiFokNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeEmailCime)].Value = co.TKEmail ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeTelefonszama)].Value = co.TKTelefon ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviseloLakhelyMegegyezik)].Value = co.TKCimeAzonos.GetDisplayName();
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKIRSZ)].Value = co.TKIranyitoszam ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKHelysegNev)].Value = co.TKHelyseg ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKKozteruletNev)].Value = co.TKKozteruletNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKKozteruletJelleg)].Value = co.TKKozteruletJellegNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKSzam)].Value = co.TKHazszam ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKEmelet)].Value = co.TKEmelet ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKAjto)].Value = co.TKAjto ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeNeve2)].Value = co.TKNev2 ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojenekRokonsagiFoka2)].Value = co.TKRokonsagiFok2Nev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeEmailCime2)].Value = co.TKEmail2 ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviselojeTelefonszama2)].Value = co.TKTelefon2 ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTorvenyesKepviseloLakhelyMegegyezik2)].Value = co.TKCimeAzonos2.GetDisplayName();
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKIRSZ2)].Value = co.TKIranyitoszam2 ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKHelysegNev2)].Value = co.TKHelyseg2 ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKKozteruletNev2)].Value = co.TKKozteruletNev2 ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKKozteruletJelleg2)].Value = co.TKKozteruletJelleg2Nev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKSzam2)].Value = co.TKHazszam2 ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKEmelet2)].Value = co.TKEmelet2 ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTKAjto2)].Value = co.TKAjto2 ?? string.Empty;
//worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameOvodaAzonosito)].Value = co.OvodaAzonosito ?? string.Empty;
//worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameOvodaNeve)].Value = co.OvodaNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameEletvitelszeruOttLakasKorzetes)].Value = co.EletvitelszeruOttLakasKorzetes.GetDisplayName();
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameSzakertoiBizottsagKormanyhivatalAltalKijelolttanulo)].Value = co.SzakertoiBizottsagKormanyhivatalAltalKijelolttanulo.GetDisplayName();
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameSzulojeTestvereTartosanBetegVagyFogyatekkalElo)].Value = co.SzulojeTestvereTartosanBetegVagyFogyatekkalElo.GetDisplayName();
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTestvereAzIntezmenyTanuloja)].Value = co.TestvereAzIntezmenyTanuloja.GetDisplayName();
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameSzulojenekMunkahelyeAzIskolaKorzetebenTalalhato)].Value = co.SzulojenekMunkahelyeAzIskolaKorzetebenTalalhato.GetDisplayName();
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameAzIskolaALakohelyetolEgyKilometerenBelulTalalhato)].Value = co.AzIskolaALakohelyetolEgyKilometerenBelulTalalhato.GetDisplayName();
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameSajatosNevelesiIgenyu)].Value = co.SNI?.GetDisplayName() ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameSNILetszamSuly)].Value = co.SNILetszamSuly?.ToString() ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameBeilleszkedesiTanulasiMagatartasiProblemak)].Value = co.BTM?.GetDisplayName() ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameBTMLetszamSuly)].Value = co.BTMLetszamSuly?.ToString() ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameFeladatellatasiHely)].Value = co.FeladatellatasiHelyNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameTagozat)].Value = co.TagozatNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameKirSzolgaltatas)].Value = co.KirSzolgaltatasTipusNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameEtikaVagyHitEsErkolcstan)].Value = co.EtikaHitErkolcstanNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameEgyhaziJogiSzemelyekHitEsErkolcstanOktatasai)].Value = co.FelekezetNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameMegjegyzes)].Value = co.Megjegyzes ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameFelvetelStatusza)].Value = co.FelvetelStatuszaNev ?? string.Empty;
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameOsszevontOsztalybaKerult)].Value = co.IsOsszevontOsztaly.GetDisplayName();
worksheet.Cells[rowNumber, OldExportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ExportHeaderNameIndoklas)].Value = co.Indoklas ?? string.Empty;
rowNumber++;
}
MemoryStream memoryStream = SimpleExportLogic.GetWorkbookMemoryStream(workbook);
return memoryStream;
}
}
public MemoryStream GetNemImportalhatoSorokExport()
{
var dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary();
using (var workbook = new Workbook())
{
var worksheet = ImportExportHelper.GetWorksheetsWithDropDownFormula(workbook, ImportExportNebuloResource.ImportDefaultSheetName, ImportHeaderList, dropDownColumnSourceDictionary);
int rowNumber = 1;
foreach (NebuloImportItemCo co in ImportCo.NemImportalhatoItemList.OrderBy(x => x.Vezeteknev).ThenBy(x => x.Keresztnev).ToList())
{
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameFenntartoAzonosito)].Value = co.FenntartoAzonositoImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameFenntartoMegnevezese)].Value = co.FenntartoMegnevezeseImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegTipusa)].Value = co.ErvenyesKotelezettsegTipusaImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameOktatasiAzonositoSzam)].Value = co.OktatasiAzonositoSzamImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameViseltElonev)].Value = co.ViseltElonevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameViseltVezeteknev)].Value = co.ViseltVezeteknevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameViseltKeresztnev)].Value = co.ViseltKeresztnevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameViseltNevNevsorrend)].Value = co.ViseltNevNevsorrendImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiElonev)].Value = co.SzuletesiElonevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiVezeteknev)].Value = co.SzuletesiVezeteknevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiKeresztnev)].Value = co.SzuletesiKeresztnevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiNevNevsorrend)].Value = co.SzuletesiNevNevsorrendImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveElonev)].Value = co.AnyjaNeveElonevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveVezeteknev)].Value = co.AnyjaNeveVezeteknevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveKeresztnev)].Value = co.AnyjaNeveKeresztnevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAnyjaNeveNevsorrend)].Value = co.AnyjaNeveNevsorrendImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiIdo)].Value = co.SzuletesiIdoImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameSzuletesiTelepules)].Value = co.SzuletesiTelepulesImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimOrszag)].Value = co.TartozkodasiCimOrszagImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimTelepules)].Value = co.TartozkodasiCimTelepulesImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimIranyitoszam)].Value = co.TartozkodasiCimIranyitoszamImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimKozteruletNev)].Value = co.TartozkodasiCimKozteruletNevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimKozteruletJelleg)].Value = co.TartozkodasiCimKozteruletJellegImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimHazszam)].Value = co.TartozkodasiCimHazszamImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameTartozkodasiCimPontositas)].Value = co.TartozkodasiCimPontositasImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimOrszag)].Value = co.AllandoLakcimOrszagImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimTelepules)].Value = co.AllandoLakcimTelepulesImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimIranyitoszam)].Value = co.AllandoLakcimIranyitoszamImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimKozteruletNev)].Value = co.AllandoLakcimKozteruletNevImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimKozteruletJelleg)].Value = co.AllandoLakcimKozteruletJellegImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimHazszam)].Value = co.AllandoLakcimHazszamImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAllandoLakcimPontositas)].Value = co.AllandoLakcimPontositasImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegKezdete)].Value = co.ErvenyesKotelezettsegKezdeteImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameErvenyesKotelezettsegVege)].Value = co.ErvenyesKotelezettsegVegeImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameHalasztasJogcime)].Value = co.HalasztasJogcimeImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameHalasztastEngedelyezoSzervTipusa)].Value = co.HalasztastEngedelyezoSzervTipusaImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameHalasztastEngedelyezoSzervMegnevezese)].Value = co.HalasztastEngedelyezoSzervMegnevezeseImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameHalasztasHatalyaVegdatuma)].Value = co.HalasztasHatalyaVegdatumaImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoAktivVagySzuneteloJogviszonya)].Value = co.KotelezettseghezKapcsolodoAktivVagySzuneteloJogviszonyaImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyTipusa)].Value = co.KotelezettseghezKapcsolodoJogviszonyTipusaImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyStatusza)].Value = co.KotelezettseghezKapcsolodoJogviszonyStatuszaImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyIntezmenyOmAzonositoja)].Value = co.KotelezettseghezKapcsolodoJogviszonyIntezmenyOmAzonositojaImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyIntezmenyNeve)].Value = co.KotelezettseghezKapcsolodoJogviszonyIntezmenyNeveImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelySorszama)].Value = co.KotelezettseghezKapcsolodoJogviszonyUgyviteliHelySorszamaImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyAzonositoja)].Value = co.KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyAzonositojaImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyNeve)].Value = co.KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyNeveImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyUgyviteliHelyCime)].Value = co.KotelezettseghezKapcsolodoJogviszonyUgyviteliHelyCimeImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonyKezdete)].Value = co.KotelezettseghezKapcsolodoJogviszonyKezdeteImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesenekKezdete)].Value = co.KotelezettseghezKapcsolodoJogviszonySzunetelesenekKezdeteImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesenekVarhatoVege)].Value = co.KotelezettseghezKapcsolodoJogviszonySzunetelesenekVarhatoVegeImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettseghezKapcsolodoJogviszonySzunetelesJogcime)].Value = co.KotelezettseghezKapcsolodoJogviszonySzunetelesJogcimeImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameKotelezettsegetAzIlletekesFenntartohozTartozoIntezmenybenTeljesiti)].Value = co.KotelezettsegetAzIlletekesFenntartohozTartozoIntezmenybenTeljesitiImportData;
worksheet.Cells[rowNumber, ImportHeaderList.GetKeyByUniqueValue(ImportExportNebuloResource.ImportHeaderNameAzUtolsoKotelezettsegetTeljesitoJogviszonyVegdatuma)].Value = co.AzUtolsoKotelezettsegetTeljesitoJogviszonyVegdatumaImportData;
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;
}
}
private Dictionary<string, ImportItemCompareCo> GetCompareHashImportItemCompareCoDictionary(List<NebuloCo> coList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (NebuloCo co in coList)
{
string md5HashInput =
$"{co.SzuletesiVezeteknevComparableString} {co.SzuletesiKeresztnevComparableString}" +
$"{co.AnyjaVezetekneveComparableString} {co.AnyjaKeresztneveComparableString}" +
co.SzuletesiHelyComparableString +
co.SzuletesiIdoComparableString;
string compareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = co.Id.Value,
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, IList<string>> GetDefaultDropDownColumnSourceDictionary()
{
//NOTE: Create dropdown lists
var logicalColumnDictionary = new Dictionary<string, IList<string>>();
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>(logicalColumnDictionary);
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,801 @@
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.Helpers.SystemSettings;
using Kreta.BusinessLogic.Logic;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Enums.ManualEnums.SystemSettings;
using Kreta.Resources;
using Newtonsoft.Json;
using Cache = Kreta.Core.Cache;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class OrarendImportExportHelper : BaseTantargyfelosztasImportExportHelper
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList =>
new Dictionary<int, string>
{
{ 00, ImportExportOrarendResource.ImportHeaderNameHetirend },
{ 01, ImportExportOrarendResource.ImportHeaderNameNap },
{ 02, ImportExportOrarendResource.ImportHeaderNameOra },
{ 03, ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly },
{ 04, ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport },
{ 05, ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy },
{ 06, ImportExportTantargyfelosztasResource.ImportHeaderNameTanar },
{ 07, ImportExportOrarendResource.ImportHeaderNameHelyiseg }
};
public static Dictionary<int, string> ImportHeaderListNapirend =>
new Dictionary<int, string>
{
{ 00, ImportExportOrarendResource.ImportHeaderNameHetirend },
{ 01, ImportExportOrarendResource.ImportHeaderNameNap },
{ 02, ImportExportOrarendResource.ImportHeaderNameFoglalkozasKezdete },
{ 03, ImportExportOrarendResource.ImportHeaderNameFoglalkozasVege },
{ 04, ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly },
{ 05, ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport },
{ 06, ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy },
{ 07, ImportExportTantargyfelosztasResource.ImportHeaderNameTanar },
{ 08, ImportExportOrarendResource.ImportHeaderNameHelyiseg }
};
public static Dictionary<int, string> ImportHeaderListOraErvenyessegiIdovel =>
new Dictionary<int, string>
{
{ 00, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete },
{ 01, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegVege },
{ 02, ImportExportOrarendResource.ImportHeaderNameHetirend },
{ 03, ImportExportOrarendResource.ImportHeaderNameNap },
{ 04, ImportExportOrarendResource.ImportHeaderNameOra },
{ 05, ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly },
{ 06, ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport },
{ 07, ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy },
{ 08, ImportExportTantargyfelosztasResource.ImportHeaderNameTanar },
{ 09, ImportExportOrarendResource.ImportHeaderNameHelyiseg }
};
public static Dictionary<int, string> ImportHeaderListNapirendOraErvenyessegiIdovel =>
new Dictionary<int, string>
{
{ 00, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete },
{ 01, ImportExportOrarendResource.ImportHeaderNameOraErvenyessegVege },
{ 02, ImportExportOrarendResource.ImportHeaderNameHetirend },
{ 03, ImportExportOrarendResource.ImportHeaderNameNap },
{ 04, ImportExportOrarendResource.ImportHeaderNameFoglalkozasKezdete },
{ 05, ImportExportOrarendResource.ImportHeaderNameFoglalkozasVege },
{ 06, ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly },
{ 07, ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport },
{ 08, ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy },
{ 09, ImportExportTantargyfelosztasResource.ImportHeaderNameTanar },
{ 10, ImportExportOrarendResource.ImportHeaderNameHelyiseg }
};
public OrarendImportCo ImportCo
{
get => (OrarendImportCo)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 OrarendImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(OrarendImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(OrarendImportFileUploadCo orarendImportFileUploadCo, bool isAktivTanev)
{
OrarendImportCo importCo = GetImportCoFromImportData(orarendImportFileUploadCo, isAktivTanev);
importCo.OrarendImportMuvelet = orarendImportFileUploadCo.OrarendImportMuvelet;
importCo.FeladatellatasiHelyId = orarendImportFileUploadCo.FeladatellatasiHelyId;
importCo.MukodesiHelyId = new FeladatEllatasiHelyHelper(ConnectionType).GetMukodesiHelyIdByFeladatellatasiHelyId(orarendImportFileUploadCo.FeladatellatasiHelyId);
SetNemImportalhatoSorokByValidation(importCo, isAktivTanev);
//NOTE: Azért van szükség Dictionary-kre, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> tantargyCompareHashImportItemCompareCoDictionary = GetTantargyCompareHashImportItemCompareCoDictionary();
Dictionary<string, ImportItemCompareCo> osztalyCompareHashImportItemCompareCoDictionary = GetOsztalyCompareHashImportItemCompareCoDictionary();
Dictionary<string, ImportItemCompareCo> csoportCompareHashImportItemCompareCoDictionary = GetCsoportCompareHashImportItemCompareCoDictionary();
Dictionary<string, ImportItemCompareCo> tantargyfelosztasCompareHashImportItemCompareCoDictionary = null;
if (orarendImportFileUploadCo.IsTtfImport)
{
tantargyfelosztasCompareHashImportItemCompareCoDictionary = GetTantargyfelosztasCompareHashImportItemCompareCoDictionary(importCo.GetBaseImportItemCoList());
}
Dictionary<string, ImportItemCompareCo> teremCompareHashImportItemCompareCoDictionary = GetTeremCompareHashImportItemCompareCoDictionary();
foreach (OrarendImportItemCo importItem in importCo.MainImportItemList)
{
SetOperationTantargy(importItem, tantargyCompareHashImportItemCompareCoDictionary);
SetOperationOsztaly(importItem, osztalyCompareHashImportItemCompareCoDictionary);
SetOperationCsoport(importItem, csoportCompareHashImportItemCompareCoDictionary);
if (orarendImportFileUploadCo.IsTtfImport)
{
SetOperationTantargyfelosztas(importItem, tantargyfelosztasCompareHashImportItemCompareCoDictionary, orarendImportFileUploadCo.OrarendImportMuvelet, importCo.OrarendiElemekRogzitesenekElofeltetele);
}
SetOperationTerem(importItem, teremCompareHashImportItemCompareCoDictionary);
SetOperationOrarend(importItem);
}
//NOTE: Azokat a sorokat, amelyek bekerültek a NemImportalhatoItemList-be, azokat kiveszzük a MainImportItemList-ből!
importCo.MainImportItemList.RemoveRange(importCo.NemImportalhatoItemList);
List<string> vegzosOsztalyCsoportNevComperableList =
new OsztalyCsoportHelper(ConnectionType)
.GetOsztalyCsoportCoList()
.Where(x => x.IsVegzosEvfolyam)
.Select(x => x.NevComparableString)
.ToList();
int feladatKategoriaId = new FeladatEllatasiHelyHelper(ConnectionType).GetFeladatKategoriaId(orarendImportFileUploadCo.FeladatellatasiHelyId);
var tantargyImportJsonItemList = new List<TantargyImportJsonItemCo>();
var osztalyCsoportImportJsonItemList = new List<OsztalyCsoportImportJsonItemCo>();
var osztalyImportJsonItemList = new List<OsztalyImportJsonItemCo>();
var csoportImportJsonItemList = new List<CsoportImportJsonItemCo>();
var tantargyfelosztasImportJsonItemList = new List<TantargyfelosztasImportJsonItemCo>();
var teremImportJsonItemList = new List<TeremImportJsonItemCo>();
var mainImportJsonItemList = new List<OrarendImportJsonItemCo>();
var csoportTipusOraPercDict = new AdatszotarHelper(ConnectionType).GetCsoportTipusList().ToDictionary(x => x.Id, x => x.OraPerc);
foreach (OrarendImportItemCo importItem in importCo.MainImportItemList)
{
if (tantargyImportJsonItemList.All(x => x.Nev.ToComparableString() != importItem.TantargyNev.ToComparableString()) &&
importItem.OperationTantargy == (int)ImportItemOperationEnum.Insert)
{
tantargyImportJsonItemList.Add(new TantargyImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
}
var osztalyNevToCompare = importItem.OsztalyNev?.ToComparableString();
if (!string.IsNullOrWhiteSpace(osztalyNevToCompare) &&
!osztalyImportJsonItemList.Select(x => x.OsztalyCsoportNev.ToComparableString()).Contains(osztalyNevToCompare) &&
importItem.OperationOsztaly == (int)ImportItemOperationEnum.Insert)
{
osztalyImportJsonItemList.Add(new OsztalyImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
osztalyCsoportImportJsonItemList.Add(new OsztalyCsoportImportJsonItemCo(importItem, importItem.OperationOsztaly, importItem.OsztalyNev, importCo.FeladatellatasiHelyId, feladatKategoriaId, TanevId, IntezmenyId, FelhasznaloId));
}
var csoportNevToCompare = importItem.CsoportNev?.ToComparableString();
if (!string.IsNullOrWhiteSpace(csoportNevToCompare) &&
!csoportImportJsonItemList.Select(x => x.OsztalyCsoportNev.ToComparableString()).Contains(csoportNevToCompare) &&
importItem.OperationCsoport == (int)ImportItemOperationEnum.Insert)
{
csoportImportJsonItemList.Add(new CsoportImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
osztalyCsoportImportJsonItemList.Add(new OsztalyCsoportImportJsonItemCo(importItem, importItem.OperationCsoport, importItem.CsoportNev, importCo.FeladatellatasiHelyId, feladatKategoriaId, TanevId, IntezmenyId, FelhasznaloId));
}
if (orarendImportFileUploadCo.IsTtfImport)
{
if (tantargyfelosztasImportJsonItemList.All(x => x.CompareHash != importItem.CompareHashTantargyfelosztas) &&
(importItem.OperationTantargyfelosztas == (int)ImportItemOperationEnum.Insert
|| (importItem.OperationTantargyfelosztas == (int)ImportItemOperationEnum.Update && importCo.OrarendiElemekRogzitesenekElofeltetele == SystemSettingsOrarendiElemekRogzitesenekElofelteteleEnum.NemNullasTTF)
))
{
List<OrarendImportItemCo> ttfhezTartozoOrarendImportItemCoList = importCo.MainImportItemList.Where(x => x.CompareHashTantargyfelosztas == importItem.CompareHashTantargyfelosztas).ToList();
double oraszam = GetOraszam(importItem, ttfhezTartozoOrarendImportItemCoList, csoportTipusOraPercDict);
tantargyfelosztasImportJsonItemList.Add(
new TantargyfelosztasImportJsonItemCo(
importItem,
importItem.CompareHashTantargyfelosztas,
oraszam,
0,
false,
false,
0, TanevId, IntezmenyId, FelhasznaloId
)
{
Operation = importItem.OperationTantargyfelosztas,
}
);
}
}
if (teremImportJsonItemList.All(x => x.Nev.ToComparableString() != importItem.TeremNev.ToComparableString()) &&
importItem.OperationTerem == (int)ImportItemOperationEnum.Insert)
{
teremImportJsonItemList.Add(new TeremImportJsonItemCo(importItem, importCo.MukodesiHelyId, TanevId, IntezmenyId, FelhasznaloId));
}
bool isVegzos = !string.IsNullOrWhiteSpace(osztalyNevToCompare) && vegzosOsztalyCsoportNevComperableList.Contains(osztalyNevToCompare) ||
!string.IsNullOrWhiteSpace(csoportNevToCompare) && vegzosOsztalyCsoportNevComperableList.Contains(csoportNevToCompare);
mainImportJsonItemList.Add(new OrarendImportJsonItemCo(importItem, orarendImportFileUploadCo, isVegzos, ConnectionType));
}
importCo.TantargyImportJsonItemList = tantargyImportJsonItemList;
importCo.OsztalyCsoportImportJsonItemList = osztalyCsoportImportJsonItemList;
importCo.OsztalyImportJsonItemList = osztalyImportJsonItemList;
importCo.CsoportImportJsonItemList = csoportImportJsonItemList;
importCo.TantargyfelosztasImportJsonItemList = tantargyfelosztasImportJsonItemList;
importCo.TeremImportJsonItemList = teremImportJsonItemList;
importCo.MainImportJsonItemList = mainImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(OrarendImportCo importCo, bool isAktivTanev)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate(isAktivTanev);
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (OrarendImportItemCo 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 SetOperationTantargyfelosztas(OrarendImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, int orarendImportMuvelet, SystemSettingsOrarendiElemekRogzitesenekElofelteteleEnum orarendiElemekRogzitesenekElofeltetele)
{
var compareHash = importItem.CompareHashTantargyfelosztas;
//NOTE: Ha nem találtunk egyezést, akkor mindeképpen Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationTantargyfelosztas = (int)ImportItemOperationEnum.Insert;
}
//NOTE: Ha találtunk egyezést, akkor...
else
{
var importItemCompareCo = compareHashImportItemCompareCoDictionary[compareHash];
//NOTE: ...ha az import művelet DeleteAndInsert és a db-ből jövő adat Importalt(a nem importáltakat egyelőre nem töröljük), akkor Insert, mert töröljük a korábbi elemeket és újra be kell szúrni!
if (orarendImportMuvelet == (int)OrarendImportMuveletEnum.DeleteAndInsert && importItemCompareCo.Importalt)
{
importItem.OperationTantargyfelosztas = (int)ImportItemOperationEnum.Insert;
}
if ((orarendImportMuvelet == (int)OrarendImportMuveletEnum.UpdateAndInsert
|| orarendImportMuvelet == (int)OrarendImportMuveletEnum.Insert)
&& orarendiElemekRogzitesenekElofeltetele == SystemSettingsOrarendiElemekRogzitesenekElofelteteleEnum.NemNullasTTF)
{
importItem.OperationTantargyfelosztas = (int)ImportItemOperationEnum.Update;
importItem.Id = importItemCompareCo.Id;
}
}
}
private static void SetOperationTerem(OrarendImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary)
{
var compareHashTerem = importItem.CompareHashTerem;
if (!string.IsNullOrWhiteSpace(compareHashTerem))
{
//NOTE: Ha nem találtunk egyezést, akkor Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHashTerem))
{
importItem.OperationTerem = (int)ImportItemOperationEnum.Insert;
}
}
}
private static void SetOperationOrarend(OrarendImportItemCo importItem)
{
//NOTE: Minden esetben Insert!
importItem.Operation = (int)ImportItemOperationEnum.Insert;
}
private Dictionary<string, ImportItemCompareCo> GetTeremCompareHashImportItemCompareCoDictionary()
{
List<TeremItemCo> coList = new TeremHelper(ConnectionType).GetTeremCoList();
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (TeremItemCo co in coList)
{
string md5HashInput = co.NevComparableString;
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;
}
public OrarendImportCo GetImportCoFromImportData(OrarendImportFileUploadCo orarendImportFileUploadCo, bool isAktivTanev)
{
List<AlkalmazottItemCo> tanarCoList = null;
List<OsztalyItemCo> osztalyCoList = null;
List<CsoportItemCo> csoportCoList = null;
List<TeremItemCo> teremCoList = null;
List<TanevrendOsztalyokkalNaptipusTulajdonsagokkalCO> tanevRendjeNaptipusTulajdonsagokkalCOs = null;
List<string> tantargyNincsBeloleOra = null;
List<TantargyfelosztasItemCo> tantargyfelosztasCoList = null;
SystemSettingsOrarendiElemekRogzitesenekElofelteteleEnum orarendiElemekRogzitesenekElofeltetele = SystemSettingsOrarendiElemekRogzitesenekElofelteteleEnum.NincsTTF;
DataSet hetirendTipusDataSet = null;
int foglalkozasokRogziteseHetvegereId = 0;
int csengetesiRendId = 0;
List<CsengetesiRendOraCO> csengetesiRendOraCoList = null;
bool isOravegeBeallitasOrahosszAlapjan = false;
Dictionary<int, int?> csoportTipusOraPercDict = null;
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
tanarCoList = new AlkalmazottHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetAlkalmazottCoList();
osztalyCoList = new OsztalyHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetOsztalyCoList();
csoportCoList = new CsoportHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetCsoportCoList();
teremCoList = new TeremHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetTeremCoList();
tanevRendjeNaptipusTulajdonsagokkalCOs = new TanevrendHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetTanevRendjeNaptipusTulajdonsagokkal();
hetirendTipusDataSet = dalHandler.AdatszotarDAL().GetAdatszotarLathatoElemek(GeneratedAdatszotarTipusEnum.HetiRendTipus, TanevId);
var systemSettingsHelper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, dalHandler));
foglalkozasokRogziteseHetvegereId = (int)systemSettingsHelper.GetSystemSettingValue<FoglalkozasokRogziteseHetvegere>(RendszerBeallitasTipusEnum.Foglalkozasok_Rogzitese_Hetvegere);
csengetesiRendId = new CsengetesiRendHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetAktivCsengetesiRendId();
csengetesiRendOraCoList = new CsengetesiRendOrakHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetCsengetesiRendOraCoList(csengetesiRendId);
isOravegeBeallitasOrahosszAlapjan = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Orarendi_Elem_Hossz);
csoportTipusOraPercDict = new AdatszotarHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetCsoportTipusList().ToDictionary(x => x.Id, x => x.OraPerc);
tantargyNincsBeloleOra = new TantargyHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetTantargyakNincsBeloleOra();
tantargyfelosztasCoList = new TantargyFelosztasHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetTantargyfelosztasCoList();
orarendiElemekRogzitesenekElofeltetele = (SystemSettingsOrarendiElemekRogzitesenekElofelteteleEnum)(systemSettingsHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.orarendi_elemek_rogzitesenek_elofeltetele));
});
var importCo = new OrarendImportCo
{
OrarendImportTipus = orarendImportFileUploadCo.OrarendImportTipus,
IsNapirendImport = orarendImportFileUploadCo.IsNapirendImport,
IsTtfImport = orarendImportFileUploadCo.IsTtfImport,
OrarendiOraLezarasDateTime = orarendImportFileUploadCo.OrarendiOraLezarasDateTime,
TanarCoList = tanarCoList,
OsztalyCoList = osztalyCoList,
CsoportCoList = csoportCoList,
TanevrendOsztalyokkalNaptipusTulajdonsagokkalCOs = tanevRendjeNaptipusTulajdonsagokkalCOs,
TantargyNincsBeloleOra = tantargyNincsBeloleOra,
TantargyfelosztasCoList = tantargyfelosztasCoList,
OrarendiElemekRogzitesenekElofeltetele = orarendiElemekRogzitesenekElofeltetele,
TeremCoList = teremCoList
};
Dictionary<int, string> hetirendTipusDictionary = new Dictionary<int, string>();
foreach (DataRow dataRow in hetirendTipusDataSet.Tables[0].Rows)
{
hetirendTipusDictionary.Add(SDAConvert.ToInt32(dataRow["ID"]), SDAConvert.ToString(dataRow["Megnevezes"]));
}
int lineNumber = 1;
foreach (List<string> importDataRow in orarendImportFileUploadCo.ImportData.Skip(1))
{
Dictionary<int, string> importHeaderList = !orarendImportFileUploadCo.IsNapirendImport ? ImportHeaderListOraErvenyessegiIdovel : ImportHeaderListNapirendOraErvenyessegiIdovel;
var importItemCo = new OrarendImportItemCo(TanevId, isAktivTanev)
{
LineNumber = lineNumber,
OraErvenyessegKezdeteImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete)],
OraErvenyessegVegeImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameOraErvenyessegVege)],
HetirendImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameHetirend)],
NapImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameNap)],
OsztalyNevImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly)],
CsoportNevImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport)],
TantargyNevImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy)],
TanarNevImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTanar)],
HelyisegImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameHelyiseg)],
OraErvenyessegMinDate = orarendImportFileUploadCo.OraErvenyessegMinDate,
OraErvenyessegMaxDate = orarendImportFileUploadCo.OraErvenyessegMaxDate,
HetirendTipusDictionary = hetirendTipusDictionary,
IsNapirendImport = orarendImportFileUploadCo.IsNapirendImport,
FoglalkozasokRogziteseHetvegereId = foglalkozasokRogziteseHetvegereId
};
var osztalyCsoportId =
importCo.OsztalyCoList.FirstOrDefault(x => x.NevComparableString == importItemCo.OsztalyCsoportNev.ToComparableString())?.Id ??
importCo.CsoportCoList.FirstOrDefault(x => x.NevComparableString == importItemCo.OsztalyCsoportNev.ToComparableString())?.Id;
ChangeFoglalkozasokRogziteseHetvegere(importCo, importItemCo, osztalyCsoportId);
if (!string.IsNullOrWhiteSpace(importItemCo.TanarNev))
{
var tanarList = tanarCoList.Where(x =>
x.FelhasznaloNyomtatasiNevComparableString == importItemCo.TanarNev?.ToComparableString() &&
(!importItemCo.TanarSzuletesiIdo.HasValue || importItemCo.TanarSzuletesiIdo == x.FelhasznaloSzuletesiIdo)).ToList();
if (tanarList.Count == 1)
{
importItemCo.TanarId = tanarList.Single().Id;
}
}
importItemCo.HetirendTipusId = importItemCo.HetirendTipusDictionary.SingleOrDefault(x => x.Value == importItemCo.HetirendTipusNev).Key;
if (!importItemCo.IsNapirendImport)
{
importItemCo.OraImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameOra)];
importItemCo.CsengetesiRendId = csengetesiRendId;
importItemCo.CsengetesiRendOraCoList = csengetesiRendOraCoList;
importItemCo.CsengetesiRendOraId = csengetesiRendOraCoList.SingleOrDefault(x => x.Oraszam == importItemCo.OraSorszam)?.ID;
}
else
{
importItemCo.FoglalkozasKezdeteImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameFoglalkozasKezdete)];
importItemCo.FoglalkozasVegeImportData = importDataRow[importHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameFoglalkozasVege)];
importItemCo.CsengetesiRendId = null;
importItemCo.CsengetesiRendOraCoList = null;
importItemCo.CsengetesiRendOraId = null;
}
var csoportCo = importCo.CsoportCoList.SingleOrDefault(x => x.NevComparableString == importItemCo.CsoportNev.ToComparableString());
if (csoportCo != null)
{
importItemCo.CsoportTipusId = csoportCo.TipusId ?? (int)CsoportTipusEnum.iskolai_csoport_tanorai_celu_;
}
else
{
importItemCo.CsoportTipusId = orarendImportFileUploadCo.IsOsszefuggoSzakmaiGyakorlat ? (int)CsoportTipusEnum.OsszefuggoSzakmaiGyakorlatiCsoport : (int)CsoportTipusEnum.na;
}
// NOTE: Órarendi óra esetén, rendszerbeállítástól függ az óra végének meghatározása.
// NOTE: Ha 'IGEN', órahossz alapján kell, amit a csoport típusa határoz meg.
if (importItemCo.OraSorszam == null)
{
importItemCo.OraVege = BaseImportItemCo.GetDateTimeValueFromTimeString(importItemCo.FoglalkozasVegeImportData);
}
else
{
if (!importItemCo.IsCsoport || !isOravegeBeallitasOrahosszAlapjan)
{
importItemCo.OraVege = importItemCo.CsengetesiRendOraCoList.SingleOrDefault(x => x.Oraszam == importItemCo.OraSorszam)?.Veg;
}
else
{
// NOTE: Létező csoport esetén kikeressük, milyen csoport típus tartozik hozzá.
if (csoportTipusOraPercDict.TryGetValue(importItemCo.CsoportTipusId.Value, out int? csoportTipusOraPerc) && csoportTipusOraPerc.HasValue)
{
importItemCo.OraVege = importItemCo.OraKezdete?.AddMinutes(csoportTipusOraPerc.Value);
}
}
}
string tantargyMd5HashInput = importItemCo.TantargyNev?.ToComparableString();
importItemCo.CompareHashTantargy = ImportExportHelper.GetMd5Hash(tantargyMd5HashInput);
if (!string.IsNullOrWhiteSpace(importItemCo.OsztalyNev))
{
string osztalyMd5HashInput = importItemCo.OsztalyNev.ToComparableString();
importItemCo.CompareHashOsztaly = ImportExportHelper.GetMd5Hash(osztalyMd5HashInput);
}
if (!string.IsNullOrWhiteSpace(importItemCo.CsoportNev))
{
string csoportMd5HashInput = importItemCo.CsoportNev.ToComparableString();
importItemCo.CompareHashCsoport = ImportExportHelper.GetMd5Hash(csoportMd5HashInput);
}
string tantargyfelosztasMd5HashInput =
importItemCo.OsztalyCsoportNev?.ToComparableString() +
importItemCo.TantargyNev?.ToComparableString() +
importItemCo.TanarNev?.ToComparableString();
if (importItemCo.TanarSzuletesiIdo.HasValue)
{
tantargyfelosztasMd5HashInput += importItemCo.TanarSzuletesiIdoString?.ToComparableString();
}
importItemCo.CompareHashTantargyfelosztas = ImportExportHelper.GetMd5Hash(tantargyfelosztasMd5HashInput);
if (!string.IsNullOrWhiteSpace(importItemCo.TeremNev))
{
string teremMd5HashInput = importItemCo.TeremNev.ToComparableString();
importItemCo.CompareHashTerem = ImportExportHelper.GetMd5Hash(teremMd5HashInput);
}
string orarendMd5HashInput = string.Empty;
if (importCo.OrarendImportTipus == (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport)
{
orarendMd5HashInput += importItemCo.OraErvenyessegKezdeteString?.ToComparableString();
orarendMd5HashInput += importItemCo.OraErvenyessegVegeString?.ToComparableString();
}
orarendMd5HashInput += importItemCo.HetirendTipusNev?.ToComparableString();
orarendMd5HashInput += importItemCo.HetNapjaTipusId?.GetDisplayName<HetNapjaTipusEnum>(TanevId)?.ToComparableString();
if (!importItemCo.IsNapirendImport)
{
orarendMd5HashInput += importItemCo.OraSorszam;
}
else
{
orarendMd5HashInput += importItemCo.OraKezdeteString?.ToComparableString();
orarendMd5HashInput += importItemCo.OraVegeString?.ToComparableString();
}
orarendMd5HashInput += importItemCo.OsztalyCsoportNev?.ToComparableString();
orarendMd5HashInput += importItemCo.TantargyNev?.ToComparableString();
orarendMd5HashInput += importItemCo.TanarNev?.ToComparableString();
if (importItemCo.TanarSzuletesiIdo.HasValue)
{
orarendMd5HashInput += importItemCo.TanarSzuletesiIdoString?.ToComparableString();
}
orarendMd5HashInput += importItemCo.TeremNev?.ToComparableString();
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(orarendMd5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
public MemoryStream GetTemplate(OrarendImportFileUploadCo orarendImportFileUploadCo, bool isSzakkepzo = false, int? szervezetTipus = null, int? szervezetId = null)
{
Dictionary<string, IList<string>> dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary(true, isSzakkepzo, szervezetTipus, szervezetId);
MemoryStream memoryStream = ImportExportHelper.GetTemplate(orarendImportFileUploadCo.WorksheetName, orarendImportFileUploadCo.ExcelHeaderList, dropDownColumnSourceDictionary);
return memoryStream;
}
public MemoryStream GetExport(OrarendImportFileUploadCo orarendImportFileUploadCo, DateTime orarendExportKezdete, DateTime orarendExportVege, bool isIdoszakonKivuliElemekMegjelenitese, bool isEgyediNapOrainakKihagyasa)
{
bool isOraErvenyessegiIdovel = orarendImportFileUploadCo.OrarendImportTipus == (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport;
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.ImportExportDal().GetOrarendExcelExportData(TanevId, orarendExportKezdete, orarendExportVege, isOraErvenyessegiIdovel, isIdoszakonKivuliElemekMegjelenitese, isEgyediNapOrainakKihagyasa, orarendImportFileUploadCo.IsNapirendImport));
return GetWorkbook(orarendImportFileUploadCo, dataSet);
}
public MemoryStream GetWorkbook(OrarendImportFileUploadCo orarendImportFileUploadCo, DataSet dataSet)
{
Dictionary<string, IList<string>> dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary(false);
bool isOraErvenyessegiIdovel = orarendImportFileUploadCo.OrarendImportTipus == (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport;
using (var workbook = new Workbook())
{
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(orarendImportFileUploadCo.ExcelHeaderList, dropDownColumnSourceDictionary);
var worksheet = SimpleExportLogic.GetWorksheet(workbook, orarendImportFileUploadCo.WorksheetName, simpleExportColumnCos);
int rowNumber = 1;
foreach (DataRow dataRow in dataSet.Tables[0].AsEnumerable())
{
if (isOraErvenyessegiIdovel)
{
var oraErvenyessegKezdete = SDAConvert.ToDateTime(dataRow["OraErvenyessegKezdete"]).Value;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete)].Value = oraErvenyessegKezdete.ToString(Constants.ToStringPattern.HungarianDate);
var oraErvenyessegVege = SDAConvert.ToDateTime(dataRow["OraErvenyessegVege"]);
//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!
DateTime? oraErvenyessegVegeDatum = oraErvenyessegKezdete.Equals(oraErvenyessegVege) ? oraErvenyessegVege : oraErvenyessegVege?.AddDays(-1);
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameOraErvenyessegVege)].Value = oraErvenyessegVegeDatum?.ToString(Constants.ToStringPattern.HungarianDate) ?? string.Empty;
}
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameHetirend)].Value = SDAConvert.ToString(dataRow["Hetirend"]) ?? string.Empty;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameNap)].Value = SDAConvert.ToString(dataRow["Nap"]) ?? string.Empty;
if (orarendImportFileUploadCo.IsNapirendImport)
{
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameFoglalkozasKezdete)].Value = SDAConvert.ToDateTime(dataRow["FoglalkozasKezdete"]).Value.ToString(Constants.ToStringPattern.HungarianTime);
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameFoglalkozasVege)].Value = SDAConvert.ToDateTime(dataRow["FoglalkozasVege"]).Value.ToString(Constants.ToStringPattern.HungarianTime);
}
else
{
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameOra)].Value = SDAConvert.ToNullableInt32(dataRow["Ora"])?.ToString() ?? string.Empty;
}
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly)].Value = SDAConvert.ToString(dataRow["Osztaly"]) ?? string.Empty;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport)].Value = SDAConvert.ToString(dataRow["Csoport"]) ?? string.Empty;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy)].Value = SDAConvert.ToString(dataRow["Tantargy"]) ?? string.Empty;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTanar)].Value = SDAConvert.ToString(dataRow["Tanar"]) ?? string.Empty;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameHelyiseg)].Value = SDAConvert.ToString(dataRow["Helyiseg"]) ?? string.Empty;
rowNumber++;
}
MemoryStream memoryStream = SimpleExportLogic.GetWorkbookMemoryStream(workbook);
return memoryStream;
}
}
public MemoryStream GetNemImportalhatoSorokExport(OrarendImportFileUploadCo orarendImportFileUploadCo)
{
Dictionary<string, IList<string>> dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary(false);
using (var workbook = new Workbook())
{
var worksheet = ImportExportHelper.GetWorksheetsWithDropDownFormula(workbook, orarendImportFileUploadCo.WorksheetName, orarendImportFileUploadCo.ExcelHeaderList, dropDownColumnSourceDictionary);
int rowNumber = 1;
foreach (OrarendImportItemCo co in ImportCo.NemImportalhatoItemList)
{
if (orarendImportFileUploadCo.OrarendImportTipus == (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport)
{
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameOraErvenyessegKezdete)].Value = co.OraErvenyessegKezdeteImportData;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameOraErvenyessegVege)].Value = co.OraErvenyessegVegeImportData;
}
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameHetirend)].Value = co.HetirendImportData;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameNap)].Value = co.NapImportData;
if (orarendImportFileUploadCo.IsNapirendImport)
{
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameFoglalkozasKezdete)].Value = co.FoglalkozasKezdeteImportData;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameFoglalkozasVege)].Value = co.FoglalkozasVegeImportData;
}
else
{
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameOra)].Value = co.OraImportData;
}
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly)].Value = co.OsztalyNevImportData;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport)].Value = co.CsoportNevImportData;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy)].Value = co.TantargyNevImportData;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTanar)].Value = co.TanarNevImportData;
worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.GetKeyByUniqueValue(ImportExportOrarendResource.ImportHeaderNameHelyiseg)].Value = co.HelyisegImportData;
Cell errorCell = worksheet.Cells[rowNumber, orarendImportFileUploadCo.ExcelHeaderList.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, int orarendImportMuvelet, bool isNapirendImport, DateTime? orarendiOraLezarasDateTime)
{
string importJson = JsonConvert.SerializeObject(importJsonObject);
bool isTorles = orarendImportMuvelet == (int)OrarendImportMuveletEnum.DeleteAndInsert;
bool isModositas = orarendImportMuvelet == (int)OrarendImportMuveletEnum.UpdateAndInsert;
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
dalHandler.ImportExportDal().OrarendImport(IntezmenyId, TanevId, FelhasznaloId, importJson, isTorles, isModositas, isNapirendImport, orarendiOraLezarasDateTime);
dalHandler.OrarendiOra().UpdateOrarend(IntezmenyId, TanevId, null, null, null, null);
});
}
private void ChangeFoglalkozasokRogziteseHetvegere(OrarendImportCo importCo, OrarendImportItemCo importItemCo, int? osztalyCsoportId)
{
if (importItemCo.IsEgyediNap)
{
var aktualisTanevRendje = importCo.TanevrendOsztalyokkalNaptipusTulajdonsagokkalCOs.Where(tr =>
// globális tanévrendi esemény
!tr.OsztalyCsoportId.IsEntityId()
// osztályra vonatkozó tanévrendi esemény
|| (tr.OsztalyCsoportId.IsEntityId() && tr.OsztalyCsoportId == osztalyCsoportId)).ToList();
var napraTanitasiOratTanoranKivulitLehetRogziteni = aktualisTanevRendje.Where(tr => (tr.Datum == importItemCo.OraErvenyessegKezdete) && (tr.IsTanitasi || tr.IsTanoranKivuli)).ToList();
if (napraTanitasiOratTanoranKivulitLehetRogziteni.Any())
{
// ha az osztálynak van olyan tanévrendi eseménye az adott napra, ahol lehet rögzíteni tanítási órát vagy tanórán kívüli foglalkozást, akkor
if (napraTanitasiOratTanoranKivulitLehetRogziteni.Any(x => !x.Globalis && !x.OrarendiNap))
{
//ha van benne az osztályra szabott tiltás
return;
}
if (napraTanitasiOratTanoranKivulitLehetRogziteni.Any(x => !x.Globalis && x.OrarendiNap))
{
//ha van benne az osztályra szabott engedélyezés, akkor nem érdekes a rendszerbeállítás
importItemCo.FoglalkozasokRogziteseHetvegereId = (int)FoglalkozasokRogziteseHetvegere.Engedelyezett;
return;
}
if (napraTanitasiOratTanoranKivulitLehetRogziteni.Any(x => x.Globalis && !x.OrarendiNap))
{
//ha van benne globalis tiltás
return;
}
if (napraTanitasiOratTanoranKivulitLehetRogziteni.Any(x => x.Globalis && x.OrarendiNap))
{
//ha van benne globalis engedélyezés, akkor nem érdekes a rendszerbeállítás
importItemCo.FoglalkozasokRogziteseHetvegereId = (int)FoglalkozasokRogziteseHetvegere.Engedelyezett;
}
}
}
}
private double GetOraszam(OrarendImportItemCo importItem, List<OrarendImportItemCo> orarendImportItemCoList, Dictionary<int, int?> csoportTipusOraPercDict)
{
int orahosszPerc = 45;
if (importItem.IsCsoport)
{
if (csoportTipusOraPercDict.TryGetValue(importItem.CsoportTipusId.Value, out int? csoportTipusOraPerc) && csoportTipusOraPerc.HasValue)
{
orahosszPerc = csoportTipusOraPerc.Value;
}
}
else
{
var ds = new OsztalyCsoportHelper(ConnectionType).GetOsztalyCsoportNev(importItem.OsztalyNev, null);
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 && ds.Tables[0].Rows[0].Field<int>("KategoriaId") == (int)OktNevelesiKategoriaEnum.Kollegium)
{
orahosszPerc = 60;
}
else
{
orahosszPerc = 45;
}
}
double idotartam = 0;
double hetirendOszto = importItem.HetirendTipusDictionary.Count(x => x.Key != (int)HetiRendTipusEnum.MindegyikHet);
double oraszamHetiAtlag = 1;
if (hetirendOszto != 0)
{
oraszamHetiAtlag = 1 / hetirendOszto;
}
foreach (OrarendImportItemCo orarendImportItemCo in orarendImportItemCoList)
{
if (orarendImportItemCo.HetirendTipusId == (int)HetiRendTipusEnum.MindegyikHet)
{
idotartam += orarendImportItemCo.CsengetesiRendId.HasValue ? orahosszPerc : orarendImportItemCo.OraVege.Value.Subtract(orarendImportItemCo.OraKezdete.Value).TotalMinutes;
}
else
{
idotartam += oraszamHetiAtlag * (orarendImportItemCo.CsengetesiRendId.HasValue ? orahosszPerc : orarendImportItemCo.OraVege.Value.Subtract(orarendImportItemCo.OraKezdete.Value).TotalMinutes);
}
}
double result = Math.Round(idotartam / orahosszPerc, 2);
return result;
}
public Dictionary<string, IList<string>> GetDefaultDropDownColumnSourceDictionary(bool filterBySzervezetTipus, bool isSzakkepzo = false, int ? szervezetTipus = null, int? szervezetId = null)
{
//NOTE: Create dropdown lists
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var helper = new ImportExportHelper(new DalHandlerConnectionType(ConnectionType, dalHandler));
dropDownColumnSourceDictionary.Add(ImportExportOrarendResource.ImportHeaderNameHetirend, helper.GetHetiRendTipusList());
dropDownColumnSourceDictionary.Add(ImportExportOrarendResource.ImportHeaderNameNap, helper.GetHetNapjaTipusList());
dropDownColumnSourceDictionary.Add(ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly, helper.GetOsztalyList());
dropDownColumnSourceDictionary.Add(ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport, !filterBySzervezetTipus ? helper.GetCsoportList() : helper.GetCsoportListBySzervezet(szervezetTipus, szervezetId));
dropDownColumnSourceDictionary.Add(ImportExportTantargyfelosztasResource.ImportHeaderNameTanar, !filterBySzervezetTipus ? helper.GetTanarList(true) : helper.GetTanarListBySzervezet(true, szervezetTipus, szervezetId));
dropDownColumnSourceDictionary.Add(ImportExportOrarendResource.ImportHeaderNameHelyiseg, !filterBySzervezetTipus ? helper.GetTeremList() : helper.GetTeremListBySzervezet(szervezetTipus, szervezetId));
dropDownColumnSourceDictionary.Add(ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy, !filterBySzervezetTipus ? helper.GetTantargyList() : helper.GetTantargyListBySzervezet(szervezetId == null ? false : true, isSzakkepzo));
});
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,384 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data;
using System.IO;
using System.Linq;
using System.Runtime.Caching;
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.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class OratervImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportOratervResource.ImportHeaderNameTantervNeve },
{ 01, ImportExportOratervResource.ImportHeaderNameOratervNeve },
{ 02, ImportExportOratervResource.ImportHeaderNameEvfolyamNeve },
{ 03, ImportExportOratervResource.ImportHeaderNameTantargyNeve },
{ 04, ImportExportOratervResource.ImportHeaderNameEvesOraszam }
};
public OratervImportCo ImportCo
{
get => (OratervImportCo)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 OratervImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(OratervImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, int importMuvelet)
{
OratervImportCo importCo = GetImportCoFromImportData(importData);
importCo.ImportMuvelet = importMuvelet;
SetNemImportalhatoSorokByValidation(importCo);
//NOTE: Azért van szükség Dictionary-kre, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> tantargyCompareHashImportItemCompareCoDictionary = GetTantargyCompareHashImportItemCompareCoDictionary(importCo.TantargyCOList);
Dictionary<string, ImportItemCompareCo> oratervCompareHashImportItemCompareCoDictionary = GetOratervCompareHashImportItemCompareCoDictionary(importCo.OratervCOList);
Dictionary<string, ImportItemCompareCo> oratervTantargyCompareHashImportItemCompareCoDictionary = GetOratervTantargyCompareHashImportItemCompareCoDictionary(importCo.OratervTantargyCOList);
foreach (OratervImportItemCo importItem in importCo.MainImportItemList)
{
SetOperationTantargy(importItem, tantargyCompareHashImportItemCompareCoDictionary);
SetOperationOraterv(importItem, oratervCompareHashImportItemCompareCoDictionary, importCo.ImportMuvelet);
SetOperationOratervTantargy(importItem, oratervTantargyCompareHashImportItemCompareCoDictionary, importCo.ImportMuvelet);
}
//NOTE: Azokat a sorokat, amelyek bekerültek a NemImportalhatoItemList-be, azokat kiveszzük a MainImportItemList-ből!
importCo.MainImportItemList.RemoveRange(importCo.NemImportalhatoItemList);
var tantargyImportJsonItemList = new List<TantargyImportJsonItemCo>();
var oratervImportJsonItemList = new List<OratervImportJsonItemCo>();
var oratervTantargyJsonItemList = new List<OratervTargyImportJsonItemCo>();
var tantargyImportJsonItemCoList = importCo.MainImportItemList.GroupBy(x => x.TantargyNeve).Select(x => x.First()).Select(x => new TantargyImportJsonItemCo(x, TanevId, IntezmenyId, FelhasznaloId)).ToList();
var oratervImportJsonItemCoList = importCo.MainImportItemList.GroupBy(x => x.OratervNeve).Select(x => x.First()).Select(x => new OratervImportJsonItemCo(x, TanevId, IntezmenyId, FelhasznaloId)).ToList();
var oratervTantargyImportJsonItemCoList = importCo.MainImportItemList.Select(x => new OratervTargyImportJsonItemCo(x, TanevId, IntezmenyId, FelhasznaloId)).ToList();
tantargyImportJsonItemList.AddRange(tantargyImportJsonItemCoList);
oratervImportJsonItemList.AddRange(oratervImportJsonItemCoList);
oratervTantargyJsonItemList.AddRange(oratervTantargyImportJsonItemCoList);
importCo.TantargyImportJsonItemList = tantargyImportJsonItemList;
importCo.OratervImportJsonItemList = oratervImportJsonItemList;
importCo.OratervTantargyImportJsonItemList = oratervTantargyJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(OratervImportCo importCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate();
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (OratervImportItemCo 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 OratervImportCo GetImportCoFromImportData(List<List<string>> importData)
{
List<TantervCO> tantervCoList = null;
List<TantargyItemCo> tantargyCoList = null;
List<OratervCO> oratervCoList = null;
List<OratervTantargyCO> oratervTantargyCoList = null;
Dal.CustomConnection.Run(ConnectionType, h =>
{
tantervCoList = new TantervHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivTantervDataSet().Tables[0].AsEnumerable().Select(row => new TantervCO()
{
ID = SDAConvert.ToInt32(row["ID"]),
Nev = SDAConvert.ToString(row["Nev"]),
}).ToList();
tantargyCoList = new TantargyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTantargyCoList();
var oratervHelper = new OratervHelper(new DalHandlerConnectionType(ConnectionType, h));
oratervCoList = oratervHelper.GetOratervCoList();
oratervTantargyCoList = oratervHelper.GetOratervTantargyCoList();
});
var importCo = new OratervImportCo
{
TantervCOList = tantervCoList,
TantargyCOList = tantargyCoList,
OratervCOList = oratervCoList,
OratervTantargyCOList = oratervTantargyCoList,
};
int lineNumber = 1;
foreach (List<string> importDataRow in importData.Skip(1))
{
var importItemCo = new OratervImportItemCo(TanevId)
{
LineNumber = lineNumber,
TantervNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportOratervResource.ImportHeaderNameTantervNeve)],
OratervNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportOratervResource.ImportHeaderNameOratervNeve)],
EvfolyamNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportOratervResource.ImportHeaderNameEvfolyamNeve)],
TantargyNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportOratervResource.ImportHeaderNameTantargyNeve)],
EvesOraszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportOratervResource.ImportHeaderNameEvesOraszam)],
};
importItemCo.TantervId = importCo.TantervCOList.SingleOrDefault(x =>
x.Nev?.ToComparableString() == importItemCo.TantervNeve?.ToComparableString())?.ID;
importItemCo.TantargyId = importCo.TantargyCOList.SingleOrDefault(x => x.Nev?.ToComparableString() == importItemCo.TantargyNeve?.ToComparableString())?.Id;
importItemCo.OratervId = importCo.OratervCOList.SingleOrDefault(x => x.Nev?.ToComparableString() == importItemCo.OratervNeve?.ToComparableString())?.OratervId;
string lineMd5HashInput =
importItemCo.OratervId +
importItemCo.OratervNeve?.ToComparableString() +
importItemCo.TantargyId +
importItemCo.TantargyNeve?.ToComparableString();
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(lineMd5HashInput);
string tantargyMd5HashInput =
importItemCo.TantargyId +
importItemCo.TantargyNeve?.ToComparableString();
importItemCo.CompareHashTantargy = ImportExportHelper.GetMd5Hash(tantargyMd5HashInput);
string oratervMd5HashInput =
importItemCo.OratervId +
importItemCo.OratervNeve?.ToComparableString();
importItemCo.CompareHashOraterv = ImportExportHelper.GetMd5Hash(oratervMd5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
#region Template
public MemoryStream GetTemplate()
{
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<OratervTantargyCO>(OratervTantargyCO.OratervTantargyExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetTemplate(ImportExportOratervResource.ImportDefaultSheetName, simpleExportColumnCos);
}
#endregion Template
#region Export
public MemoryStream GetExport()
{
List<OratervTantargyCO> coList = new OratervHelper(ConnectionType).GetOratervTantargyCoList().OrderBy(x => x.TantervNev).ThenBy(x => x.OratervNev).ThenBy(x => x.TantargyNev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<OratervTantargyCO>(OratervTantargyCO.OratervTantargyExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetExport(ImportExportOratervResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
public MemoryStream GetNemImportalhatoSorokExport()
{
List<OratervImportItemCo> coList = ImportCo.NemImportalhatoItemList;
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<OratervImportItemCo>(OratervImportItemCo.NemImportalhatoSorokExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return ImportExportHelper.NemImportalhatoSorokExport(ImportExportOratervResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
#endregion Export
private Dictionary<string, ImportItemCompareCo> GetTantargyCompareHashImportItemCompareCoDictionary(List<TantargyItemCo> tantargyItemCoList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (TantargyItemCo tantargyItemCo in tantargyItemCoList)
{
var md5HashInput =
tantargyItemCo.Id +
tantargyItemCo.Nev?.ToComparableString();
string compareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = tantargyItemCo.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> GetOratervTantargyCompareHashImportItemCompareCoDictionary(List<OratervTantargyCO> oratervTantargyCoList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (OratervTantargyCO oratervTantargyItemCo in oratervTantargyCoList)
{
var md5HashInput =
oratervTantargyItemCo.OratervId +
oratervTantargyItemCo.OratervNev?.ToComparableString() +
oratervTantargyItemCo.Tantargy +
oratervTantargyItemCo.TantargyNev?.ToComparableString();
string compareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = oratervTantargyItemCo.OratervTantargyId,
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> GetOratervCompareHashImportItemCompareCoDictionary(List<OratervCO> oratervCoList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (OratervCO oratervItemCo in oratervCoList)
{
var md5HashInput =
oratervItemCo.OratervId +
oratervItemCo.Nev?.ToComparableString();
string compareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = oratervItemCo.OratervId,
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 static void SetOperationTantargy(OratervImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary)
{
var compareHash = importItem.CompareHashTantargy;
//NOTE: Ha nem találtunk egyezést, akkor mindeképpen Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationTantargy = (int)ImportItemOperationEnum.Insert;
}
}
private static void SetOperationOratervTantargy(OratervImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, int importMuvelet)
{
var 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.OratervTantargyId = importItemCompareCo.Id;
importItem.Operation = (int)ImportItemOperationEnum.Update;
}
}
}
private static void SetOperationOraterv(OratervImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, int importMuvelet)
{
var compareHash = importItem.CompareHashOraterv;
//NOTE: Ha nem találtunk egyezést, akkor mindeképpen Insert!
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationOraterv = (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.OratervId = importItemCompareCo.Id;
importItem.OperationOraterv = (int)ImportItemOperationEnum.Update;
}
else
{
importItem.OratervId = null;
}
}
}
public void Import(object importJsonObject)
{
string importJson = JsonConvert.SerializeObject(importJsonObject);
Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.ImportExportDal().OratervImport(IntezmenyId, TanevId, FelhasznaloId, importJson));
}
private Dictionary<string, IList<string>> GetDefaultDropDownColumnSourceDictionary()
{
//NOTE: Create dropdown lists
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
dropDownColumnSourceDictionary.Add(ImportExportOratervResource.ImportHeaderNameEvfolyamNeve, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.EvfolyamTipus));
var tantervHelper = new TantervHelper(connectionType);
var tantargyHelper = new TantargyHelper(connectionType);
dropDownColumnSourceDictionary.Add(ImportExportOratervResource.ImportHeaderNameTantervNeve, tantervHelper.GetAktivTantervDataSet().Tables[0].AsEnumerable().Select(t => t.Field<string>("Nev")).ToList());
dropDownColumnSourceDictionary.Add(ImportExportOratervResource.ImportHeaderNameTantargyNeve, tantargyHelper.GetTantargyCoList(true).OrderBy(x => x.Rendez0).ThenBy(x => x.Rendez1).ThenBy(x => x.Rendez2).ThenBy(x => x.Rendez3).ThenBy(x => x.Rendez4).ThenBy(x => x.Rendez5).Select(t => t.Nev).ToList());
});
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,201 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Linq;
using System.Runtime.Caching;
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.ManualEnums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class TanmenetImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportTanmenetResource.ImportHeaderNameOraszam },
{ 01, ImportExportTanmenetResource.ImportHeaderNameTema }
};
public TanmenetImportCo ImportCo
{
get => (TanmenetImportCo)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 TanmenetImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(TanmenetImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, int tantargyfelosztasId, bool isFromSzervezet)
{
var importCo = GetImportCoFromImportData(importData, tantargyfelosztasId, isFromSzervezet);
importCo.ImportMuvelet = (int)ImportMuveletEnum.DeleteAndInsert;
SetNemImportalhatoSorokByValidation(importCo);
SetOperationAndNemImportalhatoSorokByOperation(importCo);
var mainImportJsonItemList = new List<TanmenetImportJsonItemCo>(importCo.MainImportItemList.Select(x => new TanmenetImportJsonItemCo(x, importCo.Tantargyfelosztas, TanevId, IntezmenyId, FelhasznaloId)));
importCo.MainImportJsonItemList = mainImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(TanmenetImportCo importCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate();
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (TanmenetImportItemCo 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 void SetOperationAndNemImportalhatoSorokByOperation(TanmenetImportCo importCo)
{
foreach (TanmenetImportItemCo importItem in importCo.MainImportItemList)
{
importItem.Operation = (int)ImportItemOperationEnum.Insert;
}
}
private TanmenetImportCo GetImportCoFromImportData(List<List<string>> importData, int tantargyfelosztasId, bool isFromSzervezet)
{
var tantargyfelosztasCoList = new TantargyFelosztasHelper(ConnectionType).GetTantargyfelosztasCoList(alkalmazottId: FelhasznaloId, isFromSzervezet: isFromSzervezet);
if (isFromSzervezet)
{
var szervezetHelper = new SzervezetHelper(ConnectionType);
var alkalmazottSzervezetId = szervezetHelper.GetAlkalmazottSzervezetId(FelhasznaloId);
var lathatoSzervezetIdList = szervezetHelper.GetLathatoSzervezetIdList(alkalmazottSzervezetId, SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek);
tantargyfelosztasCoList.RemoveAll(x =>
{
if (x.SzervezetId.IsEntityId())
{
return !lathatoSzervezetIdList.Contains(x.SzervezetId.Value);
}
return true;
});
}
var importCo = new TanmenetImportCo
{
Tantargyfelosztas = tantargyfelosztasCoList.Single(x => x.Id == tantargyfelosztasId),
};
var tanmenetCoList = new TanmenetHelper(ConnectionType).GetTanmenetCoList(FelhasznaloId).Where(x => x.TantargyfelosztasId == tantargyfelosztasId).ToList();
var lineNumber = 1;
foreach (var importDataRow in importData.Skip(1))
{
var importItemCo = new TanmenetImportItemCo
{
LineNumber = lineNumber,
OraszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanmenetResource.ImportHeaderNameOraszam)],
TemaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanmenetResource.ImportHeaderNameTema)]
};
if (importCo.Tantargyfelosztas != null && importItemCo.OraSorszam.IsNotNullAndPositive())
{
importItemCo.Tanmenet = tanmenetCoList.SingleOrDefault(x =>
x.TantargyfelosztasId == importCo.Tantargyfelosztas.Id &&
x.OraSorszam == importItemCo.OraSorszam
);
}
var md5HashInput = importItemCo.OraSorszam?.ToString();
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
#region Template
public MemoryStream GetTemplate()
{
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TanmenetItemCo>(TanmenetItemCo.TanmenetExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetTemplate(ImportExportTanmenetResource.ImportDefaultSheetName, simpleExportColumnCos);
}
#endregion Template
#region Export
public MemoryStream GetExport(int tantargyfelosztasId)
{
List<TanmenetItemCo> coList = new TanmenetHelper(ConnectionType).GetTanmenetCoList(FelhasznaloId).Where(x => x.TantargyfelosztasId == tantargyfelosztasId).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TanmenetItemCo>(TanmenetItemCo.TanmenetExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetExport(ImportExportTanmenetResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
public MemoryStream GetNemImportalhatoSorokExport()
{
List<TanmenetImportItemCo> coList = ImportCo.NemImportalhatoItemList;
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TanmenetImportItemCo>(TanmenetImportItemCo.NemImportalhatoSorokExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return ImportExportHelper.NemImportalhatoSorokExport(ImportExportTanmenetResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
#endregion Export
public void Import(object importJsonObject, int importMuvelet, int tantargyId, int osztalyCsoportId)
{
string importJson = JsonConvert.SerializeObject(importJsonObject);
bool isTorles = importMuvelet == (int)ImportMuveletEnum.DeleteAndInsert;
Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.ImportExportDal().TanmenetImport(IntezmenyId, TanevId, FelhasznaloId, importJson, isTorles, tantargyId, osztalyCsoportId));
}
private Dictionary<string, IList<string>> GetDefaultDropDownColumnSourceDictionary()
{
//NOTE: Create dropdown lists
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,823 @@
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.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
using Newtonsoft.Json;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class TantargyfelosztasImportExportHelper : BaseTantargyfelosztasImportExportHelper
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderListEgyszeru => new Dictionary<int, string>
{
{ 00, ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly },
{ 01, ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport },
{ 02, ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy },
{ 03, ImportExportTantargyfelosztasResource.ImportHeaderNameOraszam },
{ 04, ImportExportTantargyfelosztasResource.ImportHeaderNameTanar },
{ 05, ImportExportTantargyfelosztasResource.ImportHeaderNameTulora },
{ 06, ImportExportTantargyfelosztasResource.ImportHeaderNameTtfOraszamKorrekcio },
{ 07, ImportExportTantargyfelosztasResource.ImportHeaderNameNemzetisegiOra },
{ 08, ImportExportTantargyfelosztasResource.ImportHeaderNameMegbizasiOraszam }
};
public static Dictionary<int, string> ExportHeaderListEgyszeru => new Dictionary<int, string>(ImportHeaderListEgyszeru);
public static Dictionary<int, string> ImportHeaderListKereszttablas => new Dictionary<int, string>
{
{ 00, ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly },
{ 01, ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport },
{ 02, ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy },
{ 03, ImportExportTantargyfelosztasResource.ImportHeaderNameOsszesen }
};
public static Dictionary<int, string> ImportHeaderListKereszttablasOsztalyOszlopokkal => new Dictionary<int, string>
{
{ 00, ImportExportTantargyfelosztasResource.ImportHeaderNameTanar },
{ 01, ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy },
{ 02, ImportExportTantargyfelosztasResource.ImportHeaderNameOsszesen }
};
public static Dictionary<int, string> ImportHeaderListFeladatfelosztasExcel => new Dictionary<int, string>
{
{ 00, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasPedagogusNeve },
{ 01, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasPedagogusMunkakore },
{ 02, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasFoglalkoztatasiJogviszony },
{ 03, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasPedagogusMunkaugyiAdatai },
{ 04, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasPedagogusLekotottOraszam },
{ 05, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasSzakkepzettsegTanithatoTantargyak },
{ 06, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasTantargyEgyebFoglalkozas },
{ 07, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasOraterviOrakEsEgyebFoglalkozasokSzama },
{ 08, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasPedagogusOrakedvezmenye },
{ 09, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasNevelesselOktatassalLekotottOraszam },
{ 10, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasSzakertoiBizottsagiTevekenyseg },
{ 11, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasNevelesiTanacsadas },
{ 12, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasKonduktivPedagogiaiEllatas },
{ 13, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasIskolapszichologiaiOvodapszichologiaiEllatas },
{ 14, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasLogopediaiEllatas },
{ 15, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasGyogytestneveles },
{ 16, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasGyogypedagogiaiTanacsadas },
{ 17, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasKiemeltenTehetsegesGyermekekTanulokGondozasa },
{ 18, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasTovabbtanulasiPalyavalasztasiTanacsadas },
{ 19, ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasOsszesenNemTanoraiCsoportok }
};
public TantargyfelosztasImportCo ImportCo
{
get => (TantargyfelosztasImportCo)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 TantargyfelosztasImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(TantargyfelosztasImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public static List<List<string>> GetImportDataFromKereszttablasTantargyfelosztasExcel(Stream uploadedFile, Dictionary<int, string> expectedImportHeaderList, out List<string> errorResult)
{
errorResult = new List<string>();
if (uploadedFile is FileStream fileStream)
{
var fileInfo = new FileInfo(fileStream.Name);
if (fileInfo.Extension != ".xlsx")
{
errorResult.Add(ErrorResource.CsakXlsxKiterjesztesuExcelFiletLehetImportalni);
return null;
}
}
using (var excelPackage = new ExcelPackage(uploadedFile))
{
var importData = new List<List<string>>
{
ImportHeaderListEgyszeru.Select(x => x.Value).ToList()
};
ExcelWorksheet excelWorksheet = excelPackage.Workbook.Worksheets.First();
ExcelCellAddress startExcelCellAddress = excelWorksheet.Dimension.Start;
ExcelCellAddress endExcelCellAddress = excelWorksheet.Dimension.End;
int startColumnIndex = 5;
//Tanárok kiolvasása
int tanarColumnIndex = startColumnIndex;
var tanarList = new List<string>();
while (!string.IsNullOrWhiteSpace(excelWorksheet.Cells[1, tanarColumnIndex].Text.ReplaceMultipleSpacesAndTrim()))
{
tanarList.Add(excelWorksheet.Cells[1, tanarColumnIndex].Text.ReplaceMultipleSpacesAndTrim());
tanarColumnIndex++;
}
int lastExpectedImportTanarColumnIndex = tanarList.Count + startColumnIndex;
var excelHeaderList = new Dictionary<int, string>();
for (int columnIndex = startExcelCellAddress.Column; columnIndex <= startColumnIndex - 1; columnIndex++)
{
excelHeaderList.Add(columnIndex, excelWorksheet.Cells[2, columnIndex].Text.ReplaceMultipleSpacesAndTrim());
}
for (int expectedImportHeaderColumnIndex = 0; expectedImportHeaderColumnIndex < startColumnIndex - 1; expectedImportHeaderColumnIndex++)
{
int excelHeaderColumnIndex = expectedImportHeaderColumnIndex + 1;
if (!expectedImportHeaderList[expectedImportHeaderColumnIndex].Equals(excelHeaderList[excelHeaderColumnIndex]))
{
errorResult.Add(string.Format(ErrorResource.RosszImportHeader, excelHeaderColumnIndex, excelHeaderList[excelHeaderColumnIndex], expectedImportHeaderList[expectedImportHeaderColumnIndex]));
}
}
if (errorResult.Count > 0)
{
return null;
}
for (int rowIndex = 3; rowIndex <= endExcelCellAddress.Row; rowIndex++)
{
string osztalyNev = excelWorksheet.Cells[rowIndex, 1].Text.ReplaceMultipleSpacesAndTrim();
string csoportNev = excelWorksheet.Cells[rowIndex, 2].Text.ReplaceMultipleSpacesAndTrim();
string tantargyNev = excelWorksheet.Cells[rowIndex, 3].Text.ReplaceMultipleSpacesAndTrim();
string tuloraszam = 0.ToString();
string isOsszevontOraString = CommonResource.Nem;
string isNemzetisegiOraString = CommonResource.Nem;
string megbizasiOraszamString = 0.ToString();
for (int columnIndex = startColumnIndex; columnIndex <= lastExpectedImportTanarColumnIndex; columnIndex++)
{
var currentTantargyfelosztasDataList = new List<string>();
string oraszam = excelWorksheet.Cells[rowIndex, columnIndex].Text.ReplaceMultipleSpacesAndTrim();
if (!string.IsNullOrWhiteSpace(oraszam))
{
string tanarNev = tanarList.ElementAtOrDefault(columnIndex - startColumnIndex) ?? string.Empty;
currentTantargyfelosztasDataList.Add(osztalyNev);
currentTantargyfelosztasDataList.Add(csoportNev);
currentTantargyfelosztasDataList.Add(tantargyNev);
currentTantargyfelosztasDataList.Add(oraszam);
currentTantargyfelosztasDataList.Add(tanarNev);
currentTantargyfelosztasDataList.Add(tuloraszam);
currentTantargyfelosztasDataList.Add(isOsszevontOraString);
currentTantargyfelosztasDataList.Add(isNemzetisegiOraString);
currentTantargyfelosztasDataList.Add(megbizasiOraszamString);
importData.Add(currentTantargyfelosztasDataList);
}
}
}
return importData;
}
}
public static List<List<string>> GetImportDataFromKereszttablasTantargyfelosztasOsztalyOszlopokkalExcel(Stream uploadedFile, Dictionary<int, string> expectedImportHeaderList, out List<string> errorResult)
{
errorResult = new List<string>();
if (uploadedFile is FileStream fileStream)
{
var fileInfo = new FileInfo(fileStream.Name);
if (fileInfo.Extension != ".xlsx")
{
errorResult.Add(ErrorResource.CsakXlsxKiterjesztesuExcelFiletLehetImportalni);
return null;
}
}
using (var excelPackage = new ExcelPackage(uploadedFile))
{
var importData = new List<List<string>>
{
ImportHeaderListEgyszeru.Select(x => x.Value).ToList()
};
ExcelWorksheet excelWorksheet = excelPackage.Workbook.Worksheets.First();
ExcelCellAddress startExcelCellAddress = excelWorksheet.Dimension.Start;
ExcelCellAddress endExcelCellAddress = excelWorksheet.Dimension.End;
int startColumnIndex = 4;
//Osztályok listája
int osztalyColumnIndex = startColumnIndex;
var osztalyList = new List<string>();
while (osztalyColumnIndex <= endExcelCellAddress.Column)
{
osztalyList.Add(excelWorksheet.Cells[1, osztalyColumnIndex].Text.ReplaceMultipleSpacesAndTrim());
osztalyColumnIndex++;
}
//Csoportok listája
int csoportColumnIndex = startColumnIndex;
var csoportList = new List<string>();
while (csoportColumnIndex <= endExcelCellAddress.Column)
{
csoportList.Add(excelWorksheet.Cells[2, csoportColumnIndex].Text.ReplaceMultipleSpacesAndTrim());
csoportColumnIndex++;
}
int lastExpectedImportColumnIndex = osztalyColumnIndex >= csoportColumnIndex ? osztalyColumnIndex : csoportColumnIndex;
var excelHeaderList = new Dictionary<int, string>();
for (int columnIndex = startExcelCellAddress.Column; columnIndex <= startColumnIndex - 1; columnIndex++)
{
excelHeaderList.Add(columnIndex, excelWorksheet.Cells[3, columnIndex].Text.ReplaceMultipleSpacesAndTrim());
}
for (int expectedImportHeaderColumnIndex = 0; expectedImportHeaderColumnIndex < startColumnIndex - 1; expectedImportHeaderColumnIndex++)
{
int excelHeaderColumnIndex = expectedImportHeaderColumnIndex + 1;
if (!expectedImportHeaderList[expectedImportHeaderColumnIndex].Equals(excelHeaderList[excelHeaderColumnIndex]))
{
errorResult.Add(string.Format(ErrorResource.RosszImportHeader, excelHeaderColumnIndex, excelHeaderList[excelHeaderColumnIndex], expectedImportHeaderList[expectedImportHeaderColumnIndex]));
}
}
if (errorResult.Count > 0)
{
return null;
}
for (int rowIndex = 4; rowIndex <= endExcelCellAddress.Row; rowIndex++)
{
string tanarNev = excelWorksheet.Cells[rowIndex, 1].Text.ReplaceMultipleSpacesAndTrim();
string tantargyNev = excelWorksheet.Cells[rowIndex, 2].Text.ReplaceMultipleSpacesAndTrim();
string tuloraszam = 0.ToString();
string isOsszevontOraString = CommonResource.Nem;
string isNemzetisegiOraString = CommonResource.Nem;
string megbizasiOraszamString = 0.ToString();
for (int columnIndex = startColumnIndex; columnIndex <= lastExpectedImportColumnIndex; columnIndex++)
{
var currentTantargyfelosztasDataList = new List<string>();
string oraszam = excelWorksheet.Cells[rowIndex, columnIndex].Text.ReplaceMultipleSpacesAndTrim();
if (!string.IsNullOrWhiteSpace(oraszam))
{
string osztalyNev = osztalyList.ElementAtOrDefault(columnIndex - startColumnIndex) ?? string.Empty;
string csoportnev = csoportList.ElementAtOrDefault(columnIndex - startColumnIndex) ?? string.Empty;
currentTantargyfelosztasDataList.Add(osztalyNev);
currentTantargyfelosztasDataList.Add(csoportnev);
currentTantargyfelosztasDataList.Add(tantargyNev);
currentTantargyfelosztasDataList.Add(oraszam);
currentTantargyfelosztasDataList.Add(tanarNev);
currentTantargyfelosztasDataList.Add(tuloraszam);
currentTantargyfelosztasDataList.Add(isOsszevontOraString);
currentTantargyfelosztasDataList.Add(isNemzetisegiOraString);
currentTantargyfelosztasDataList.Add(megbizasiOraszamString);
importData.Add(currentTantargyfelosztasDataList);
}
}
}
return importData;
}
}
public static List<List<string>> GetImportDataFromFeladatfelosztasExcel(Stream uploadedFile, Dictionary<int, string> expectedImportHeaderList, out List<string> errorResult)
{
errorResult = new List<string>();
if (uploadedFile is FileStream fileStream)
{
var fileInfo = new FileInfo(fileStream.Name);
if (fileInfo.Extension != ".xlsx")
{
errorResult.Add(ErrorResource.CsakXlsxKiterjesztesuExcelFiletLehetImportalni);
return null;
}
}
using (var excelPackage = new ExcelPackage(uploadedFile))
{
var importData = new List<List<string>>
{
ImportHeaderListEgyszeru.Select(x => x.Value).ToList()
};
ExcelWorksheet excelWorksheet = excelPackage.Workbook.Worksheets.First();
ExcelCellAddress startExcelCellAddress = excelWorksheet.Dimension.Start;
ExcelCellAddress endExcelCellAddress = excelWorksheet.Dimension.End;
int lastExpectedImportColumnIndex = expectedImportHeaderList.Count;
var excelHeaderList = new Dictionary<int, string>();
for (int columnIndex = startExcelCellAddress.Column; columnIndex <= lastExpectedImportColumnIndex; columnIndex++)
{
excelHeaderList.Add(columnIndex, excelWorksheet.Cells[4, columnIndex].Text.ReplaceMultipleSpacesAndTrim());
}
for (int expectedImportHeaderColumnIndex = 0; expectedImportHeaderColumnIndex < lastExpectedImportColumnIndex; expectedImportHeaderColumnIndex++)
{
int excelHeaderColumnIndex = expectedImportHeaderColumnIndex + 1;
if (!expectedImportHeaderList[expectedImportHeaderColumnIndex].Equals(excelHeaderList[excelHeaderColumnIndex]))
{
errorResult.Add(string.Format(ErrorResource.RosszImportHeader, excelHeaderColumnIndex, excelHeaderList[excelHeaderColumnIndex], expectedImportHeaderList[expectedImportHeaderColumnIndex]));
}
}
if (errorResult.Count > 0)
{
return null;
}
for (int rowIndex = 5; rowIndex <= endExcelCellAddress.Row; rowIndex++)
{
string osztalyNev = string.Empty;
string tantargyNev = excelWorksheet.Cells[rowIndex, 7].Text.ReplaceMultipleSpacesAndTrim();
string tanarNev = excelWorksheet.Cells[rowIndex, 1].Text.ReplaceMultipleSpacesAndTrim();
string tuloraszam = 0.ToString();
string isOsszevontOraString = CommonResource.Nem;
string isNemzetisegiOraString = CommonResource.Nem;
string mebizasiOraszamString = 0.ToString();
for (int columnIndex = 11; columnIndex <= lastExpectedImportColumnIndex - 1; columnIndex++)
{
var currentTantargyfelosztasDataList = new List<string>();
string oraszam = excelWorksheet.Cells[rowIndex, columnIndex].Text.ReplaceMultipleSpacesAndTrim();
if (!string.IsNullOrWhiteSpace(oraszam))
{
string csoportNev = expectedImportHeaderList[columnIndex - 1];
currentTantargyfelosztasDataList.Add(osztalyNev);
currentTantargyfelosztasDataList.Add(csoportNev);
currentTantargyfelosztasDataList.Add(tantargyNev);
currentTantargyfelosztasDataList.Add(oraszam);
currentTantargyfelosztasDataList.Add(tanarNev);
currentTantargyfelosztasDataList.Add(tuloraszam);
currentTantargyfelosztasDataList.Add(isOsszevontOraString);
currentTantargyfelosztasDataList.Add(isNemzetisegiOraString);
currentTantargyfelosztasDataList.Add(mebizasiOraszamString);
importData.Add(currentTantargyfelosztasDataList);
}
}
}
return importData;
}
}
public void SetImportCo(List<List<string>> importData, int importMuvelet, int feladatellatasiHelyId, int tantargyfelosztasImportTipus)
{
TantargyfelosztasImportCo importCo = GetImportCoFromImportData(importData, tantargyfelosztasImportTipus, feladatellatasiHelyId);
importCo.ImportMuvelet = importMuvelet;
SetNemImportalhatoSorokByValidation(importCo);
SetOraszamSumAndRemoveDuplicates(importCo);
//NOTE: Azért van szükség Dictionary-kre, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> tantargyCompareHashImportItemCompareCoDictionary = GetTantargyCompareHashImportItemCompareCoDictionary();
Dictionary<string, ImportItemCompareCo> osztalyCompareHashImportItemCompareCoDictionary = GetOsztalyCompareHashImportItemCompareCoDictionary();
Dictionary<string, ImportItemCompareCo> csoportCompareHashImportItemCompareCoDictionary = GetCsoportCompareHashImportItemCompareCoDictionary();
Dictionary<string, ImportItemCompareCo> tantargyfelosztasCompareHashImportItemCompareCoDictionary = GetTantargyfelosztasCompareHashImportItemCompareCoDictionary(importCo.GetBaseImportItemCoList());
foreach (TantargyfelosztasImportItemCo importItem in importCo.MainImportItemList)
{
SetOperationTantargy(importItem, tantargyCompareHashImportItemCompareCoDictionary);
SetOperationOsztaly(importItem, osztalyCompareHashImportItemCompareCoDictionary);
SetOperationCsoport(importItem, csoportCompareHashImportItemCompareCoDictionary);
SetOperationTantargyfelosztas(importItem, tantargyfelosztasCompareHashImportItemCompareCoDictionary, importCo);
}
//NOTE: Azokat a sorokat, amelyek bekerültek a NemImportalhatoItemList-be, azokat kiveszzük a MainImportItemList-ből!
importCo.MainImportItemList.RemoveRange(importCo.NemImportalhatoItemList);
var tantargyImportJsonItemList = new List<TantargyImportJsonItemCo>();
var osztalyCsoportImportJsonItemList = new List<OsztalyCsoportImportJsonItemCo>();
var osztalyImportJsonItemList = new List<OsztalyImportJsonItemCo>();
var csoportImportJsonItemList = new List<CsoportImportJsonItemCo>();
var mainImportJsonItemList = new List<TantargyfelosztasImportJsonItemCo>();
foreach (TantargyfelosztasImportItemCo importItem in importCo.MainImportItemList)
{
if (tantargyImportJsonItemList.All(x => x.Nev.ToComparableString() != importItem.TantargyNev.ToComparableString()) &&
importItem.OperationTantargy == (int)ImportItemOperationEnum.Insert)
{
tantargyImportJsonItemList.Add(new TantargyImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
}
var osztalyNevToCompare = importItem.OsztalyNev?.ToComparableString();
if (!string.IsNullOrWhiteSpace(osztalyNevToCompare) &&
!osztalyImportJsonItemList.Select(x => x.OsztalyCsoportNev.ToComparableString()).Contains(osztalyNevToCompare) &&
importItem.OperationOsztaly == (int)ImportItemOperationEnum.Insert)
{
osztalyImportJsonItemList.Add(new OsztalyImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
osztalyCsoportImportJsonItemList.Add(new OsztalyCsoportImportJsonItemCo(importItem, importItem.OperationOsztaly, importItem.OsztalyNev, importCo.FeladatellatasiHelyId, importCo.FeladatKategoriaId, TanevId, IntezmenyId, FelhasznaloId));
}
var csoportNevToCompare = importItem.CsoportNev?.ToComparableString();
if (!string.IsNullOrWhiteSpace(csoportNevToCompare) &&
!csoportImportJsonItemList.Select(x => x.OsztalyCsoportNev.ToComparableString()).Contains(csoportNevToCompare) &&
importItem.OperationCsoport == (int)ImportItemOperationEnum.Insert)
{
csoportImportJsonItemList.Add(new CsoportImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
osztalyCsoportImportJsonItemList.Add(new OsztalyCsoportImportJsonItemCo(importItem, importItem.OperationCsoport, importItem.CsoportNev, importCo.FeladatellatasiHelyId, importCo.FeladatKategoriaId, TanevId, IntezmenyId, FelhasznaloId));
}
//NOTE: Az egyik ".Value"-s érték sem lehet null, mert ide már csak olyan elem jön be, aminek jók az értékei!
mainImportJsonItemList.Add(
new TantargyfelosztasImportJsonItemCo(
importItem,
importItem.CompareHash,
importItem.OraszamSum,
importItem.Tuloraszam.Value,
importItem.IsOsszevontOra.Value,
importItem.IsNemzetisegiOra.Value,
importItem.MegbizasiOraszam.Value, TanevId, IntezmenyId, FelhasznaloId
)
);
}
importCo.TantargyImportJsonItemList = tantargyImportJsonItemList;
importCo.OsztalyCsoportImportJsonItemList = osztalyCsoportImportJsonItemList;
importCo.OsztalyImportJsonItemList = osztalyImportJsonItemList;
importCo.CsoportImportJsonItemList = csoportImportJsonItemList;
importCo.MainImportJsonItemList = mainImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(TantargyfelosztasImportCo importCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate(importCo.FeladatellatasiHelyCo);
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (TantargyfelosztasImportItemCo 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 SetOraszamSumAndRemoveDuplicates(TantargyfelosztasImportCo importCo)
{
var mainImportItemList = new List<TantargyfelosztasImportItemCo>();
foreach (TantargyfelosztasImportItemCo mainImportItem in importCo.MainImportItemList)
{
//NOTE: Az Oraszam.Value nem lehet null, mert ide már csak olyan elem jön be, aminek jók az értékei!
double oraszam = mainImportItem.Oraszam.Value;
if (mainImportItemList.Any(x => x.CompareHash == mainImportItem.CompareHash))
{
mainImportItemList.Single(x => x.CompareHash == mainImportItem.CompareHash).OraszamSum += oraszam;
}
else
{
mainImportItem.OraszamSum = oraszam;
mainImportItemList.Add(mainImportItem);
}
}
importCo.MainImportItemList = mainImportItemList;
}
private static void SetOperationTantargyfelosztas(TantargyfelosztasImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, TantargyfelosztasImportCo 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 az import művelet DeleteAndInsert és a db-ből jövő adat Importalt(a nem importáltakat egyelőre nem töröljük), akkor Insert, mert töröljük a korábbi elemeket és újra be kell szúrni!
if (importMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && importItemCompareCo.Importalt)
{
importItem.Operation = (int)ImportItemOperationEnum.Insert;
}
//NOTE: ...ha nincs törlés, akkor...
else
{
//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 vagy DeleteAndInsert műveletnél. A DeleteAndInsert csak akkor fut be ide, ha az elem nem importált.)!
else
{
importItem.ErrorList.Add(ImportExportCommonResource.NemImportalhatoMertMarSzerepelAzAdatbazisban);
importCo.NemImportalhatoItemList.Add(importItem);
}
}
}
}
public TantargyfelosztasImportCo GetImportCoFromImportData(List<List<string>> importData, int tantargyfelosztasImportTipus, int feladatellatasiHelyId)
{
List<AlkalmazottItemCo> tanarCoList = null;
List<OsztalyItemCo> osztalyCoList = null;
List<CsoportItemCo> csoportCoList = null;
FeladatEllatasiHelyCO feladatellatasiHelyCo = null;
int feladatKategoriaId = -1;
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
tanarCoList = new AlkalmazottHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetAlkalmazottCoList();
osztalyCoList = new OsztalyHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetOsztalyCoList();
csoportCoList = new CsoportHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetCsoportCoList();
feladatellatasiHelyCo = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetFeladatEllatasiHelyAdatok(feladatellatasiHelyId);
feladatKategoriaId = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetFeladatKategoriaId(feladatellatasiHelyId);
});
var importCo = new TantargyfelosztasImportCo
{
TantargyfelosztasImportTipus = tantargyfelosztasImportTipus,
TanarCoList = tanarCoList,
OsztalyCoList = osztalyCoList,
CsoportCoList = csoportCoList,
FeladatellatasiHelyId = feladatellatasiHelyId,
FeladatellatasiHelyCo = feladatellatasiHelyCo,
FeladatKategoriaId = feladatKategoriaId
};
string csoportNevPrefix = $"{feladatellatasiHelyCo.MukodesiHelyNev} - {feladatellatasiHelyCo.OktatasiNevelesiFeladatNev} - ";
int lineNumber = 1;
foreach (List<string> importDataRow in importData.Skip(1))
{
var importItemCo = new TantargyfelosztasImportItemCo
{
LineNumber = lineNumber,
OsztalyNevImportData = importDataRow[ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly)],
CsoportNevImportData = importDataRow[ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport)],
TantargyNevImportData = importDataRow[ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy)],
OraszamImportData = importDataRow[ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameOraszam)],
TanarNevImportData = importDataRow[ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTanar)],
TuloraImportData = importDataRow[ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTulora)],
TtfOraszamKorrekcioImportData = importDataRow[ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTtfOraszamKorrekcio)],
NemzetisegiOraImportData = importDataRow[ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameNemzetisegiOra)],
MegbizasiOraszamImportData = importDataRow[ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameMegbizasiOraszam)]
};
if (!string.IsNullOrWhiteSpace(importItemCo.TanarNev))
{
var tanarList = tanarCoList.Where(x =>
x.FelhasznaloNyomtatasiNevComparableString == importItemCo.TanarNev?.ToComparableString() &&
(!importItemCo.TanarSzuletesiIdo.HasValue || importItemCo.TanarSzuletesiIdo == x.FelhasznaloSzuletesiIdo)).ToList();
if (tanarList.Count == 1)
{
importItemCo.TanarId = tanarList.Single().Id;
}
}
int? csoportTipusId;
if (tantargyfelosztasImportTipus == (int)TantargyfelosztasImportTipusEnum.FeladatfelosztasImport)
{
if (importItemCo.CsoportNev == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasSzakertoiBizottsagiTevekenyseg)
{
csoportTipusId = (int)CsoportTipusEnum.szakertoi_bizottsagi_tevekenyseg;
}
else if (importItemCo.CsoportNev == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasNevelesiTanacsadas)
{
csoportTipusId = (int)CsoportTipusEnum.nevelesi_tanacsadas;
}
else if (importItemCo.CsoportNev == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasKonduktivPedagogiaiEllatas)
{
csoportTipusId = (int)CsoportTipusEnum.konduktiv_pedagogiai_ellatas;
}
else if (importItemCo.CsoportNev == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasIskolapszichologiaiOvodapszichologiaiEllatas)
{
csoportTipusId = (int)CsoportTipusEnum.iskolapszichologiai_ovodapszichologiai_ellatas;
}
else if (importItemCo.CsoportNev == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasLogopediaiEllatas)
{
csoportTipusId = (int)CsoportTipusEnum.logopediai_ellatas;
}
else if (importItemCo.CsoportNev == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasGyogytestneveles)
{
csoportTipusId = (int)CsoportTipusEnum.gyogytestneveles;
}
else if (importItemCo.CsoportNev == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasGyogypedagogiaiTanacsadas)
{
csoportTipusId = (int)CsoportTipusEnum.gyogypedagogiai_tanacsadas_korai_fejlesztes_es_gondozas;
}
else if (importItemCo.CsoportNev == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasKiemeltenTehetsegesGyermekekTanulokGondozasa)
{
csoportTipusId = (int)CsoportTipusEnum.kiemelten_tehetseges_gyermekek_tanulok_gondozasa;
}
else if (importItemCo.CsoportNev == ImportExportTantargyfelosztasResource.ImportHeaderNameFeladatfelosztasTovabbtanulasiPalyavalasztasiTanacsadas)
{
csoportTipusId = (int)CsoportTipusEnum.tovabbtanulasi_palyavalasztasi_tanacsadas;
}
else
{
csoportTipusId = null;
}
//NOTE: Beállítjuk a csoportnévnek a feladatellátási hely nevét prefixként, amikor feladatfelosztást importálunk!
importItemCo.CsoportNevImportData = $"{csoportNevPrefix}{importItemCo.CsoportNevImportData}";
}
else
{
csoportTipusId = (int)CsoportTipusEnum.na;
}
importItemCo.CsoportTipusId = csoportTipusId;
string tantargyMd5HashInput = importItemCo.TantargyNev?.ToComparableString();
importItemCo.CompareHashTantargy = ImportExportHelper.GetMd5Hash(tantargyMd5HashInput);
if (!string.IsNullOrWhiteSpace(importItemCo.OsztalyNev))
{
string osztalyMd5HashInput = importItemCo.OsztalyNev.ToComparableString();
importItemCo.CompareHashOsztaly = ImportExportHelper.GetMd5Hash(osztalyMd5HashInput);
}
if (!string.IsNullOrWhiteSpace(importItemCo.CsoportNev))
{
string csoportMd5HashInput = importItemCo.CsoportNev.ToComparableString();
importItemCo.CompareHashCsoport = ImportExportHelper.GetMd5Hash(csoportMd5HashInput);
}
string tantargyfelosztasMd5HashInput =
importItemCo.OsztalyCsoportNev?.ToComparableString() +
importItemCo.TantargyNev?.ToComparableString() +
importItemCo.TanarNev?.ToComparableString();
if (importItemCo.TanarSzuletesiIdo.HasValue)
{
tantargyfelosztasMd5HashInput += importItemCo.TanarSzuletesiIdoString?.ToComparableString();
}
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(tantargyfelosztasMd5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
public MemoryStream GetTemplate(bool isSzakkepzo = false, bool isDualisEnabled = false)
{
var dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary(isFromSzervezet: isDualisEnabled, isSzakkepzo: isSzakkepzo);
MemoryStream memoryStream = ImportExportHelper.GetTemplate(ImportExportTantargyfelosztasResource.ImportDefaultSheetName, ImportHeaderListEgyszeru, dropDownColumnSourceDictionary);
return memoryStream;
}
public MemoryStream GetExport()
{
var dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary();
DataSet tantargyfelosztasDataSet = null;
List<AlkalmazottItemCo> tanarCoList = null;
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
tantargyfelosztasDataSet = dalHandler.TantargyFelosztas(GridParameters).GetTantargyFelosztasokKereses(tanevId: TanevId);
tanarCoList = new AlkalmazottHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetAlkalmazottCoList();
});
using (var workbook = new Workbook())
{
var worksheet = ImportExportHelper.GetWorksheetsWithDropDownFormula(workbook, ImportExportTantargyfelosztasResource.ImportDefaultSheetName, ExportHeaderListEgyszeru, dropDownColumnSourceDictionary);
int rowNumber = 1;
foreach (DataRow dataRow in tantargyfelosztasDataSet.Tables[0].AsEnumerable())
{
if (SDAConvert.ToBoolean(dataRow["IsOsztaly"], false))
{
worksheet.Cells[rowNumber, ExportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly)].Value = SDAConvert.ToString(dataRow["OsztalyCsoport"]) ?? string.Empty;
worksheet.Cells[rowNumber, ExportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport)].Value = string.Empty;
}
else
{
worksheet.Cells[rowNumber, ExportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly)].Value = SDAConvert.ToBoolean(dataRow["IsOsztalyBontottCsoport"], false) ? SDAConvert.ToString(dataRow["OsztalyBontottCsoportNev"]) : string.Empty;
worksheet.Cells[rowNumber, ExportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport)].Value = SDAConvert.ToString(dataRow["OsztalyCsoport"]) ?? string.Empty;
}
worksheet.Cells[rowNumber, ExportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy)].Value = SDAConvert.ToString(dataRow["Tantargy"]) ?? string.Empty;
worksheet.Cells[rowNumber, ExportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameOraszam)].Value = SDAConvert.ToDecimal(dataRow["Oraszam"]).ToString();
//NOTE: Erre azért van szükség, ha több egyforma nevű tanár szerepel az adatbázisban, akkor zárójelben mögé tesszük a születési dátumát az export-ban, hogy meg tudjuk őket különböztetni!
string tanarNev = SDAConvert.ToString(dataRow["Tanar"]) ?? string.Empty;
DateTime tanarSzuletesiIdo = SDAConvert.ToDateTime(dataRow["TanarSzuletesiIdo"]).Value;
if (tanarCoList.Count(x => x.FelhasznaloNyomtatasiNevComparableString == tanarNev.ToComparableString()) > 1)
{
var tanarSzuletesiIdoString = tanarSzuletesiIdo.ToString(Constants.ToStringPattern.HungarianDate);
tanarNev += $" ({tanarSzuletesiIdoString})";
}
worksheet.Cells[rowNumber, ExportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTanar)].Value = tanarNev;
worksheet.Cells[rowNumber, ExportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTulora)].Value = SDAConvert.ToDecimal(dataRow["TuloraSzam"]).ToString();
worksheet.Cells[rowNumber, ExportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTtfOraszamKorrekcio)].Value = SDAConvert.ToBooleanFromTF(dataRow["OsszevontOra"]).GetDisplayName();
worksheet.Cells[rowNumber, ExportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameNemzetisegiOra)].Value = SDAConvert.ToBooleanFromTF(dataRow["NemzetisegiOra"]).GetDisplayName();
worksheet.Cells[rowNumber, ExportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameMegbizasiOraszam)].Value = SDAConvert.ToDecimal(dataRow["MegbizasiOraszam"]).ToString();
rowNumber++;
}
MemoryStream memoryStream = SimpleExportLogic.GetWorkbookMemoryStream(workbook);
return memoryStream;
}
}
public MemoryStream GetNemImportalhatoSorokExport()
{
var dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary();
using (var workbook = new Workbook())
{
var worksheet = ImportExportHelper.GetWorksheetsWithDropDownFormula(workbook, ImportExportTantargyfelosztasResource.ImportDefaultSheetName, ImportHeaderListEgyszeru, dropDownColumnSourceDictionary);
int rowNumber = 1;
foreach (TantargyfelosztasImportItemCo co in ImportCo.NemImportalhatoItemList)
{
worksheet.Cells[rowNumber, ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly)].Value = co.OsztalyNevImportData;
worksheet.Cells[rowNumber, ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport)].Value = co.CsoportNevImportData;
worksheet.Cells[rowNumber, ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy)].Value = co.TantargyNevImportData;
worksheet.Cells[rowNumber, ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameOraszam)].Value = co.OraszamImportData;
worksheet.Cells[rowNumber, ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTanar)].Value = co.TanarNevImportData;
worksheet.Cells[rowNumber, ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTulora)].Value = co.TuloraImportData;
worksheet.Cells[rowNumber, ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameTtfOraszamKorrekcio)].Value = co.TtfOraszamKorrekcioImportData;
worksheet.Cells[rowNumber, ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameNemzetisegiOra)].Value = co.NemzetisegiOraImportData;
worksheet.Cells[rowNumber, ImportHeaderListEgyszeru.GetKeyByUniqueValue(ImportExportTantargyfelosztasResource.ImportHeaderNameMegbizasiOraszam)].Value = co.MegbizasiOraszamImportData;
Cell errorCell = worksheet.Cells[rowNumber, ImportHeaderListEgyszeru.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> { ImportHeaderListEgyszeru.Count } }
};
MemoryStream memoryStream = SimpleExportLogic.GetWorkbookMemoryStream(workbook, sheetCodeNameAndColumnsToWrapIndexDictionary);
return memoryStream;
}
}
public void Import(object importJsonObject, int importMuvelet)
{
string importJson = JsonConvert.SerializeObject(importJsonObject);
bool isTorles = importMuvelet == (int)ImportMuveletEnum.DeleteAndInsert;
Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.ImportExportDal().TantargyfelosztasImport(IntezmenyId, TanevId, FelhasznaloId, importJson, isTorles));
}
private Dictionary<string, IList<string>> GetDefaultDropDownColumnSourceDictionary(bool isFromSzervezet = false, bool isSzakkepzo = false)
{
//NOTE: Create dropdown lists
var logicalColumnDictionary = new Dictionary<string, IList<string>>
{
{ ImportExportTantargyfelosztasResource.ImportHeaderNameTtfOraszamKorrekcio, EnumExtensions.GetEnumDisplayNameList<IgenNemEnum>(TanevId) },
{ ImportExportTantargyfelosztasResource.ImportHeaderNameNemzetisegiOra, EnumExtensions.GetEnumDisplayNameList<IgenNemEnum>(TanevId) }
};
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>(logicalColumnDictionary);
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var helper = new ImportExportHelper(new DalHandlerConnectionType(ConnectionType, dalHandler));
dropDownColumnSourceDictionary.Add(ImportExportTantargyfelosztasResource.ImportHeaderNameOsztaly, helper.GetOsztalyList());
dropDownColumnSourceDictionary.Add(ImportExportTantargyfelosztasResource.ImportHeaderNameCsoport, helper.GetCsoportList());
dropDownColumnSourceDictionary.Add(ImportExportTantargyfelosztasResource.ImportHeaderNameTantargy, helper.GetTantargyList(isFromSzervezet: isFromSzervezet, isSzakkepzo: isSzakkepzo));
dropDownColumnSourceDictionary.Add(ImportExportTantargyfelosztasResource.ImportHeaderNameTanar, helper.GetTanarList(true));
});
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,289 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Linq;
using System.Runtime.Caching;
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.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class TanuloBesorolasImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloNeve },
{ 01, ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloOktatasiAzonosito },
{ 02, ImportExportTanuloBesorolasResource.ImportHeaderNameOsztalyCsoport }
};
public TanuloBesorolasImportCo ImportCo
{
get => (TanuloBesorolasImportCo)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 TanuloBesorolasImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(TanuloBesorolasImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, DateTime besorolasDatum, bool? isJuttatasUpdate, bool isIntezmenySzakkepzoJuttatas, DateTime? kisorolasDatum, bool isSzakkepzoIntezmeny)
{
TanuloBesorolasImportCo importCo = GetImportCoFromImportData(importData, besorolasDatum, kisorolasDatum, isSzakkepzoIntezmeny);
importCo.ImportMuvelet = (int)ImportMuveletEnum.Insert;
SetNemImportalhatoSorokByValidation(importCo);
SetOperationAndNemImportalhatoSorokByOperation(importCo);
var tanuloBesorolasTanuloTanugyiAdatokImportJsonItemList = new List<TanuloBesorolasTanuloTanugyiAdatokImportJsonItemCo>();
var mainImportJsonItemList = new List<TanuloBesorolasImportJsonItemCo>();
foreach (TanuloBesorolasImportItemCo importItem in importCo.MainImportItemList)
{
if (importItem.IsOsztaly.Value)
{
if (!importItem.Tanulo.TantervId.IsEntityId())
{
importItem.Tanulo.TantervId = new TantervHelper(ConnectionType).GetTop1TantervId();
}
tanuloBesorolasTanuloTanugyiAdatokImportJsonItemList.Add(new TanuloBesorolasTanuloTanugyiAdatokImportJsonItemCo(importItem.OsztalyCsoportId.Value, importItem.Tanulo, TanevId, IntezmenyId, FelhasznaloId));
}
mainImportJsonItemList.Add(new TanuloBesorolasImportJsonItemCo(importItem, besorolasDatum, kisorolasDatum, TanevId, IntezmenyId, FelhasznaloId));
}
importCo.TanuloBesorolasTanuloTanugyiAdatokImportJsonItemList = tanuloBesorolasTanuloTanugyiAdatokImportJsonItemList;
importCo.MainImportJsonItemList = mainImportJsonItemList
.OrderByDescending(x => x.IsOsztaly)
.ThenBy(x => x.TanuloVezeteknev)
.ThenBy(x => x.TanuloKeresztnev)
.ThenBy(x => x.OsztalyCsoportNev)
.ToList();
importCo.IsJuttatasUpdate = isJuttatasUpdate;
importCo.IsIntezmenySzakkepzoJuttatas = isIntezmenySzakkepzoJuttatas;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(TanuloBesorolasImportCo importCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate();
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (TanuloBesorolasImportItemCo 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 void SetOperationAndNemImportalhatoSorokByOperation(TanuloBesorolasImportCo importCo)
{
//NOTE: Azért van szükség Dictionary-re, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary = GetCompareHashImportItemCompareCoDictionary(importCo.TanuloCsoportCoList);
foreach (TanuloBesorolasImportItemCo importItem in importCo.MainImportItemList)
{
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 hozzá kell adni a nem NemImportalhatoItemList-hez és jelezni, hogy már szerepel az adatbázisban!
else
{
importItem.ErrorList.Add(ImportExportCommonResource.NemImportalhatoMertMarSzerepelAzAdatbazisban);
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 TanuloBesorolasImportCo GetImportCoFromImportData(List<List<string>> importData, DateTime besorolasDatum, DateTime? kisorolasDatum, bool isSzakkepzoIntezmeny)
{
var importCo = new TanuloBesorolasImportCo();
importCo.BesorolasDatum = besorolasDatum;
importCo.KisorolasDatum = kisorolasDatum;
importCo.TanevUtolsoNapja = new TanevHelper(ConnectionType).GetTanevInfo().UtolsoNap;
List<TanuloItemCo> tanuloCoList = new TanuloHelper(ConnectionType).GetTanuloCoList();
importCo.OsztalyCsoportCoList = new OsztalyCsoportHelper(ConnectionType).GetOsztalyCsoportCoList();
var tanuloCsoportHelper = new TanuloCsoportHelper(ConnectionType);
importCo.TanuloCsoportCoList = tanuloCsoportHelper.GetTanuloCsoportCoList();
importCo.JogviszonyLimits = tanuloCsoportHelper.GetJogviszonyLimits();
int lineNumber = 1;
foreach (List<string> importDataRow in importData.Skip(1))
{
var importItemCo = new TanuloBesorolasImportItemCo(isSzakkepzoIntezmeny)
{
LineNumber = lineNumber,
TanuloNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloNeve)],
TanuloOktatasiAzonositoImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloOktatasiAzonosito)],
OsztalyCsoportImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloBesorolasResource.ImportHeaderNameOsztalyCsoport)]
};
importItemCo.Tanulo = tanuloCoList.SingleOrDefault(x =>
x.FelhasznaloNyomtatasiNevComparableString == importItemCo.TanuloNeveImportData?.ToComparableString() &&
x.FelhasznaloOktatasiAzonositoComparableString == importItemCo.TanuloOktatasiAzonosito?.ToComparableString());
OsztalyCsoportItemCo osztalyCsoport = importCo.OsztalyCsoportCoList.SingleOrDefault(x =>
x.NevComparableString == importItemCo.OsztalyCsoportNev?.ToComparableString());
importItemCo.OsztalyCsoportId = osztalyCsoport?.Id;
importItemCo.IsOsztaly = osztalyCsoport?.IsOsztaly;
//NOTE: A tanuló csoport lista további validációkhoz kellenek, ha nincs tanuló vagy osztály csoport id, akkor nincs értelme feltölteni a listát!
if (importItemCo.TanuloId.IsEntityId() && importItemCo.OsztalyCsoportId.IsEntityId())
{
importItemCo.TanuloOsztalyCsoportIdList = importCo.TanuloCsoportCoList.Where(x => x.FelhasznaloId == importItemCo.TanuloId.Value).Select(x => x.OsztalyCsoportId).ToList();
}
string md5HashInput =
importItemCo.TanuloId +
importItemCo.TanuloNeveImportData?.ToComparableString() +
importItemCo.TanuloOktatasiAzonosito?.ToComparableString() +
importItemCo.OsztalyCsoportId +
importItemCo.OsztalyCsoportNev?.ToComparableString();
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
#region Template
public MemoryStream GetTemplate()
{
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TanuloCsoportItemCo>(TanuloCsoportItemCo.TanuloCsoportTemplateExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetTemplate(ImportExportTanuloBesorolasResource.ImportDefaultSheetName, simpleExportColumnCos);
}
#endregion Template
#region Export
public MemoryStream GetExport()
{
List<TanuloCsoportItemCo> coList = new TanuloCsoportHelper(ConnectionType).GetTanuloCsoportCoList().OrderBy(x => x.FelhasznaloVezeteknev).ThenBy(x => x.FelhasznaloKeresztnev).ThenBy(x => x.OsztalyCsoportNev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TanuloCsoportItemCo>(TanuloCsoportItemCo.TanuloCsoportExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetExport(ImportExportTanuloBesorolasResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
public MemoryStream GetNemImportalhatoSorokExport()
{
List<TanuloBesorolasImportItemCo> coList = ImportCo.NemImportalhatoItemList;
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TanuloBesorolasImportItemCo>(TanuloBesorolasImportItemCo.NemImportalhatoSorokExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return ImportExportHelper.NemImportalhatoSorokExport(ImportExportTanuloBesorolasResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
#endregion Export
private Dictionary<string, ImportItemCompareCo> GetCompareHashImportItemCompareCoDictionary(List<TanuloCsoportItemCo> coList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (TanuloCsoportItemCo co in coList)
{
string md5HashInput =
co.FelhasznaloId +
co.FelhasznaloNyomtatasiNevComparableString +
co.FelhasznaloOktatasiAzonositoComparableString +
co.OsztalyCsoportId +
co.OsztalyCsoportNevComparableString +
$"{co.BelepesDatum.ToShortDateString()} - {co.KilepesDatum?.ToShortDateString()}";
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;
}
public void Import(object importJsonObject, DateTime besorolasDatum)
{
var importJson = JsonConvert.SerializeObject(importJsonObject);
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
dalHandler.ImportExportDal().TanuloBesorolasImport(IntezmenyId, TanevId, FelhasznaloId, importJson, besorolasDatum);
if (ImportCo.IsIntezmenySzakkepzoJuttatas && ImportCo.IsJuttatasUpdate.HasValue && ImportCo.IsJuttatasUpdate.Value)
{
var dal = dalHandler.JuttatasDAL();
dal.UpdateTanulokSzakkepzesiJuttatasok(TanevId, FelhasznaloId, (int)JuttatasTipusEnum.szakkepzesi_juttatas);
dal.UpdateTanulokSzakkepzesiJuttatasok(TanevId, FelhasznaloId, (int)JuttatasTipusEnum.apaczaiosztondij);
}
});
}
private Dictionary<string, IList<string>> GetDefaultDropDownColumnSourceDictionary()
{
//NOTE: Create dropdown lists
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var helper = new ImportExportHelper(new DalHandlerConnectionType(ConnectionType, dalHandler));
dropDownColumnSourceDictionary.Add(ImportExportTanuloBesorolasResource.ImportHeaderNameTanuloNeve, helper.GetTanuloList());
dropDownColumnSourceDictionary.Add(ImportExportTanuloBesorolasResource.ImportHeaderNameOsztalyCsoport, helper.GetOsztalyCsoportList());
});
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,339 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
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.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class TanuloErtekelesMondatbankImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameRovidNev },
{ 01, ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameSzoveg },
{ 02, ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTanuloErtekelesTipus },
{ 03, ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameEvfolyamTipus },
{ 04, ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTantargy }
};
public static Dictionary<int, string> ExportHeaderList => new Dictionary<int, string>(ImportHeaderList);
public TanuloErtekelesMondatbankImportCo ImportCo
{
get => (TanuloErtekelesMondatbankImportCo)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 TanuloErtekelesMondatbankImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(TanuloErtekelesMondatbankImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, int importMuvelet)
{
TanuloErtekelesMondatbankImportCo importCo = GetImportCoFromImportData(importData);
importCo.ImportMuvelet = importMuvelet;
SetNemImportalhatoSorokByValidation(importCo);
SetOperationAndNemImportalhatoSorokByOperation(importCo);
var mainImportJsonItemList = new List<TanuloErtekelesMondatbankImportJsonItemCo>(importCo.MainImportItemList.Select(x => new TanuloErtekelesMondatbankImportJsonItemCo(x, TanevId, IntezmenyId, FelhasznaloId)));
importCo.MainImportJsonItemList = mainImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(TanuloErtekelesMondatbankImportCo importCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate();
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (TanuloErtekelesMondatbankImportItemCo 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 void SetOperationAndNemImportalhatoSorokByOperation(TanuloErtekelesMondatbankImportCo importCo)
{
int importMuvelet = importCo.ImportMuvelet;
//NOTE: Azért van szükség Dictionary-re, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary = GetCompareHashImportItemCompareCoDictionary(importCo.TanuloErtekelesMondatbankCoList);
foreach (TanuloErtekelesMondatbankImportItemCo importItem in importCo.MainImportItemList)
{
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 az import művelet DeleteAndInsert, akkor Insert, mert töröljük a korábbi elemeket (importált és nem importált) és újra be kell szúrni!
if (importMuvelet == (int)ImportMuveletEnum.DeleteAndInsert)
{
importItem.Operation = (int)ImportItemOperationEnum.Insert;
}
//NOTE: ...ha nincs törlés, akkor...
else
{
//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 vagy DeleteAndInsert műveletnél. A DeleteAndInsert csak akkor fut be ide, ha az elem nem importált.)!
else
{
importItem.ErrorList.Add(ImportExportCommonResource.NemImportalhatoMertMarSzerepelAzAdatbazisban);
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 TanuloErtekelesMondatbankImportCo GetImportCoFromImportData(List<List<string>> importData)
{
var importCo = new TanuloErtekelesMondatbankImportCo
{
TanuloErtekelesMondatbankCoList = new TanuloErtekelesMondatbankHelper(ConnectionType).GetTanuloErtekelesMondatbankCoList()
};
int lineNumber = 1;
foreach (List<string> importDataRow in importData.Skip(1))
{
var importItemCo = new TanuloErtekelesMondatbankImportItemCo
{
LineNumber = lineNumber,
RovidNevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameRovidNev)],
SzovegImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameSzoveg)],
TanuloErtekelesTipusImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTanuloErtekelesTipus)],
EvfolyamTipusImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameEvfolyamTipus)],
TantargyImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTantargy)],
};
// NOTE: Az értékelés típus felhasználó által bővíthető, ezért a DB-ből kell lekérdeznünk az értékeket.
KeyValuePair<int, string> ertekelesTipus = EnumExtensions.GetAdatszotarDictElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.ErtekelesTipus).SingleOrDefault(x => x.Value == importItemCo.TanuloErtekelesTipusNev);
importItemCo.TanuloErtekelesTipusId = !ertekelesTipus.Equals(default(KeyValuePair<int, string>)) ? ertekelesTipus.Key : (int?)null;
importItemCo.EvfolyamTipusId = EnumExtensions.EnumToDictionary<EvfolyamTipusEnum>(TanevId).SingleOrDefault(x => x.Value == importItemCo.EvfolyamTipusNev).Key.ToNullableInt();
var tantargyCoList = new TantargyHelper(ConnectionType).GetTantargyCoList();
var tantargyNevToCompare = importItemCo.TantargyNev?.ToComparableString();
var tantargy = tantargyCoList.SingleOrDefault(x => x.NevComparableString == tantargyNevToCompare);
importItemCo.TantargyId = tantargy?.Id;
if (tantargyNevToCompare == TanuloErtekelesResource.Magatartas.ToComparableString())
{
importItemCo.TipusId = (int)ErtMondatbankTipusEnum.Magatartas;
}
else if (tantargyNevToCompare == TanuloErtekelesResource.Szorgalom.ToComparableString())
{
importItemCo.TipusId = (int)ErtMondatbankTipusEnum.Szorgalom;
}
else
{
importItemCo.TipusId = (int)ErtMondatbankTipusEnum.Tantargy;
}
string md5HashInput =
importItemCo.RovidNev?.ToComparableString() +
importItemCo.Szoveg?.ToComparableString() +
importItemCo.TanuloErtekelesTipusNev?.ToComparableString() +
importItemCo.EvfolyamTipusNev?.ToComparableString() +
importItemCo.TantargyNev?.ToComparableString();
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
public MemoryStream GetTemplate(bool isSzakkepzo = false, bool isFromSzervezet = false)
{
var dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary(isSzakkepzo: isSzakkepzo, isFromSzervezet: isFromSzervezet);
MemoryStream memoryStream = ImportExportHelper.GetTemplate(ImportExportTanuloErtekelesMondatbankResource.ImportDefaultSheetName, ImportHeaderList, dropDownColumnSourceDictionary);
return memoryStream;
}
public MemoryStream GetExport(bool isSzakkepzo = false)
{
var dropDownColumnSourceDictionary = GetDefaultDropDownColumnSourceDictionary(isSzakkepzo: isSzakkepzo);
List<TanuloErtekelesMondatbankItemCo> coList = new TanuloErtekelesMondatbankHelper(ConnectionType).GetTanuloErtekelesMondatbankCoList();
using (var workbook = new Workbook())
{
var worksheet = ImportExportHelper.GetWorksheetsWithDropDownFormula(workbook, ImportExportTanuloErtekelesMondatbankResource.ImportDefaultSheetName, ExportHeaderList, dropDownColumnSourceDictionary);
var columnToWrapIndexList = new List<int>();
int rowNumber = 1;
foreach (TanuloErtekelesMondatbankItemCo co in coList.OrderBy(d => d.RovidNev).ThenBy(d => d.Szoveg))
{
worksheet.Cells[rowNumber, ExportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameRovidNev)].Value = co.RovidNev;
int szovegCellColumnIndex = ExportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameSzoveg);
Cell szovegCell = worksheet.Cells[rowNumber, szovegCellColumnIndex];
szovegCell.HtmlString = co.Szoveg;
szovegCell.SetTextWrap();
columnToWrapIndexList.Add(szovegCellColumnIndex);
worksheet.Cells[rowNumber, ExportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTanuloErtekelesTipus)].Value = co.TanuloErtekelesTipusNev;
worksheet.Cells[rowNumber, ExportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameEvfolyamTipus)].Value = co.EvfolyamTipusNev;
worksheet.Cells[rowNumber, ExportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTantargy)].Value = co.TantargyNev;
rowNumber++;
}
var sheetCodeNameAndColumnsToWrapIndexDictionary = new Dictionary<string, List<int>>
{
{ workbook.Worksheets[0].CodeName, columnToWrapIndexList }
};
MemoryStream memoryStream = SimpleExportLogic.GetWorkbookMemoryStream(workbook, sheetCodeNameAndColumnsToWrapIndexDictionary);
return memoryStream;
}
}
public MemoryStream GetNemImportalhatoSorokExport()
{
using (var workbook = new Workbook())
{
var worksheet = ImportExportHelper.GetWorksheetsWithDropDownFormula(workbook, ImportExportTanuloErtekelesMondatbankResource.ImportDefaultSheetName, ImportHeaderList);
var columnToWrapIndexList = new List<int>();
int rowNumber = 1;
foreach (TanuloErtekelesMondatbankImportItemCo co in ImportCo.NemImportalhatoItemList)
{
worksheet.Cells[rowNumber, ExportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameRovidNev)].Value = co.RovidNev;
int szovegCellColumnIndex = ExportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameSzoveg);
Cell szovegCell = worksheet.Cells[rowNumber, szovegCellColumnIndex];
szovegCell.Value = co.Szoveg;
szovegCell.SetTextWrap();
columnToWrapIndexList.Add(szovegCellColumnIndex);
worksheet.Cells[rowNumber, ExportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTanuloErtekelesTipus)].Value = co.TanuloErtekelesTipusNev;
worksheet.Cells[rowNumber, ExportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameEvfolyamTipus)].Value = co.EvfolyamTipusNev;
worksheet.Cells[rowNumber, ExportHeaderList.GetKeyByUniqueValue(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTantargy)].Value = co.TantargyNev;
int errorCellColumnIndex = ImportHeaderList.Count;
Cell errorCell = worksheet.Cells[rowNumber, ImportHeaderList.Count];
errorCell.Value = string.Join(Environment.NewLine, co.ErrorList);
errorCell.SetTextWrap();
columnToWrapIndexList.Add(errorCellColumnIndex);
rowNumber++;
}
var sheetCodeNameAndColumnsToWrapIndexDictionary = new Dictionary<string, List<int>>
{
{ workbook.Worksheets[0].CodeName, columnToWrapIndexList }
};
MemoryStream memoryStream = SimpleExportLogic.GetWorkbookMemoryStream(workbook, sheetCodeNameAndColumnsToWrapIndexDictionary);
return memoryStream;
}
}
private Dictionary<string, ImportItemCompareCo> GetCompareHashImportItemCompareCoDictionary(List<TanuloErtekelesMondatbankItemCo> coList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (TanuloErtekelesMondatbankItemCo co in coList)
{
string md5HashInput =
co.RovidNevComparableString +
co.SzovegComparableString +
co.TanuloErtekelesTipusNevComparableString +
co.EvfolyamTipusNevComparableString +
co.TantargyNevComparableString;
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, IList<string>> GetDefaultDropDownColumnSourceDictionary(bool isSzakkepzo = false, bool isFromSzervezet = false)
{
//NOTE: Create dropdown lists
var logicalColumnDictionary = new Dictionary<string, IList<string>>();
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>(logicalColumnDictionary);
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var helper = new ImportExportHelper(new DalHandlerConnectionType(ConnectionType, dalHandler));
dropDownColumnSourceDictionary.Add(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTanuloErtekelesTipus, helper.GetTanuloErtekelesTipusList());
dropDownColumnSourceDictionary.Add(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameEvfolyamTipus, helper.GetEvfolyamTipusList());
dropDownColumnSourceDictionary.Add(ImportExportTanuloErtekelesMondatbankResource.ImportHeaderNameTantargy, helper.GetTantargyList(true, isFromSzervezet: isFromSzervezet, isSzakkepzo: isSzakkepzo));
});
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,502 @@
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;
}
}
}

View file

@ -0,0 +1,355 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Linq;
using System.Runtime.Caching;
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.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class TanulokElerhetosegiAdataikImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloNeve },
{ 01, ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloOktatasiAzonosito },
{ 02, ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloTelefonszam },
{ 03, ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTelefonszamAlapertelmezett },
{ 04, ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTelefonszamTipusa },
{ 05, ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloEmailCim },
{ 06, ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameEmailAlapertelmezett },
{ 07, ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameEmailTipus }
};
public TanulokElerhetosegiAdataikImportCo ImportCo
{
get => (TanulokElerhetosegiAdataikImportCo)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 TanulokElerhetosegiAdataikImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(TanulokElerhetosegiAdataikImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, int importMuvelet, bool isSzakkepzoIntezmeny)
{
TanulokElerhetosegiAdataikImportCo importCo = GetImportCoFromImportData(importData, isSzakkepzoIntezmeny);
importCo.ImportMuvelet = importMuvelet;
SetNemImportalhatoSorokByValidation(importCo);
List<TanuloItemCo> coList = importCo.TanuloCoList;
Dictionary<string, ImportItemCompareCo> telefonCompareHashImportItemCompareCoDictionary = GetTelefonCompareHashImportItemCompareCoDictionary(coList);
Dictionary<string, ImportItemCompareCo> emailCompareHashImportItemCompareCoDictionary = GetEmailCompareHashImportItemCompareCoDictionary(coList);
foreach (TanulokElerhetosegiAdataikImportItemCo importItem in importCo.MainImportItemList)
{
if (!string.IsNullOrWhiteSpace(importItem.Telefonszam))
{
SetOperationTelefon(importItem, telefonCompareHashImportItemCompareCoDictionary, importCo.ImportMuvelet);
}
if (!string.IsNullOrWhiteSpace(importItem.EmailCim))
{
SetOperationEmail(importItem, emailCompareHashImportItemCompareCoDictionary, importCo.ImportMuvelet);
}
}
importCo.MainImportItemList.RemoveRange(importCo.NemImportalhatoItemList);
var telefonImportJsonItemList = new List<TelefonTanuloImportJsonItemCo>();
var emailImportJsonItemList = new List<EmailTanuloImportJsonItemCo>();
foreach (TanulokElerhetosegiAdataikImportItemCo importItem in importCo.MainImportItemList)
{
if (!string.IsNullOrWhiteSpace(importItem.Telefonszam))
{
telefonImportJsonItemList.Add(new TelefonTanuloImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
}
if (!string.IsNullOrWhiteSpace(importItem.EmailCim))
{
emailImportJsonItemList.Add(new EmailTanuloImportJsonItemCo(importItem, TanevId, IntezmenyId, FelhasznaloId));
}
}
importCo.TelefonTanuloImportJsonItemList = telefonImportJsonItemList;
importCo.EmailTanuloImportJsonItemList = emailImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(TanulokElerhetosegiAdataikImportCo importCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate();
foreach (TanulokElerhetosegiAdataikImportItemCo 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);
}
importCo.MainImportItemList.RemoveRange(importCo.NemImportalhatoItemList);
}
private static void SetOperationTelefon(TanulokElerhetosegiAdataikImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, int importMuvelet)
{
var compareHash = importItem.CompareHashTelefon;
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationTelefon = (int)ImportItemOperationEnum.Insert;
}
else
{
ImportItemCompareCo importItemCompareCo = compareHashImportItemCompareCoDictionary[compareHash];
if (importMuvelet == (int)ImportMuveletEnum.InsertAndUpdate)
{
importItem.TelefonId = importItemCompareCo.Id;
importItem.OperationTelefon = (int)ImportItemOperationEnum.Update;
}
}
}
private static void SetOperationEmail(TanulokElerhetosegiAdataikImportItemCo importItem, Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary, int importMuvelet)
{
var compareHash = importItem.CompareHashEmail;
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
importItem.OperationEmail = (int)ImportItemOperationEnum.Insert;
}
else
{
ImportItemCompareCo importItemCompareCo = compareHashImportItemCompareCoDictionary[compareHash];
if (importMuvelet == (int)ImportMuveletEnum.InsertAndUpdate)
{
importItem.EmailId = importItemCompareCo.Id;
importItem.OperationEmail = (int)ImportItemOperationEnum.Update;
}
}
}
private TanulokElerhetosegiAdataikImportCo GetImportCoFromImportData(List<List<string>> importData, bool isSzakkepzoIntezmeny)
{
var importCo = new TanulokElerhetosegiAdataikImportCo
{
TanuloCoList = new TanuloHelper(ConnectionType).GetTanuloCoList()
};
var lineNumber = 1;
foreach (var importDataRow in importData.Skip(1))
{
var importItemCo = new TanulokElerhetosegiAdataikImportItemCo(TanevId, isSzakkepzoIntezmeny)
{
LineNumber = lineNumber,
TanuloNeveImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloNeve)],
TanuloOktatasiAzonositoImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloOktatasiAzonosito)],
TanuloTelefonszamImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloTelefonszam)],
TelefonszamAlapertelmezettImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTelefonszamAlapertelmezett)],
TelefonszamTipusaImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTelefonszamTipusa)],
TanuloEmailCimImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTanuloEmailCim)],
EmailAlapertelmezettImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameEmailAlapertelmezett)],
EmailTipusImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameEmailTipus)]
};
importItemCo.FelhasznaloId = importCo.TanuloCoList.FirstOrDefault(x =>
x.FelhasznaloNyomtatasiNevComparableString == importItemCo.TanuloNeveImportData?.ToComparableString() &&
x.FelhasznaloOktatasiAzonositoComparableString == importItemCo.FelhasznaloOktatasiAzonosito?.ToComparableString())?.Id;
var telefonMd5HashInput = importItemCo.FelhasznaloId.ToString() + importItemCo.Telefonszam?.ToComparableString();
importItemCo.CompareHashTelefon = ImportExportHelper.GetMd5Hash(telefonMd5HashInput);
var emailMd5HashInput = importItemCo.FelhasznaloId.ToString() + importItemCo.EmailCim?.ToComparableString();
importItemCo.CompareHashEmail = ImportExportHelper.GetMd5Hash(emailMd5HashInput);
var tanuloMd5HashInput = importItemCo.FelhasznaloId.ToString();
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(tanuloMd5HashInput);
if (importItemCo.FelhasznaloId.IsEntityId())
{
var tanuloHelper = new TanuloHelper(ConnectionType);
importItemCo.IsVanAlapertelmezettEmail = tanuloHelper.IsTanulonakVanAlapertelmezettEmailCime(importItemCo.FelhasznaloId.Value);
importItemCo.IsVanAlapertelmezettTelefonszam = tanuloHelper.IsTanulonakVanAlapertelmezettTelefonszama(importItemCo.FelhasznaloId.Value);
}
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
#region Template
public MemoryStream GetTemplate()
{
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TanuloItemCo>(TanuloItemCo.TanulokElerhetosegiAdataikTemplateExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetTemplate(ImportExportTanulokElerhetosegiAdataikResource.ImportDefaultSheetName, simpleExportColumnCos);
}
#endregion Template
#region Export
public MemoryStream GetExport()
{
List<TanuloItemCo> coList = new TanuloHelper(ConnectionType).GetTanuloCoList().OrderBy(t => t.FelhasznaloNyomtatasiNev).ToList();
SetTelefonszamEsEmail(coList);
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TanuloItemCo>(TanuloItemCo.TanulokElerhetosegiAdataikTemplateExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetExport(ImportExportTanulokElerhetosegiAdataikResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
private void SetTelefonszamEsEmail(List<TanuloItemCo> tanuloItemCoList)
{
foreach (var tanuloItemCo in tanuloItemCoList)
{
if (tanuloItemCo.TelefonList != null && tanuloItemCo.TelefonList.Any())
{
var telefon = tanuloItemCo.TelefonList.FirstOrDefault(x => x.IsAlapertelmezett) ?? tanuloItemCo.TelefonList.FirstOrDefault();
tanuloItemCo.Telefonszam = telefon?.Telefonszam ?? string.Empty;
tanuloItemCo.IsAlapertelmezettTelefonszam = telefon?.IsAlapertelmezett == true ? Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Igen) : Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Nem);
tanuloItemCo.TelefonszamTipusNev = telefon?.TipusNev ?? TelefonTipusEnum.Ismeretlen.GetDisplayName(TanevId);
}
if (tanuloItemCo.EmailList != null && tanuloItemCo.EmailList.Any())
{
var email = tanuloItemCo.EmailList.FirstOrDefault(x => x.IsAlapertelmezett) ?? tanuloItemCo.EmailList.FirstOrDefault();
tanuloItemCo.EmailCim = email?.EmailCim ?? string.Empty;
tanuloItemCo.IsAlapertelmezettEmailCim = email?.IsAlapertelmezett == true ? Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Igen) : Enum.GetName(typeof(IgenNemEnum), IgenNemEnum.Nem);
tanuloItemCo.EmailCimTipusNev = email?.TipusNev ?? EmailTipusEnum.Na.GetDisplayName(TanevId);
}
}
}
public MemoryStream GetNemImportalhatoSorokExport()
{
List<TanulokElerhetosegiAdataikImportItemCo> coList = ImportCo.NemImportalhatoItemList;
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TanulokElerhetosegiAdataikImportItemCo>(TanulokElerhetosegiAdataikImportItemCo.NemImportalhatoSorokExportAttributeId);
return ImportExportHelper.NemImportalhatoSorokExport(ImportExportTanulokElerhetosegiAdataikResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
#endregion Export
private Dictionary<string, ImportItemCompareCo> GetTelefonCompareHashImportItemCompareCoDictionary(List<TanuloItemCo> tanuloItemCoList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (TanuloItemCo tanuloItemCo in tanuloItemCoList)
{
foreach (TelefonItemCo telefonItemCo in tanuloItemCo.TelefonList)
{
string telefonMd5HashInput = tanuloItemCo.FelhasznaloId.ToString() + telefonItemCo.Telefonszam?.ToComparableString();
string compareHash = ImportExportHelper.GetMd5Hash(telefonMd5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = telefonItemCo.Id,
CompareHash = compareHash
};
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)
{
string emailMd5HashInput = tanuloItemCo.FelhasznaloId.ToString() + emailItemCo.EmailCim?.ToComparableString();
string compareHash = ImportExportHelper.GetMd5Hash(emailMd5HashInput);
var importItemCompareCo = new ImportItemCompareCo
{
Id = emailItemCo.Id,
CompareHash = compareHash
};
if (!compareHashImportItemCompareCoDictionary.ContainsKey(compareHash))
{
compareHashImportItemCompareCoDictionary.Add(compareHash, importItemCompareCo);
}
}
}
return compareHashImportItemCompareCoDictionary;
}
private Dictionary<string, IList<string>> GetDefaultDropDownColumnSourceDictionary()
{
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>()
{
{
ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTelefonszamAlapertelmezett,
EnumExtensions.GetEnumDisplayNameList<IgenNemEnum>(TanevId)
},
};
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
dropDownColumnSourceDictionary.Add(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameTelefonszamTipusa, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.TelefonTipus, new List<int> { (int)TelefonTipusEnum.PublikusTelefonszam }));
dropDownColumnSourceDictionary.Add(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameEmailAlapertelmezett, EnumExtensions.GetEnumDisplayNameList<IgenNemEnum>(TanevId));
dropDownColumnSourceDictionary.Add(ImportExportTanulokElerhetosegiAdataikResource.ImportHeaderNameEmailTipus, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.EmailTipus, new List<int> { (int)EmailTipusEnum.PublikusEmailcim }));
});
return dropDownColumnSourceDictionary;
}
public void Import(object importJsonObject, int importMuvelet, string tableNameList, IEnumerable<int> alapertelmezettEmailFelhasznaloIds, IEnumerable<int> alapertelmezettTelefonFelhasznaloIds, bool isSubTable = false)
{
string importJson = JsonConvert.SerializeObject(importJsonObject);
bool isTorles = importMuvelet == (int)ImportMuveletEnum.DeleteAndInsert;
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var importExportDal = dalHandler.ImportExportDal();
importExportDal.UpdateTanulokElerhetosegeiAlapertelmezett(FelhasznaloId, alapertelmezettEmailFelhasznaloIds, alapertelmezettTelefonFelhasznaloIds);
importExportDal.TanulokElerhetosegiAdataikImport(IntezmenyId, TanevId, FelhasznaloId, importJson, isTorles, isSubTable, tableNameList);
});
}
}
}

View file

@ -0,0 +1,294 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data;
using System.IO;
using System.Linq;
using System.Runtime.Caching;
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.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums.ImportExport;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers.ImportExport
{
public class TeremImportExportHelper : LogicBase
{
#region Fields
private readonly string _importObjectCacheKey;
#endregion Fields
#region Properties
public static Dictionary<int, string> ImportHeaderList => new Dictionary<int, string>
{
{ 00, ImportExportTeremResource.ImportHeaderNameHelyisegNev },
{ 01, ImportExportTeremResource.ImportHeaderNameJelleg },
{ 02, ImportExportTeremResource.ImportHeaderNameBefogadokepesseg },
{ 03, ImportExportTeremResource.ImportHeaderNameAlapterulet }
};
public TeremImportCo ImportCo
{
get => (TeremImportCo)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 TeremImportExportHelper(IConnectionType connectionType) : base(connectionType)
{
_importObjectCacheKey = $"{nameof(TeremImportCo)}_{IntezmenyId}_{FelhasznaloId}_ImportObjectCacheKey";
}
#endregion Constructors
public void SetImportCo(List<List<string>> importData, int importMuvelet, int mukodesiHelyId)
{
TeremImportCo importCo = GetImportCoFromImportData(importData);
importCo.ImportMuvelet = importMuvelet;
SetNemImportalhatoSorokByValidation(importCo);
SetOperationAndNemImportalhatoSorokByOperation(importCo);
var mainImportJsonItemList = new List<TeremImportJsonItemCo>(importCo.MainImportItemList.Select(x => new TeremImportJsonItemCo(x, mukodesiHelyId, TanevId, IntezmenyId, FelhasznaloId)));
importCo.MainImportJsonItemList = mainImportJsonItemList;
ImportCo = importCo;
}
private static void SetNemImportalhatoSorokByValidation(TeremImportCo importCo)
{
Dictionary<int, List<ValidationResult>> validationResultDictionary = importCo.Validate();
//NOTE: Azokat a sorokat, amelyek hibásak beletesszük a NemImportalhatoItemList-be!
foreach (TeremImportItemCo 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 void SetOperationAndNemImportalhatoSorokByOperation(TeremImportCo importCo)
{
int importMuvelet = importCo.ImportMuvelet;
//NOTE: Azért van szükség Dictionary-re, mert így sokkal gyorsabb a keresés!
Dictionary<string, ImportItemCompareCo> compareHashImportItemCompareCoDictionary = GetCompareHashImportItemCompareCoDictionary(importCo.TeremCoList);
foreach (TeremImportItemCo importItem in importCo.MainImportItemList)
{
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 az import művelet DeleteAndInsert és a db-ből jövő adat Importalt(a nem importáltakat egyelőre nem töröljük), akkor Insert, mert töröljük a korábbi elemeket és újra be kell szúrni!
if (importMuvelet == (int)ImportMuveletEnum.DeleteAndInsert && importItemCompareCo.Importalt)
{
importItem.Operation = (int)ImportItemOperationEnum.Insert;
}
//NOTE: ...ha nincs törlés, akkor...
else
{
//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 vagy DeleteAndInsert műveletnél. A DeleteAndInsert csak akkor fut be ide, ha az elem nem importált.)!
else
{
importItem.ErrorList.Add(ImportExportCommonResource.NemImportalhatoMertMarSzerepelAzAdatbazisban);
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 TeremImportCo GetImportCoFromImportData(List<List<string>> importData)
{
var importCo = new TeremImportCo
{
TeremCoList = new TeremHelper(ConnectionType).GetTeremCoList()
};
int lineNumber = 1;
foreach (List<string> importDataRow in importData.Skip(1))
{
var importItemCo = new TeremImportItemCo(TanevId)
{
LineNumber = lineNumber,
HelyisegNevImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTeremResource.ImportHeaderNameHelyisegNev)],
JellegImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTeremResource.ImportHeaderNameJelleg)],
BefogadokepessegImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTeremResource.ImportHeaderNameBefogadokepesseg)],
AlapteruletImportData = importDataRow[ImportHeaderList.GetKeyByUniqueValue(ImportExportTeremResource.ImportHeaderNameAlapterulet)]
};
string md5HashInput = importItemCo.Nev?.ToComparableString();
importItemCo.CompareHash = ImportExportHelper.GetMd5Hash(md5HashInput);
importCo.MainImportItemList.Add(importItemCo);
lineNumber++;
}
return importCo;
}
#region Template
public MemoryStream GetTemplate()
{
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TeremItemCo>(TeremItemCo.TeremTemplateExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return SimpleExportLogic.GetTemplate(ImportExportTeremResource.ImportDefaultSheetName, simpleExportColumnCos);
}
#endregion Template
#region Export
public MemoryStream GetExport(bool isTermekAdataiExport)
{
string simpleExportColumnAttributeId;
Dictionary<string, IList<string>> dropDownColumnSourceDictionary;
if (isTermekAdataiExport)
{
simpleExportColumnAttributeId = TeremItemCo.TermekAdataiExportAttributeId;
dropDownColumnSourceDictionary = GetTermekAdataiExportDropDownColumnSourceDictionary();
}
else
{
simpleExportColumnAttributeId = TeremItemCo.TeremExportAttributeId;
dropDownColumnSourceDictionary = GetExportDropDownColumnSourceDictionary();
}
List<TeremItemCo> coList = new TeremHelper(ConnectionType).GetTeremCoList().OrderBy(x => x.Nev).ToList();
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TeremItemCo>(simpleExportColumnAttributeId, dropDownColumnSourceDictionary);
return SimpleExportLogic.GetExport(ImportExportTeremResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
public MemoryStream GetNemImportalhatoSorokExport()
{
List<TeremImportItemCo> coList = ImportCo.NemImportalhatoItemList;
List<SimpleExportColumnCo> simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TeremImportItemCo>(TeremImportItemCo.NemImportalhatoSorokExportAttributeId, GetDefaultDropDownColumnSourceDictionary());
return ImportExportHelper.NemImportalhatoSorokExport(ImportExportTeremResource.ImportDefaultSheetName, simpleExportColumnCos, coList, TanevId);
}
#endregion Export
private Dictionary<string, ImportItemCompareCo> GetCompareHashImportItemCompareCoDictionary(List<TeremItemCo> coList)
{
var compareHashImportItemCompareCoDictionary = new Dictionary<string, ImportItemCompareCo>();
foreach (TeremItemCo co in coList)
{
string md5HashInput = co.NevComparableString;
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, IList<string>> GetDefaultDropDownColumnSourceDictionary()
{
//NOTE: Create dropdown lists
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
dropDownColumnSourceDictionary.Add(ImportExportTeremResource.ImportHeaderNameJelleg, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.TeremTipus));
});
return dropDownColumnSourceDictionary;
}
private Dictionary<string, IList<string>> GetExportDropDownColumnSourceDictionary()
{
//NOTE: Create dropdown lists
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
dropDownColumnSourceDictionary.Add(ImportExportTeremResource.ImportHeaderNameJelleg, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.TeremTipus));
var helper = new ImportExportHelper(connectionType);
DataSet feladatellatasiHelyDataSet = dalHandler.FeladatEllatasiHelyDal().GetFeladatellatasiHelyDataSet(TanevId);
dropDownColumnSourceDictionary.Add(ImportExportTeremResource.ExportHeaderNameMukodesiHely, helper.GetMukodesiHelyList(feladatellatasiHelyDataSet));
});
return dropDownColumnSourceDictionary;
}
private Dictionary<string, IList<string>> GetTermekAdataiExportDropDownColumnSourceDictionary()
{
//NOTE: Create dropdown lists
var dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
var connectionType = new DalHandlerConnectionType(ConnectionType, dalHandler);
dropDownColumnSourceDictionary.Add(ImportExportTeremResource.ImportHeaderNameJelleg, EnumExtensions.GetAdatszotarElemekForTipus(TanevId, GeneratedAdatszotarTipusEnum.TeremTipus));
var helper = new ImportExportHelper(connectionType);
DataSet feladatellatasiHelyDataSet = dalHandler.FeladatEllatasiHelyDal().GetFeladatellatasiHelyDataSet(TanevId);
dropDownColumnSourceDictionary.Add(ImportExportTeremResource.ExportHeaderNameMukodesiHely, helper.GetMukodesiHelyList(feladatellatasiHelyDataSet));
dropDownColumnSourceDictionary.Add(ImportExportTeremResource.ExportHeaderNameTeremfelelos, helper.GetTanarList());
});
return dropDownColumnSourceDictionary;
}
}
}

View file

@ -0,0 +1,178 @@
using System.Data;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
namespace Kreta.BusinessLogic.Helpers
{
public class InformatikaiAdatszolgHelper : LogicBase
{
public InformatikaiAdatszolgHelper(IConnectionType connectionType) : base(connectionType) { }
public void Save(InformatikaiAdatszolgCO co)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.InformatikaiAdatszolgDal(GridParameters);
int? intezmenyEszkozAdatszolgaltatasId = dal.GetIntezmenyEszkozAdatszolgaltatasId(IntezmenyId, TanevId);
bool isIntezmenyEszkozAdatszolgaltatas = !intezmenyEszkozAdatszolgaltatasId.IsEntityId();
IIntezmenyEszkozAdatszolgaltatas intezmenyEszkozAdatszolgaltatas = isIntezmenyEszkozAdatszolgaltatas ? dal.Get() : dal.Get(intezmenyEszkozAdatszolgaltatasId.Value);
ConvertCOToEntity(co, intezmenyEszkozAdatszolgaltatas);
if (isIntezmenyEszkozAdatszolgaltatas)
{
dal.Insert(intezmenyEszkozAdatszolgaltatas);
}
else
{
dal.FullUpdate(intezmenyEszkozAdatszolgaltatas);
}
foreach (var mukodesiHelyAdatszolgaltatasCo in co.MukodesiHelyAdatszolgaltatasList)
{
int? mukodesiHelyAdatszolgaltatasId = dal.GetMukodesiHelyAdatszolgaltatasId(IntezmenyId, TanevId, mukodesiHelyAdatszolgaltatasCo.MukodesiHelyId);
bool isNewMukodesiHelyAdatszolgaltatas = !mukodesiHelyAdatszolgaltatasId.IsEntityId();
IMukodesiHelyAdatszolgaltatas mukodesiHelyAdatszolgaltatas = isNewMukodesiHelyAdatszolgaltatas ? dal.GetMukodesiHelyAdatszolgaltatas() : dal.GetMukodesiHelyAdatszolgaltatas(mukodesiHelyAdatszolgaltatasId.Value);
mukodesiHelyAdatszolgaltatas.InformatikaOktatas = mukodesiHelyAdatszolgaltatasCo.InformatikaOktatasVanNincs;
mukodesiHelyAdatszolgaltatas.IntFeltoltesSav = mukodesiHelyAdatszolgaltatasCo.InternetFeltoltesiSavszelessege;
mukodesiHelyAdatszolgaltatas.IntHavidij = mukodesiHelyAdatszolgaltatasCo.InternetszolgaltatasHaviNettoDija;
mukodesiHelyAdatszolgaltatas.IntLetoltesSav = mukodesiHelyAdatszolgaltatasCo.InternetLetoltesiSavszelessege;
mukodesiHelyAdatszolgaltatas.IntSzolgaltato = mukodesiHelyAdatszolgaltatasCo.InternetszolgaltatoNeve;
mukodesiHelyAdatszolgaltatas.MukodesiHelyId = mukodesiHelyAdatszolgaltatasCo.MukodesiHelyId;
if (isNewMukodesiHelyAdatszolgaltatas)
{
dal.Insert(mukodesiHelyAdatszolgaltatas);
}
else
{
dal.FullUpdate(mukodesiHelyAdatszolgaltatas);
}
}
});
}
public InformatikaiAdatszolgCO GetModelForIndex()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.InformatikaiAdatszolgDal(GridParameters);
var id = dal.GetIntezmenyEszkozAdatszolgaltatasId(IntezmenyId, TanevId);
if (id.HasValue)
{
var entity = dal.Get(id.Value);
return ConvertEntityToCO(entity);
}
return ConvertEntityToCO(dal.Get());
});
}
public DataSet GetInformatikaiAdatszolgaltatasGrid()
{
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
h.InformatikaiAdatszolgDal(GridParameters).GetInformatikaiAdatszolgaltatasGrid(IntezmenyId, TanevId));
var dt = ds.Tables[0];
dt.Columns.Add("InformatikaOktatasVanNincsSelect");
foreach (DataRow row in dt.Rows)
{
row["InformatikaOktatasVanNincsSelect"] = row["InformatikaOktatasVanNincs"].ToString() == "T" ? 1 : 0;
}
return ds;
}
private void ConvertCOToEntity(InformatikaiAdatszolgCO co, IIntezmenyEszkozAdatszolgaltatas dto)
{
dto.AlapszintuAMAktualis = co.AlapszintuAMAktualis;
dto.AlapszintuAMIgeny = co.AlapszintuAMIgeny;
dto.BillentyuzetAktualis = co.BillentyuzetAktualis;
dto.BillentyuzetIgeny = co.BillentyuzetIgeny;
dto.EgerAktualis = co.EgerAktualis;
dto.EgerIgeny = co.EgerIgeny;
dto.EgyebSzoftverAktualis = co.EgyebSzoftverAktualis;
dto.EgyebSzoftverIgeny = co.EgyebSzoftverIgeny;
dto.EgyebSzoftverLeiras = co.EgyebSzoftverLeiras;
dto.FFENAktualis = co.FFENAktualis;
dto.FFENIgeny = co.FFENIgeny;
dto.FFTNAktualis = co.FFTNAktualis;
dto.FFTNIgeny = co.FFTNIgeny;
dto.InteraktivTablaAktualis = co.InteraktivTablaAktualis;
dto.InteraktivTablaIgeny = co.InteraktivTablaIgeny;
dto.IrodaiSzoftverAktualis = co.IrodaiSzoftverAktualis;
dto.IrodaiSzoftverIgeny = co.IrodaiSzoftverIgeny;
dto.NotebookAktualis = co.NotebookAktualis;
dto.NotebookIgeny = co.NotebookIgeny;
dto.ProfMAktualis = co.ProfMAktualis;
dto.ProfMIgeny = co.ProfMIgeny;
dto.ProjektorAktualis = co.ProjektorAktualis;
dto.ProjektorIgeny = co.ProjektorIgeny;
dto.ScannerAktualis = co.ScannerAktualis;
dto.ScannerIgeny = co.ScannerIgeny;
dto.SzinesENAktualis = co.SzinesENAktualis;
dto.SzinesENIgeny = co.SzinesENIgeny;
dto.SzinesTNAktualis = co.SzinesTNAktualis;
dto.SzinesTNIgeny = co.SzinesTNIgeny;
dto.TabletAktualis = co.TabletAktualis;
dto.TabletIgeny = co.TabletIgeny;
dto.Tervezett3D = co.Tervezett3D;
dto.TervezettLego = co.TervezettLego;
dto.VekonykliensAktualis = co.VekonykliensAktualis;
dto.VekonykliensIgeny = co.VekonykliensIgeny;
dto.VirusvedelmiAktualis = co.VirusvedelmiAktualis;
dto.VirusvedelmiIgeny = co.VirusvedelmiIgeny;
dto.VizualisOMAktualis = co.VizualisOMAktualis;
dto.VizualisOMIgeny = co.VizualisOMIgeny;
}
private InformatikaiAdatszolgCO ConvertEntityToCO(IIntezmenyEszkozAdatszolgaltatas entity)
{
var co = new InformatikaiAdatszolgCO();
co.AlapszintuAMAktualis = entity.AlapszintuAMAktualis;
co.AlapszintuAMIgeny = entity.AlapszintuAMIgeny;
co.BillentyuzetAktualis = entity.BillentyuzetAktualis;
co.BillentyuzetIgeny = entity.BillentyuzetIgeny;
co.EgerAktualis = entity.EgerAktualis;
co.EgerIgeny = entity.EgerIgeny;
co.EgyebSzoftverAktualis = entity.EgyebSzoftverAktualis;
co.EgyebSzoftverIgeny = entity.EgyebSzoftverIgeny;
co.EgyebSzoftverLeiras = entity.EgyebSzoftverLeiras;
co.FFENAktualis = entity.FFENAktualis;
co.FFENIgeny = entity.FFENIgeny;
co.FFTNAktualis = entity.FFTNAktualis;
co.FFTNIgeny = entity.FFTNIgeny;
co.InteraktivTablaAktualis = entity.InteraktivTablaAktualis;
co.InteraktivTablaIgeny = entity.InteraktivTablaIgeny;
co.IrodaiSzoftverAktualis = entity.IrodaiSzoftverAktualis;
co.IrodaiSzoftverIgeny = entity.IrodaiSzoftverIgeny;
co.NotebookAktualis = entity.NotebookAktualis;
co.NotebookIgeny = entity.NotebookIgeny;
co.ProfMAktualis = entity.ProfMAktualis;
co.ProfMIgeny = entity.ProfMIgeny;
co.ProjektorAktualis = entity.ProjektorAktualis;
co.ProjektorIgeny = entity.ProjektorIgeny;
co.ScannerAktualis = entity.ScannerAktualis;
co.ScannerIgeny = entity.ScannerIgeny;
co.SzinesENAktualis = entity.SzinesENAktualis;
co.SzinesENIgeny = entity.SzinesENIgeny;
co.SzinesTNAktualis = entity.SzinesTNAktualis;
co.SzinesTNIgeny = entity.SzinesTNIgeny;
co.TabletAktualis = entity.TabletAktualis;
co.TabletIgeny = entity.TabletIgeny;
co.Tervezett3D = entity.Tervezett3D ?? false;
co.TervezettLego = entity.TervezettLego ?? false;
co.VekonykliensAktualis = entity.VekonykliensAktualis;
co.VekonykliensIgeny = entity.VekonykliensIgeny;
co.VirusvedelmiAktualis = entity.VirusvedelmiAktualis;
co.VirusvedelmiIgeny = entity.VirusvedelmiIgeny;
co.VizualisOMAktualis = entity.VizualisOMAktualis;
co.VizualisOMIgeny = entity.VizualisOMIgeny;
return co;
}
}
}

View file

@ -0,0 +1,22 @@
using System;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.Enums.ManualEnums;
namespace Kreta.BusinessLogic.Helpers
{
public class IntezmenyConfigHelper : LogicBase
{
public IntezmenyConfigHelper(IConnectionType connectionType) : base(connectionType) { }
public T GetIntezmenyConfig<T>(IntezmenyConfigModulEnum modulName, IntezmenyConfigTipusEnum configName)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.IntezmenyConfigDAL();
object value = dal.GetIntezmenyConfig(IntezmenyId, modulName.ToString(), configName.ToString());
return (T)Convert.ChangeType(value, typeof(T));
});
}
}
}

View file

@ -0,0 +1,543 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Web;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Iktatas;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Iktato.Poszeidon.Factory.Interface;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.Helpers
{
public class IntezmenyHelper : LogicBase
{
public IntezmenyHelper(IConnectionType connectionType) : base(connectionType) { }
public void ErtesitesekCsokkentettLetrehozasarol(int tanuloId, IntezmenyNevCimCo intezmenyCo)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanulo = h.Tanulo().Get(tanuloId);
var helper = new UzenetekHelper(new DalHandlerConnectionType(ConnectionType, h));
foreach (var gondviselo in tanulo.Gondviselo.Where(x => !x.Torolt && !x.IsCsokkentettGondviselo))
{
var email = gondviselo.Email.SingleOrDefault(x => !x.Torolt && !x.IsHibasanMegadva && x.Alapertelmezett);
if (email != null && !string.IsNullOrWhiteSpace(email.EmailCim))
{
helper.EmailKuldes(string.Format(EmailResource.GondviseloErtesitesCsokkentettLetrehozasrolEmail, gondviselo.Nev, tanulo.OktatasiAzonosito, tanulo.NyomtatasiNev, intezmenyCo.Nev, intezmenyCo.IntezmenyCim), CommonResource.Ertesites, email.EmailCim, email.Guid);
}
}
var osztalyId = new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanuloAlapkepzesesOsztalyId(tanuloId);
if (osztalyId.HasValue)
{
var osztaly = h.Osztaly().Get(osztalyId.Value);
var ofo = osztaly.OsztalyFonok;
if (ofo != null)
{
var email = ofo.Email.SingleOrDefault(x => !x.Torolt && !x.IsPublic && x.Alapertelmezett && !x.IsHibasanMegadva);
if (email != null && !string.IsNullOrWhiteSpace(email.EmailCim))
{
helper.EmailKuldes(string.Format(EmailResource.CsokkentettGondviseloLetrehozasErtesitesEmail, ofo.NyomtatasiNev, tanulo.OktatasiAzonosito, tanulo.NyomtatasiNev), CommonResource.Ertesites, email.EmailCim, email.Guid);
}
}
}
var adminok = new FelhasznaloHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAdminFelhasznalok();
foreach (var felhasznalo in adminok)
{
var email = felhasznalo.Email.SingleOrDefault(x => !x.Torolt && !x.IsPublic && x.Alapertelmezett && !x.IsHibasanMegadva);
if (email != null && !string.IsNullOrWhiteSpace(email.EmailCim))
{
helper.EmailKuldes(string.Format(EmailResource.CsokkentettGondviseloLetrehozasErtesitesEmail, felhasznalo.NyomtatasiNev, tanulo.OktatasiAzonosito, tanulo.NyomtatasiNev), CommonResource.Ertesites, email.EmailCim, email.Guid);
}
}
var intezmenyAdminEmail = new AdminHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAdminEmail();
if (intezmenyAdminEmail != null)
{
helper.EmailKuldes(string.Format(EmailResource.CsokkentettGondviseloLetrehozasErtesitesEmail, CommonResource.Admin, tanulo.OktatasiAzonosito, tanulo.NyomtatasiNev), CommonResource.Ertesites, intezmenyAdminEmail);
}
});
}
public int GetIntezmenyId()
{
return Dal.CustomConnection.Run(ConnectionType, h => h.IntezmenyDal().GetIntezmenyId(IntezmenyAzonosito));
}
public DateTime? GetFrissitesDatum()
{
return Dal.CustomConnection.Run(ConnectionType, h => h.IntezmenyDal().GetFrissitesDatum());
}
public DataSet GetOrganizationNameAndCode()
=> Dal.CustomConnection.Run(ConnectionType, h =>
{
try
{
var dal = h.IntezmenyDal();
var systemSettingsJson = dal.GetOrganizationSystemSettingsJSON();
var model = JsonConvert.DeserializeObject<dynamic>(systemSettingsJson);
return dal.GetOrganizationIdentyNameWithOmCode(Convert.ToBoolean(model.Value.Value));
}
catch
{
throw;
}
});
public bool IsSuccessAuthorizedDate()
=> Dal.CustomConnection.Run(ConnectionType, h =>
{
try
{
var dal = h.IntezmenyDal();
return dal.IsSuccessAuthorizedDate();
}
catch
{
return false;
}
});
public IntezmenyCO GetIntezmenyiAdatok()
{
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.IntezmenyDal().GetIntezmenyAdatok(IntezmenyId, TanevId);
});
if (ds.Tables[0]?.Rows?.Count > 0)
{
var row = ds.Tables[0].Rows[0];
return new IntezmenyCO()
{
IntezmenyId = row.Field<int>("IntezmenyId"),
ID = row.Field<int>("IntezmenyAdatokId"),
Igazgato = row.Field<string>("IgazgatoNeve"),
Iranyitoszam = row.Field<string>("IranyitoSzam"),
Nev = row.Field<string>("Nev").Trim(),
OMKod = row.Field<string>("OMKod"),
Varos = row.Field<string>("Varos"),
Telefonszam = row.Field<string>("Telefonszam"),
Email = row.Field<string>("EmailCim"),
AdminEmail = row.Field<string>("AdminEmailCim"),
FenntartoEmail = row.Field<string>("FenntartoEmailCim"),
RovidNev = row.Field<string>("RovidNev"),
EngedelyezettAllashely = SDAConvert.ToDouble(row["EngedelyezettAllashelyek"]),
Orszag = (int)OrszagTipusEnum.Magyarorszag,
Emelet = row.Field<string>("Emelet"),
Hazszam = row.Field<string>("Hazszam"),
KozteruletJellegNev = row.Field<string>("KozteruletJellegeNev"),
Kozterulet = row.Field<string>("KozteruletNev"),
Ajto = row.Field<string>("Ajto"),
IntezmenyAzonosito = row.Field<string>("IntezmenyAzonosito"),
FenntartoAzonosito = row.Field<string>("FenntartoAzonosito"),
AlternativAzonosito = row.Field<string>("AlternativAzonosito"),
IktatoSzervezetAzonosito = row.Field<string>("IktatoSzervezetAzonosito"),
PoszeidonBejelentkezesiNev = row.Field<string>("PoszeidonBejelentkezesiNev"),
IsCsakLepKezelo = SDAConvert.ToBooleanFromTF(row["IsCsakLepKezelo"]),
EnableBAIStatuszVeglegesites = SDAConvert.ToBooleanFromTF(row["IsBaiStatuszAktiv"]),
ElfogadottTTF = SDAConvert.ToBooleanFromTF(row["ElfogadottTTF"]),
ElfogadottESL = SDAConvert.ToBooleanFromTF(row["ElfogadottESL"]),
VeglegesTTF = SDAConvert.ToBooleanFromTF(row["VeglegesTTF"]),
VeglegesESL = SDAConvert.ToBooleanFromTF(row["VeglegesESL"]),
IsBeiratkozasVeglegesitve = SDAConvert.ToBooleanFromTF(row["VeglegesBeiratkozas"]),
VeglegesETTF = SDAConvert.ToBooleanFromTF(row["VeglegesETTF"]),
LicenceDatum = row.Field<DateTime?>("LicenceDatum")?.ToShortDateString(),
IsSzirIntezmeny = SDAConvert.ToBooleanFromTF(row["IsSzirIntezmeny"]),
IsArchivIntezmeny = SDAConvert.ToBooleanFromTF(row["IsArchivIntezmeny"]),
IsSzakkepzo = SDAConvert.ToBooleanFromTF(row["IsSzakkepzo"]),
JuttatasHatarnap = (SDAConvert.ToDateTime(row["JuttatasHatarnap"])?.Day ?? 15) + 1,
IsDKTAktiv = SDAConvert.ToBooleanFromTF(row["IsDKTAktiv"]),
IsProjektAktiv = SDAConvert.ToBooleanFromTF(row["IsProjektAktiv"]),
DKTDiakUrl = row.Field<string>("DKTDiakUrl"),
DKTTanarUrl = row.Field<string>("DKTTanarUrl"),
IntezmenyGuid = SDAConvert.ToGuid(row["IntezmenyGuid"]),
IsSzakkepzoJuttatas = SDAConvert.ToBooleanFromTF(row["IsSzakkepzoJuttatas"])
};
}
return null;
}
public void SaveIntezmenyiAdatok(IntezmenyCO model, bool isNevOMKodModosithato, bool isKretaAdministrator)
{
ValidateIntezmenyCO(model, isKretaAdministrator);
Dal.CustomConnection.Run(ConnectionType, h =>
{
var entity = GetActualIntezmenyAdatok(h);
entity.EmailCim = model.Email;
if (isKretaAdministrator)
{
entity.AdminEmailCim = model.AdminEmail;
}
entity.IgazgatoNeve = model.Igazgato;
entity.IranyitoSzam = model.Iranyitoszam;
entity.Telefonszam = model.Telefonszam;
entity.Varos = model.Varos;
entity.EmailCim = model.Email;
entity.RovidNev = model.RovidNev;
entity.EngedelyezettAllashelyek = model.EngedelyezettAllashely.Value;
entity.KozteruletNev = model.Kozterulet;
entity.KozteruletJellegeNev = model.KozteruletJellegNev;
entity.Hazszam = model.Hazszam;
entity.Emelet = model.Emelet;
entity.Ajto = model.Ajto;
if (isNevOMKodModosithato)
{
entity.Nev = model.Nev.Trim();
entity.OMKod = model.OMKod;
}
if (entity.IsSzakkepzo)
{
entity.JuttatasHatarnap = new DateTime(entity.JuttatasHatarnap?.Year ?? DateTime.Today.Year, entity.JuttatasHatarnap?.Month ?? DateTime.Today.Month, model.JuttatasHatarnap - 1);
}
IIntezmenyDal dal = h.IntezmenyDal();
dal.Update(entity);
});
}
public string GetNeptunNaploLink()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IIntezmenyDal dal = h.IntezmenyDal();
return dal.GetNeptunNaploLink(IntezmenyId);
});
}
public string GetPoszeidonBejelentkezesiNev()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IIntezmenyDal dal = h.IntezmenyDal();
return dal.GetPoszeidonBejelentkezesiNev(IntezmenyId);
});
}
public Image GetIntezmenyFejlecDokumentum()
{
string imageData = string.Empty;
var adatok = Dal.CustomConnection.Run(ConnectionType, h =>
{
return GetActualIntezmenyAdatok(h);
});
imageData = adatok.DokumentumFejlec ?? string.Empty;
string imageResult = imageData.Replace("data:image/jpeg;base64,", "");
byte[] bytes = Convert.FromBase64String(imageResult);
Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}
return new Bitmap(image);
}
public Image GetIntezmenyLablecDokumentum()
{
string imageData = string.Empty;
var adatok = Dal.CustomConnection.Run(ConnectionType, h =>
{
return GetActualIntezmenyAdatok(h);
});
imageData = adatok.DokumentumLablec ?? string.Empty;
string imageResult = imageData.Replace("data:image/jpeg;base64,", "");
byte[] bytes = Convert.FromBase64String(imageResult);
Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}
return new Bitmap(image);
}
public IntezmenyFejlecLablecCo GetIntezmenyFejlec()
{
var adatok = Dal.CustomConnection.Run(ConnectionType, h =>
{
return GetActualIntezmenyAdatok(h);
});
var result = new IntezmenyFejlecLablecCo();
result.IsFejlecOrLablecMegjelenit = adatok.IsDokumentumFejlecMegjelenit;
result.Base64Img = adatok.DokumentumFejlec;
result.HtmlContent = adatok.DokumentumFejlecHtml;
return result;
}
public IntezmenyFejlecLablecCo GetIntezmenyLablec()
{
var adatok = Dal.CustomConnection.Run(ConnectionType, h =>
{
return GetActualIntezmenyAdatok(h);
});
var result = new IntezmenyFejlecLablecCo();
result.IsFejlecOrLablecMegjelenit = adatok.IsDokumentumLablecMegjelenit;
result.Base64Img = adatok.DokumentumLablec;
result.HtmlContent = adatok.DokumentumLablecHtml;
return result;
}
public void SetIntezmenyFejlecCheckBox(bool isFejlecMegjelenit)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var adatok = GetActualIntezmenyAdatok(h);
IIntezmenyDal dal = h.IntezmenyDal();
adatok.IsDokumentumFejlecMegjelenit = isFejlecMegjelenit;
dal.Update(adatok);
});
}
public void SetIntezmenyLablecCheckBox(bool isLablecMegjelenit)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var adatok = GetActualIntezmenyAdatok(h);
IIntezmenyDal dal = h.IntezmenyDal();
adatok.IsDokumentumLablecMegjelenit = isLablecMegjelenit;
dal.Update(adatok);
});
}
public void SetIntezmenyFejlec(IntezmenyFejlecLablecCo co)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var adatok = GetActualIntezmenyAdatok(h);
IIntezmenyDal dal = h.IntezmenyDal();
adatok.IsDokumentumFejlecMegjelenit = co.IsFejlecOrLablecMegjelenit;
adatok.DokumentumFejlec = new NyomtatvanyokHelper(ConnectionType).HtmlConvertToBase64Image(co.HtmlContent);
adatok.DokumentumFejlecHtml = co.HtmlContent;
dal.Update(adatok);
});
}
public void DeleteIntezmenyFejlec()
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var adatok = GetActualIntezmenyAdatok(h);
IIntezmenyDal dal = h.IntezmenyDal();
adatok.IsDokumentumFejlecMegjelenit = false;
adatok.DokumentumFejlec = null;
adatok.DokumentumFejlecHtml = null;
dal.Update(adatok);
});
}
public void DeleteIntezmenyLablec()
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var adatok = GetActualIntezmenyAdatok(h);
IIntezmenyDal dal = h.IntezmenyDal();
adatok.IsDokumentumLablecMegjelenit = false;
adatok.DokumentumLablec = null;
adatok.DokumentumLablecHtml = null;
dal.Update(adatok);
});
}
public void SetIntezmenyLablec(IntezmenyFejlecLablecCo co)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var adatok = GetActualIntezmenyAdatok(h);
IIntezmenyDal dal = h.IntezmenyDal();
adatok.IsDokumentumLablecMegjelenit = co.IsFejlecOrLablecMegjelenit;
adatok.DokumentumLablec = new NyomtatvanyokHelper(ConnectionType).HtmlConvertToBase64Image(co.HtmlContent);
adatok.DokumentumLablecHtml = co.HtmlContent;
dal.Update(adatok);
});
}
public IntezmenyNevCimCo GetAktivIntezmenyNevCim()
{
var intezmenyCo = new IntezmenyNevCimCo();
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.IntezmenyDal().GetAktivIntezmenyNevCim(IntezmenyAzonosito);
});
if (ds?.Tables[0]?.Rows?.Count > 0)
{
var row = ds.Tables[0].Rows[0];
intezmenyCo.IntezmenyAzonosito = IntezmenyAzonosito;
intezmenyCo.Nev = row.Field<string>("C_NEV");
intezmenyCo.Varos = row.Field<string>("C_VAROS");
intezmenyCo.Iranyitoszam = row.Field<string>("C_IRANYITOSZAM");
intezmenyCo.Ajto = row.Field<string>("C_AJTO");
intezmenyCo.Emelet = row.Field<string>("C_EMELET");
intezmenyCo.Hazszam = row.Field<string>("C_HAZSZAM");
intezmenyCo.KozteruletJellegNev = row.Field<string>("C_KOZTERULETJELLEGENEV");
intezmenyCo.Kozterulet = row.Field<string>("C_KOZTERULETNEV");
intezmenyCo.OMKod = row.Field<string>("C_OMKOD");
intezmenyCo.Email = row.Field<string>("C_EMAILCIM");
intezmenyCo.Telefonszam = row.Field<string>("C_TELEFONSZAM");
intezmenyCo.IntezmenyId = row.Field<int>("C_INTEZMENYID");
}
return intezmenyCo;
}
private void ValidateIntezmenyCO(IntezmenyCO model, bool isKretaAdministrator)
{
//OM-2362
//if (string.IsNullOrWhiteSpace(model.Nev))
// throw new ArgumentNullException("Nev");
//if (string.IsNullOrWhiteSpace(model.OMKod))
// throw new ArgumentNullException("OMKod");
//if (model.OMKod.Length != 6)
// throw new FormatException("OMKod");
if (string.IsNullOrWhiteSpace(model.Iranyitoszam))
{
throw new ArgumentNullException("Iranyitoszam");
}
if (string.IsNullOrWhiteSpace(model.Varos))
{
throw new ArgumentNullException("Varos");
}
if (!model.Telefonszam.IsValidPhone())
{
throw new FormatException("Telefonszam");
}
if (isKretaAdministrator)
{
if (string.IsNullOrWhiteSpace(model.AdminEmail))
{
throw new ArgumentNullException("AdminEmail");
}
if (!model.AdminEmail.IsValidEmail())
{
throw new FormatException("AdminEmail");
}
}
}
private IIntezmenyAdatok GetActualIntezmenyAdatok(IDalHandler h)
{
IIntezmenyDal dal = h.IntezmenyDal();
var intezmeny = dal.Get(IntezmenyId);
return intezmeny.IntezmenyAdatok.Where(x => x.TanevId == TanevId && x.Torolt == false)
.FirstOrDefault();
}
public string GetNexiusId()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IIntezmenyDal dal = h.IntezmenyDal();
return dal.GetNexiusId(IntezmenyId);
});
}
public int InsertDokumentum(IIktatoRepositoryFactory iktatoRepositoryFactory, IktatoServiceConfiguration iktatoServiceConfiguration, IEnumerable<HttpPostedFileBase> files, DokumentumTipusEnum dokumentumTipus)
{
var helper = new PoszeidonHelper(ConnectionType, iktatoRepositoryFactory, iktatoServiceConfiguration);
foreach (var item in files)
{
var ms = new MemoryStream(item.ContentLength);
item.InputStream.CopyTo(ms);
var bytes = ms.ToArray();
ms.Dispose();
FoszamDefinicioValueModel fdm = new FoszamDefinicioValueModel();
fdm.Szint = DokumentumElemiSzintEnum.Intezmeny;
fdm.IntezmenyId = IntezmenyId;
if (dokumentumTipus == DokumentumTipusEnum.Munkaterv)
{
fdm.TanevId = TanevId;
}
var dokuId = helper.Iktatas(new MemoryStream(bytes), Path.GetFileNameWithoutExtension(item.FileName), FelhasznaloId, DokumentumKategoriaEnum.Alapdokumentumok, dokumentumTipus, null, null, fdm, item.ContentType);
return dokuId;
}
return 0;
}
public IDictionary<string, string> GetTelephelyAnyaintezmenyList()
{
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.IntezmenyDal().GetTelephelyAnyaintezmenyList(TanevId);
});
return LogicUtil.CreateDropdownContent(ds, "ID", "Nev");
}
public IEnumerable<string> GetIntezmenyVarosai()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.IntezmenyDal().GetIntezmenyVarosai(IntezmenyId, TanevId);
});
}
public bool IsNszfhIntezmeny()
{
return GetEnvironmentName() == IntezmenyResource.EnvironmentNszfh;
}
public string GetIntezmenyiDictionaryEnvironmentName()
{
return GetEnvironmentName(IntezmenyResource.Dictionary);
}
private string GetEnvironmentName(string key = null)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
IIntezmenyDal dal = h.IntezmenyDal();
return dal.GetEnvironmentName(IntezmenyAzonosito, key);
});
}
}
}

View file

@ -0,0 +1,193 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using Aspose.Cells;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.DataAccessManual;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class ItmAdatszolgaltatasHelper : LogicBase
{
public ItmAdatszolgaltatasHelper(IConnectionType connectionType) : base(connectionType)
{
}
public List<MemoryStream> IntezmenyAdatok()
{
var fenntartoNev = IntezmenyFenntarto();
var itmAdatok = GetItmAdatok();
if (itmAdatok.Tables.Count == 0 || itmAdatok.Tables[0].Rows.Count == 0)
{
throw new BlException(AdatszolgaltatasokResource.ItmAdatszolgaltatasNincsenekSzakkepesitesiAdatok);
}
var splittedMergedDataSet = SplitDataSet(MergeDataSet(fenntartoNev, AdatszolgaltatasokResource.ItmAdatszolgaltatasKepzesKezdete2122Osz, itmAdatok));
return splittedMergedDataSet.Select(x => FillTemplate(x)).ToList();
}
private List<DataSet> SplitDataSet(DataSet itmAdatok, int darabMeret = 100)
{
var dataSetList = new List<DataSet>();
var szelet = Math.Ceiling(itmAdatok.Tables[0].Rows.Count / (double)darabMeret);
if (szelet == 1)
{
dataSetList.Add(itmAdatok);
}
else
{
for (int i = 0; i < szelet; i++)
{
var dataSet = itmAdatok.Clone();
var kiNemSzedettDarabszam = itmAdatok.Tables[0].Rows.Count - (darabMeret * i);
var kiszedhetoDarabszam = darabMeret > kiNemSzedettDarabszam ? kiNemSzedettDarabszam : darabMeret;
for (int j = 0; j < kiszedhetoDarabszam; j++)
{
var kiszedesiPozicio = j + (i * darabMeret);
dataSet.Tables[0].ImportRow(itmAdatok.Tables[0].Rows[kiszedesiPozicio]);
}
dataSetList.Add(dataSet);
}
}
return dataSetList;
}
private DataSet MergeDataSet(string fenntartoNev, string kepzesKedete, DataSet itmAdatok)
{
var mergedDataSet = itmAdatok.Copy();
var kedvezmenyezettNeveOszlop = mergedDataSet.Tables[0].Columns.Add(AdatszolgaltatasokResource.ItmAdatszolgaltatasKedvezmenyezettNeveExcelAzonosito, typeof(string));
kedvezmenyezettNeveOszlop.SetOrdinal(0);
var kepzesKedeteOszlop = mergedDataSet.Tables[0].Columns.Add(AdatszolgaltatasokResource.ItmAdatszolgaltatasKepzesKezdeteExcelAzonosito, typeof(string));
kepzesKedeteOszlop.SetOrdinal(2);
foreach (DataRow item in mergedDataSet.Tables[0].Rows)
{
item.SetField<string>(AdatszolgaltatasokResource.ItmAdatszolgaltatasKedvezmenyezettNeveExcelAzonosito, fenntartoNev);
item.SetField<string>(AdatszolgaltatasokResource.ItmAdatszolgaltatasKepzesKezdeteExcelAzonosito, kepzesKedete);
}
return mergedDataSet;
}
private MemoryStream FillTemplate(DataSet mergedDataSet)
{
using (MemoryStream memoryStreamToOpen = new MemoryStream())
{
using (FileStream fstream = new FileStream(HttpContext.Current.Server.MapPath(AdatszolgaltatasokResource.ItmAdatszolgaltatasFelnottOktatásUtvonalTemplateExcelUtvonal), FileMode.Open, FileAccess.Read))
{
try
{
fstream.CopyTo(memoryStreamToOpen);
}
catch (Exception)
{
fstream.Close();
throw;
}
}
Workbook workbook = new Workbook(memoryStreamToOpen);
Worksheet alapadatFul = workbook.Worksheets[AdatszolgaltatasokResource.ItmAdatszolgaltatasKitoltendoExcelSheetNeve];
var currentRow = 3;
foreach (DataRow item in mergedDataSet.Tables[0].Rows)
{
alapadatFul.Cells.ImportDataRow(item, currentRow++, 2);
}
workbook.CalculateFormula();
var memoryStreamToSave = new MemoryStream();
workbook.Save(memoryStreamToSave, SaveFormat.Xlsx);
memoryStreamToSave.Position = 0;
return memoryStreamToSave;
}
}
private DataSet GetItmAdatok()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.IntezmenyDal();
return dal.GetIntezmenyItmAdatszolgaltatasAdatok(IntezmenyId, TanevId);
});
}
private string IntezmenyFenntarto()
{
using (FileStream fstream = new FileStream(HttpContext.Current.Server.MapPath(AdatszolgaltatasokResource.ItmAdatszolgaltatasIntezmenyListaImportExcelUtvonal), FileMode.Open, FileAccess.Read))
{
try
{
Workbook workbook = new Workbook(fstream);
Worksheet intezmenyLap = workbook.Worksheets[0];
DataTable intezmenyDataTable = intezmenyLap.Cells.ExportDataTable(0, 4, intezmenyLap.Cells.MaxDataRow, 2, true);
Worksheet fenntartoLap = workbook.Worksheets[2];
DataTable fenntartoDataTable = fenntartoLap.Cells.ExportDataTable(0, 0, fenntartoLap.Cells.MaxDataRow, 3, true);
ValidateDataTable(intezmenyDataTable, new List<string>() { AdatszolgaltatasokResource.ItmAdatszolgaltatasIntezmenyListaExcelFenntarto, AdatszolgaltatasokResource.ItmAdatszolgaltatasIntezmenyListaExcelIntezmenyAzonosito });
ValidateDataTable(fenntartoDataTable, new List<string>() { AdatszolgaltatasokResource.ItmAdatszolgaltatasIntezmenyListaExcelAzonosito, AdatszolgaltatasokResource.ItmAdatszolgaltatasIntezmenyListaExcelRovidnev });
var intezmenyDataRow = (from DataRow dr in intezmenyDataTable.Rows where dr.Field<string>(AdatszolgaltatasokResource.ItmAdatszolgaltatasIntezmenyListaExcelIntezmenyAzonosito).ReplaceMultipleSpacesAndTrim() == IntezmenyAzonosito select dr).FirstOrDefault();
if (intezmenyDataRow == null)
{
throw new BlException(string.Format(AdatszolgaltatasokResource.ItmAdatszolgaltatasIsmeretlenIntezmenyAzonosito, IntezmenyAzonosito));
}
var fenntartoId = intezmenyDataRow.Field<double>(AdatszolgaltatasokResource.ItmAdatszolgaltatasIntezmenyListaExcelFenntarto);
var fenntartoDataRow = (from DataRow dr in fenntartoDataTable.Rows where dr.Field<double>(AdatszolgaltatasokResource.ItmAdatszolgaltatasIntezmenyListaExcelAzonosito) == fenntartoId select dr).FirstOrDefault();
if (fenntartoDataRow == null)
{
throw new BlException(string.Format(AdatszolgaltatasokResource.ItmAdatszolgaltatasIsmeretlenFenntartoAzonosito, fenntartoId));
}
var fenntartoNev = fenntartoDataRow.Field<string>(AdatszolgaltatasokResource.ItmAdatszolgaltatasIntezmenyListaExcelRovidnev).ReplaceMultipleSpacesAndTrim();
return fenntartoNev;
}
catch (Exception)
{
fstream.Close();
throw;
}
}
}
private void ValidateDataTable(DataTable dataTable, List<string> columnName)
{
columnName.ForEach(x =>
{
if (!dataTable.Columns.Contains(x))
{
throw new Exception();
}
});
}
}
}

View file

@ -0,0 +1,212 @@
using System;
using System.Linq;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class JelszoLinkHelper : LogicBase
{
public JelszoLinkHelper(IConnectionType connectionType, string guid) : base(connectionType)
{
this.guid = guid;
}
public JelszoLinkHelper(IConnectionType connectionType, int gondviseloId) : base(connectionType)
{
this.gondviseloId = gondviseloId;
}
private const int maxProbalkozasokSzama = 3;
private string guid;
private int? gondviseloId;
private IJelszoModositasLink GetLink(IDalHandler h)
{
var dal = h.JelszoModositasLinkDal();
if (gondviseloId.IsEntityId())
{
guid = dal.GetGuidByGondviseloId(gondviseloId.Value);
}
var id = dal.GetId(guid);
if (id.IsEntityId())
{
return dal.Get(id.Value);
}
return null;
}
public bool IsSzulDatumValidacio()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var link = GetLink(h);
if (link != null)
{
return IsSzulDatumValidacio(h, link);
}
return false;
});
}
public IsSuccessResponseCo SaveJelszo(JelszoValtoztatoCo co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var link = GetLink(h);
if (link == null)
{
return new IsSuccessResponseCo(false, AdminisztracioResource.AJelszoValtoztatasSikertelen);
}
try
{
co.IsSzulDatumValidacio = IsSzulDatumValidacio(h, link);
}
catch (KretaJelszoModositasException e)
{
return new IsSuccessResponseCo(false, e.Message);
}
if (co.IsSzulDatumValidacio)
{
if (!ValidateSzulestesiDatum(h, co.TanuloSzuletesiDatum.Value, link.FelhasznaloId))
{
var probalkozasokSzama = default(int);
link.ProbalkozasokSzama++;
h.JelszoModositasLinkDal().Update(link);
probalkozasokSzama = maxProbalkozasokSzama - link.ProbalkozasokSzama;
if (probalkozasokSzama > 0)
{
return new IsSuccessResponseCo(false, string.Format(ErrorResource.HibasSzuletesiDatumMeg0AlkalommalProbalkozhat, probalkozasokSzama.ToString()));
}
var intezmenyCo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivIntezmenyNevCim();
return new IsSuccessResponseCo(false, string.Format(ErrorResource.HibasSzuletesiDatum, intezmenyCo.Nev, intezmenyCo.IntezmenyCim));
}
}
JelszoModositasEsEmail(h, co, link.GondviseloId, link.FelhasznaloId);
DeleteLink(h, link);
return new IsSuccessResponseCo(true, AdminisztracioResource.AJelszoValtoztatasSikeres);
});
}
public void DeleteLink()
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var link = GetLink(h);
if (link != null)
{
DeleteLink(h, link);
}
});
}
private bool IsSzulDatumValidacio(IDalHandler h, IJelszoModositasLink link)
{
if ((DateTime.Now - link.LetrehozasDatuma).Days > 7)
{
DeleteInvalidLink(h, link);
var intezmenyCo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivIntezmenyNevCim();
throw new KretaJelszoModositasException(string.Format(ErrorResource.EzAFeluletMarNemElerhetoAzOnSzamaraInvalidLink, intezmenyCo.Nev, intezmenyCo.IntezmenyCim));
}
if (link.ProbalkozasokSzama > 2)
{
DeleteInvalidLink(h, link);
var intezmenyCo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivIntezmenyNevCim();
throw new KretaJelszoModositasException(string.Format(ErrorResource.EzAFeluletMarNemElerhetoAzOnSzamaraInvalidLink, intezmenyCo.Nev, intezmenyCo.IntezmenyCim));
}
return link.IsSzuletesiDatumValidacio;
}
private void JelszoModositasEsEmail(IDalHandler h, JelszoValtoztatoCo co, int gondviseloId, int felhasznaloId)
{
var connectionType = new DalHandlerConnectionType(ConnectionType, h);
var felhasznaloBelepesHelper = new FelhasznaloBelepesHelper(connectionType);
if (gondviseloId.IsEntityId())
{
var intezmenyCo = new IntezmenyHelper(connectionType).GetAktivIntezmenyNevCim();
var felhasznaloBelepesDal = h.FelhasznaloBelepes();
var gondviseloDal = h.Gondviselo();
var gondviselo = gondviseloDal.Get(gondviseloId);
var gondviseloFelhasznaloBelepes = gondviselo.FelhasznaloBelepes.SingleOrDefault(x => !x.Torolt);
var felhasznaloNev = string.Empty;
if (gondviseloFelhasznaloBelepes == null)
{
var tanulo = h.Tanulo().Get(felhasznaloId);
var index = 1;
felhasznaloNev = CommonUtils.GenerateGondviseloBejelentkezesiNev(felhasznaloBelepesDal, tanulo.OktatasiAzonosito, ref index, TanevId);
felhasznaloBelepesHelper.GrantLogin(felhasznaloId, felhasznaloNev, co.UjJelszo, gondviseloId);
}
else
{
felhasznaloNev = gondviseloFelhasznaloBelepes.BejelentkezesiNev;
felhasznaloBelepesHelper.ChangeUserPassword(felhasznaloNev, co.UjJelszo);
}
var gondviseloEmail = gondviselo.Email.SingleOrDefault(x => !x.Torolt && !x.IsHibasanMegadva && x.Alapertelmezett);
if (gondviseloEmail != null)
{
var message = string.Format(EmailResource.JelszoValtoztatasUtanFelhaszNevErtesitesEmail, gondviselo.Nev, felhasznaloNev, intezmenyCo.Nev, intezmenyCo.IntezmenyCim, CommonUtils.GetIntezmenyUrl(intezmenyCo.IntezmenyAzonosito));
new UzenetekHelper(connectionType).GondviseloJelszoEmail(message, gondviseloEmail.EmailCim, gondviseloEmail.Guid);
}
}
else
{
var felhasznaloBelepes = h.Tanulo().Get(felhasznaloId).FelhasznaloBelepes.SingleOrDefault(x => !x.Torolt && x.Gondviselo == null);
felhasznaloBelepesHelper.ChangeUserPassword(felhasznaloBelepes.BejelentkezesiNev, co.UjJelszo);
}
}
private void DeleteInvalidLink(IDalHandler h, IJelszoModositasLink link)
{
var gondviseloDal = h.Gondviselo();
var gondviselo = gondviseloDal.Get(link.GondviseloId);
if (gondviselo.IsCsokkentettGondviselo)
{
gondviseloDal.Delete(gondviselo);
}
else
{
DeleteLink(h, link);
}
}
private void DeleteLink(IDalHandler h, IJelszoModositasLink link)
{
h.JelszoModositasLinkDal().Delete(link);
}
private bool ValidateSzulestesiDatum(IDalHandler h, DateTime tanuloSzuletesiDatum, int felhasznaloId)
{
var tanuloSzulDatumDbben = h.Tanulo().Get(felhasznaloId).SzuletesiDatum;
return tanuloSzulDatumDbben.Equals(tanuloSzuletesiDatum);
}
}
}

View file

@ -0,0 +1,210 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Framework.Entities;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class JelszoModositasLinkHelper : LogicBase
{
public JelszoModositasLinkHelper(IConnectionType connectionType) : base(connectionType) { }
public void BeazonositottGondvilseoLinkGeneralasEsKuldes(int felhasznaloId, int? gondviseloId, string emailCim, string message, Guid? emailGuid)
{
Dal.CustomConnection.Run(ConnectionType, h => LinkGeneralasEsKuldes(h, felhasznaloId, gondviseloId, emailCim, true, message, emailGuid));
}
public void UjCsokkentettGondviseloLinkGeneralasEsKuldes(GondviseloJelszoIgenyloCo co, int tanuloId, int tanevId, int intezmenyId, IntezmenyNevCimCo intezmenyCo)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var gondviseloDal = h.Gondviselo();
var cimDal = h.Cim();
var emailDal = h.Email();
var gondviselo = gondviseloDal.Get();
gondviselo.Nev = co.GondviseloNev;
gondviselo.RokonsagFoka = co.RokonsagiFok.Value;
gondviselo.TanuloId = tanuloId;
gondviselo.IsCsokkentettGondviselo = true;
gondviselo.IntezmenyId = intezmenyId;
gondviselo.TanevId = tanevId;
gondviseloDal.Insert(gondviselo);
var cim = cimDal.Get();
cim.FelhasznaloId = tanuloId;
cim.GondviseloId = gondviselo.ID;
cim.Ajto = co.Ajto;
cim.CimTipusa = co.CimTipus ?? (int)CimTipusEnum.allando_lakcim;
cim.Emelet = co.Emelet;
cim.Hazszam = co.Hazszam;
cim.IranyitoSzam = co.Iranyitoszam;
cim.Kozterulet = co.KozteruletNev;
cim.KozteruletJellegeNev = co.KozteruletTipusNev;
cim.Orszag = co.Orszag.Value;
cim.Varos = co.HelysegNev;
cim.IntezmenyId = intezmenyId;
cim.TanevId = tanevId;
cimDal.Insert(cim);
var email = emailDal.Get();
email.FelhasznaloId = tanuloId;
email.GondviseloId = gondviselo.ID;
email.EmailCim = co.GondviseloEmail;
email.EmailTipusa = co.EmailTipusId ?? -1;
email.IntezmenyId = intezmenyId;
email.TanevId = tanevId;
email.Alapertelmezett = true;
Guid emailGuid = emailDal.Insert(email).Guid;
var message = string.Format(EmailResource.GondviseloCsokkentettBelepesiAdatoErtesitesEmail, co.GondviseloNev, CommonUtils.GetIntezmenyUrl(intezmenyCo.IntezmenyAzonosito), intezmenyCo.Nev, intezmenyCo.IntezmenyCim, "{0}");
LinkGeneralasEsKuldes(h, tanuloId, gondviselo.ID, co.GondviseloEmail, true, message, emailGuid);
});
}
public void FelhasznaloBelepesLinkGeneralasEsKuldes(int felhasznaloId, int? gondviseloId, string emailCim, string message, Guid emailGuid)
{
Dal.CustomConnection.Run(ConnectionType, h => LinkGeneralasEsKuldes(h, felhasznaloId, gondviseloId, emailCim, true, message, emailGuid));
}
//nincs hasznlava jelenleg!
public string JelszoValtoztatoLinkGeneralas(int felhasznaloId, int? gondviseloId)
{
return Dal.CustomConnection.Run(ConnectionType, h => LinkGeneralasEsKuldes(h, felhasznaloId, gondviseloId, null, false, null, null));
}
public void JelszoValtoztatoLinkGeneralasEsKuldes(string felhasznaloNev, string emailCim)
{
felhasznaloNev = felhasznaloNev.Trim().ToLower();
emailCim = emailCim.Trim().ToLower();
Dal.CustomConnection.Run(ConnectionType, h =>
{
var felhasznaloBelepesCo = new FelhasznaloBelepesHelper(new DalHandlerConnectionType(ConnectionType, h)).Get(felhasznaloNev);
if (felhasznaloBelepesCo != null)
{
if (felhasznaloBelepesCo.GondviseloId.IsEntityId())
{
var gondviselo = h.Gondviselo().Get(felhasznaloBelepesCo.GondviseloId.Value);
IEmail email = gondviselo?.Email?.SingleOrDefault(x => !x.Torolt && !x.IsHibasanMegadva);
var gondviseloEmailCim = email?.EmailCim;
Guid? gondviseloEmailGuid = email?.Guid;
if (!string.IsNullOrWhiteSpace(gondviseloEmailCim) && gondviseloEmailCim.ToLower().Equals(emailCim))
{
var intezmenyCo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivIntezmenyNevCim();
var message = string.Format(EmailResource.ElfejeltettJelszoLinkEmail, EmailResource.Tisztelt, gondviselo.Nev, CommonUtils.GetIntezmenyUrl(intezmenyCo.IntezmenyAzonosito), intezmenyCo.Nev, intezmenyCo.IntezmenyCim, "{0}");
LinkGeneralasEsKuldes(h, felhasznaloBelepesCo.FelhasznaloId, felhasznaloBelepesCo.GondviseloId, gondviseloEmailCim, false, message, gondviseloEmailGuid);
}
else
{
throw new KretaJelszoModositasException(ErrorResource.AMegadottFelhasznalonevhezNincsRogzitveEmailCimVagyRosszEmailCimetAdottMeg);
}
}
else
{
IEnumerable<IEmail> email = null;
ITanulo tanulo = null;
try
{
tanulo = h.Tanulo().Get(felhasznaloBelepesCo.FelhasznaloId);
}
catch (EntityNotFoundException)
{
if (h.Alkalmazott().IsAlkalmazott(felhasznaloBelepesCo.FelhasznaloId, TanevId))
{
throw new KretaJelszoModositasException(ErrorResource.AJelszoEmlekeztetoPedagogusokSzamaraNemElerhetoKerjukKeresseFelAKretaRendszerAdminisztratorat);
}
}
email = tanulo?.Email?.Where(x => !x.Torolt && !x.IsHibasanMegadva);
var tanuloEmailCim = string.Empty;
Guid? tanuloEmailGuid = null;
if (email != null)
{
foreach (var item in email)
{
if (!string.IsNullOrWhiteSpace(item.EmailCim) && item.EmailCim.ToLower().Equals(emailCim))
{
tanuloEmailCim = item.EmailCim;
tanuloEmailGuid = item.Guid;
break;
}
}
}
if (!string.IsNullOrWhiteSpace(tanuloEmailCim))
{
var intezmenyCo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetAktivIntezmenyNevCim();
var message = string.Format(EmailResource.ElfejeltettJelszoLinkEmail, EmailResource.Kedves, tanulo.NyomtatasiNev, CommonUtils.GetIntezmenyUrl(intezmenyCo.IntezmenyAzonosito), intezmenyCo.Nev, intezmenyCo.IntezmenyCim, "{0}");
LinkGeneralasEsKuldes(h, felhasznaloBelepesCo.FelhasznaloId, null, tanuloEmailCim, false, message, tanuloEmailGuid);
}
else
{
throw new KretaJelszoModositasException(ErrorResource.AMegadottFelhasznalonevhezNincsRogzitveEmailCimVagyRosszEmailCimetAdottMeg);
}
}
}
else
{
throw new KretaJelszoModositasException(ErrorResource.AMegadottFelhasznalonevNemSzerepelAKRETARendszerben);
}
});
}
private string LinkGeneralasEsKuldes(IDalHandler h, int felhasznaloId, int? gondviseloId, string emailCim, bool isSzuletesiDatumValidacio, string message, Guid? emailGuid = null)
{
var isTanulo = new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).IsTanulo(felhasznaloId);
if (!isTanulo)
{
throw new KretaJelszoModositasException(string.Empty);
}
var dal = h.JelszoModositasLinkDal();
dal.DeleteIfExists(felhasznaloId, gondviseloId);
var entity = dal.Get();
entity.Azonosito = Guid.NewGuid().ToString();
entity.FelhasznaloId = felhasznaloId;
if (gondviseloId.HasValue)
{
entity.GondviseloId = gondviseloId.Value;
}
entity.IntezmenyId = CommonUtils.GetIntezmenyId(felhasznaloId);
entity.IsSzuletesiDatumValidacio = isSzuletesiDatumValidacio;
entity.LetrehozasDatuma = DateTime.Now;
entity.ProbalkozasokSzama = 0;
entity.TanevId = TanevId;
dal.Insert(entity);
var link = string.Format(AdminisztracioResource.Link, IntezmenyAzonosito, entity.Azonosito);
if (!string.IsNullOrWhiteSpace(emailCim))
{
new UzenetekHelper(new DalHandlerConnectionType(ConnectionType, h)).EmailKuldes(string.Format(message, link), CommonResource.Ertesites, emailCim, emailGuid.HasValue ? emailGuid : null);
}
return link;
}
}
}

View file

@ -0,0 +1,390 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using Kreta.BusinessLogic.HelperClasses.Ugyfelszolgalat;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Client.Jira.Interface;
using Kreta.Client.Jira.Model.Request;
using Kreta.Client.Jira.Model.Response;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
internal class JiraHelper : IJiraHelper
{
private readonly IJiraClient JiraClient;
public bool IsFileUploadEnabled { get; set; }
private const long MaxFileSizeMB = 4;
private const long MaxFilesSizeMB = MaxFileSizeMB * 4;
private static Dictionary<string, string> s_allowedFileTypes = new Dictionary<string, string>() {
{ ".txt", "text/plain" },
{ ".pdf", "application/pdf" },
{ ".png", "image/png" },
{ ".bmp", "image/bmp" },
{ ".jpg", "image/jpeg" },
{ ".jpeg", "image/jpeg" },
{ ".xls", "application/vnd.ms-excel" },
{ ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" },
{ ".doc", "application/msword" },
{ ".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document" },
{ ".xml", "text/xml" },
{ ".roz", "application/roz" },
{".rar", "application/octet-stream"},
{".zip", "application/x-zip-compressed"}
};
private long GetSizeInBytes(long sizeInMB)
=> sizeInMB * (1024 * 1024);
public int GetMaxFileSizeInBytes()
=> (int)GetSizeInBytes(MaxFileSizeMB);
public string[] GetAllowedFileExtensionArray()
=> s_allowedFileTypes.Keys.ToArray();
public JiraHelper(IJiraClient jiraClient)
{
JiraClient = jiraClient ?? throw new ArgumentNullException(nameof(jiraClient));
IsFileUploadEnabled = jiraClient.IsFileUploadEnabled;
}
private void AttachmentsValidation(long contentLength, string contentType, string fileName)
{
Match match = Regex.Match(fileName, @".*(\" + string.Join("|\\", GetAllowedFileExtensionArray()) + @")$", RegexOptions.IgnoreCase);
if (match.Success)
{
var extension = match.Groups[1].Value.ToLower();
if (!(s_allowedFileTypes.ContainsKey(extension) && s_allowedFileTypes[extension] == contentType))
{
throw new BlException(ErrorResource.AFajlKiterjeszteseVagyTipusaNemMegfelelo, BlExceptionType.JiraFileError);
}
}
else
{
throw new BlException(ErrorResource.AFajlKiterjeszteseVagyTipusaNemMegfelelo, BlExceptionType.JiraFileError);
}
if (contentLength > GetSizeInBytes(MaxFileSizeMB))
throw new BlException(string.Format(ErrorResource.HibaTortentXMBNalNemLehetNagyobbAFajlMerete, MaxFileSizeMB), BlExceptionType.JiraFileError);
}
private List<File> CreateFileList(List<Csatolmany> csatolmanyArray)
{
var fileList = new List<File>();
long alreadyAddedFilesSize = 0;
foreach (var csatolmanyFile in csatolmanyArray)
{
string contentType = string.Empty;
int contentLength = 0;
File file = new File
{
FileName = csatolmanyFile.Name,
Name = "file"
};
string[] parts = csatolmanyFile.ContentAsBase64EncodedString.Split(new string[] { ";", ":", "," }, StringSplitOptions.None);
if (parts.Length == 4)
{
file.ContentType = parts[1];
file.Content = Convert.FromBase64String(parts[3]);
}
else
{
throw new BlException(ErrorResource.HibaTortentAFajlFeltolteseKozben, BlExceptionType.JiraFileError, new Exception(ErrorResource.ArgumentNumberErrorException));
}
contentLength = file.Content.Length;
alreadyAddedFilesSize += contentLength;
AttachmentsValidation(contentLength, file.ContentType, file.FileName);
file.ContentType = "application/octet-stream";
fileList.Add(file);
}
if (GetSizeInBytes(MaxFilesSizeMB) < alreadyAddedFilesSize)
{
throw new BlException(string.Format(ErrorResource.HibaTortentACsatolmanyokEgyuttesMereteNemLehetNagyobbXMBNal, MaxFilesSizeMB), BlExceptionType.JiraFileError);
}
return fileList;
}
private string GetJiraPassword(string intezmenyAzonosito)
{
HashAlgorithm algorithm = SHA1.Create();
byte[] hashBytes = algorithm.ComputeHash(Encoding.UTF8.GetBytes(intezmenyAzonosito));
var hashString = new StringBuilder();
foreach (byte hashByte in hashBytes)
{
hashString.Append(hashByte.ToString("x2"));
}
return hashString.ToString().Substring(0, 6);
}
public string GetServiceDeskId(string intemzenyAzonosito)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
string response;
try
{
response = JiraClient.GetServiceDeskId();
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
return !string.IsNullOrWhiteSpace(response) ? response : throw new BlException(ErrorResource.JiraHibasKeres);
}
public (DataSet data, int dataTotalCount) GetBejelentesek(string intemzenyAzonosito, string requestType, string serviceDeskId, string requestStatus, string first, string limit)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
GetRequestsModel response;
try
{
response = JiraClient.GetBejelentesek(requestType, serviceDeskId, requestStatus, first, limit);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
var ds = new DataSet();
var dt = ds.Tables.Add();
dt.Columns.Add("ID", typeof(string));
dt.Columns.Add("BejelentesTipus", typeof(string));
dt.Columns.Add("Referencia", typeof(string));
dt.Columns.Add("BejelentesCime", typeof(string));
dt.Columns.Add("Status", typeof(string));
dt.Columns.Add("BejelentesDatuma", typeof(DateTime));
dt.Columns.Add("UtolsoFrissites", typeof(DateTime));
foreach (var item in response.values)
{
var row = dt.NewRow();
var summary = item.RequestFieldValues.FirstOrDefault(a => a.fieldId == "summary");
if (item.RequestType != null)
{
row["BejelentesTipus"] = item.RequestType.Name;
}
row["ID"] = item.IssueId;
row["Referencia"] = item.IssueKey;
if (summary != null)
{
row["BejelentesCime"] = summary.value;
}
row["Status"] = item.CurrentStatus.Status;
row["BejelentesDatuma"] = item.CreatedDate.Iso8601;
row["UtolsoFrissites"] = item.CurrentStatus.StatusDate.Iso8601;
dt.Rows.Add(row);
}
//TODO: jira lekérdezésben kéne megoldani
ds.Tables[0]?.AsEnumerable().OrderByDescending(x => x["UtolsoFrissites"]);
return (ds, response.Size);
}
public string CreateCommentToBejelentes(string intemzenyAzonosito, CreateBejelentesComment createBejelentesComment)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
//
string response = string.Empty;
if (!string.IsNullOrWhiteSpace(createBejelentesComment.Comment))
{
try
{
response = JiraClient.CreateCommentToBejelentes(createBejelentesComment.Id, createBejelentesComment);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
}
List<File> fileList = CreateFileList(createBejelentesComment.CsatolmanyArray);
try
{
var uploadedAttavments = JiraClient.UploadAttachments(fileList, GetServiceDeskId(intemzenyAzonosito));
JiraClient.AddAttachmentsToIssue(uploadedAttavments, createBejelentesComment.Id);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
return response;
}
public GetRequestModel CreateBejelentes(string intemzenyAzonosito, CreateBejelentes createBejelentes)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
createBejelentes.ServiceDeskId = GetServiceDeskId(intemzenyAzonosito);
GetRequestModel response;
try
{
response = JiraClient.CreateBejelentes(createBejelentes);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
if (createBejelentes.CsatolmanyArray != null && createBejelentes.CsatolmanyArray.Count > 0)
{
List<File> fileList = CreateFileList(createBejelentes.CsatolmanyArray);
try
{
var uploadedAttavments = JiraClient.UploadAttachments(fileList, GetServiceDeskId(intemzenyAzonosito));
JiraClient.AddAttachmentsToIssue(uploadedAttavments, response.IssueId);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
}
return response;
}
public GetRequestModel CreateDbVisszaallitas(string intemzenyAzonosito, CreateDbVisszaallitas createDbVisszaallitas)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
createDbVisszaallitas.ServiceDeskId = GetServiceDeskId(intemzenyAzonosito);
try
{
return JiraClient.CreateBejelentes(createDbVisszaallitas);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
}
public GetRequestModel CreateKonferenciaJelentkezes(string intemzenyAzonosito, CreateKonferenciaJelentkezes createKonferenciaJelentkezes)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
createKonferenciaJelentkezes.ServiceDeskId = GetServiceDeskId(intemzenyAzonosito);
try
{
return JiraClient.CreateBejelentes(createKonferenciaJelentkezes);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
}
public GetRequestModel CreateUjUrlIgenyles(string intemzenyAzonosito, CreateUjUrlIgenyles createUjUrlIgenyles)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
createUjUrlIgenyles.ServiceDeskId = GetServiceDeskId(intemzenyAzonosito);
try
{
return JiraClient.CreateBejelentes(createUjUrlIgenyles);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
}
public List<RequestsComentValue> GetBejelentesCommentek(string intemzenyAzonosito, string id)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
List<RequestsComentValue> comments;
try
{
comments = JiraClient.GetBejelentesCommentek(id).Values;
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
comments.Reverse();
return comments;
}
public GetRequestTypeModel GetRequestTypes(string intemzenyAzonosito)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
string serviceDeskId = GetServiceDeskId(intemzenyAzonosito);
try
{
return JiraClient.GetRequestTypes(serviceDeskId);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
}
public GetRequestModel GetBejelentes(string intemzenyAzonosito, string id)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
try
{
return JiraClient.GetBejelentes(id);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
}
public void ChangeAdminEmail(string intemzenyAzonosito, string newAddress)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
try
{
JiraClient.ChangeAdminEmail(intemzenyAzonosito, newAddress);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
}
public void SubscribeToBejegyzes(string intemzenyAzonosito, string id)
{
JiraClient.CreateBasicAuthenticator(intemzenyAzonosito, GetJiraPassword(intemzenyAzonosito));
try
{
JiraClient.SubscribeToBejegyzes(id);
}
catch (Exception ex)
{
throw new BlException(ex.Message);
}
}
}
}

View file

@ -0,0 +1,131 @@
using System;
using System.Data;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class KerdoivHelper : LogicBase
{
public KerdoivHelper(IConnectionType connectionType) : base(connectionType) { }
public NatKerdoivCo GetNatKerdoivCo()
{
NatKerdoivCo co = new NatKerdoivCo();
var dataSet = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NatKerdoivDal();
return dal.GetNatKerdoivDataSetByAlkalmazott(IntezmenyId, TanevId, FelhasznaloId);
});
DataRowCollection dataRowCollection = dataSet.Tables[0].Rows;
if (dataRowCollection.Count > 1)
{
throw new OverflowException(ErrorResource.NemLehetEgynelTobbNatKerdoiveAzAlkalmazottnak);
}
if (dataRowCollection.Count == 0)
{
dataRowCollection.Add();
}
DataRow dataRow = dataRowCollection[0];
co.Id = SDAConvert.ToNullableInt32(dataRow["Id"]);
co.Kerdes01 = SDAConvert.ToNullableInt32(dataRow["Kerdes01"]);
co.Kerdes02 = SDAConvert.ToNullableInt32(dataRow["Kerdes02"]);
co.Kerdes03 = SDAConvert.ToNullableInt32(dataRow["Kerdes03"]);
co.Kerdes04 = SDAConvert.ToNullableInt32(dataRow["Kerdes04"]);
co.Kerdes05 = SDAConvert.ToNullableInt32(dataRow["Kerdes05"]);
co.Kerdes06 = SDAConvert.ToNullableInt32(dataRow["Kerdes06"]);
co.Kerdes07 = SDAConvert.ToNullableInt32(dataRow["Kerdes07"]);
co.Kerdes08 = SDAConvert.ToNullableInt32(dataRow["Kerdes08"]);
co.Kerdes09 = SDAConvert.ToNullableInt32(dataRow["Kerdes09"]);
co.Kerdes10 = SDAConvert.ToNullableInt32(dataRow["Kerdes10"]);
co.Kerdes11 = SDAConvert.ToString(dataRow["Kerdes11"]);
co.Kerdes12 = SDAConvert.ToString(dataRow["Kerdes12"]);
return co;
}
public void Save(NatKerdoivCo co)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NatKerdoivDal();
bool isNew = !co.Id.IsEntityId();
//NOTE: Az IsEntityId vizsgálat miatt nem lehet null az co.Id!
INATKerdoiv entity = isNew ? dal.Get() : dal.Get(co.Id.Value);
entity.IsLatta = true;
entity.Kerdes01 = co.Kerdes01;
entity.Kerdes02 = co.Kerdes02;
entity.Kerdes03 = co.Kerdes03;
entity.Kerdes04 = co.Kerdes04;
entity.Kerdes05 = co.Kerdes05;
entity.Kerdes06 = co.Kerdes06;
entity.Kerdes07 = co.Kerdes07;
entity.Kerdes08 = co.Kerdes08;
entity.Kerdes09 = co.Kerdes09;
entity.Kerdes10 = co.Kerdes10;
entity.Kerdes11 = co.Kerdes11;
entity.Kerdes12 = co.Kerdes12;
if (isNew)
{
entity.TanevId = TanevId;
entity.IntezmenyId = IntezmenyId;
entity.AlkalmazottId = FelhasznaloId;
dal.Insert(entity);
}
else
{
dal.FullUpdate(entity);
}
});
}
public void SetNatKerdoivIsLattamTrue()
{
var co = GetNatKerdoivCo();
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NatKerdoivDal();
bool isNew = !co.Id.IsEntityId();
//NOTE: Az IsEntityId vizsgálat miatt nem lehet null az co.Id!
INATKerdoiv entity = isNew ? dal.Get() : dal.Get(co.Id.Value);
entity.IsLatta = true;
if (isNew)
{
entity.TanevId = TanevId;
entity.IntezmenyId = IntezmenyId;
entity.AlkalmazottId = FelhasznaloId;
dal.Insert(entity);
}
else
{
dal.FullUpdate(entity);
}
});
}
public bool GetShowKerdoivPopup(bool IsAlkalmazottPedagogus)
{
if (!IsAlkalmazottPedagogus)
{
return false;
}
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NatKerdoivDal();
return dal.GetShowNatKerdoivPopup(IntezmenyId, TanevId, FelhasznaloId);
});
}
}
}

View file

@ -0,0 +1,25 @@
using System;
using Kreta.Core.KIR.Domain.Model;
using Kreta.Core.KIR.Factory.Interface;
using Kreta.Core.KIR.Service.Interface;
namespace Kreta.BusinessLogic.Helpers
{
public class KirAuthenticationHelper
{
private IAuthenticationService AuthenticationService { get; }
public KirAuthenticationHelper(IAuthenticationServiceFactory authenticationServiceFactory)
{
if (authenticationServiceFactory == null)
{
throw new ArgumentNullException(nameof(authenticationServiceFactory));
}
AuthenticationService = authenticationServiceFactory.GetAuthenticationService();
}
public AuthHeaderModel Authenticate(AuthHeaderModel authHeaderModel)
=> AuthenticationService.Authenticate(authHeaderModel);
}
}

View file

@ -0,0 +1,195 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Utils;
using Kreta.Client.Kir;
using Kreta.Client.Kir.Interfaces;
using Kreta.Client.Kir.KirModels;
using Kreta.Client.Kir.Models;
using Kreta.Client.Kir2Service;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
namespace Kreta.BusinessLogic.Helpers
{
public class KirExportHelper : LogicBase
{
private IKirClient _kirClient;
public KirExportHelper(IConnectionType connectionType) : base(connectionType) { }
public void KirLogin(KirLoginCo loginCo, string felhasznaloNevCacheKey, string jelszoCacheKey, string kirTokenCacheKey)
{
IKirAuthentication kirAuthentication = new KirAuthentication(KirLoginCo.ConvertCoToKirModel(loginCo), felhasznaloNevCacheKey, jelszoCacheKey);
_kirClient = new KirClient(kirAuthentication, kirTokenCacheKey);
}
public void KirSzinkronForTanulo(KirLoginCo loginCo, List<KirNebuloCo> kirNebuloList, string felhasznaloNevCacheKey, string jelszoCacheKey, string kirTokenCacheKey, string iarAzonosito)
{
if (_kirClient == null)
{
KirLogin(loginCo, felhasznaloNevCacheKey, jelszoCacheKey, kirTokenCacheKey);
}
string kontenerId;
var statuszRequestModel = new KirKerelemModel.StatuszLekerdezesRequestModel
{
IARAzonosito = iarAzonosito,
};
Dal.CustomConnection.Run(ConnectionType, h =>
{
if (kirNebuloList.Count > 0)
{
kontenerId = Guid.NewGuid().ToString("N").Remove(25);
var kerelemXml = new KerelemXMLType
{
Item = new KIR2SznyTanuloJogviszonyBejelentesKerelemType
{
KerelemFej = new KerelemFejType
{
RogzitoKliens = new Client.Kir.KirModels.stringWithStringId { id = "Kreta", Value = "String" },
RogzitoNeve = new stringWithId { id = 0, Value = loginCo.FelhasznaloNev },
RogzitesDatuma = DateTime.Now,
KliensId = FelhasznaloId.ToString()
},
TanuloJogviszonyBejelentesek = new TanuloJogviszonyBejelentesekType
{
TanuloJogviszonyBejelentes = KirNebuloCo.ConvertNebuloToKirNebulo(h, kirNebuloList, IntezmenyId, TanevId),
}
}
};
string kirXmlString = CommonUtils.SerializeXmlFromClass(kerelemXml);
byte[] plainTextBytes = Encoding.UTF8.GetBytes(kirXmlString);
string base64EncodedXml = Convert.ToBase64String(plainTextBytes);
var kerelemBekuldesRequestModel = new KirKerelemModel.BekuldesRequestModel()
{
KontenerId = kontenerId,
IARAzonosito = iarAzonosito,
CelSzolgaltatasType = Client.Kir2Service.CelSzolgaltatasType.KIR2SZNYTJVB,
Idopont = DateTime.Now,
KerelemXml = base64EncodedXml
};
KirKerelemModel.BekuldesResponseModel responseModel = _kirClient.KerelemBekuldese(kerelemBekuldesRequestModel);
InsertKirKontener(kerelemBekuldesRequestModel, responseModel.Valaszkod, h);
InsertKirKontenerElem(kirNebuloList.Select(x => x.Id).ToList(), kontenerId, h);
}
GetFelhasznaloAktivKontenerId(h).ForEach(aktivKontenerId =>
{
statuszRequestModel.KontenerId = aktivKontenerId;
KirKerelemModel.StatuszLekerdezesResponseModel responseModel = _kirClient.KerelemStatuszLekerdezes(statuszRequestModel);
InsertKirKontenerStatusz(aktivKontenerId, responseModel, h);
SetNebuloKirStatusz(responseModel, GetNebuloFromKontener(aktivKontenerId, h), IntezmenyId, h);
});
});
}
private void SetNebuloKirStatusz(KirKerelemModel.StatuszLekerdezesResponseModel responseModel, List<int> kirNebuloList, int intezmenyId, IDalHandler h)
{
Client.Kir2Service.KontenerStatuszType kontenerResponse = responseModel.KontenerStatusz;
var nebuloStatuszList = new List<(int NebuloId, int? KontenerStatuszKod, string KontenerElemStatuszKod)>();
kirNebuloList.ForEach(nebuloId =>
{
if (responseModel.KontenerStatusz.KontenerElemStatuszok == null)
{
nebuloStatuszList.Add((nebuloId, kontenerResponse.KontenerStatuszKod, (string)null));
}
else
{
List<Client.Kir2Service.KontenerElemStatuszType> kontenerElemStatuszokList = responseModel.KontenerStatusz.KontenerElemStatuszok.ToList();
List<Client.Kir2Service.KontenerElemStatuszType> hibasKontenerElemStatuszokList = kontenerElemStatuszokList.Where(y => y.StatuszInfo.StatuszKod.Contains("ERR")).ToList();
List<Client.Kir2Service.KontenerElemStatuszType> hibatlanKontenerElemStatuszokList = kontenerElemStatuszokList.Where(y => y.StatuszInfo.StatuszKod == "KEZ").ToList();
hibasKontenerElemStatuszokList.ForEach(x =>
hibatlanKontenerElemStatuszokList.RemoveAll(y => y.KontenerElemID == x.KontenerElemID)
);
hibatlanKontenerElemStatuszokList.ForEach(x =>
nebuloStatuszList.Add((Convert.ToInt32(x.KontenerElemID), (int?)null, x.StatuszInfo.StatuszKod))
);
hibasKontenerElemStatuszokList.ForEach(x =>
nebuloStatuszList.Add((Convert.ToInt32(x.KontenerElemID), (int?)null, x.StatuszInfo.StatuszKod.Remove(0, 3)))
);
}
});
nebuloStatuszList.ForEach(nebuloStatusz =>
{
h.Nebulo().SetNebuloKirStatusz(nebuloStatusz.NebuloId, nebuloStatusz.KontenerStatuszKod != null ? nebuloStatusz.KontenerStatuszKod.ToString() : nebuloStatusz.KontenerElemStatuszKod, intezmenyId, TanevId);
});
}
private List<int> GetNebuloFromKontener(string kontenerId, IDalHandler h)
{
return h.Nebulo().GetNebuloFromKontener(kontenerId);
}
private void InsertKirKontener(KirKerelemModel.BekuldesRequestModel kirKontener, string kontenerValaszkod, IDalHandler h)
{
IKirKontenerDAL dal = h.KirKontenerDAL();
IKIRKontener entity = dal.Get();
entity.CelSzolgaltatas = kirKontener.CelSzolgaltatasType.ToString();
entity.IARAzonosito = kirKontener.IARAzonosito;
entity.KontenerId = kirKontener.KontenerId;
entity.IntezmenyAzonosito = IntezmenyAzonosito;
entity.ValaszKod = kontenerValaszkod;
entity.FelhasznaloId = FelhasznaloId;
dal.Insert(entity);
}
private List<string> GetFelhasznaloAktivKontenerId(IDalHandler h)
{
return h.KirKontenerDAL().GetFelhasznaloAktivKontenerId(FelhasznaloId, IntezmenyId, TanevId);
}
private void InsertKirKontenerStatusz(string kontenerId, KirKerelemModel.StatuszLekerdezesResponseModel statuszResponseModel, IDalHandler h)
{
IKirKontenerDAL kirKontenerDal = h.KirKontenerDAL();
IKirKontenerStatuszDAL kirKontenerStatusz = h.KirKontenerStatuszDAL();
IKirKontenerElemStatuszDAL kirKontenerElemStatusz = h.KirKontenerElemStatuszDAL();
IKIRKontener kirKontener = kirKontenerDal.GetByFelhasznalo(FelhasznaloId, IntezmenyAzonosito, kontenerId);
kirKontenerStatusz.InsertByKirKontener(kirKontener, statuszResponseModel);
if (statuszResponseModel.KontenerStatusz.KontenerElemStatuszok != null)
{
kirKontenerElemStatusz.InsertManyByKirKontener(kirKontener, statuszResponseModel);
}
}
private void InsertKirKontenerElem(List<int> nebuloIdList, string kontenerId, IDalHandler h)
{
IKirKontenerDAL kirKontenerDal = h.KirKontenerDAL();
nebuloIdList.ForEach(nebuloId =>
{
IKirKontenerElemDAL dal = h.KirKontenerElemDAL();
IKIRKontenerElem entity = dal.Get();
entity.KIRKontenerId = kirKontenerDal.GetByFelhasznalo(FelhasznaloId, IntezmenyAzonosito, kontenerId).ID;
entity.KontenerElemId = nebuloId;
entity.NebuloId = nebuloId;
dal.Insert(entity);
});
}
}
}

View file

@ -0,0 +1,60 @@
using System;
using Kreta.Core.KIR.Domain.Model;
using Kreta.Core.KIR.Domain.Model.KirImport;
using Kreta.Core.KIR.Domain.Model.KirImport.Tanulo.Modositas;
using Kreta.Core.KIR.Factory.Interface;
using Kreta.Core.KIR.Service.Interface;
namespace Kreta.BusinessLogic.Helpers
{
public class KirExportHelper2
{
private IKir2Service Kir2Service { get; }
private string IARAzonosito { get; }
public KirExportHelper2(IKir2ServiceFactory kir2ServiceFactory, AuthHeaderModel authHeaderModel, string omKod, string intezmenyAzonosito)
{
if (kir2ServiceFactory == null)
{
throw new ArgumentNullException(nameof(kir2ServiceFactory));
}
if (string.IsNullOrWhiteSpace(omKod))
{
throw new ArgumentNullException(nameof(omKod));
}
if (string.IsNullOrWhiteSpace(intezmenyAzonosito))
{
throw new ArgumentNullException(nameof(intezmenyAzonosito));
}
//IARAzonosito = $"KRE{omKod}-{intezmenyAzonosito.Substring(10)}";
//Teszthez
IARAzonosito = "KRE027207-001";
Kir2Service = kir2ServiceFactory.GetKir2Service(authHeaderModel ?? throw new ArgumentNullException(nameof(authHeaderModel)));
}
public (BekuldesResponseModel response, string kontenerId) TanuloAdatModositasKerelemBekuldese(TanuloModositasok tanuloModositasok)
{
BekuldesRequestModel bekuldesRequestModel = GetBekuldesRequestModel();
return (Kir2Service.TanuloAdatModositasKerelemBekuldese(bekuldesRequestModel, tanuloModositasok), bekuldesRequestModel.KontenerId);
}
public (BekuldesResponseModel response, string guid) TanuloJogviszonyModositasKerelemBekuldese(TanuloModositasok tanuloModositasok)
{
BekuldesRequestModel bekuldesRequestModel = GetBekuldesRequestModel();
return (Kir2Service.TanuloJogviszonyModositasKerelemBekuldese(bekuldesRequestModel, tanuloModositasok), bekuldesRequestModel.KontenerId);
}
private BekuldesRequestModel GetBekuldesRequestModel()
=> new BekuldesRequestModel
{
IARAzonosito = IARAzonosito,
Idopont = DateTime.Now,
KontenerId = Guid.NewGuid().ToString("N").Remove(25)
};
}
}

View file

@ -0,0 +1,461 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.ServiceModel;
using System.Threading.Tasks;
using HtmlAgilityPack;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.KirService;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
namespace Kreta.BusinessLogic.Helpers
{
public class KirHelper : LogicBase
{
private static HttpClient HttpClient = new HttpClient();
public KirHelper(IConnectionType connectionType, string omAzonosito, string felhasznaloNev, string jelszo = null, string kirToken = null) : base(connectionType)
{
LoginUrl = ApplicationData.KirLoginUrl;
if (string.IsNullOrWhiteSpace(LoginUrl))
{
throw new ArgumentException("KirLoginUrl nincs megadva az AppSettings-ben!");
}
OmAzonosito = omAzonosito;
FelhasznaloNev = felhasznaloNev;
if (jelszo != null)
{
Jelszo = jelszo;
GetKirToken();
}
else if (kirToken != null)
{
KirToken = kirToken;
}
else
{
throw new ArgumentException("Jelszó vagy KIR Token megadása kötelező!");
}
}
public KirHelper(IConnectionType connectionType, string omAzonosito, string felhasznaloNev, string kirToken) : base(connectionType)
{
OmAzonosito = omAzonosito;
FelhasznaloNev = felhasznaloNev;
KirToken = kirToken;
}
private string OmAzonosito { get; }
private string FelhasznaloNev { get; }
private string Jelszo { get; }
public string KirToken { get; private set; }
public string KretaKod { get; private set; }
private static string ExternalId => "1";
private static string Version => "1";
private static string ClientApp => "KRETA";
private static int PageSize => 100;
private string LoginUrl { get; }
public static string GetServiceUrl()
{
using (var client = new Service_KretaClient())
{
return client.Endpoint.Address.Uri.ToString();
}
}
public List<KretaPedagogusAdatType> GetPedagogusList(int telephelyKod, DateTime? modosulasDatumKesobbiMint = null)
{
SetKretaKod(telephelyKod);
var request = new PedagogusListaRequestType
{
externalId = ExternalId,
version = Version,
clientApp = ClientApp,
pageSize = PageSize,
pageSizeSpecified = true,
pageNumber = 1,
pageNumberSpecified = true,
KretaKod = KretaKod,
Item = modosulasDatumKesobbiMint.HasValue
? (object)modosulasDatumKesobbiMint.Value //ModosulasDatumKesobbiMint
: (object)true //TeljesAdatLekeres
};
long totalCount;
var result = GetPedagogusList(request, out totalCount);
if (PageSize < totalCount)
{
List<KretaPedagogusAdatType> pageItems;
int pageCount = (int)(totalCount / PageSize) + 1;
for (int pageNumber = 2; pageNumber <= pageCount; pageNumber++)
{
request.pageNumber = pageNumber;
pageItems = GetPedagogusList(request, out totalCount);
if (pageItems.Count == 0)
{
break;
}
result.AddRange(pageItems);
}
}
return result;
}
public List<KretaTanuloAdatType> GetTanuloList(int telephelyKod, DateTime? modosulasDatumKesobbiMint = null)
{
SetKretaKod(telephelyKod);
var request = new TanuloListaRequestType
{
externalId = ExternalId,
version = Version,
clientApp = ClientApp,
pageSize = PageSize,
pageSizeSpecified = true,
pageNumber = 1,
pageNumberSpecified = true,
KretaKod = KretaKod,
Item = modosulasDatumKesobbiMint.HasValue
? (object)modosulasDatumKesobbiMint.Value //ModosulasDatumKesobbiMint
: (object)true //TeljesAdatLekeres
};
long totalCount;
var result = GetTanuloList(request, out totalCount);
if (PageSize < totalCount)
{
List<KretaTanuloAdatType> pageItems;
int pageCount = (int)(totalCount / PageSize) + 1;
for (int pageNumber = 2; pageNumber <= pageCount; pageNumber++)
{
request.pageNumber = pageNumber;
pageItems = GetTanuloList(request, out totalCount);
if (pageItems.Count == 0)
{
break;
}
result.AddRange(pageItems);
}
}
return result;
}
public Dictionary<string, string> GetTelephelyList()
{
var request = new TelephelyListaRequestType
{
externalId = ExternalId,
version = Version,
clientApp = ClientApp,
};
var response = CallService(x => x.TelephelyLista(GetAuthHeader(), request));
if (response.isSuccess)
{
return response.TelephelyLista.ToDictionary(x => x.TelephelyKod.ToString(), x => x.TelephelyNev);
}
return new Dictionary<string, string>();
}
private List<KretaPedagogusAdatType> GetPedagogusList(PedagogusListaRequestType request, out long totalCount)
{
totalCount = 0;
var response = CallService(x => x.PedagogusLista(GetAuthHeader(), request));
if (response.isSuccess)
{
totalCount = response.total;
return response.PedagogusLista.ToList();
}
return null;
}
private List<KretaTanuloAdatType> GetTanuloList(TanuloListaRequestType request, out long totalCount)
{
totalCount = 0;
var response = CallService(x => x.TanuloLista(GetAuthHeader(), request));
if (response.isSuccess)
{
totalCount = response.total;
return response.TanuloLista.ToList();
}
return new List<KretaTanuloAdatType>();
}
private Dictionary<int, string> GetSzolgaltatasList(int telephelyKod)
{
var request = new TelephelyListaRequestType
{
externalId = ExternalId,
version = Version,
clientApp = ClientApp,
};
var response = CallService(x => x.TelephelyLista(GetAuthHeader(), request));
if (response.isSuccess)
{
var telephely = response.TelephelyLista.SingleOrDefault(x => x.TelephelyKod == telephelyKod);
if (telephely != null)
{
return telephely.Szolgaltatasok.ToDictionary(x => x.Kod, x => x.Nev);
}
}
return new Dictionary<int, string>();
}
private void GetKretaKod(int telephelyKod)
{
var szolgalatatasList = GetSzolgaltatasList(telephelyKod);
if (string.IsNullOrWhiteSpace(KretaKod))
{
var request = new KretaTelephelyRegisztracioRequestType
{
externalId = ExternalId,
version = Version,
clientApp = ClientApp,
Item = true, //UjKreta
//Item = KretaKod //KretaKod -> új KretaToken generáláshoz
//TokenGeneralas = true,
//TokenGeneralasSpecified = true
TelephelyLista = new[]
{
new TelephelyType
{
TelephelyKod = telephelyKod,
Szolgaltatasok = szolgalatatasList.Select(x => new OktatasiSzolgaltatasType { Kod = x.Key }).ToArray()
}
}
};
var response = CallService(x => x.KretaTelephelyRegisztracio(GetAuthHeader(), request));
if (response.isSuccess)
{
KretaKod = response.KretaKod;
//KretaToken = response.KretaToken;
}
}
}
private KIR2AuthHeaderType GetAuthHeader()
{
return new KIR2AuthHeaderType
{
Intezmeny = OmAzonosito,
Felhasznalo = new FelhasznaloType
{
Item = new IntezmenyiFelhasznaloType
{
FelhasznaloNev = FelhasznaloNev,
KIRToken = KirToken
}
//Item = KretaToken
}
};
}
private string GetKirToken()
{
if (string.IsNullOrWhiteSpace(KirToken))
{
try
{
string requestVerificationToken = GetRequestVerificationToken();
string loginResponse = AsyncUtil.RunSync(() => GetLoginResponse(requestVerificationToken));
KirToken = GetToken(loginResponse);
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
var response = ex.Response as HttpWebResponse;
if (response != null)
{
var statusCode = (int)response.StatusCode;
if (statusCode != (int)HttpStatusCode.OK)
{
System.Diagnostics.Trace.WriteLine(ex.Message);
throw new BlException(StringResourcesUtils.GetString(5430), ex);
}
}
}
else
{
System.Diagnostics.Trace.WriteLine(ex.Message);
throw new BlException(StringResourcesUtils.GetString(5432), ex);
}
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.Message);
throw new BlException(StringResourcesUtils.GetString(5432), ex);
}
}
if (KirToken != null)
{
return KirToken;
}
throw new BlException(Kreta.Framework.StringResourcesUtil.GetString(5303)/*Sikertelen belépés kérem ellenőrizze a megadott adatokat!*/);
}
private string GetRequestVerificationToken()
{
string loginPage = AsyncUtil.RunSync(() => HttpClient.GetStringAsync(LoginUrl));
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(loginPage);
HtmlNode requestVerificationTokenNode = htmlDocument.DocumentNode.SelectSingleNode("//input[@name='__RequestVerificationToken']");
return requestVerificationTokenNode?.Attributes["value"].Value;
}
private async Task<string> GetLoginResponse(string requestVerificationToken)
{
HttpResponseMessage result = await HttpClient.PostAsync(LoginUrl,
new FormUrlEncodedContent(
new Dictionary<string, string>
{
{ "__RequestVerificationToken", requestVerificationToken },
{ "UserDto.UserType", "3" },
{ "UserDto.FenntId", string.Empty },
{ "UserDto.TKAzonosito", string.Empty },
{ "UserDto.OMAzonosito", OmAzonosito },
{ "UserDto.UserName", FelhasznaloNev },
{ "UserDto.Password", Jelszo },
{ "ContinueUrl", string.Empty },
{ "RedirectPartnerId", string.Empty }
}
)
);
return await result.Content.ReadAsStringAsync();
}
private string GetToken(string loginResponse)
{
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(loginResponse);
HtmlNode tokenNode = htmlDocument.GetElementbyId("token");
return tokenNode?.InnerText.Trim();
}
//TODO:Exceptionokat szétszedni
private T CallService<T>(Func<Service_KretaClient, T> action)
{
T res;
var client = new Service_KretaClient();
try
{
res = action(client);
client.Close();
}
catch (BlException ex)
{
throw new BlException(ex.Message);
}
catch (TimeoutException)
{
throw new TimeoutException("Az adatok lekérdezésére túllépte a megadott időkeretet!");
}
catch (FaultException)
{
throw new BlException(StringResourcesUtils.GetString(5431));
}
catch
{
if (client.State == CommunicationState.Faulted)
{
client.Abort();
}
else if (client.State != CommunicationState.Closed)
{
client.Close();
}
throw;
}
return res;
}
private void SetKretaKod(int telephelyKod)
{
var intezmenyHelper = new IntezmenyHelper(ConnectionType);
var intezmenyAdatokId = intezmenyHelper.GetIntezmenyiAdatok().ID;
var kirTelephelyHelper = new KirTelephelyHelper(ConnectionType);
var kreta = kirTelephelyHelper.GetKretaKodByTelephelyKod(telephelyKod);
if (string.IsNullOrWhiteSpace(kreta))
{
GetKretaKod(telephelyKod);
var kirTelephelyCo = new KirTelephelyCo()
{
Telephelykod = telephelyKod,
IntezmenyAdatokId = intezmenyAdatokId,
TanevId = TanevId,
KretaKod = KretaKod,
Nev = GetTelephelyList().FirstOrDefault(x => x.Key == telephelyKod.ToString()).Value
};
kirTelephelyHelper.SaveKirTelephely(kirTelephelyCo);
}
else
{
KretaKod = kreta;
}
}
}
}

View file

@ -0,0 +1,107 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Caching;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.Domain;
using Kreta.Core.Domain.Interface;
using Kreta.Core.KIR.Domain.Model;
using Kreta.Core.KIR.Domain.Model.KirExport;
using Kreta.Core.KIR.Factory.Interface;
using Kreta.Core.KIR.Service.Interface;
namespace Kreta.BusinessLogic.Helpers
{
public partial class KirImportHelper
{
private const int KirListCacheExpirationInSeconds = 120;
private IKirService KirService { get; }
public string KretaKod { get; set; }
private Func<T, bool> ValidationFor4T<T>(FelhasznaloKirSearchCo felhasznaloKirSearchCo)
where T : class, IKirFelhasznalo
=> kirAlkalmazott => (string.IsNullOrWhiteSpace(felhasznaloKirSearchCo.Nev) || kirAlkalmazott.SzuletesiNev.IndexOf(felhasznaloKirSearchCo.Nev, StringComparison.OrdinalIgnoreCase) >= 0) &&
(!felhasznaloKirSearchCo.SzuletesiDatumIg.HasValue || kirAlkalmazott.SzuletesiDatum <= felhasznaloKirSearchCo.SzuletesiDatumIg) &&
(!felhasznaloKirSearchCo.SzuletesiDatumTol.HasValue || kirAlkalmazott.SzuletesiDatum >= felhasznaloKirSearchCo.SzuletesiDatumTol) &&
(string.IsNullOrWhiteSpace(felhasznaloKirSearchCo.OktatasiAzonosito) || kirAlkalmazott.OktatasiAzonosito.StartsWith(felhasznaloKirSearchCo.OktatasiAzonosito)) &&
(string.IsNullOrWhiteSpace(felhasznaloKirSearchCo.SzuletesiHely) || kirAlkalmazott.SzuletesiHely.StartsWith(felhasznaloKirSearchCo.SzuletesiHely));
private Func<T, bool> SearchFor4T<T>(string szuletesiNev, string anyjaNeve, DateTime szuletesiDatum, string szuletesiHely)
where T : class, IKirFelhasznalo
=> kirFelhasznalo => kirFelhasznalo.SzuletesiNev == szuletesiNev &&
kirFelhasznalo.AnyjaNeve == anyjaNeve &&
kirFelhasznalo.SzuletesiDatum == szuletesiDatum &&
kirFelhasznalo.SzuletesiHely == szuletesiHely;
public KirImportHelper(IKirServiceFactory kirServiceFactory, AuthHeaderModel authHeaderModel)
{
if (kirServiceFactory == null)
{
throw new ArgumentNullException(nameof(kirServiceFactory));
}
KirService = kirServiceFactory.GetKirService(authHeaderModel ?? throw new ArgumentNullException(nameof(authHeaderModel)));
}
public List<TelephelyModel> GetKirTelephelyList()
=> KirService.GetTelephelyList();
public string KretaTelephelyRegisztracio(int telephelyKod)
=> KirService.KretaTelephelyRegisztracio(
new KretaTelephelyRegisztracioRequestModel
{
TelephelyModel = new TelephelyModel
{
Kod = telephelyKod
}
});
public List<TOut> GetKirFelhasznaloList<TOut>(string cacheKey)
where TOut : class, IKirFelhasznalo, new()
{
var kirFelhasznaloCacheList = (List<TOut>)Cache.Get(cacheKey);
if (kirFelhasznaloCacheList == null)
{
var kirRequestModel = new KirRequestModel
{
KretaKod = KretaKod
};
var felhasznalo = new TOut();
if (felhasznalo is KirAlkalmazott)
{
kirFelhasznaloCacheList = KirService
.GetPedagogusList(kirRequestModel)
.ConvertAll(new Converter<AlkalmazottModel, KirAlkalmazott>(x => x)) as List<TOut>;
}
if (felhasznalo is KirTanulo)
{
kirFelhasznaloCacheList = KirService
.GetTanuloList(kirRequestModel)
.ConvertAll(new Converter<TanuloModel, KirTanulo>(x => x)) as List<TOut>;
}
Cache.Add(cacheKey, kirFelhasznaloCacheList, new CacheItemPolicy { AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddSeconds(KirListCacheExpirationInSeconds)) });
}
return kirFelhasznaloCacheList;
}
public List<T> GetKirFelhasznaloList<T>(FelhasznaloKirSearchCo felhasznaloKirSearchCo, string cacheKey)
where T : class, IKirFelhasznalo, new()
=> GetKirFelhasznaloList<T>(cacheKey)
.Where(ValidationFor4T<T>(felhasznaloKirSearchCo))
.ToList();
public TOut GetKirFelhasznaloAdatok<TIn, TOut>(Converter<TIn, TOut> converter, string cacheKey, string szuletesiNev, string anyjaNeve, DateTime szuletesiDatum, string szuletesiHely)
where TIn : class, IKirFelhasznalo, new()
where TOut : class
=> GetKirFelhasznaloList<TIn>(cacheKey)
.Where(SearchFor4T<TIn>(szuletesiNev, anyjaNeve, szuletesiDatum, szuletesiHely))
.Select(x => converter.Invoke(x))
.FirstOrDefault();
}
}

View file

@ -0,0 +1,40 @@
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
namespace Kreta.BusinessLogic.Helpers
{
public class KirTelephelyHelper : LogicBase
{
public KirTelephelyHelper(IConnectionType connectionType) : base(connectionType) { }
public bool HasKretaKodByTelephelyKod(int telephelyKod)
{
return Dal.CustomConnection.Run(ConnectionType, handler =>
{
return !string.IsNullOrWhiteSpace(handler
.KirTelephelyDal()
.GetKretaKodByTelephelyId(telephelyKod, TanevId));
});
}
public string GetKretaKodByTelephelyKod(int telephelyKod)
{
return Dal.CustomConnection.Run(ConnectionType, handler =>
{
return handler.KirTelephelyDal().GetKretaKodByTelephelyId(telephelyKod, TanevId);
});
}
public void SaveKirTelephely(KirTelephelyCo kirTelephelyCo)
{
Dal.CustomConnection.Run(ConnectionType, handler =>
{
IKirTelephelyDal kirTelephelyDal = handler.KirTelephelyDal();
kirTelephelyDal.Insert(KirTelephelyCo.CoToEntity(kirTelephelyDal, kirTelephelyCo));
});
}
}
}

View file

@ -0,0 +1,125 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Client.KGR;
using Kreta.Client.KGR.Model;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
namespace Kreta.BusinessLogic.Helpers
{
public class KotvallKezelesHelper : LogicBase
{
public KotvallKezelesHelper(IConnectionType connectionType) : base(connectionType)
{
}
public List<KotvallItemCo> GetKotvallItemList(IKGRClient kGRClient, Guid intezmenyEgyediAzonosito, KotvallSearchCo searchCo)
{
var tanevSorszam = searchCo.TanevId.HasValue ? Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return h.TanevDal().Get(searchCo.TanevId.Value).Sorszam;
}) : null;
var beszerzesLista = kGRClient.GetIntezmenyiBeszerzesList(intezmenyEgyediAzonosito, tanevSorszam);
return FilterKotvallList(searchCo, beszerzesLista.Select(x => new KotvallItemCo(x)).ToList());
}
public List<KotvallItemCo> GetKotvallItemListExport(IKGRClient kGRClient, Guid intezmenyEgyediAzonosito, KotvallSearchCo searchCo)
{
var tanevSorszam = searchCo.TanevId.HasValue ? Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return h.TanevDal().Get(searchCo.TanevId.Value).Sorszam;
}) : null;
var beszerzesLista = kGRClient.GetIntezmenyiBeszerzesExport(intezmenyEgyediAzonosito, tanevSorszam);
return FilterKotvallList(searchCo, beszerzesLista.Select(x => new KotvallItemCo(x)).ToList());
}
public KotvallItemCo SaveKotvallItem(IKGRClient kGRClient, KotvallItemCo co)
{
var model = ConvertCoToModel(co);
model.TanevId = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return h.TanevDal().Get(co.TanevId.Value).Sorszam;
});
return new KotvallItemCo(kGRClient.SaveIntezmenyiBeszerzes(model));
}
public KotvallItemCo GetKotvallItem(IKGRClient kGRClient, Guid intezmenyEgyediAzonosito, int id)
{
return new KotvallItemCo(kGRClient.GetIntezmenyiBeszerzes(intezmenyEgyediAzonosito, id));
}
public List<KotvallStatuszItemCo> GetKotvallStatusList(IKGRClient kGRClient)
{
var allapotLista = kGRClient.GetIntezmenyiBeszerzesAdatszotarAllapotList();
return allapotLista.Select(x => new KotvallStatuszItemCo(x)).ToList();
}
public List<KotvallTargyItemCo> GetKotvallTargyList(IKGRClient kGRClient)
{
var targyLista = kGRClient.GetIntezmenyiBeszerzesAdatszotarTargyList();
return targyLista.Select(x => new KotvallTargyItemCo(x)).ToList();
}
public void KotvallVisszavonas(IKGRClient kGRClient, KotvallVisszavonasCo co)
{
kGRClient.PostIntezmenyiBeszerzesVisszavonas(co.ConvertToRequest());
}
private List<KotvallItemCo> FilterKotvallList(KotvallSearchCo searchCo, List<KotvallItemCo> list)
{
var filtered = list.AsEnumerable();
if (!string.IsNullOrWhiteSpace(searchCo.Sorszam))
{
filtered = filtered.Where(x => x.Sorszam.Contains(searchCo.Sorszam));
}
if (!string.IsNullOrWhiteSpace(searchCo.BeszerzesTargya))
{
filtered = filtered.Where(x => x.BeszerzesTargya.Contains(searchCo.BeszerzesTargya));
}
if (searchCo.BruttoErtekTol.HasValue)
{
filtered = filtered.Where(x => x.BruttoErtek >= searchCo.BruttoErtekTol.Value);
}
if (searchCo.BruttoErtekIg.HasValue)
{
filtered = filtered.Where(x => x.BruttoErtek <= searchCo.BruttoErtekIg.Value);
}
if (searchCo.BejelentoIdpEgyediAzonosito.HasValue)
{
filtered = filtered.Where(x => x.BejelentoIdpEgyediAzonosito == searchCo.BejelentoIdpEgyediAzonosito);
}
if (searchCo.StatuszId.HasValue)
{
filtered = filtered.Where(x => x.StatuszId == searchCo.StatuszId.Value);
}
return filtered.ToList();
}
public IntezmenyiBeszerzesModel ConvertCoToModel(KotvallItemCo co)
{
return new IntezmenyiBeszerzesModel
{
Id = co.Id,
TargyId = co.TargyId,
TargyNev = co.TanevNev,
VarhatoEllenertekBrutto = co.BruttoErtek,
IdpEgyediAzonosito = co.BejelentoIdpEgyediAzonosito.ToString(),
EloTag = co.EloTag,
CsaladiNev = co.CsaladiNev,
Utonev = co.Utonev,
TanevId = co.TanevId,
TanevNev = co.TanevNev,
AllapotId = co.StatuszId,
AllapotNev = co.StatuszNeve,
Sorszam = co.Sorszam,
Leiras = co.Leiras,
VisMajorIndok = co.VisMajorIndok,
OktatasiAzonosito = co.OktatasiAzonosito,
IntezmenyEgyediAzonosito = co.IntezmenyEgyediAzonosito.ToString(),
LetrehozoEmail = co.LetrehozoEmail
};
}
}
}

View file

@ -0,0 +1,125 @@
using System;
using System.Data;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.Enums;
namespace Kreta.BusinessLogic.Helpers
{
public class KozmuszamlaHelper : LogicBase
{
public KozmuszamlaHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet KozmuszamlaKereses(DateTime? fizetesiHataridoTol, DateTime? fizetesiHataridoIg, int? isFizetve, string kibocsato, int? kozmuSzamlaTipusId, double? osszegTol, double? osszegIg)
{
var ds = Dal.CustomConnection.Run(ConnectionType, helper =>
{
IKozmuszamlaDal dal = helper.KozmuszamlaDal();
return dal.KozmuszamlaKereses(
TanevId,
IntezmenyId,
fizetesiHataridoTol,
fizetesiHataridoIg,
isFizetve,
kibocsato,
kozmuSzamlaTipusId,
osszegTol,
osszegIg);
});
return SetDataSet(ds);
}
private DataSet SetDataSet(DataSet ds)
{
ds.Tables[0].Columns.Add("OsszegText");
foreach (DataRow dr in ds.Tables[0].Rows)
{
if ((int)dr["PenznemId"] == (int)PenznemTipusEnum.Dollar)
{
dr["OsszegText"] = $"{SDAConvert.ToDecimal(dr["Osszeg"])} USD";
}
else if ((int)dr["PenznemId"] == (int)PenznemTipusEnum.Euro)
{
dr["OsszegText"] = $"{SDAConvert.ToDecimal(dr["Osszeg"])} EUR";
}
else
{
dr["OsszegText"] = $"{SDAConvert.ToDecimal(dr["Osszeg"])} Ft";
}
}
return ds;
}
public KozmuszamlaCO GetKozmuszamlaById(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.KozmuszamlaDal();
var entity = dal.Get(id);
var co = new KozmuszamlaCO();
co.Id = entity.ID;
co.BefizetesDatuma = entity.BefizetesDatuma;
co.FizetesiHatarido = entity.FizetesiHatarido;
co.Fizetve = entity.Fizetve;
co.InvaliditasOka = entity.Invaliditasoka;
co.Kelte = entity.Kelte;
co.Kibocsato = entity.Kibocsato;
co.KozmuszamlaTipusId = entity.KozmuSzamlaTipusId;
co.Osszeg = entity.Osszeg;
co.PenznemId = entity.PenznemId;
co.MerohelyId = entity.MerohelyId;
return co;
});
}
public void DeleteKozmuszamlaById(int id)
{
Dal.CustomConnection.Run(ConnectionType, helper =>
{
var dal = helper.KozmuszamlaDal();
dal.Delete(id);
});
}
public void SaveKozmuszamla(KozmuszamlaCO kozmuszamlaCO)
{
Dal.CustomConnection.Run(ConnectionType, helper =>
{
var dal = helper.KozmuszamlaDal();
bool isNew = !kozmuszamlaCO.Id.IsEntityId();
var kozmuszamla = isNew ? dal.Get() : dal.Get(kozmuszamlaCO.Id.Value);
kozmuszamla.BefizetesDatuma = kozmuszamlaCO.BefizetesDatuma;
kozmuszamla.FizetesiHatarido = kozmuszamlaCO.FizetesiHatarido;
kozmuszamla.Fizetve = kozmuszamlaCO.Fizetve;
kozmuszamla.Invaliditasoka = kozmuszamlaCO.InvaliditasOka;
kozmuszamla.Kelte = kozmuszamlaCO.Kelte;
kozmuszamla.Kibocsato = kozmuszamlaCO.Kibocsato;
kozmuszamla.KozmuSzamlaTipusId = kozmuszamlaCO.KozmuszamlaTipusId;
kozmuszamla.Osszeg = kozmuszamlaCO.Osszeg;
kozmuszamla.PenznemId = kozmuszamlaCO.PenznemId;
kozmuszamla.Valid = kozmuszamlaCO.Valid;
kozmuszamla.ValidalasAlatt = kozmuszamlaCO.ValidalasAlatt;
kozmuszamla.IntezmenyId = IntezmenyId;
kozmuszamla.TanevId = TanevId;
kozmuszamla.MerohelyId = kozmuszamlaCO.MerohelyId;
if (isNew)
{
dal.Insert(kozmuszamla);
}
else
{
dal.FullUpdate(kozmuszamla);
}
});
}
}
}

View file

@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.IO;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Client;
using Kreta.Client.KozpontiKreta.Interface;
using Kreta.Client.KozpontiKreta.Model;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Core.KozpontiModels.MdszModels;
using Kreta.Core.KozpontiModels.TargyiEszkozModels;
using Kreta.Core.KozpontiModels.UzletiTervezesModels;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
namespace Kreta.BusinessLogic.Helpers
{
internal class KozpontiKretaHelper : IKozpontiKretaHelper
{
private readonly IKozpontiKretaClient KozpontiKretaClient;
public KozpontiKretaHelper(IKozpontiKretaClient kozpontiKretaClient)
{
KozpontiKretaClient = kozpontiKretaClient ?? throw new ArgumentNullException(nameof(kozpontiKretaClient));
}
public KozpontiNebuloResponseModel NebuloJelenlet(KozpontiNebuloRequestModel model)
{
return KozpontiKretaClient.NebuloJelenlet(model);
}
public List<MdszResponseModel> GetDiakOlimpiaList(MdszRequestModel model)
{
return KozpontiKretaClient.GetDiakOlimpiaList(model);
}
public List<UzletiTervezesIntezmenyResponseModel> GetIntezmenyUzletiTerv(UzletiTervezesIntezmenyRequestModel model)
{
return KozpontiKretaClient.GetIntezmenyUzletiTerv(model);
}
public List<UzletiTervezesAlkalmazottResponseModel> GetIntezmenyUzletiTervAlkalmazottaknak(UzletiTervezesAlkalmazottRequestModel model)
{
return KozpontiKretaClient.GetIntezmenyUzletiTervAlkalmazottaknak(model);
}
public List<TargyiEszkozResponseModel> GetTargyiEszkozAlkalmazott(TargyiEszkozAlkalmazottRequestModel model)
{
return KozpontiKretaClient.GetTargyiEszkozAlkalmazott(model);
}
public List<TargyiEszkozResponseModel> GetTargyiEszkozok(TargyiEszkozIntezmenyRequestModel model)
{
return KozpontiKretaClient.GetTargyiEszkozok(model);
}
public MemoryStream GetRiportDokumentum(KozpontiKretaDokumentumTipusEnum tipus, SystemType systemType, TanevCO tanevCo, string intezmenyAzonosito, int selectedTanevId, string formatum = "")
{
try
{
return new MemoryStream(KozpontiKretaClient.GetRiportDokumentum(tipus, systemType, intezmenyAzonosito, GetTanevId(tanevCo), formatum));
}
catch (ClientException ex)
{
throw new BlException(ex.Message, ex.StatusCode);
}
}
public TantargyFelosztasSearchCo PostTTFEllenorzes(string intezmenyAzonosito, TanevCO tanevCo)
{
return KozpontiKretaClient.PostTTFEllenorzes(intezmenyAzonosito, GetTanevId(tanevCo));
}
public TantargyFelosztasSearchCo GetTTFEllenorzes(string intezmenyAzonosito, TanevCO tanevCo)
{
return KozpontiKretaClient.GetTTFEllenorzes(intezmenyAzonosito, GetTanevId(tanevCo));
}
public KotelezoOraszamResponseModel GetKotelezoOraszam(KotelezoOraszamRequestModel model)
{
return KozpontiKretaClient.GetKotelezoOraszamok(model);
}
private string GetTanevId(TanevCO tanevCo)
{
string tanevId = string.Empty;
if (tanevCo != null && tanevCo.Sorszam.IsEntityId())
{
tanevId = tanevCo.Sorszam.ToString();
}
return tanevId;
}
}
}

View file

@ -0,0 +1,277 @@
using System;
using System.Data;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
namespace Kreta.BusinessLogic.Helpers
{
public class LepEloadasJegyzekHelper : LogicBase
{
public LepEloadasJegyzekHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet GetEloadasJegyzekek(int eloadasId, int felhasznaloId, bool isMindenEvfolyamJog, DateTime datum, int evFolyamId, string szervezetNev, string eloadasNev, DateTime kezdete, DateTime vege, string eloadasHelyszin)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
ILepEloadasJegyzekDal dal = h.LepEloadasJegyzekDal(GridParameters);
return dal.GetEloadasJegyzekek(TanevId, eloadasId, felhasznaloId, isMindenEvfolyamJog, datum, evFolyamId, szervezetNev, eloadasNev, kezdete, vege, eloadasHelyszin);
});
}
public DataSet GetTanulokForEloadas(int eloadasId, int evfolyamId, string filter, int? osztfoId = null)
{
var result = new DataSet();
result = Dal.CustomConnection.Run(ConnectionType, h =>
{
ILepEloadasJegyzekDal dal = h.LepEloadasJegyzekDal();
return dal.GetTanulokForEloadas(TanevId, eloadasId, evfolyamId, filter, osztfoId);
});
return result;
}
public DataSet GetTanulokForOsztaly(int osztalyId)
{
var result = new DataSet();
result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Csoport();
return dal.GetOsztalyCsoportTanulok(osztalyId, DateTime.Now, IntezmenyAzonosito);
});
return result;
}
public DataSet GetOsztalyokForEloadas(int eloadasId, int evfolyamId, int? osztfoId = null)
{
var result = new DataSet();
result = Dal.CustomConnection.Run(ConnectionType, h =>
{
ILepEloadasJegyzekDal dal = h.LepEloadasJegyzekDal();
return dal.GetOsztalyokForEloadas(TanevId, eloadasId, evfolyamId, osztfoId);
});
return result;
}
public DataSet GetJelentkeztetettOsztalyokIdForEloadas(int eloadasId, int? osztfoId = null)
{
var result = new DataSet();
result = Dal.CustomConnection.Run(ConnectionType, h =>
{
ILepEloadasJegyzekDal dal = h.LepEloadasJegyzekDal();
return dal.GetJelentkeztetettOsztalyokIdForEloadas(TanevId, eloadasId, osztfoId);
});
return result;
}
public void SaveTanulokEloadas(int eloadasId, string[] tanuIds, int kiseroSzam)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.LepEloadasJegyzekDal();
if (tanuIds != null)
{
for (int i = 0; i < tanuIds.Length; i++)
{
int tmpTanuloId = int.MinValue;
int.TryParse(tanuIds[i], out tmpTanuloId);
if (tmpTanuloId > 0)
{
ILepEloadasJegyzek entity;
entity = dal.Get();
entity.EloadasId = eloadasId;
entity.FelhasznaloId = tmpTanuloId;
entity.Megjelent = false;
dal.Insert(entity);
}
}
}
var dalKiseroSzam = h.LepEloadasDal();
var eloadasDBId = GetEloadasSzamok(h, eloadasId).Tables[0].Rows[0].Field<int>("EloadasDBId");
if (eloadasDBId == 0)
{
ILepEloadas entityKiseroSzam;
entityKiseroSzam = dalKiseroSzam.Get();
entityKiseroSzam.EloadasId = eloadasId;
entityKiseroSzam.KiseroLetszam = kiseroSzam;
dalKiseroSzam.Insert(entityKiseroSzam);
}
else
{
dalKiseroSzam.LepEloadasUpdateKiseroSzam(IntezmenyId, TanevId, eloadasId, kiseroSzam);
}
});
}
public DataSet GetEloadasSzamok(int eloadasId)
{
var result = new DataSet();
result = Dal.CustomConnection.Run(ConnectionType, h =>
{
return GetEloadasSzamok(h, eloadasId);
});
return result;
}
private DataSet GetEloadasSzamok(IDalHandler h, int eloadasId)
{
var dal = h.LepEloadasDal();
return dal.LepGetEloadasSzamok(IntezmenyId, TanevId, eloadasId);
}
public bool HasLEPAccess(int felhasznaloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
ILepEloadasDal dal = h.LepEloadasDal(GridParameters);
return dal.HasLEPAccess(felhasznaloId);
});
}
public void SaveOsztalyokEloadas(int eloadasId, string[] osztalyIds)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.LepEloadasJegyzekDal();
for (int i = 0; i < osztalyIds.Length; i++)
{
int tmpOsztalyId = int.MinValue;
int.TryParse(osztalyIds[i], out tmpOsztalyId);
var dalCs = h.Csoport(GridParameters);
var tanuloDS = dalCs.GetOsztalyCsoportTanulok(id: tmpOsztalyId, datum: null, IntezmenyAzonosito, tanevElsoNapja: null);
foreach (DataRow dr in tanuloDS.Tables[0].Rows)
{
ILepEloadasJegyzek entity;
entity = dal.Get();
entity.EloadasId = eloadasId;
entity.FelhasznaloId = dr.Field<int>("TanuloId");
entity.Megjelent = false;
dal.Insert(entity);
}
}
});
}
public void SaveTanulokMegjelent(int Id, string megjelent)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.LepEloadasJegyzekDal();
ILepEloadasJegyzek entity;
entity = dal.Get(Id);
entity.Megjelent = megjelent == "T";
dal.Update(entity);
});
}
public void DeleteTanuloEloadas(int Id)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.LepEloadasJegyzekDal();
ILepEloadasJegyzek entity;
entity = dal.Get(Id);
dal.Delete(entity);
});
}
public DataSet GetTanuloEloadasai(int felhasznaloId)
{
var result = new DataSet();
result = Dal.CustomConnection.Run(ConnectionType, h =>
{
ILepEloadasJegyzekDal dal = h.LepEloadasJegyzekDal();
return dal.GetTanuloEloadasai(felhasznaloId);
});
return result;
}
public DataSet GetEloadasJelentkezesEmailData(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
ILepEloadasJegyzekDal dal = h.LepEloadasJegyzekDal();
return dal.GetEloadasJelentkezesEmailData(id);
});
}
public DataSet GetEloadasLemondasEmailData(int id)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
ILepEloadasJegyzekDal dal = h.LepEloadasJegyzekDal();
return dal.GetEloadasLemondasEmailData(id);
});
}
public int GetTorlendoTanuloSzam(int eloadasId, int osztalyId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
ILepEloadasJegyzekDal dal = h.LepEloadasJegyzekDal();
return dal.GetTorlendoTanuloSzam(IntezmenyId, TanevId, eloadasId, osztalyId);
});
}
public void DeleteTanulokForEloadasByOsztaly(int eloadasId, int osztalyId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.LepEloadasJegyzekDal();
dal.DeleteTanulokForEloadasByOsztaly(IntezmenyId, TanevId, eloadasId, osztalyId);
});
}
public void SaveGondviseloEngedelyezes(int eloadasId, int tanuloId, int gondviseloId, string dontes)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.LepEloadasJegyzekDal();
_ = dal.SaveGondviseloEngedelyezes(IntezmenyId, TanevId, eloadasId, tanuloId, gondviseloId, dontes);
});
}
public DataSet GetTanulokForEloadasWithMegjelent(int eloadasId, DateTime eloadasDatum)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
ILepEloadasJegyzekDal dal = h.LepEloadasJegyzekDal();
return dal.GetTanulokForEloadasWithMegjelent(eloadasId, eloadasDatum);
});
}
public void UpdateEloadasKiseroSzam(int eloadasId, int kiseroSzam)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.LepEloadasJegyzekDal();
var dalKiseroSzam = h.LepEloadasDal();
dalKiseroSzam.LepEloadasUpdateKiseroSzam(IntezmenyId, TanevId, eloadasId, kiseroSzam);
});
}
public void DeleteTanulokByEloadasId(int eloadasId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.LepEloadasJegyzekDal();
dal.DeleteTanulokByEloadasId(TanevId, eloadasId);
});
}
}
}

View file

@ -0,0 +1,267 @@
using System.Data;
using System.Text.RegularExpressions;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
namespace Kreta.BusinessLogic.Helpers
{
public class LeptetesHelper : LogicBase
{
public LeptetesHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet GetOsztalyLeptetesGridData(int aktTanevId)
{
var kovTanevData = new TanevHelper(base.ConnectionType).GetTanevInfo();
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
ILeptetesDal dal = h.Leptetes(GridParameters);
return dal.GetOsztalyLeptetesGridData(aktTanevId);
});
ds.Tables[0].Columns.Add("KovTanev", typeof(string));
ds.Tables[0].Columns.Add("OsztalyJavasoltNeve", typeof(string));
ds.Tables[0].Columns.Add("JavasoltEvfolyam", typeof(string));
ds.Tables[0].Columns.Add("EditOsztalyNeve", typeof(string));
ds.Tables[0].Columns.Add("EditEvfolyam", typeof(int));
foreach (DataRow row in ds.Tables[0].Rows)
{
var javOsztalyNev = GetJavasoltNev(row.Field<string>("OsztalyNeve"));
row["KovTanev"] = kovTanevData.Nev;
row["OsztalyJavasoltNeve"] = javOsztalyNev;
row["JavasoltEvfolyam"] = row["KovEvfolyam"];
row["EditOsztalyNeve"] = javOsztalyNev;
row["EditEvfolyam"] = row["KovEvfolyamId"];
}
return ds;
}
public DataSet GetCsoportLeptetesGridData(int aktTanevId)
{
var kovTanevData = new TanevHelper(base.ConnectionType).GetTanevInfo();
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
ILeptetesDal dal = h.Leptetes(GridParameters);
return dal.GetCsoportLeptetesGridData(aktTanevId);
});
ds.Tables[0].Columns.Add("KovTanev", typeof(string));
ds.Tables[0].Columns.Add("CsoportJavasoltNeve", typeof(string));
ds.Tables[0].Columns.Add("JavasoltEvfolyam", typeof(string));
ds.Tables[0].Columns.Add("JavasoltOsztalybontas", typeof(string));
ds.Tables[0].Columns.Add("EditCsoportNeve", typeof(string));
ds.Tables[0].Columns.Add("EditEvfolyam", typeof(int));
ds.Tables[0].Columns.Add("EditOsztalybontas", typeof(int));
var helper = new OsztalyHelper(base.ConnectionType);
var osztalyok = helper.GetOsztalyokByTanev(string.Empty);
foreach (DataRow row in ds.Tables[0].Rows)
{
var javCsoportNev = GetJavasoltNev(row.Field<string>("CsoportNeve"));
var javCsoportBontas = "";
if (!string.IsNullOrWhiteSpace(row.Field<string>("Osztalybontas")))
javCsoportBontas = GetJavasoltNev(row.Field<string>("Osztalybontas"));
foreach (var item in osztalyok)
{
if (item.Value == javCsoportBontas)
{
row["JavasoltOsztalybontas"] = javCsoportBontas;
row["EditOsztalybontas"] = item.Key;
break;
}
}
row["KovTanev"] = kovTanevData.Nev;
row["CsoportJavasoltNeve"] = javCsoportNev;
row["JavasoltEvfolyam"] = row["KovEvfolyam"];
row["EditCsoportNeve"] = javCsoportNev;
row["EditEvfolyam"] = row["KovEvfolyamId"];
}
return ds;
}
public void CopyOsztalyToKovTanev(int sourceID, string targetNev, int targetEvfolyam, int kovTanevId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
IOsztalyDal oDal = h.Osztaly();
ITanevDal tDal = h.TanevDal();
IFeladatEllatasiHelyDal fDal = h.FeladatEllatasiHelyDal();
ITantervDAL taDal = h.TantervDAL();
ITeremDal teDal = h.Terem();
IAlkalmazottDal aDal = h.Alkalmazott();
var kovTanevData = tDal.Get(kovTanevId);
var sourceEntity = oDal.Get(sourceID);
var targetEntity = oDal.Get();
var kovFeladatEllatasiHelyId = fDal.GetKovTanevIdByAktTanevId(sourceEntity.FeladatEllatasiHelyId);
var kovTantervId = taDal.GetKovTanevIdByAktTanevId(sourceEntity.TantervId);
var kovTeremId = teDal.GetKovTanevIdByAktTanevId(sourceEntity.TeremId);
var kovOsztalyFonokId = aDal.GetKovTanevIdByAktTanevId(sourceEntity.OsztalyFonokId);
var kovOfoHelyettesId = aDal.GetKovTanevIdByAktTanevId(sourceEntity.OfoHelyettesId);
if (kovTantervId != 0)
targetEntity.TantervId = kovTantervId;
targetEntity.Megjegyzes = sourceEntity.Megjegyzes;
targetEntity.Nev = targetNev.ReplaceMultipleSpacesAndTrim();
targetEntity.VegzosEvfolyam = sourceEntity.VegzosEvfolyam;
targetEntity.EvfolyamTipusa = targetEvfolyam;
targetEntity.Importalt = sourceEntity.Importalt;
targetEntity.TervezettLetszam = sourceEntity.TervezettLetszam;
targetEntity.Keresztfeleves = sourceEntity.Keresztfeleves;
targetEntity.FeladatKategoriaId = sourceEntity.FeladatKategoriaId;
targetEntity.MuveszetiAgId = sourceEntity.MuveszetiAgId;
targetEntity.TanszakTipusId = sourceEntity.TanszakTipusId;
targetEntity.MufajTipusId = sourceEntity.MufajTipusId;
targetEntity.ZenemuveszetiAgTipusId = sourceEntity.ZenemuveszetiAgTipusId;
targetEntity.KepzesiForma = sourceEntity.KepzesiForma;
targetEntity.IsGyogypedagogiaiLogopediai = sourceEntity.IsGyogypedagogiaiLogopediai;
targetEntity.IsTechnikai = sourceEntity.IsTechnikai;
targetEntity.FeladatEllatasiHelyId = kovFeladatEllatasiHelyId;
targetEntity.OsztalynaploLeirasa = sourceEntity.OsztalynaploLeirasa;
targetEntity.OsztalynaploMegnyitasa = kovTanevData.KezdoNap;
targetEntity.OsztalynaploZarasa = null;
targetEntity.Agazat = sourceEntity.Agazat;
targetEntity.Reszszakkepesites = sourceEntity.Reszszakkepesites;
targetEntity.Szakkepesites = sourceEntity.Szakkepesites;
targetEntity.SzakmaCsoport = sourceEntity.SzakmaCsoport;
targetEntity.GimnaziumiEvfolyamTipusId = sourceEntity.GimnaziumiEvfolyamTipusId;
targetEntity.Kettannyelvu = sourceEntity.Kettannyelvu;
targetEntity.Nemzetisegi = sourceEntity.Nemzetisegi;
targetEntity.NyelviElokeszito = sourceEntity.NyelviElokeszito;
targetEntity.Sport = sourceEntity.Sport;
targetEntity.AJTehettseggondozoProgram = sourceEntity.AJTehettseggondozoProgram;
targetEntity.AJProgram = sourceEntity.AJProgram;
targetEntity.VegyesEvfolyamu = sourceEntity.VegyesEvfolyamu;
targetEntity.VegyesSzakkepzesu = sourceEntity.VegyesSzakkepzesu;
targetEntity.SpecialisJellemzo = sourceEntity.SpecialisJellemzo;
targetEntity.VegyesEvfolyamuTanterv = sourceEntity.VegyesEvfolyamuTanterv;
targetEntity.OsztalypenzBankszamlaszamKedvezmenyezettNeve = sourceEntity.OsztalypenzBankszamlaszamKedvezmenyezettNeve;
targetEntity.OsztalypenzBankszamlaszama = sourceEntity.OsztalypenzBankszamlaszama;
targetEntity.VPOSEngedelyezett = sourceEntity.VPOSEngedelyezett;
targetEntity.AranyJanosProgramTipusId = sourceEntity.AranyJanosProgramTipusId;
targetEntity.JogviszonyTipusId = sourceEntity.JogviszonyTipusId;
targetEntity.AgazatUjSzktTipusId = sourceEntity.AgazatUjSzktTipusId;
targetEntity.SzakmairanyTipusId = sourceEntity.SzakmairanyTipusId;
targetEntity.SzakmaTipusId = sourceEntity.SzakmaTipusId;
targetEntity.SzakiranyNktTipusId = sourceEntity.SzakiranyNktTipusId;
targetEntity.SzakkepesitesNktTipusId = sourceEntity.SzakkepesitesNktTipusId;
targetEntity.TanulmanyiTeruletNktTipusId = sourceEntity.TanulmanyiTeruletNktTipusId;
if (kovTeremId != 0)
targetEntity.TeremId = kovTeremId;
if (kovOsztalyFonokId != 0)
targetEntity.OsztalyFonokId = kovOsztalyFonokId;
if (kovOfoHelyettesId != 0)
targetEntity.OfoHelyettesId = kovOfoHelyettesId;
targetEntity.IntezmenyId = sourceEntity.IntezmenyId;
targetEntity.TanevId = kovTanevId;
oDal.Insert(targetEntity);
});
}
public void CopyCsoportToKovTanev(int sourceID, string targetNev, int targetEvfolyam, int? targetOsztalybontas, int kovTanevId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
ICsoportDal csDal = h.Csoport();
IOsztalyDal oDal = h.Osztaly();
ITanevDal tDal = h.TanevDal();
IFeladatEllatasiHelyDal fDal = h.FeladatEllatasiHelyDal();
ITantervDAL taDal = h.TantervDAL();
ITeremDal teDal = h.Terem();
IAlkalmazottDal aDal = h.Alkalmazott();
var kovTanevData = tDal.Get(kovTanevId);
var sourceEntity = csDal.Get(sourceID);
var targetEntity = csDal.Get();
var kovFeladatEllatasiHelyId = fDal.GetKovTanevIdByAktTanevId(sourceEntity.FeladatEllatasiHelyId);
var kovTeremId = teDal.GetKovTanevIdByAktTanevId(sourceEntity.TeremId);
var kovCsoportVezetoId = aDal.GetKovTanevIdByAktTanevId(sourceEntity.CsoportVezetoId);
targetEntity.Megjegyzes = sourceEntity.Megjegyzes;
targetEntity.Nev = targetNev.ReplaceMultipleSpacesAndTrim();
targetEntity.EvfolyamTipusa = targetEvfolyam;
targetEntity.Importalt = sourceEntity.Importalt;
targetEntity.TervezettLetszam = sourceEntity.TervezettLetszam;
targetEntity.Keresztfeleves = sourceEntity.Keresztfeleves;
targetEntity.FeladatKategoriaId = sourceEntity.FeladatKategoriaId;
targetEntity.MuveszetiAgId = sourceEntity.MuveszetiAgId;
targetEntity.ZenemuveszetiAgTipusId = sourceEntity.ZenemuveszetiAgTipusId;
targetEntity.KepzesiForma = sourceEntity.KepzesiForma;
targetEntity.IsGyogypedagogiaiLogopediai = sourceEntity.IsGyogypedagogiaiLogopediai;
targetEntity.IsTechnikai = sourceEntity.IsTechnikai;
targetEntity.FeladatEllatasiHelyId = kovFeladatEllatasiHelyId;
targetEntity.Tipusa = sourceEntity.Tipusa;
targetEntity.CsoportnaploLeiras = sourceEntity.CsoportnaploLeiras;
targetEntity.CsoportnaploMegnyitasa = kovTanevData.KezdoNap;
targetEntity.CsoportnaploZarasa = null;
targetEntity.IsAutoEgyeniCsoport = sourceEntity.IsAutoEgyeniCsoport;
if (targetOsztalybontas.HasValue && targetOsztalybontas != -1)
{
targetEntity.OsztalyBontasId = targetOsztalybontas.Value;
var bonottOsztalyData = oDal.Get(targetOsztalybontas.Value);
targetEntity.EvfolyamTipusa = bonottOsztalyData.EvfolyamTipusa;
targetEntity.VegzosEvfolyam = bonottOsztalyData.VegzosEvfolyam;
targetEntity.FeladatEllatasiHelyId = bonottOsztalyData.FeladatEllatasiHelyId;
}
else
{
targetEntity.FeladatEllatasiHelyId = kovFeladatEllatasiHelyId;
targetEntity.VegzosEvfolyam = sourceEntity.VegzosEvfolyam;
}
targetEntity.AlIntezmenyId = sourceEntity.AlIntezmenyId;
targetEntity.AlTanevId = kovTanevId;
if (kovTeremId != 0)
targetEntity.TeremId = kovTeremId;
if (kovCsoportVezetoId != 0)
targetEntity.CsoportVezetoId = kovCsoportVezetoId;
targetEntity.IntezmenyId = sourceEntity.IntezmenyId;
targetEntity.TanevId = kovTanevId;
csDal.Insert(targetEntity);
});
}
private string GetJavasoltNev(string nev)
{
var result = nev;
var pattern = @"(\d\/\d+)";
Match match = Regex.Match(nev, pattern);
if (match.Success && int.TryParse(nev.Substring(0, 1), out _))
{
var splittedStr = match.Value.Split('/');
result = (int.Parse(splittedStr[0]) + 1) + "/" + (int.Parse(splittedStr[1]) + 1) + nev.Replace(match.Value, "");
}
else
{
if (nev.Length >= 3 && int.TryParse(nev.Substring(0, 3), out _))
result = int.Parse(nev.Substring(0, 3)) + 1 + nev.Replace(nev.Substring(0, 3), "");
else if (nev.Length >= 2 && int.TryParse(nev.Substring(0, 2), out _))
result = int.Parse(nev.Substring(0, 2)) + 1 + nev.Replace(nev.Substring(0, 2), "");
else if (nev.Length >= 1 && int.TryParse(nev.Substring(0, 1), out _))
result = int.Parse(nev.Substring(0, 1)) + 1 + nev.Replace(nev.Substring(0, 1), "");
}
return result;
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using System.Threading;
using Kreta.Enums.ManualEnums;
namespace Kreta.BusinessLogic.Helpers
{
public static class LicenceHelper
{
private static DateTime LicenceLejaratiDatum(string licenceDatum)
{
return Convert.ToDateTime(licenceDatum);
}
public static LicenceTipusaEnum LicenceLejaratAllapota(string licenceDatum)
{
DateTime datum = LicenceLejaratiDatum(licenceDatum);
var now = DateTime.Now;
if (datum < now.AddYears(-1))
{
return LicenceTipusaEnum.EgyEveLejart;
}
if (datum < now.AddMonths(-3))
{
return LicenceTipusaEnum.NegyedEveLejart;
}
if (datum < now.AddMonths(-1))
{
return LicenceTipusaEnum.EgyHonapjaLejart;
}
if (datum < now)
{
return LicenceTipusaEnum.Lejart;
}
return LicenceTipusaEnum.Aktiv;
}
private static int LicenceWaitTime(string licenceDatum)
{
var allapot = LicenceLejaratAllapota(licenceDatum);
switch (allapot)
{
case LicenceTipusaEnum.EgyEveLejart:
return 30;
case LicenceTipusaEnum.NegyedEveLejart:
return 10;
case LicenceTipusaEnum.EgyHonapjaLejart:
return 3;
case LicenceTipusaEnum.Lejart:
return 0;
}
return 0;
}
public static void LicenceWait(string licenceDatum)
{
Thread.Sleep(1000 * LicenceWaitTime(licenceDatum));
}
}
}

View file

@ -0,0 +1,250 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.FileService;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
namespace Kreta.BusinessLogic.Helpers
{
public class MerohelyHelper : LogicBase
{
#region Constructor
public MerohelyHelper(IConnectionType connectionType) : base(connectionType) { }
#endregion
#region Merohely
public DataSet MerohelyKereses(string merohelyNev, int? merohelyTipusId, int? keresesMerohelyMukodesiHelyId, int? isMeroallasFrissiteseSzukseges)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
IMerohelyDal dal = helper.MerohelyDal();
return dal.MerohelyKereses(TanevId, IntezmenyId, merohelyNev, merohelyTipusId, keresesMerohelyMukodesiHelyId, isMeroallasFrissiteseSzukseges);
});
}
public MerohelyCO GetMerohelyById(int id)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
IMerohelyDal dal = helper.MerohelyDal();
IMerohely merohely = dal.GetMerohelyById(id);
var merohelyCo = new MerohelyCO();
merohelyCo.Id = merohely.ID;
merohelyCo.Nev = merohely.Nev;
merohelyCo.MukodesiHelyId = merohely.MukodesiHelyId;
merohelyCo.MerohelyTipusId = merohely.MerohelyTipusId;
merohelyCo.MeroallasFrissiteseSzukseges = merohely.MeroallasFrissiteseSzukseges;
return merohelyCo;
});
}
public DataSet GetNemToroltMerohelyek()
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
IMerohelyDal dal = helper.MerohelyDal();
return dal.GetNemToroltMerohelyek(TanevId, IntezmenyId);
});
}
#endregion
#region Meroallas
public DataSet GetMeroallasListByMerohelyId(int merohelyId)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
IMerohelyDal dal = helper.MerohelyDal();
return dal.GetMeroallasListByMerohelyId(merohelyId);
});
}
public MeroallasCO GetMeroallasById(int id)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
IMerohelyDal dal = helper.MerohelyDal();
IMeroallas meroallas = dal.GetMeroallasById(id);
MeroallasCO meroallasCo = new MeroallasCO();
meroallasCo.Id = meroallas.ID;
meroallasCo.MerohelyId = meroallas.MerohelyId;
meroallasCo.MeroallasErtek = meroallas.Ertek;
meroallasCo.LeolvasasDatuma = meroallas.LeolvasasDatuma;
if (meroallas.FeltoltottFajl.Count != 0)
{
meroallasCo.KepUtvonal = meroallas.FeltoltottFajl.Single().Utvonal;
meroallasCo.KepKiterjesztes = meroallas.FeltoltottFajl.Single().Kiterjesztes;
meroallasCo.KepId = meroallas.FeltoltottFajl.Single().ID;
}
return meroallasCo;
});
}
public void DeleteMeroallasById(int id)
{
Dal.CustomConnection.Run(ConnectionType, helper =>
{
IMeroallasDal dal = helper.MeroallasDal();
dal.Delete(id);
});
}
public void SaveMeroallas(MeroallasCO meroallasCo, IFileService fileService)
{
bool hasNewImage = false;
Dal.CustomConnection.Run(ConnectionType, helper =>
{
IMeroallasDal dal = helper.MeroallasDal();
IMeroallas meroallasEntity = !meroallasCo.Id.IsEntityId() ? dal.Get() : dal.Get(meroallasCo.Id.Value);
meroallasEntity.Ertek = meroallasCo.MeroallasErtek;
meroallasEntity.LeolvasasDatuma = meroallasCo.LeolvasasDatuma;
meroallasEntity.MerohelyId = meroallasCo.MerohelyId;
if (meroallasCo.Id.IsEntityId())
{
hasNewImage = UpdateMeroallasImage(helper, meroallasCo, fileService);
dal.FullUpdate(meroallasEntity);
}
else
{
if (!string.IsNullOrWhiteSpace(meroallasCo.MeroallasKep.ContentAsBase64EncodedString))
{
hasNewImage = InsertMeroallasImage(meroallasCo, fileService);
}
dal.Insert(meroallasEntity);
}
if (hasNewImage && !meroallasCo.IsDeleteImage)
{
InsertMeroallasImageData(helper.FeltoltottFajlDAL(), meroallasCo, meroallasEntity);
}
});
}
private bool InsertMeroallasImage(MeroallasCO meroallasCo, IFileService fileService)
{
return SaveImageAndSetCoData(meroallasCo, fileService);
}
private bool UpdateMeroallasImage(IDalHandler h, MeroallasCO meroallasCo, IFileService fileService)
{
bool needInsertImageData = false;
var oldPicture = GetPicture(fileService, meroallasCo.Id);
bool hasOldImage = oldPicture != null;
bool hasNewImage = !string.IsNullOrWhiteSpace(meroallasCo.MeroallasKep.ContentAsBase64EncodedString);
if (hasNewImage)
{
if (hasOldImage)
{
if (!meroallasCo.MeroallasKep.ContentAsBase64EncodedString.Equals(oldPicture.ContentAsBase64EncodedString))
{
DeleteFileAndFileData(h, fileService, meroallasCo.KepId.Value);
needInsertImageData = SaveImageAndSetCoData(meroallasCo, fileService);
}
}
else
{
needInsertImageData = SaveImageAndSetCoData(meroallasCo, fileService);
}
}
else if (hasOldImage && meroallasCo.IsDeleteImage)
{
DeleteFileAndFileData(h, fileService, meroallasCo.KepId.Value);
}
return needInsertImageData;
}
public string SaveFile(IFileService fileService, string fileContent)
{
return fileService.WriteToFile(fileContent, Constants.FileServiceStorageName.Default);
}
public void DeleteFileAndFileData(IFileService fileService, int feltoltottFileId)
{
Dal.CustomConnection.Run(ConnectionType, (h) => DeleteFileAndFileData(h, fileService, feltoltottFileId));
}
private void DeleteFileAndFileData(IDalHandler h, IFileService fileService, int feltoltottFileId)
{
var dal = h.FeltoltottFajlDAL();
var feltoltottFile = dal.Get(feltoltottFileId);
fileService.DeleteFile(feltoltottFile.Utvonal);
dal.Delete(feltoltottFileId);
}
#endregion Meroallas
public List<MeroallasUploadedFileCO> GetPictureList(IFileService fileService, int? meroallasId)
{
MeroallasCO meroallasCo = GetMeroallasById(meroallasId.Value);
if (!string.IsNullOrWhiteSpace(meroallasCo.KepUtvonal) && !string.IsNullOrWhiteSpace(meroallasCo.KepKiterjesztes))
{
return new List<MeroallasUploadedFileCO>
{
new MeroallasUploadedFileCO
{
ContentAsBase64EncodedString = fileService.ReadImage(meroallasCo.KepUtvonal, meroallasCo.KepKiterjesztes)
}
};
}
return null;
}
public MeroallasUploadedFileCO GetPicture(IFileService fileService, int? meroallasId)
{
MeroallasCO meroallasCo = GetMeroallasById(meroallasId.Value);
if (!string.IsNullOrWhiteSpace(meroallasCo.KepUtvonal) && !string.IsNullOrWhiteSpace(meroallasCo.KepKiterjesztes))
{
return new MeroallasUploadedFileCO
{
ContentAsBase64EncodedString = fileService.ReadImage(meroallasCo.KepUtvonal, meroallasCo.KepKiterjesztes)
};
}
return null;
}
private bool SaveImageAndSetCoData(MeroallasCO meroallasCo, IFileService fileService)
{
var kepInfo = new FileInfo(meroallasCo.MeroallasKep.Name);
meroallasCo.KepUtvonal = SaveFile(fileService, meroallasCo.MeroallasKep.ContentAsBase64EncodedString);
meroallasCo.KepNev = Path.GetFileNameWithoutExtension(kepInfo.Name);
meroallasCo.KepKiterjesztes = kepInfo.Extension.Replace(".", string.Empty);
return true;
}
private void InsertMeroallasImageData(IFeltoltottFajlDAL feltoltottFajlDal, MeroallasCO meroallasCo, IMeroallas meroallasEntity)
{
IFeltoltottFajl feltoltottFajlEntity = feltoltottFajlDal.Get();
feltoltottFajlEntity.Nev = meroallasCo.KepNev;
feltoltottFajlEntity.Kiterjesztes = meroallasCo.KepKiterjesztes;
feltoltottFajlEntity.Utvonal = meroallasCo.KepUtvonal;
feltoltottFajlEntity.FeltoltesDatuma = DateTime.Now;
feltoltottFajlDal.InsertMeroallasImageData(feltoltottFajlEntity, meroallasEntity);
}
}
}

View file

@ -0,0 +1,14 @@
using System;
namespace Kreta.BusinessLogic.Helpers
{
public class FogadooraEmailModel
{
public string Message { get; set; }
public string Subject { get; set; }
public string EmailCim { get; set; }
public Guid? EmailGuid { get; set; }
}
}

View file

@ -0,0 +1,219 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Utils;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.Enums;
using Kreta.KretaServer.Exceptions;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class MukodesiHelyHelper : LogicBase
{
public MukodesiHelyHelper(IConnectionType connectionType) : base(connectionType) { }
public IDictionary<string, string> GetMukodesiHelyekDDL(string baseText)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
return LogicUtil.CreateDropdownContent(h.MukodesiHelyDAL(GridParameters).GetMukodesiHelyekForDropDown(TanevId), "ID", "C_NEV", baseText);
});
}
public List<FelHelyValasztoItemCo> GetMukodesiHelyekForFelhelyValaszto()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MukodesiHelyDAL(GridParameters);
var ds = dal.GetMukodesiHelyekForFelhelyValaszto(TanevId, (int)OktatasiNevelesiFeladatEnum.PedagogiaiSzakszolgaltatas);
var result = new List<FelHelyValasztoItemCo>() {
new FelHelyValasztoItemCo {
MukodesiHelyID = 0,
FelhelyId = 0,
MukodesiHelyNev = CommonResource.Minden
}
};
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dataRow in ds.Tables[0].Rows)
{
var item = new FelHelyValasztoItemCo(dataRow);
result.Add(item);
}
}
return result;
});
}
public DataSet GetMukodesiHelyek()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MukodesiHelyDAL(GridParameters);
var ds = dal.GetMukodesiHelyek(TanevId);
return ds;
});
}
public MukodesiHelyCO GetMukodesiHelyAdatok(int ID)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MukodesiHelyDAL();
var mukodesiHely = dal.Get(ID);
return new MukodesiHelyCO(mukodesiHely);
});
}
public void SaveMukodesiHely(MukodesiHelyCO model)
{
if (string.IsNullOrWhiteSpace(model.Nev))
{
throw new ArgumentNullException("Nev");
}
if (model.Telefonszam != null && model.Telefonszam.Length > 50)
{
throw new FormatException("Telefonszam");
}
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MukodesiHelyDAL();
bool isModification = model.ID.HasValue;
var mukodesiHely = dal.Get();
if (isModification)
{
mukodesiHely = dal.Get(model.ID.Value);
}
else // Új felvétele (lehet hogy már volt ilyen nevű, ami ki lett törölve és ez esetben Update-eljük azt és legyen újra TOROLT = 'F')
{
var entity = dal.GetMukodesiHelyByNev(model.Nev, TanevId);
if (entity != null)
{
mukodesiHely = entity;
mukodesiHely.Torolt = false;
isModification = true;
}
}
var intezmeny = h.IntezmenyDal().Get(model.IntezmenyID);
var intAdatokId = intezmeny.IntezmenyAdatok.Where(x => x.Torolt == false && x.TanevId == TanevId).Select(y => y.ID).FirstOrDefault();
mukodesiHely.IntezmenyAdatokId = intAdatokId;
mukodesiHely.Nev = model.Nev;
mukodesiHely.MukodesiHelyAzonosito = model.MukodesiHelyAzonosito;
mukodesiHely.MukodesiHelyTipusa = model.MukodesiHelyTipusa;
mukodesiHely.Telefonszam = model.Telefonszam;
mukodesiHely.Varos = model.Varos;
mukodesiHely.VezetoNeve = model.VezetoNeve;
mukodesiHely.IntezmenyId = model.IntezmenyID;
mukodesiHely.IranyitoSzam = model.Iranyitoszam;
mukodesiHely.EmailCim = model.Email;
mukodesiHely.Fax = model.Fax;
mukodesiHely.Szekhely = model.MukodesiHelyTipusa == (int)MukodesiHelyTipusEnum.Szekhely;
mukodesiHely.Ajto = model.Ajto;
mukodesiHely.Emelet = model.Emelet;
mukodesiHely.KozteruletNev = model.Kozterulet;
mukodesiHely.KozteruletJellegeNev = model.KozteruletJellegeNev;
mukodesiHely.Hazszam = model.Szam;
mukodesiHely.TanevId = model.TanevId.Value;
if (model.TelephelyAnyaintezmeny.HasValue && model.MukodesiHelyTipusa == (int)MukodesiHelyTipusEnum.Telephely)
{
mukodesiHely.TelephelyAnyaintezmenyId = model.TelephelyAnyaintezmeny.Value;
}
else if (isModification)
{
mukodesiHely.TelephelyAnyaintezmeny = null;
}
if (dal.MukodesiHelyAzonositoExists(mukodesiHely))
{
throw new KretaException(ErrorResource.AMegadottMukodesiHelyAzonositoMarLetezik);
}
if (!isModification)
{
dal.Insert(mukodesiHely);
}
else
{
dal.FullUpdate(mukodesiHely);
}
});
}
public bool MukodesiHelyAzonositoExists(MukodesiHelyCO model)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MukodesiHelyDAL();
bool isModification = model.ID.HasValue;
var mukodesiHely = dal.Get();
if (isModification)
{
mukodesiHely = dal.Get(model.ID.Value);
}
else // Új felvétele (lehet hogy már volt ilyen nevű, ami ki lett törölve és ez esetben Update-eljük azt és legyen újra TOROLT = 'F')
{
var entity = dal.GetMukodesiHelyByNev(model.Nev, TanevId);
if (entity != null)
{
mukodesiHely = entity;
mukodesiHely.Torolt = false;
isModification = true;
}
}
mukodesiHely.MukodesiHelyAzonosito = model.MukodesiHelyAzonosito;
mukodesiHely.TanevId = model.TanevId.Value;
return dal.MukodesiHelyAzonositoExists(mukodesiHely);
});
}
public void DeleteMukodesiHely(int ID)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MukodesiHelyDAL();
var mukodesihely = dal.Get(ID);
if (mukodesihely.FeladatEllatasiHely.Count > 0 && mukodesihely.FeladatEllatasiHely.Any(x => x.Torolt == false))
{
throw new CannotBeDeletedException(message: IntezmenyResource.MukodesihelyNemTorolheto);
}
dal.Delete(mukodesihely);
});
}
public void SetSzekhely(int mukodesiHelyID)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.MukodesiHelyDAL();
dal.SetSzekhely(mukodesiHelyID);
});
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,61 @@
using System.Data;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
namespace Kreta.BusinessLogic.Helpers
{
public class NaploEllenorzesHelper : LogicBase
{
public NaploEllenorzesHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet GetNaploEllenorzesekHeadRow(int? feladatKategoriaId, int? osztalyId, int? feladatEllatasiHelyId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var DAL = h.NaploEllenorzes(GridParameters);
var ds = DAL.GetNaploEllenorzesek(feladatKategoriaId, osztalyId.Value, feladatEllatasiHelyId, IntezmenyId, TanevId, FelhasznaloId);
return ds;
});
}
public DataSet GetNaploEllenorzesekDetails(int? feladatKategoriaId, int HetSorszama, int OsztalyID, int? feladatEllatasiHelyId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var DAL = h.NaploEllenorzes(GridParameters);
return DAL.GetNaploEllenorzesTetelek(feladatKategoriaId, OsztalyID, feladatEllatasiHelyId, HetSorszama, IntezmenyId, TanevId);
});
}
public void SaveNaploEllenorzes(NaploEllenorzesCO co)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NaploEllenorzes();
INaploEllenorzes entity = dal.Get();
if (co.ID.HasValue)
{
entity = dal.Get(co.ID.Value);
}
entity.OsztalyId = co.OsztalyId.Value;
entity.HetSorszama = co.HetSzama;
entity.EllenorzesDatuma = co.EllenorzesDatuma;
entity.EllenorzoSzemelyId = FelhasznaloId;
entity.Eszrevetel = co.EllenorzesMegjegyzes;
if (!co.ID.HasValue)
{
dal.Insert(entity);
}
else
{
dal.FullUpdate(entity);
}
});
}
}
}

View file

@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
namespace Kreta.BusinessLogic.Helpers
{
public class NaptariHetHelper : LogicBase
{
public NaptariHetHelper(IConnectionType connectionType) : base(connectionType) { }
public DataSet GetNaptariHetList()
=> Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.NaptariHet(GridParameters).GetNaptariHetList(TanevId);
});
public DataSet GetHetirendHelyettesitesList(Dictionary<int, int?> modifiedHetirendList)
=> Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.NaptariHet(GridParameters).GetHetirendHelyettesitesList(TanevId, modifiedHetirendList);
});
public void SetHetirend(Dictionary<int, int?> modifiedHetirendList)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NaptariHet();
dal.DeleteHelyettesites(TanevId, modifiedHetirendList);
var szunetIds = modifiedHetirendList.Where(x => !x.Value.HasValue).Select(x => x.Key).ToList();
dal.DeleteHetesek(TanevId, szunetIds, FelhasznaloId);
dal.SetHetirend(modifiedHetirendList, IntezmenyId, TanevId);
var helper = new AdatszotarHelper(new DalHandlerConnectionType(ConnectionType, h));
helper.GenerateNaptariNapok();
});
}
public List<int> GetSortedHetirendIdList()
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.NaptariHet().GetSortedHetirendIdList(TanevId);
});
}
public int GetNaptariHetSorszamByDate(DateTime datum)
=> Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.NaptariHet(GridParameters).GetNaptariHetSorszamByDate(datum, TanevId);
});
public int? GetNaptariHetHetirendByDate(DateTime datum)
=> Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.NaptariHet(GridParameters).GetNaptariHetHetirendByDate(datum, TanevId);
});
}
}

View file

@ -0,0 +1,134 @@
using System;
using System.Collections.Generic;
using System.Data;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.Enums;
namespace Kreta.BusinessLogic.Helpers
{
public class NaptariNapHelper : LogicBase
{
public NaptariNapHelper(IConnectionType connectionType) : base(connectionType) { }
public bool IsTanitasiNap(DateTime datum)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.NaptariNap();
return dal.IsTanitasiNap(datum, GetTanitasiNapIdList(), TanevId);
});
}
/// INFO @DevKornel: Mobil használja
public int? GetNaptariNapId(DateTime datum)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.NaptariNap();
return dal.GetNaptariNapId(datum);
});
}
public Dictionary<int, string> GetNaplozottOrakTanarai(int? naptariNapId)
{
var ds = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.NaptariNap();
return dal.GetNaplozottOrakTanarai(naptariNapId);
});
var result = new Dictionary<int, string>();
if (ds == null)
{
return result;
}
foreach (DataRow row in ds.Tables[0].Rows)
{
result.Add(row.Field<int>("ID"), row.Field<string>("Nev"));
}
return result;
}
public Dictionary<int, string> GetNaplozottOrakTanarai(DateTime? datum)
{
return GetNaplozottOrakTanarai(GetNaptariNapId(datum.Value));
}
public List<int> GetTanitasiNapIdList()
{
var tanitasiNapIdList = new List<int>
{
(int)NapTipusEnum.tanitasi_nap,
(int)NapTipusEnum.roviditett_orakat_tartalmazo_tanitasi_nap,
(int)NapTipusEnum.elso_tanitasi_nap,
(int)NapTipusEnum.utolso_tanitasi_nap,
(int)NapTipusEnum.elso_felev_vege,
(int)NapTipusEnum.vizsganap,
(int)NapTipusEnum.utolso_tanitasi_nap_a_vegzos_evfolyamokon,
(int)NapTipusEnum.I_negyedev_vege,
(int)NapTipusEnum.III_negyedev_vege,
(int)NapTipusEnum.RendkivuliTanitasiNap,
(int)NapTipusEnum.Nyilt_nap
};
return tanitasiNapIdList;
}
public DataSet GetNaptariNapData(DateTime datum)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.NaptariNap();
return dal.GetNaptariNapData(datum, TanevId);
});
}
public bool GetIsEgyediNapByDate(DateTime datum)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.NaptariNap();
return dal.GetIsEgyediNapByDate(datum, TanevId);
});
}
public DataSet GetNapTipusData(int naptipus)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.NaptariNap();
return dal.GetNapTipusData(naptipus, TanevId);
});
}
public bool GetIsEgyediNapByDateAndOsztalyCsoportId(DateTime datum, int osztalyCsoportId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NaptariNap();
return dal.GetIsEgyediNapByDateAndOsztalyCsoportId(datum, TanevId, osztalyCsoportId);
});
}
public EgyediNapCo GetIsEgyediNapByDateAndOsztalyCsoportNev(DateTime datum, string osztalyCsoportNev)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NaptariNap();
var dataSet = dal.GetIsEgyediNapByDateAndOsztalyCsoportNev(datum, TanevId, osztalyCsoportNev);
var dataRow = dataSet.Tables[0].Rows[0];
var result = new EgyediNapCo
{
IsEgyediNap = SDAConvert.ToBooleanFromTF(dataRow["IsEgyediNap"]),
HetNapjaTipusId = SDAConvert.ToNullableInt32(dataRow["HetNapjaTipusId"]),
};
return result;
});
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,325 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Exceptions;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class NemKotottMunkaidoHelper : LogicBase
{
public NemKotottMunkaidoHelper(IConnectionType connectionType) : base(connectionType) { }
public NemKotottMunkaidoCO GetNemKotottMunkaidoById(int id)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
var dal = helper.NemKotottMunkaido();
var entity = dal.GetNemKotottMunkaidoById(id);
return ConvertNewCo(entity);
});
}
public int GetNemKotottMunkaidoId(int oralatogatasId, int tanarId)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
var dal = helper.NemKotottMunkaido();
return dal.GetNemKotottMunkaidoId(oralatogatasId, tanarId);
});
}
public List<DateTime> GetNapokForNemKotottMunkaidoInsert(DateTime startDate, DateTime endDate, DateTime selectedDate, int hetirendId)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
var dal = helper.NemKotottMunkaido();
var ds = dal.GetNapokForNemKotottMunkaidoInsert(IntezmenyId, TanevId, startDate, endDate, selectedDate, hetirendId);
List<DateTime> list = new List<DateTime>();
foreach (DataRow item in ds.Tables[0].Rows)
{
list.Add(item.Field<DateTime>("Datum"));
}
return list;
});
}
public List<int> GetNapokForNemKotottMunkaidoDelete(DateTime startDate, DateTime endDate, string groupId)
{
return Dal.CustomConnection.Run(ConnectionType, helper =>
{
var dal = helper.NemKotottMunkaido();
var ds = dal.GetNapokForNemKotottMunkaidoDelete(IntezmenyId, TanevId, startDate, endDate, groupId);
List<int> list = new List<int>();
foreach (DataRow item in ds.Tables[0].Rows)
{
list.Add(item.Field<int>("Id"));
}
return list;
});
}
public int Insert(NemKotottMunkaidoCO co)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var isEnabledNemKotottMunkaidoRogzitese = new TanevrendHelper(new DalHandlerConnectionType(ConnectionType, h)).EnabledNemKotottMunkaidoRogzitese(co.Kezdete);
if (!isEnabledNemKotottMunkaidoRogzitese)
{
throw new BlException(OrarendResource.NemEngedélyezettNemKotottMunkaidoNaplozasa);
}
var dal = h.NemKotottMunkaido();
INemKotottMunkaido entity = ConvertNewEntity(co, dal.Get());
return dal.Insert(entity);
});
}
public void Update(NemKotottMunkaidoCO co)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var isEnabledNemKotottMunkaidoRogzitese = new TanevrendHelper(new DalHandlerConnectionType(ConnectionType, h)).EnabledNemKotottMunkaidoRogzitese(co.Kezdete);
if (!isEnabledNemKotottMunkaidoRogzitese)
{
throw new BlException(OrarendResource.NemEngedélyezettNemKotottMunkaidoNaplozasa);
}
var dal = h.NemKotottMunkaido();
if (co.TulajId == FelhasznaloId)
{
dal.Update(co.Id.Value, co.Megtartott, co.NaplozottMegjegyzes, co.Kezdete, co.Vege, co.TorvenyKategoriaId);
}
else if (co.TulajId != FelhasznaloId)
{
dal.Update(co.Id.Value, co.Megtartott, co.NaplozottMegjegyzes);
}
});
}
public void UpdateNemKotottMunkaIdoByGroupId(NemKotottMunkaidoCO co, DateTime pIdoszakKezdete, DateTime pIdoszakVege, string pNewGroupId = null)
{
if (string.IsNullOrWhiteSpace(pNewGroupId))
{
pNewGroupId = co.GroupId;
}
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NemKotottMunkaido();
dal.UpdateNemKotottMunkaIdoByGroupId(TanevId, co.GroupId, pIdoszakKezdete, pIdoszakVege, pNewGroupId, co.TorvenyKategoriaId, co.Megjegyzes, FelhasznaloId);
});
}
public void Delete(int id, bool isAdmin, bool isGlobal = false)
{
Dal.CustomConnection.Run(ConnectionType, helper =>
{
var dal = helper.NemKotottMunkaido();
var entity = dal.GetNemKotottMunkaidoById(id);
if (isGlobal)
{
dal.Delete(id);
}
else if (!isAdmin)
{
dal.Update(id, megtartott: false);
}
else if (isAdmin)
{
dal.AdminDelete(id);
}
});
}
public void DeleteTanarAltal(int id)
{
Dal.CustomConnection.Run(ConnectionType, helper =>
{
var dal = helper.NemKotottMunkaido();
dal.TanarDelete(id);
});
}
public List<NevOktLeNemKotottMunkaidoItemCO> GetNevOktLeNemKotottMunkaidoItemCoList(NevOktLeNemKotottMunkaidoSearchCO searchCo)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NemKotottMunkaido();
var ds = dal.GetNemKotottMunkaidoData(TanevId, searchCo.FeladatKategoriaId, searchCo.FeladatEllatasiHelyId);
var result = new List<NevOktLeNemKotottMunkaidoItemCO>();
foreach (var row in ds.Tables[0].AsEnumerable())
{
result.Add(new NevOktLeNemKotottMunkaidoItemCO(row));
}
return FilterNevOktLeNemKotottMunkaido(result, searchCo);
});
}
private INemKotottMunkaido ConvertNewEntity(NemKotottMunkaidoCO co, INemKotottMunkaido nemKotottMunkaido)
{
nemKotottMunkaido.GroupId = co.GroupId;
nemKotottMunkaido.TanarId = co.TanarId;
nemKotottMunkaido.TulajdonosId = FelhasznaloId;
nemKotottMunkaido.TevekenysegTipusa = co.TorvenyKategoriaId;
nemKotottMunkaido.Kezdete = co.Kezdete;
nemKotottMunkaido.Vege = co.Vege;
nemKotottMunkaido.Megtartott = co.Megtartott;
nemKotottMunkaido.Megjegyzes = co.Megjegyzes;
nemKotottMunkaido.NaplozottMegjegyzes = co.NaplozottMegjegyzes;
nemKotottMunkaido.Hetirend = co.HetirendId;
nemKotottMunkaido.AdminAltalTorolt = false;
nemKotottMunkaido.TanevId = TanevId;
nemKotottMunkaido.RogzitesDatuma = DateTime.Today;
return nemKotottMunkaido;
}
private INemKotottMunkaido ConvertEntity(NemKotottMunkaidoCO co, INemKotottMunkaido nemKotottMunkaido)
{
nemKotottMunkaido.ID = co.Id.Value;
nemKotottMunkaido.GroupId = co.GroupId;
nemKotottMunkaido.TanarId = co.TanarId;
nemKotottMunkaido.TulajdonosId = co.TulajId;
nemKotottMunkaido.TevekenysegTipusa = co.TorvenyKategoriaId;
nemKotottMunkaido.Kezdete = co.Kezdete;
nemKotottMunkaido.Vege = co.Vege;
nemKotottMunkaido.Megtartott = co.Megtartott;
nemKotottMunkaido.Megjegyzes = co.Megjegyzes;
nemKotottMunkaido.Hetirend = co.HetirendId;
return nemKotottMunkaido;
}
private NemKotottMunkaidoCO ConvertNewCo(INemKotottMunkaido entity)
{
var co = new NemKotottMunkaidoCO()
{
Id = entity.ID,
GroupId = entity.GroupId,
TanarId = entity.TanarId,
TulajId = entity.TulajdonosId,
Kezdete = entity.Kezdete,
Vege = entity.Vege,
TorvenyKategoriaId = entity.TevekenysegTipusa,
Megtartott = entity.Megtartott ?? false,
Megjegyzes = entity.Megjegyzes,
NaplozottMegjegyzes = entity.NaplozottMegjegyzes,
HetirendId = entity.Hetirend,
isReadonly = entity.Fogadoora.Count > 0, //Ha fogadóórához kapcoslódik, akkor csak readonly
isTanarAltalTorolt = entity.IsTanarAltalTorolt
};
return co;
}
private List<NevOktLeNemKotottMunkaidoItemCO> FilterNevOktLeNemKotottMunkaido(List<NevOktLeNemKotottMunkaidoItemCO> data, NevOktLeNemKotottMunkaidoSearchCO searchCo)
{
IEnumerable<NevOktLeNemKotottMunkaidoItemCO> result = data.AsEnumerable();
if (searchCo.TanarId.HasValue)
{
result = result.Where(x => x.TanarId == searchCo.TanarId.Value);
}
if (searchCo.Kategoria.HasValue)
{
result = result.Where(x => x.KategoriaId == searchCo.Kategoria.Value);
}
if (searchCo.DatumTol.HasValue)
{
result = result.Where(x => x.Datum >= searchCo.DatumTol.Value.StartOfTheDay());
}
if (searchCo.DatumIg.HasValue)
{
result = result.Where(x => x.Datum < searchCo.DatumIg.Value.EndOfTheDay());
}
if (searchCo.KezdeteTol.HasValue)
{
result = result.Where(x => x.Kezdete.Value.TimeOfDay >= searchCo.KezdeteTol.Value.TimeOfDay);
}
if (searchCo.KezdeteIg.HasValue)
{
result = result.Where(x => x.Kezdete.Value.TimeOfDay < searchCo.KezdeteIg.Value.TimeOfDay);
}
if (searchCo.VegeTol.HasValue)
{
result = result.Where(x => x.Vege.Value.TimeOfDay >= searchCo.VegeTol.Value.TimeOfDay);
}
if (searchCo.VegeIg.HasValue)
{
result = result.Where(x => x.Vege.Value.TimeOfDay < searchCo.VegeIg.Value.TimeOfDay);
}
if (searchCo.RogzitesDatumaTol.HasValue)
{
result = result.Where(x => x.RogzitesDatuma >= searchCo.RogzitesDatumaTol.Value.StartOfTheDay());
}
if (searchCo.RogzitesDatumaIg.HasValue)
{
result = result.Where(x => x.RogzitesDatuma < searchCo.RogzitesDatumaIg.Value.EndOfTheDay());
}
if (searchCo.IsToroltTevekenysegek.HasValue)
{
result = result.Where(x => x.IsToroltTevekenysegek == searchCo.IsToroltTevekenysegek.ToBool());
}
return result.ToList();
}
public bool HasTanarNemKotottMunkaidoUtkozes(int tanarId, DateTime oraKezdete, DateTime oraVege, int? nemkotottId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NemKotottMunkaido();
var result = dal.HasTanarNemKotottMunkaidoUtkozes(tanarId, oraKezdete, oraVege, nemkotottId);
return result;
});
}
public List<NevOktLeNemKotottMunkaidoItemHelyettesitesCO> GetNemKotottMunkaIdoHelyettesiteshez(DateTime oraKezdete, DateTime oraVege)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.NemKotottMunkaido();
var dataSet = dal.GetNemKotottMunkaIdoHelyettesiteshez(TanevId, oraKezdete, oraVege);
var result = new List<NevOktLeNemKotottMunkaidoItemHelyettesitesCO>();
foreach (var row in dataSet.Tables[0].AsEnumerable())
{
result.Add(new NevOktLeNemKotottMunkaidoItemHelyettesitesCO(row));
}
return result;
});
}
}
}

View file

@ -0,0 +1,30 @@
using System;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
namespace Kreta.BusinessLogic.Helpers
{
public class NemNaplozottTanorakHelper : LogicBase
{
public NemNaplozottTanorakHelper(IConnectionType connectionType) : base(connectionType) { }
public NemNaplozottTanorakSearchCO NemNaplozottTanorakSearch(NemNaplozottTanorakSearchCO nemNaplozottTanorakSearchCO)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var orarendHelper = new OrarendHelper(new DalHandlerConnectionType(ConnectionType, h));
var systemSettingsHelper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h));
nemNaplozottTanorakSearchCO.NaplozarasDate = orarendHelper.GetNaplozarasDate(DateTime.Now);
nemNaplozottTanorakSearchCO.IsCsakErtekelesZarasa = systemSettingsHelper.GetSystemSettingValue<NaplozarasErvenyessegiKoreEnum>(RendszerBeallitasTipusEnum.elektronikus_naplo_zarasanak_datuma_beallitas_ervenyesegi_kore) == NaplozarasErvenyessegiKoreEnum.CsakErtekelesZarasa;
return nemNaplozottTanorakSearchCO;
});
}
}
}

View file

@ -0,0 +1,998 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using Kreta.Core.ConnectionType;
using Kreta.Resources;
using OfficeOpenXml;
using OfficeOpenXml.Style;
namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel
{
public abstract class BaseNyomtatvanyExcel : IDisposable
{
private const string ConstFontName = "Calibri";
protected class CellStyle
{
public string Name { get; set; }
/// integer (not really needed unless you need to round numbers, Excel with use default cell properties) --> "0"
/// integer without displaying the number 0 in the cell --> "#"
/// number with 1 decimal place --> "0.0"
/// number with 2 decimal places --> "0.00"
/// number with 2 decimal places and thousand separator --> "#,##0.00"
/// number with 2 decimal places and thousand separator and money symbol --> "€#,##0.00"
/// percentage (1 = 100%, 0.01 = 1%) --> "0%"
public string Numberformat { get; set; } = "0";
public string BgColorHex { get; set; } = "transparent";
public bool FontBold { get; set; }
public int FontSize { get; set; } = 11;
public string FontName { get; set; } = ConstFontName;
public string FontColorHex { get; set; } = "automatic";
public int TextRotation { get; set; }
public bool WrapText { get; set; }
public ExcelBorderStyle LeftBorder { get; set; } = ExcelBorderStyle.None;
public ExcelBorderStyle RightBorder { get; set; } = ExcelBorderStyle.None;
public ExcelBorderStyle TopBorder { get; set; } = ExcelBorderStyle.None;
public ExcelBorderStyle BottomBorder { get; set; } = ExcelBorderStyle.None;
public ExcelHorizontalAlignment HorizontalAlignment { get; set; } = ExcelHorizontalAlignment.Left;
public ExcelVerticalAlignment VerticalAlignment { get; set; } = ExcelVerticalAlignment.Center;
public CellStyle()
{ }
public CellStyle(string Name)
{
this.Name = Name;
}
public CellStyle(BaseNyomtatvanyExcel.CellStyle prevCellStyle)
{
Numberformat = prevCellStyle.Numberformat;
BgColorHex = prevCellStyle.BgColorHex;
FontBold = prevCellStyle.FontBold;
FontSize = prevCellStyle.FontSize;
FontName = prevCellStyle.FontName;
FontColorHex = prevCellStyle.FontColorHex;
TextRotation = prevCellStyle.TextRotation;
WrapText = prevCellStyle.WrapText;
LeftBorder = prevCellStyle.LeftBorder;
RightBorder = prevCellStyle.RightBorder;
TopBorder = prevCellStyle.TopBorder;
BottomBorder = prevCellStyle.BottomBorder;
HorizontalAlignment = prevCellStyle.HorizontalAlignment;
VerticalAlignment = prevCellStyle.VerticalAlignment;
}
}
protected string Author = "";
protected ExcelPackage ExcelPackage;
protected DataSet DataSet;
protected string StoredProcedure = null;
protected Dictionary<string, string> DbParameters = new Dictionary<string, string>();
protected Dictionary<string, CellStyle> NamedCellStyles = new Dictionary<string, CellStyle>();
protected CellStyle NormalStyle = null;
protected CellStyle NormalStyleWrapText = null;
protected CellStyle HeaderStyle = null;
protected CellStyle HeaderStyle90 = null;
protected CellStyle IntegerStyle = null;
protected CellStyle IntegerBoldStyle = null;
protected CellStyle Numeric2Style = null;
protected CellStyle Numeric2BoldStyle = null;
protected CellStyle NormalStyleBottomBordered = null;
protected CellStyle NormalStyleCentered = null;
protected CellStyle HeaderStyleBottomBordered = null;
protected CellStyle HeaderStyle90BottomBordered = null;
protected CellStyle IntegerStyleBottomBordered = null;
protected CellStyle IntegerBoldStyleBottomBordered = null;
protected CellStyle Numeric2StyleBottomBordered = null;
protected CellStyle Numeric2BoldStyleBottomBordered = null;
protected CellStyle HeaderStyleBottomBorderedBGGray = null;
protected CellStyle HeaderStyle90BottomBorderedBGGray = null;
protected CellStyle DocnameStyle = null;
protected CellStyle DocheaderStyle1 = null;
protected CellStyle DocheaderStyle2 = null;
protected CellStyle DocheaderStyleSideBordered = null;
protected CellStyle DocheaderStyleMergedUpperCell = null;
protected CellStyle DocheaderStyleMergedLowerCell = null;
protected CellStyle DocheaderStyleCenteredWithoutBorder = null;
protected CellStyle Numeric2BoldBigerStyleBottomBordered = null;
protected CellStyle PercentStyleBottomBordered = null;
protected CellStyle PercentBoldStyleBottomBordered = null;
protected bool isMultisheetExcel;
private IConnectionType _connectionType;
public DataSet GetSheetDataSet()
=> DataSet;
protected BaseNyomtatvanyExcel(IConnectionType connectionType, bool isMultisheetExcel = false)
{
_connectionType = connectionType;
this.isMultisheetExcel = isMultisheetExcel;
NamedCellStyles.Add("NormalStyle", NormalStyle = new CellStyle("NormalStyle"));
NamedCellStyles.Add("NormalStyleWrapText", NormalStyleWrapText = new CellStyle(NamedCellStyles["NormalStyle"]) { Name = "NormalStyleWrapText", WrapText = true });
NamedCellStyles.Add("HeaderStyle", HeaderStyle = new CellStyle("HeaderStyle") { FontBold = true, WrapText = true });
NamedCellStyles.Add("HeaderStyle90", HeaderStyle90 = new CellStyle(NamedCellStyles["HeaderStyle"]) { Name = "HeaderStyle90", TextRotation = 90, HorizontalAlignment = ExcelHorizontalAlignment.Center, VerticalAlignment = ExcelVerticalAlignment.Bottom });
NamedCellStyles.Add("IntegerStyle", IntegerStyle = new CellStyle("IntegerStyle") { Numberformat = "0", HorizontalAlignment = ExcelHorizontalAlignment.Center });
NamedCellStyles.Add("IntegerBoldStyle", IntegerBoldStyle = new CellStyle(NamedCellStyles["IntegerStyle"]) { Name = "IntegerBoldStyle", FontBold = true });
NamedCellStyles.Add("Numeric2Style", Numeric2Style = new CellStyle("Numeric2Style") { Numberformat = "0.00", HorizontalAlignment = ExcelHorizontalAlignment.Center });
NamedCellStyles.Add("Numeric2BoldStyle", Numeric2BoldStyle = new CellStyle(NamedCellStyles["Numeric2Style"]) { Name = "Numeric2BoldStyle", FontBold = true });
NamedCellStyles.Add("NormalStyleBottomBordered", NormalStyleBottomBordered = new CellStyle("NormalStyleBottomBordered")
{
TopBorder = ExcelBorderStyle.None,
LeftBorder = ExcelBorderStyle.None,
BottomBorder = ExcelBorderStyle.Thin,
RightBorder = ExcelBorderStyle.None,
});
NamedCellStyles.Add("NormalStyleCentered", NormalStyleCentered = new CellStyle("NormalStyleCentered")
{
HorizontalAlignment = ExcelHorizontalAlignment.Center,
VerticalAlignment = ExcelVerticalAlignment.Center,
WrapText = true
});
NamedCellStyles.Add("HeaderStyleBottomBordered", HeaderStyleBottomBordered = new CellStyle(NamedCellStyles["NormalStyleBottomBordered"]) { Name = "HeaderStyleBottomBordered", FontBold = true, WrapText = true });
NamedCellStyles.Add("HeaderStyle90BottomBordered", HeaderStyle90BottomBordered = new CellStyle(NamedCellStyles["HeaderStyleBottomBordered"]) { Name = "HeaderStyle90BottomBordered", TextRotation = 90, HorizontalAlignment = ExcelHorizontalAlignment.Center, VerticalAlignment = ExcelVerticalAlignment.Bottom });
NamedCellStyles.Add("IntegerStyleBottomBordered", IntegerStyleBottomBordered = new CellStyle(NamedCellStyles["NormalStyleBottomBordered"]) { Name = "IntegerStyleBottomBordered", Numberformat = "0", HorizontalAlignment = ExcelHorizontalAlignment.Center });
NamedCellStyles.Add("IntegerBoldStyleBottomBordered", IntegerBoldStyleBottomBordered = new CellStyle(NamedCellStyles["IntegerStyleBottomBordered"]) { Name = "IntegerBoldStyleBottomBordered", FontBold = true });
NamedCellStyles.Add("Numeric2StyleBottomBordered", Numeric2StyleBottomBordered = new CellStyle(NamedCellStyles["NormalStyleBottomBordered"]) { Name = "Numeric2StyleBottomBordered", Numberformat = "0.00", HorizontalAlignment = ExcelHorizontalAlignment.Center });
NamedCellStyles.Add("Numeric2BoldStyleBottomBordered", Numeric2BoldStyleBottomBordered = new CellStyle(NamedCellStyles["Numeric2StyleBottomBordered"]) { Name = "Numeric2BoldStyleBottomBordered", FontBold = true });
NamedCellStyles.Add("HeaderStyleBottomBorderedBGGray", HeaderStyleBottomBorderedBGGray = new CellStyle(NamedCellStyles["HeaderStyleBottomBordered"]) { Name = "HeaderStyleBottomBorderedBGGray", BgColorHex = "#AAAAAA" });
NamedCellStyles.Add("HeaderStyle90BottomBorderedBGGray", HeaderStyle90BottomBorderedBGGray = new CellStyle(NamedCellStyles["HeaderStyle90BottomBordered"]) { Name = "HeaderStyle90BottomBorderedBGGray", BgColorHex = "#AAAAAA" });
NamedCellStyles.Add("DocnameStyle", DocnameStyle = new CellStyle(NamedCellStyles["HeaderStyle"]) { Name = "DocnameStyle", FontSize = 16 });
NamedCellStyles.Add("DocheaderStyle1", DocheaderStyle1 = new CellStyle(NamedCellStyles["HeaderStyle"])
{
Name = "DocheaderStyle1",
FontColorHex = "#FFFFFF",
BgColorHex = "#18A0C8",
HorizontalAlignment = ExcelHorizontalAlignment.Left,
VerticalAlignment = ExcelVerticalAlignment.Center
});
NamedCellStyles.Add("DocheaderStyleSideBordered", DocheaderStyleSideBordered = new CellStyle(NamedCellStyles["HeaderStyle"])
{
Name = "DocheaderStyleSideBordered",
FontColorHex = "#FFFFFF",
BgColorHex = "#18A0C8",
HorizontalAlignment = ExcelHorizontalAlignment.Center,
VerticalAlignment = ExcelVerticalAlignment.Center,
LeftBorder = ExcelBorderStyle.Thin,
RightBorder = ExcelBorderStyle.Thin,
BottomBorder = ExcelBorderStyle.Thin
});
NamedCellStyles.Add("DocheaderStyleMergedUpperCell", DocheaderStyleMergedUpperCell = new CellStyle(NamedCellStyles["HeaderStyle"])
{
Name = "DocheaderStyleMergedUpperCell",
FontColorHex = "#FFFFFF",
BgColorHex = "#18A0C8",
HorizontalAlignment = ExcelHorizontalAlignment.Left,
VerticalAlignment = ExcelVerticalAlignment.Center,
TopBorder = ExcelBorderStyle.Thin,
LeftBorder = ExcelBorderStyle.Thin,
RightBorder = ExcelBorderStyle.Thin
});
NamedCellStyles.Add("DocheaderStyleMergedLowerCell", DocheaderStyleMergedLowerCell = new CellStyle(NamedCellStyles["HeaderStyle"])
{
Name = "DocheaderStyleMergedLowerCell",
HorizontalAlignment = ExcelHorizontalAlignment.Left,
VerticalAlignment = ExcelVerticalAlignment.Center,
LeftBorder = ExcelBorderStyle.Thin,
RightBorder = ExcelBorderStyle.Thin,
BottomBorder = ExcelBorderStyle.Thin
});
NamedCellStyles.Add("DocheaderStyleCenteredWithoutBorder", DocheaderStyleCenteredWithoutBorder = new CellStyle(NamedCellStyles["DocheaderStyle1"])
{
Name = "DocheaderStyleCenteredWithoutBorder",
HorizontalAlignment = ExcelHorizontalAlignment.Center,
VerticalAlignment = ExcelVerticalAlignment.Center,
LeftBorder = ExcelBorderStyle.None,
RightBorder = ExcelBorderStyle.None,
TopBorder = ExcelBorderStyle.None,
BottomBorder = ExcelBorderStyle.None
});
NamedCellStyles.Add("DocheaderStyle2", DocheaderStyle2 = new CellStyle(NamedCellStyles["DocheaderStyle1"]) { Name = "DocheaderStyle2", BgColorHex = "#5D5D5D" });
NamedCellStyles.Add("Numeric2BoldBigerStyleBottomBordered", Numeric2BoldBigerStyleBottomBordered = new CellStyle(NamedCellStyles["Numeric2BoldStyleBottomBordered"]) { Name = "Numeric2BoldBigerStyleBottomBordered", FontSize = 14 });
NamedCellStyles.Add("PercentStyleBottomBordered", PercentStyleBottomBordered = new CellStyle(NamedCellStyles["NormalStyleBottomBordered"]) { Name = "PercentStyleBottomBordered", Numberformat = "0%", HorizontalAlignment = ExcelHorizontalAlignment.Center });
NamedCellStyles.Add("PercentBoldStyleBottomBordered", PercentBoldStyleBottomBordered = new CellStyle(NamedCellStyles["PercentStyleBottomBordered"]) { Name = "PercentBoldStyleBottomBordered", FontBold = true });
}
protected DataTable CreateDataTable(List<string[]> list)
{
var dataTable = new DataTable();
var firstRow = true;
foreach (var listRow in list)
{
if (firstRow)
{
foreach (var hcol in listRow)
dataTable.Columns.Add(hcol);
firstRow = false;
}
else
{
int col = 0;
var dataRow = dataTable.NewRow();
foreach (DataColumn dataColumn in dataTable.Columns)
dataRow[dataColumn.ToString()] = listRow[col++];
dataTable.Rows.Add(dataRow);
}
}
return dataTable;
}
protected void SetExcelDataSet(DataSet ds = null)
{
if (ds == null)
{
if (DbParameters == null || StoredProcedure == null)
{
throw new NullReferenceException("DB Parameterek nincsenek beallitva");
}
DataSet = new NyomtatvanyokHelper(_connectionType).GetNyomtatvanyStoredProcedureDataSet(StoredProcedure, DbParameters);
if (DataSet == null)
{
throw new NoNullAllowedException(StoredProcedure + " SP has no result!");
}
}
else
{
DataSet = ds;
}
}
public abstract void CreateSheet(Dictionary<string, string> dbParameters, int sheetIndex = 1);
public MemoryStream ExcelNyomtatas()
{
return new MemoryStream(ExcelPackage.GetAsByteArray());
}
public MemoryStream ExcelNyomtatas(Dictionary<string, string> dbParameters)
{
if (!isMultisheetExcel)
{
if (dbParameters == null)
{
throw new ApplicationException("Egy lapos excel munkafüzet nyomtatásához az adatbázis paraméterek kötelezőek.");
}
if (ExcelPackage.Workbook.Worksheets.Count > 0)
{
GenerateNewExcelPackage();
SetWorkbookProperties();
}
CreateSheet(dbParameters);
}
return ExcelNyomtatas();
}
protected void SetWorkbookProperties()
{
ExcelPackage.Workbook.Properties.Author = "";
ExcelPackage.Workbook.Properties.Title = "";
ExcelPackage.Workbook.Properties.Company = "";
foreach (KeyValuePair<string, CellStyle> style in NamedCellStyles)
ChangeStyle(ExcelPackage.Workbook.Styles.CreateNamedStyle(style.Key), style.Value);
}
protected void AddNamedStyle(string styleName, CellStyle cellStyle)
=> ChangeStyle(ExcelPackage.Workbook.Styles.CreateNamedStyle(styleName), cellStyle);
protected ExcelWorksheet CreateSheet(string sheetName, int position = 1, eOrientation orientation = eOrientation.Portrait, bool fitToPage = false, int fitToWidth = 1, int fitToHeight = 1, int fontSize = 11, string fontName = ConstFontName)
{
if (sheetName.Length > 31)
{
sheetName = sheetName.Substring(0, 31);
}
ExcelWorksheet worksheet = ExcelPackage.Workbook.Worksheets[sheetName];
if (worksheet == null)
{
worksheet = ExcelPackage.Workbook.Worksheets.Add(sheetName);
worksheet.Cells.Style.Font.Size = fontSize;
worksheet.Cells.Style.Font.Name = fontName;
if (fitToPage)
{
worksheet.PrinterSettings.FitToPage = true;
worksheet.PrinterSettings.FitToWidth = fitToWidth;
worksheet.PrinterSettings.FitToHeight = fitToHeight;
}
worksheet.PrinterSettings.Orientation = orientation;
}
return worksheet;
}
public string ColumnLabel(int col)
{
var dividend = col;
var columnLabel = string.Empty;
while (dividend > 0)
{
var modulo = (dividend - 1) % 26;
columnLabel = Convert.ToChar(65 + modulo) + columnLabel;
dividend = (dividend - modulo) / 26;
}
return columnLabel;
}
protected void AddComment(ExcelWorksheet worksheet, int row, int col, string comment)
{
if (comment != null)
{
var commentCell = worksheet.Cells[row, col];
AddComment(commentCell, comment);
}
}
protected void AddComment(ExcelRange cell, string comment)
{
if (!string.IsNullOrWhiteSpace(comment))
{
cell.AddComment(comment, Author);
cell.Comment.AutoFit = true;
}
}
private ExcelRange AddValueCell(ExcelWorksheet worksheet, int row, int col, object value)
{
if (row < 1 || col < 1)
return null;
var cell = worksheet.Cells[row, col];
cell.Value = value;
return cell;
}
private ExcelRange AddValueRange(ExcelWorksheet worksheet, int startRow, int startCol, int endRow, int endCol, object value)
{
if (startRow < 1 || startCol < 1 || endRow < 1 || endCol < 1)
return null;
var cell = worksheet.Cells[startRow, startCol, endRow, endCol];
cell.Value = value;
worksheet.Cells[startRow, startCol, endRow, endCol].Merge = true;
return cell;
}
private ExcelRange AddFormulaCell(ExcelWorksheet worksheet, int row, int col, string value)
{
if (row < 1 || col < 1)
return null;
worksheet.Workbook.CalcMode = ExcelCalcMode.Automatic;
var cell = worksheet.Cells[row, col];
cell.Formula = value;
return cell;
}
private ExcelRange AddFormulaRange(ExcelWorksheet worksheet, int startRow, int startCol, int endRow, int endCol, string value)
{
if (startRow < 1 || startCol < 1 || endRow < 1 || endCol < 1)
return null;
worksheet.Workbook.CalcMode = ExcelCalcMode.Automatic;
var cell = worksheet.Cells[startRow, startCol, endRow, endCol];
cell.Formula = value;
worksheet.Cells[startRow, startCol, endRow, endCol].Merge = true;
return cell;
}
protected void AddTanuloAdatokFejlec(ExcelWorksheet worksheet, int fejlecRow)
{
var tanuloNevCell = worksheet.Cells[fejlecRow, 1];
tanuloNevCell.Value = TanuloResource.TanuloNeve;
ChangeStyle(tanuloNevCell, HeaderStyleBottomBordered);
var oktatasiAzonositoCell = worksheet.Cells[fejlecRow, 2];
oktatasiAzonositoCell.Value = TanuloResource.OktatasiAzonosito;
ChangeStyle(oktatasiAzonositoCell, HeaderStyleBottomBordered);
}
private void ChangeStyle(ExcelRange cell, CellStyle cellStyle)
=> cell.StyleName = cellStyle.Name;
private void ChangeStyle(OfficeOpenXml.Style.XmlAccess.ExcelNamedStyleXml excelNamedStyleXml, CellStyle cellStyle)
{
excelNamedStyleXml.Style.Numberformat.Format = cellStyle.Numberformat;
excelNamedStyleXml.Style.Font.Bold = cellStyle.FontBold;
excelNamedStyleXml.Style.TextRotation = cellStyle.TextRotation;
excelNamedStyleXml.Style.HorizontalAlignment = cellStyle.HorizontalAlignment;
excelNamedStyleXml.Style.VerticalAlignment = cellStyle.VerticalAlignment;
excelNamedStyleXml.Style.WrapText = cellStyle.WrapText;
var excelStyleBorder = excelNamedStyleXml.Style.Border;
if (cellStyle.BottomBorder != ExcelBorderStyle.None)
excelStyleBorder.Bottom.Style = cellStyle.BottomBorder;
if (cellStyle.TopBorder != ExcelBorderStyle.None)
excelStyleBorder.Top.Style = cellStyle.TopBorder;
if (cellStyle.LeftBorder != ExcelBorderStyle.None)
excelStyleBorder.Left.Style = cellStyle.LeftBorder;
if (cellStyle.RightBorder != ExcelBorderStyle.None)
excelStyleBorder.Right.Style = cellStyle.RightBorder;
ChangeFontColor(excelNamedStyleXml.Style, cellStyle.FontColorHex);
ChangeBgColor(excelNamedStyleXml.Style, cellStyle.BgColorHex);
}
private void ChangeFontColor(ExcelStyle excelStyle, string fontColorHex = "automatic")
{
if (fontColorHex?.Equals("automatic", StringComparison.OrdinalIgnoreCase) == false)
excelStyle.Font.Color.SetColor(System.Drawing.ColorTranslator.FromHtml(fontColorHex));
}
private void ChangeBgColor(ExcelStyle excelStyle, string bgColorHex = "transparent")
{
if (bgColorHex?.Equals("transparent", StringComparison.OrdinalIgnoreCase) == false)
{
excelStyle.Fill.PatternType = ExcelFillStyle.Solid;
excelStyle.Fill.BackgroundColor.SetColor(System.Drawing.ColorTranslator.FromHtml(bgColorHex));
}
}
private bool AddCellWithTypeCheck(ExcelWorksheet worksheet, int row, int col, object dtvalue, CellStyle cellStyle = null, string comment = null)
{
var aggregatedValues = true;
switch (dtvalue)
{
case int _:
case double _:
AddNumberCell(worksheet, row, col, dtvalue, cellStyle, comment);
break;
case string _ when int.TryParse((string)dtvalue, out int intDtvalue):
AddNumberCell(worksheet, row, col, intDtvalue, cellStyle, comment);
break;
case string _ when double.TryParse((string)dtvalue, out double doubleDtValue):
AddNumberCell(worksheet, row, col, doubleDtValue, cellStyle, comment);
break;
default:
AddLabelCell(worksheet, row, col, dtvalue.ToString(), cellStyle, comment);
aggregatedValues = false;
break;
}
return aggregatedValues;
}
protected void AddLabelCell(ExcelWorksheet worksheet, int row, int col, string value, CellStyle cellStyle = null, string comment = null)
{
var cell = AddValueCell(worksheet, row, col, value);
ChangeStyle(cell, cellStyle ?? new CellStyle("NormalStyle"));
AddComment(cell, comment);
}
protected void AddNumberCell(ExcelWorksheet worksheet, int row, int col, object value, CellStyle cellStyle = null, string comment = null)
{
var cell = AddValueCell(worksheet, row, col, value);
ChangeStyle(cell, cellStyle ?? NamedCellStyles["IntegerStyle"]);
AddComment(cell, comment);
}
protected void AddFormulaCell(ExcelWorksheet worksheet, int row, int col, string value, CellStyle cellStyle, string comment = null)
{
var cell = AddFormulaCell(worksheet, row, col, value);
ChangeStyle(cell, cellStyle ?? NamedCellStyles["IntegerStyle"]);
AddComment(cell, comment);
}
protected void AddAggregateFormulaCell(ExcelWorksheet worksheet, int row, int col, string aggrfunctionname, int startRow, int startCol, int endRow, int endCol, bool errorCheck = false, CellStyle cellStyle = null)
{
var aggregateCondition = "";
if (aggrfunctionname.StartsWith("COUNTIF"))
{
var rx = new System.Text.RegularExpressions.Regex("[,]");
var array = rx.Split(aggrfunctionname);
aggrfunctionname = array[0];
aggregateCondition = "," + array[1];
}
if (aggrfunctionname.StartsWith("IF"))
{
//IF,#<offset a pillanatnyi oszloptól>=<feltétel értéke>,#<offset a pillanatnyi oszloptól>,<hamis érték>
var rx = new System.Text.RegularExpressions.Regex("[,]");
var array = rx.Split(aggrfunctionname);
rx = new System.Text.RegularExpressions.Regex("=");
var condarray = rx.Split(array[1]);
var form = string.Format("{0}({1}{2}{3},{4}{5},{6})", array[0], ColumnLabel(col + int.Parse(condarray[0].Substring(1))), row, "=" + condarray[1], ColumnLabel(col + int.Parse(array[2].Substring(1))), row, array[3]);
if (errorCheck)
form = "IF(ISERROR(" + form + "),\"\"," + form + ")";
AddFormulaCell(worksheet, row, col, "=" + form, cellStyle);
return;
}
string value = null;
if (startCol <= endCol)
{
string formula = aggrfunctionname + "(" + ColumnLabel(startCol) + startRow + ":" + ColumnLabel(endCol) + endRow + aggregateCondition + ")";
if (errorCheck)
{
formula = "IF(ISERROR(" + formula + "),\"\"," + formula + ")";
}
value = "=" + formula;
}
AddFormulaCell(worksheet, row, col, value, cellStyle);
}
protected void AddLabelRange(ExcelWorksheet worksheet, int startRow, int startCol, int endRow, int endCol, string value, CellStyle cellStyle = null, string comment = null)
{
var cell = AddValueRange(worksheet, startRow, startCol, endRow, endCol, value);
ChangeStyle(cell, cellStyle ?? new CellStyle());
AddComment(cell, comment);
}
protected void AddNumberRange(ExcelWorksheet worksheet, int startRow, int startCol, int endRow, int endCol, object value, CellStyle cellStyle = null, string comment = null)
{
var cell = AddValueRange(worksheet, startRow, startCol, endRow, endCol, value);
ChangeStyle(cell, cellStyle ?? NamedCellStyles["IntegerStyle"]);
AddComment(cell, comment);
}
protected void AddFormulaRange(ExcelWorksheet worksheet, int startRow, int startCol, int endRow, int endCol, string value, CellStyle cellStyle, string comment = null)
{
var cell = AddFormulaRange(worksheet, startRow, startCol, endRow, endCol, value);
ChangeStyle(cell, cellStyle ?? NamedCellStyles["IntegerStyle"]);
AddComment(cell, comment);
}
protected int AddDataTableCol(ExcelWorksheet worksheet, int trow, int tcol, DataTable dataTable, int dtCol, CellStyle cellStyle, string customheader = null, CellStyle headerCellStyle = null, string aggregateFunc = null, CellStyle formulaCellStyle = null)
{
return AddDataTableCol(worksheet, trow, tcol, dataTable, dataTable.Columns[dtCol].ToString(), cellStyle, customheader, headerCellStyle, aggregateFunc, formulaCellStyle);
}
protected int AddDataTableCol(ExcelWorksheet worksheet, int trow, int tcol, DataTable dataTable, string dtCol, CellStyle cellStyle, string customHeader = null, CellStyle headerCellStyle = null, string aggregateFunc = null, CellStyle formulaCellStyle = null)
{
if (trow < 1 || tcol < 1)
return 0;
var row = 0;
var rowOffset = 0;
DataColumnCollection columns = dataTable.Columns;
if (columns.Contains(dtCol))
{
bool aggregatedValues = false;
if (customHeader != null)
{
AddLabelCell(worksheet, trow, tcol, customHeader, headerCellStyle);
rowOffset++;
}
for (; row < dataTable.Rows.Count; row++)
aggregatedValues = AddCellWithTypeCheck(worksheet, trow + rowOffset + row, tcol, dataTable.Rows[row][dtCol], cellStyle);
if (aggregatedValues && row > 0 && aggregateFunc != null)
AddFormulaCell(worksheet, trow + rowOffset + row++, tcol, "=" + aggregateFunc + "(" + ColumnLabel(tcol) + (trow + rowOffset) + ":" + ColumnLabel(tcol) + (trow + rowOffset + row - 2) + ")", formulaCellStyle);
else if (!aggregatedValues && row > 0 && aggregateFunc != null)
row++;
}
return row + rowOffset;
}
protected int AddDataTableColTransponalt(ExcelWorksheet worksheet, int trow, int tcol, DataTable dataTable, string dtCol, CellStyle cellStyle, string customHeader = null, CellStyle headerCellStyle = null, string aggregateFunc = null, CellStyle formulaCellStyle = null)
{
if (trow < 1 || tcol < 1)
return 0;
var rowColl = 0;
var collOffset = 0;
DataColumnCollection columns = dataTable.Columns;
if (columns.Contains(dtCol))
{
bool aggregatedValues = false;
if (customHeader != null)
{
AddLabelCell(worksheet, trow, tcol, customHeader, headerCellStyle);
collOffset++;
}
for (; rowColl < dataTable.Rows.Count; rowColl++)
aggregatedValues = AddCellWithTypeCheck(worksheet, trow, tcol + collOffset + rowColl, dataTable.Rows[rowColl][dtCol], cellStyle);
if (aggregatedValues && rowColl > 0 && aggregateFunc != null)
AddFormulaCell(worksheet, trow, tcol + collOffset + rowColl++, "=" + aggregateFunc + "(" + ColumnLabel(tcol + collOffset) + trow + ":" + ColumnLabel(tcol + collOffset + rowColl - 2) + trow + ")", formulaCellStyle);
else if (!aggregatedValues && rowColl > 0 && aggregateFunc != null)
rowColl++;
}
return rowColl + collOffset;
}
protected int[] AddDataTableRow(ExcelWorksheet worksheet, int trow, int tcol, DataTable dataTable, string criteria, CellStyle cellStyle, string[] dtCols = null, string aggregateFunc = null, CellStyle formulaCellStyle = null)
{
int[] insertDim = { 0/*rows*/, 0 /*cols*/};
if (trow < 1 || tcol < 1)
return insertDim;
DataRow[] filteredRows = dataTable.Select(criteria);
DataColumnCollection columns = dataTable.Columns;
if (dtCols == null)
dtCols = columns.Cast<DataColumn>().Select(x => x.ColumnName).ToArray();
if (filteredRows.Length > 0)
{
bool aggregatedValues = false;
insertDim[0] = filteredRows.Length;
var col = 0;
for (int row = 0; row < filteredRows.Length; row++)
{
col = 0;
foreach (string dtCol in dtCols)
{
if (columns.Contains(dtCol))
{
aggregatedValues = AddCellWithTypeCheck(worksheet, trow + row, tcol + col, filteredRows[row][dtCol], cellStyle);
col++;
}
}
if (aggregatedValues && aggregateFunc != null)
{
AddFormulaCell(worksheet, trow + row, tcol + dtCols.Length, "=" + aggregateFunc + "(" + ColumnLabel(tcol) + (trow + row) + ":" + ColumnLabel(tcol + dtCols.Length - 1) + (trow + row) + ")", formulaCellStyle);
insertDim[1]++;
}
}
insertDim[1] = col;
}
return insertDim;
}
protected int[] AddDataTable
(
ExcelWorksheet worksheet, int trow, int tcol, DataTable dataTable, string criteria,
CellStyle cellDefaultStyle, CellStyle headerDefaultStyle, CellStyle[] cellStyles = null, CellStyle[] headerStyles = null,
string[] dtCols = null,
string rowAggregateFunc = null, CellStyle rowFormulaCellStyle = null,
int rowHeaderOffset = 0, string[] columnAggregateFuncs = null, string[] columnAggregateFuncHeaderCol = null, CellStyle[] columnFormulaCellStyles = null, CellStyle columnFormulaCellHeaderStyles = null //ColumnAggregates
)
{
int[] insertDim = { 0/*rows*/, 0 /*cols*/};
if (trow < 1 || tcol < 1)
return insertDim;
DataRow[] filteredRows = dataTable.Select(criteria);
DataColumnCollection columns = dataTable.Columns;
int headerCount = 0;
if (dtCols == null)
{
dtCols = columns.Cast<DataColumn>().Select(x => x.ColumnName).ToArray();
headerCount = 1;
int tHeaderColNum = tcol;
foreach (var col in dtCols)
{
AddLabelCell(worksheet, trow, tHeaderColNum, col.IndexOf("COLUMN", StringComparison.OrdinalIgnoreCase) >= 0 ? Resources.ExcelNyomtatvanyResource.ResourceManager.GetString(col.ToUpper()) : col, (headerStyles?.Length ?? 0) > (tHeaderColNum - tcol) ? headerStyles[tHeaderColNum - tcol] : headerDefaultStyle);
tHeaderColNum++;
}
}
if (filteredRows.Length > 0)
{
bool aggregatedValues = false;
insertDim[0] = headerCount + filteredRows.Length + (columnAggregateFuncs?.Length ?? 0);
var col = 0;
int row = 0;
for (; row < filteredRows.Length; row++)
{
col = 0;
int currentRowNum = trow + headerCount + row;
foreach (string dtCol in dtCols)
{
if (columns.Contains(dtCol))
{
aggregatedValues = AddCellWithTypeCheck(worksheet, currentRowNum, tcol + col, filteredRows[row][dtCol], (cellStyles?.Length ?? 0) > col ? cellStyles[col] : cellDefaultStyle);
col++;
}
}
if (aggregatedValues && rowAggregateFunc != null)
{
AddFormulaCell(worksheet, currentRowNum, tcol + dtCols.Length, "=" + rowAggregateFunc + "(" + ColumnLabel(tcol) + currentRowNum + ":" + ColumnLabel(tcol + dtCols.Length - 1) + currentRowNum + ")", rowFormulaCellStyle);
insertDim[1]++;
}
}
insertDim[1] = col;
if (columnAggregateFuncs != null)
{
for (var funcrow = 0; funcrow < columnAggregateFuncs.Length; funcrow++)
{
var formularow = trow + headerCount + row + funcrow;
var vaggregateFuncHeader = columnAggregateFuncHeaderCol != null && columnAggregateFuncHeaderCol.Length > funcrow ? columnAggregateFuncHeaderCol[funcrow] : null;
if (vaggregateFuncHeader != null)
AddLabelCell(worksheet, formularow, tcol, vaggregateFuncHeader, columnFormulaCellHeaderStyles ?? ((cellStyles?.Length ?? 0) > col ? cellStyles[col] : cellDefaultStyle));
var vaggregateFunc = columnAggregateFuncs[funcrow];
CellStyle colFormulaCellStyle = columnFormulaCellStyles != null && columnFormulaCellStyles.Length > funcrow ? columnFormulaCellStyles[funcrow] : cellDefaultStyle;
for (col = rowHeaderOffset; col < dtCols.Length; col++)
{
int formulacol = tcol + col;
AddAggregateFormulaCell(worksheet, formularow, formulacol, vaggregateFunc, trow + headerCount, formulacol, trow + headerCount + row - 1, formulacol, true, colFormulaCellStyle);
}
}
}
}
return insertDim;
}
protected bool AddDataTablePivotTableCell(ExcelWorksheet worksheet, int trow, int tcol, DataTable dataTable, string criteria, CellStyle cellStyle, string[] dtCols = null, string[] dtCommentCols = null)
{
bool aggregatedValue = false;
if (trow < 1 || tcol < 1)
return aggregatedValue;
DataRow[] filteredRows = dataTable.Select(criteria);
if (filteredRows.Length > 0)
{
DataColumnCollection columns = dataTable.Columns;
if (dtCols == null)
dtCols = columns.Cast<DataColumn>().Select(x => x.ColumnName).ToArray();
for (int row = 0; row < filteredRows.Length; row++)
{
var col = 0;
foreach (string dtCol in dtCols)
{
if (columns.Contains(dtCol))
{
string comment = null;
if (dtCommentCols != null)
{
foreach (string dtCommentCol in dtCommentCols)
{
object commentValue = filteredRows[row][dtCommentCol];
if (columns.Contains(dtCommentCol) && !(commentValue is DBNull))
comment = (string)commentValue;
}
}
aggregatedValue = AddCellWithTypeCheck(worksheet, trow + row, tcol + col, filteredRows[row][dtCol], cellStyle, comment);
col++;
}
}
}
}
else
{
aggregatedValue = AddCellWithTypeCheck(worksheet, trow, tcol, "", cellStyle);
}
return aggregatedValue;
}
protected int[] AddDataTablePivotTable
(
ExcelWorksheet worksheet, int trow, int tcol, //Worksheet
DataTable dataTableHeader, string headerFilterDtCols, string headershowDtCol, //TableHeader
DataTable dataTableRowHeader, string rowHeadersFilteDtCols, string[] rowHeaderDtCols, //RowHeader
DataTable dataTable, //DataTable
CellStyle cellStyle, CellStyle headerCellStyle = null, CellStyle rowHeaderCellStyle = null, //Styles
string[] dtCols = null, string[] dtCommentCols = null, //DataTableFields
string[] rowAggregateFuncs = null, string[] rowAggregateFuncHeaderCol = null, CellStyle[] rowFormulaCellStyles = null, //RowAggregates
string[] columnAggregateFuncs = null, string[] columnAggregateFuncHeaderCol = null, CellStyle[] columnFormulaCellStyles = null //ColumnAggregates
)
{
return AddDataTablePivotTable
(
worksheet, trow, tcol,
dataTableHeader, headerFilterDtCols != null ? new[] { headerFilterDtCols } : null, headershowDtCol,
dataTableRowHeader, rowHeadersFilteDtCols != null ? new[] { rowHeadersFilteDtCols } : null, rowHeaderDtCols,
dataTable,
cellStyle, headerCellStyle, rowHeaderCellStyle,
dtCols, dtCommentCols,
rowAggregateFuncs, rowAggregateFuncHeaderCol, rowFormulaCellStyles,
columnAggregateFuncs, columnAggregateFuncHeaderCol, columnFormulaCellStyles
);
}
protected int[] AddDataTablePivotTable
(
ExcelWorksheet worksheet, int trow, int tcol, //Worksheet
DataTable dataTableHeader, string[] headerFilterDtCols, string headershowDtCol, //TableHeader
DataTable dataTableRowHeader, string[] rowHeadersFilteDtCols, string[] rowHeaderDtCols, //RowHeader
DataTable dataTable, //DataTable
CellStyle cellStyle, CellStyle headerCellStyle = null, CellStyle rowHeaderCellStyle = null, //Styles
string[] dtCols = null, string[] dtCommentCols = null, //DataTableFields
string[] rowAggregateFuncs = null, string[] rowAggregateFuncHeaderCol = null, CellStyle[] rowFormulaCellStyles = null, //RowAggregates
string[] columnAggregateFuncs = null, string[] columnAggregateFuncHeaderCol = null, CellStyle[] columnFormulaCellStyles = null //ColumnAggregates
)
{
int[] insertDim = { 0/*rows*/, 0 /*cols*/};
if (trow < 1 || tcol < 1)
return insertDim;
var rowHeaderOffset = rowHeaderDtCols?.Length ?? 0;
if (headershowDtCol != null)
AddDataTableColTransponalt(worksheet, trow, tcol + rowHeaderOffset, dataTableHeader, headershowDtCol, headerCellStyle ?? cellStyle);
if (rowHeaderOffset > 0)
AddDataTableRow(worksheet, trow + 1, tcol, dataTableRowHeader, "", rowHeaderCellStyle ?? cellStyle, rowHeaderDtCols);
const int headerCount = 1;
var row = 0;
List<string> colFilters = new List<string>();
/*Fejléc filterek összeállítása*/
foreach (DataRow dtRow in dataTableHeader.Rows)
{
var colFilter = "";
foreach (var headerFilterDtCol in headerFilterDtCols)
{
object dtvalue = dtRow[headerFilterDtCol];
switch (dtvalue)
{
case int _:
case double _:
case string _ when int.TryParse((string)dtvalue, out int intDtvalue):
case string _ when double.TryParse((string)dtvalue, out double doubleDtValue):
break;
default:
dtvalue = "'" + dtvalue + "'";
break;
}
colFilter += (colFilter.Length > 0 ? " AND " : "") + headerFilterDtCol + "=" + dtvalue;
}
colFilters.Add(colFilter);
}
/*Sorok feldolgozása*/
for (; row < dataTableRowHeader.Rows.Count; row++)
{
var rowFilter = "";
foreach (var rowHeadersFilteDtCol in rowHeadersFilteDtCols)
{
object dtvalue = dataTableRowHeader.Rows[row][rowHeadersFilteDtCol];
switch (dtvalue)
{
case int _:
case double _:
case string _ when int.TryParse((string)dtvalue, out int intDtvalue):
case string _ when double.TryParse((string)dtvalue, out double doubleDtValue):
break;
default:
dtvalue = "'" + dtvalue + "'";
break;
}
rowFilter += (rowFilter.Length > 0 ? " AND " : "") + rowHeadersFilteDtCol + "=" + dtvalue;
}
/*Sor adataival szűrt adattábla ellenőrzés, szűrés*/
DataRow[] filteredRows = dataTable.Select(rowFilter);
if (filteredRows.Length > 0)
{
DataTable rowFilteredTable = filteredRows.AsEnumerable().CopyToDataTable();
/*Oszlopok összeállítása*/
var col = 0;
foreach (string colFilter in colFilters)
{
AddDataTablePivotTableCell(worksheet, trow + headerCount + row, tcol + rowHeaderOffset + col, rowFilteredTable, colFilter, cellStyle, dtCols, dtCommentCols);
col++;
}
}
else
{
var col = 0;
foreach (string colFilter in colFilters)
{
AddCellWithTypeCheck(worksheet, trow + headerCount + row, tcol + rowHeaderOffset + col, "", cellStyle);
col++;
}
}
if (rowAggregateFuncs != null)
{
var formularow = trow + headerCount + row;
var formulacol = tcol + rowHeaderOffset + colFilters.Count;
for (int funccol = 0; funccol < rowAggregateFuncs.Length; funccol++)
{
if (rowAggregateFuncs[funccol] == null)
{
continue;
}
string aggregateFuncHeader = (rowAggregateFuncHeaderCol != null && rowAggregateFuncHeaderCol.Length > funccol ? rowAggregateFuncHeaderCol[funccol] : "");
CellStyle formulaCellStyle = (rowFormulaCellStyles != null && rowFormulaCellStyles.Length > funccol ? rowFormulaCellStyles[funccol] : cellStyle);
AddLabelCell(worksheet, trow, formulacol + funccol, aggregateFuncHeader, headerCellStyle ?? cellStyle);
AddAggregateFormulaCell(worksheet, formularow, formulacol + funccol, rowAggregateFuncs[funccol], formularow, tcol + rowHeaderOffset, formularow, formulacol - 1, true, formulaCellStyle);
}
}
}
if (columnAggregateFuncs != null)
{
for (var funcrow = 0; funcrow < columnAggregateFuncs.Length; funcrow++)
{
var formularow = trow + headerCount + row + funcrow;
var vaggregateFuncHeader = columnAggregateFuncHeaderCol != null && columnAggregateFuncHeaderCol.Length > funcrow ? columnAggregateFuncHeaderCol[funcrow] : "";
CellStyle formulaCellStyle = columnFormulaCellStyles != null && columnFormulaCellStyles.Length > funcrow ? columnFormulaCellStyles[funcrow] : cellStyle;
AddLabelCell(worksheet, formularow, tcol, vaggregateFuncHeader, rowHeaderCellStyle ?? cellStyle);
for (var col = 0; col < dataTableHeader.Rows.Count; col++)
{
int formulacol = tcol + rowHeaderOffset + col;
AddAggregateFormulaCell(worksheet, formularow, formulacol, columnAggregateFuncs[funcrow], trow + headerCount, formulacol, trow + headerCount + row - 1, formulacol, true, formulaCellStyle);
}
}
}
insertDim[0] = row + headerCount + (columnAggregateFuncs?.Length ?? 0);
insertDim[1] = rowHeaderOffset + dataTableHeader.Rows.Count + (rowAggregateFuncs?.Length ?? 0);
return insertDim;
}
public void GenerateNewExcelPackage(string templateFilename = null)
{
FileInfo exFile = null;
if (templateFilename != null)
{
exFile = new FileInfo(templateFilename);
}
ExcelPackage = (exFile == null) ? new ExcelPackage() : new ExcelPackage(exFile);
}
public void Dispose()
{
ExcelPackage?.Dispose();
DataSet?.Dispose();
}
}
}

View file

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using Kreta.Core.ConnectionType;
namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel
{
public abstract class BaseNyomtatvanyExcelWithDataSet : BaseNyomtatvanyExcel
{
public BaseNyomtatvanyExcelWithDataSet(IConnectionType connectionType, bool isMultisheetExcel) : base(connectionType, isMultisheetExcel)
{
}
public abstract void CreateSheet(DataSet ds, int osztalyId, int sheetIndex = 1);
public MemoryStream ExcelNyomtatas(DataSet ds, int osztalyId)
{
if (!isMultisheetExcel)
{
if (ExcelPackage.Workbook.Worksheets.Count > 0)
{
GenerateNewExcelPackage();
SetWorkbookProperties();
}
CreateSheet(ds, osztalyId);
}
return ExcelNyomtatas();
}
public override void CreateSheet(Dictionary<string, string> dbParameters, int sheetIndex = 1)
{
throw new ApplicationException("DataSet alapúnál ez nem használható");
}
}
}

View file

@ -0,0 +1,268 @@
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.Core.ConnectionType;
using Kreta.Resources;
using OfficeOpenXml;
using OfficeOpenXml.Style;
namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel
{
public class HianyzokEsJelenlevokSzama : BaseNyomtatvanyExcel
{
private readonly CellStyle OsztalyHeaderStyle;
private readonly CellStyle DarabSzamaHeaderStyle;
private readonly CellStyle StartSzamHeaderStyle;
private readonly CellStyle SzamHeaderStyle;
private readonly CellStyle EndSzamHeaderStyle;
private readonly CellStyle TopRightDoubleStyle;
private readonly CellStyle TopLeftDoubleStyle;
private readonly CellStyle TopDoubleStyle;
private readonly CellStyle LeftDoubleStyle;
private readonly CellStyle RightDoubleStyle;
private readonly CellStyle ThinStyle;
private const string Gray = "#AAAAAA";
public HianyzokEsJelenlevokSzama(IConnectionType connectionType) : base(connectionType)
{
StoredProcedure = "uspGetHianyzokEsJelenlevokSzama";
ExcelPackage = new ExcelPackage();
//Stílusok
NamedCellStyles.Add(nameof(OsztalyHeaderStyle), OsztalyHeaderStyle =
new CellStyle(nameof(OsztalyHeaderStyle))
{
FontBold = true,
RightBorder = ExcelBorderStyle.Double,
BottomBorder = ExcelBorderStyle.Double,
HorizontalAlignment = ExcelHorizontalAlignment.Center,
VerticalAlignment = ExcelVerticalAlignment.Center
});
NamedCellStyles.Add(nameof(DarabSzamaHeaderStyle), DarabSzamaHeaderStyle =
new CellStyle(nameof(DarabSzamaHeaderStyle))
{
RightBorder = ExcelBorderStyle.Double,
BottomBorder = ExcelBorderStyle.Thin,
LeftBorder = ExcelBorderStyle.Double,
TopBorder = ExcelBorderStyle.Thin,
HorizontalAlignment = ExcelHorizontalAlignment.Center
});
NamedCellStyles.Add(nameof(StartSzamHeaderStyle), StartSzamHeaderStyle =
new CellStyle(nameof(StartSzamHeaderStyle))
{
FontBold = true,
BgColorHex = Gray,
RightBorder = ExcelBorderStyle.Thin,
BottomBorder = ExcelBorderStyle.Double,
LeftBorder = ExcelBorderStyle.Double,
TopBorder = ExcelBorderStyle.Thin,
HorizontalAlignment = ExcelHorizontalAlignment.Center,
VerticalAlignment = ExcelVerticalAlignment.Center
});
NamedCellStyles.Add(nameof(SzamHeaderStyle), SzamHeaderStyle = new CellStyle(nameof(SzamHeaderStyle))
{
FontBold = true,
BgColorHex = Gray,
RightBorder = ExcelBorderStyle.Thin,
BottomBorder = ExcelBorderStyle.Double,
LeftBorder = ExcelBorderStyle.Thin,
TopBorder = ExcelBorderStyle.Thin,
HorizontalAlignment = ExcelHorizontalAlignment.Center,
VerticalAlignment = ExcelVerticalAlignment.Center
});
NamedCellStyles.Add(nameof(EndSzamHeaderStyle), EndSzamHeaderStyle =
new CellStyle(nameof(EndSzamHeaderStyle))
{
FontBold = true,
BgColorHex = Gray,
RightBorder = ExcelBorderStyle.Double,
BottomBorder = ExcelBorderStyle.Double,
LeftBorder = ExcelBorderStyle.Thin,
TopBorder = ExcelBorderStyle.Thin,
HorizontalAlignment = ExcelHorizontalAlignment.Center,
VerticalAlignment = ExcelVerticalAlignment.Center
});
NamedCellStyles.Add(nameof(TopRightDoubleStyle), TopRightDoubleStyle =
new CellStyle(nameof(TopRightDoubleStyle))
{
RightBorder = ExcelBorderStyle.Double,
BottomBorder = ExcelBorderStyle.Thin,
LeftBorder = ExcelBorderStyle.Thin,
TopBorder = ExcelBorderStyle.Double,
WrapText = true
});
NamedCellStyles.Add(nameof(TopLeftDoubleStyle), TopLeftDoubleStyle =
new CellStyle(nameof(TopLeftDoubleStyle))
{
RightBorder = ExcelBorderStyle.Thin,
BottomBorder = ExcelBorderStyle.Thin,
LeftBorder = ExcelBorderStyle.Double,
TopBorder = ExcelBorderStyle.Double
});
NamedCellStyles.Add(nameof(TopDoubleStyle), TopDoubleStyle = new CellStyle(nameof(TopDoubleStyle))
{
RightBorder = ExcelBorderStyle.Thin,
BottomBorder = ExcelBorderStyle.Thin,
LeftBorder = ExcelBorderStyle.Thin,
TopBorder = ExcelBorderStyle.Double
});
NamedCellStyles.Add(nameof(LeftDoubleStyle), LeftDoubleStyle = new CellStyle(nameof(LeftDoubleStyle))
{
RightBorder = ExcelBorderStyle.Thin,
BottomBorder = ExcelBorderStyle.Thin,
LeftBorder = ExcelBorderStyle.Double,
TopBorder = ExcelBorderStyle.Thin
});
NamedCellStyles.Add(nameof(RightDoubleStyle), RightDoubleStyle = new CellStyle(nameof(RightDoubleStyle))
{
RightBorder = ExcelBorderStyle.Double,
BottomBorder = ExcelBorderStyle.Thin,
LeftBorder = ExcelBorderStyle.Thin,
TopBorder = ExcelBorderStyle.Thin,
WrapText = true
});
NamedCellStyles.Add(nameof(ThinStyle), ThinStyle = new CellStyle(nameof(ThinStyle))
{
RightBorder = ExcelBorderStyle.Thin,
BottomBorder = ExcelBorderStyle.Thin,
LeftBorder = ExcelBorderStyle.Thin,
TopBorder = ExcelBorderStyle.Thin
});
//Munkalap tulajdonságok beállítása
SetWorkbookProperties();
}
public override void CreateSheet(Dictionary<string, string> dbParameters, int sheetIndex = 1)
{
DbParameters = dbParameters;
// Adatforrás összeállítása
SetExcelDataSet();
var table = DataSet.Tables[0];
var rows = table.Rows.Cast<DataRow>();
var groupByHonapRows = rows.GroupBy(g => g["Honap"])
.Select(s =>
new
{
Honap = SDAConvert.ToString(s.Key),
Data = s
}).ToList();
var index = 1;
foreach (var honapGroup in groupByHonapRows)
{
// Munkalap összeállítása
var worksheet = CreateSheet(honapGroup.Honap, index, eOrientation.Landscape, true, 2);
worksheet.Row(2).Height = 30;
worksheet.Column(1).Width = 35;
// headers
AddLabelRange(worksheet, 1, 1, 2, 1, ExcelNyomtatvanyResource.Osztaly, OsztalyHeaderStyle);
AddLabelRange(worksheet, 1, 2, 1, 32, ExcelNyomtatvanyResource.HianyzoTanulokSzama,
DarabSzamaHeaderStyle);
AddLabelRange(worksheet, 1, 2 + 31, 1, 32 + 31, ExcelNyomtatvanyResource.JelenlevoTanulokSzama,
DarabSzamaHeaderStyle);
// subheaders
for (var i = 1; i < 32; i++)
{
worksheet.Column(1 + i).Width = 6;
worksheet.Column(1 + i + 31).Width = 6;
AddLabelCell(worksheet, 2, 1 + i, i.ToString(),
i == 1 ? StartSzamHeaderStyle : i == 31 ? EndSzamHeaderStyle : SzamHeaderStyle);
AddLabelCell(worksheet, 2, 1 + i + 31, i.ToString(),
i == 1 ? StartSzamHeaderStyle : i == 31 ? EndSzamHeaderStyle : SzamHeaderStyle);
}
var rowIndex = 3;
var groupByOsztalyRows = honapGroup.Data.GroupBy(g => g["OsztalyNev"])
.Select(s =>
new
{
Osztaly = SDAConvert.ToString(s.Key),
Data = s
}).ToList();
foreach (var osztalyGroup in groupByOsztalyRows)
{
var firstRow = rowIndex == 3;
AddLabelCell(worksheet, rowIndex, 1, SDAConvert.ToString(osztalyGroup.Osztaly),
firstRow ? TopRightDoubleStyle : RightDoubleStyle);
for (var j = 1; j < 32; j++)
{
var value = osztalyGroup.Data.Where(x =>
SDAConvert.ToBooleanFromTF(x["IsTanitasiNap"]) && SDAConvert.ToInt32(x["Nap"]) == j)
.Select(s =>
new
{
Hianyzas = SDAConvert.ToNullableInt32(s["Hianyzas"]),
Letszam = SDAConvert.ToNullableInt32(s["Letszam"])
}).FirstOrDefault();
var hianyzo = value?.Letszam == null ? null : value.Hianyzas;
var jelenlevo = hianyzo == null
? null
: value.Letszam - hianyzo;
var style = j == 1
? firstRow ? TopLeftDoubleStyle : LeftDoubleStyle
: j == 31
? firstRow ? TopRightDoubleStyle : RightDoubleStyle
: firstRow
? TopDoubleStyle
: ThinStyle;
AddNumberCell(worksheet, rowIndex, 1 + j, hianyzo, style);
AddNumberCell(worksheet, rowIndex, 1 + j + 31, jelenlevo, style);
}
rowIndex++;
}
AddLabelCell(worksheet, rowIndex, 1, AdatszolgaltatasokResource.Osszesen, RightDoubleStyle);
// szumma
for (var k = 1; k < 32; k++)
{
var style = k == 1
? LeftDoubleStyle
: k == 31
? RightDoubleStyle
: ThinStyle;
AddAggregateFormulaCell(worksheet, rowIndex, 1 + k, "SUM", 3, 1 + k, rowIndex - 1, 1 + k, true,
style);
AddAggregateFormulaCell(worksheet, rowIndex, 1 + k + 31, "SUM", 3, 1 + k + 31, rowIndex - 1,
1 + k + 31, true, style);
}
index++;
}
}
}
}

View file

@ -0,0 +1,251 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using Kreta.Core.ConnectionType;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel
{
public class OsztalyStatisztika : BaseNyomtatvanyExcel
{
private bool IsMagatartasSzorgalomNemLatszik { get; } = false;
public OsztalyStatisztika(IConnectionType connectionType, bool isMultisheetExcel = false, string templateFilename = null, bool isMagatartasSzorgalomNemLatszik = false) : base(connectionType, isMultisheetExcel)
{
StoredProcedure = "uspNyomtatvany_Excel_IdoszakiOsztalyStatisztika";
IsMagatartasSzorgalomNemLatszik = isMagatartasSzorgalomNemLatszik;
FileInfo exFile = null;
if (templateFilename != null)
{
exFile = new FileInfo(templateFilename);
}
ExcelPackage = (exFile == null) ? new ExcelPackage() : new ExcelPackage(exFile);
//Munkalap tulajdonságok beállítása
SetWorkbookProperties();
}
public override void CreateSheet(Dictionary<string, string> dbParameters, int sheetIndex = 1)
{
DbParameters = dbParameters;
dbParameters.TryGetValue("pElmeletgyakorlat", out var elmeletGyakorlat);
if (string.IsNullOrWhiteSpace(elmeletGyakorlat))
{
elmeletGyakorlat = "0";
}
dbParameters.TryGetValue("pErtekelestipusaId", out var ertekelesTipusaId);
if (string.IsNullOrWhiteSpace(ertekelesTipusaId))
{
ertekelesTipusaId = Convert.ToString(Enums.ErtekelesTipusEnum.evvegi_jegy_ertekeles);
}
// Adatforrás összeállítása
SetExcelDataSet();
DataAccessManual.Util.DataAccessBase.SetBoolFields(DataSet.Tables[8], "OJCSJKeresztfeleves,OJTechnikaiOsztaly,OJNemzetisegi,OJKettannyelvu,OJNyelviElokeszito,OJIsGyogypedagogiaiLogopediai,OJSportOsztaly,OJAranyJanosProgram");
var osztalyDt = DataSet.Tables[0];
var tanuloDt = DataSet.Tables[1];
var tantargyakDt = DataSet.Tables[2];
var ertekelesDt = DataSet.Tables[3];
var magszorgDt = DataSet.Tables[4];
var mulasztasDt = DataSet.Tables[5];
var mulasztasSumDt = DataSet.Tables[6];
var tanoraiFeljegyzesDt = DataSet.Tables[7];
var szamossagDT = DataSet.Tables[9];
//Munkalap összeállítása
var worksheet = CreateSheet(isMultisheetExcel ? osztalyDt.Rows[0]["C_NEV"].ToString() : Resources.ExcelNyomtatvanyResource.ResourceManager.GetString("OsztalyStatisztikaMunkalapnev_" + ertekelesTipusaId), sheetIndex, eOrientation.Landscape, true);
worksheet.Row(1).Height = 15;
worksheet.Row(2).Height = 120;
worksheet.Column(1).Width = 30;
//Hiányzó fejlécek beállítása
AddTanuloAdatokFejlec(worksheet, 2);
for (var targycol = 2; targycol < tantargyakDt.Rows.Count + 2 + 3 + (elmeletGyakorlat.Equals("0") ? 8 : 14); targycol++)
{
worksheet.Column(targycol).Width = 6;
}
AddLabelRange(worksheet, 1, 1, 1, 2, Resources.ExcelNyomtatvanyResource.ResourceManager.GetString("OsztalyStatisztikaDokumentumNev_" + ertekelesTipusaId), DocnameStyle);
worksheet.Column(2).Width = 13;
AddLabelCell(worksheet, 1, 3, "", DocheaderStyle1);
AddLabelRange(worksheet, 1, 4, 1, 4/*Magatartás szorgalom*/ + tantargyakDt.Rows.Count + 1 + (elmeletGyakorlat.Equals("0") ? 8 : 14), osztalyDt.Rows[0]["C_NEV"].ToString(), DocheaderStyle2);
int[] retDimErtekeles;
string[] adatMezo;
string[] megjegyzesMezo;
if (IsMagatartasSzorgalomNemLatszik)
{
adatMezo = new string[] { "ERTEKELES" };
megjegyzesMezo = new string[] { "ERTEKELES_SZOVEG_MEGJEGYZES" };
retDimErtekeles = AddDataTablePivotTable(worksheet, 2, 1, tantargyakDt, "C_TANTARGYID", "TANTARGY_NEV", tanuloDt, "C_TANULOID", new[] { "TANULONEV", "OKTATASIAZONOSITO" }, ertekelesDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, megjegyzesMezo, new[] { "AVERAGE", "IF,#3=0,#-1,1", null, null, "COUNTIF,1" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTanulmanyiAtlag, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTanulmanyiAtlag2, null, null, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaBukasokSzama }, new[] { Numeric2BoldStyleBottomBordered, Numeric2BoldStyleBottomBordered, null, null, IntegerBoldStyleBottomBordered }, new[] { "AVERAGE", "COUNTIF,5", "COUNTIF,4", "COUNTIF,3", "COUNTIF,2", "COUNTIF,1" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTantargyiAtlag, "5", "4", "3", "2", "1" }, new[] { Numeric2BoldStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered });
retDimErtekeles[1] -= 4;
}
else
{
//Értékelés statisztika hozzáadása
var magatartasHeaderDtCreatorArray = new List<string[]>
{
new[] { "id", "name", "torolt" },
new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaMagatartas, "F" }
};
AddDataTablePivotTable(worksheet, 2, 1, CreateDataTable(magatartasHeaderDtCreatorArray), new[] { "TOROLT" }, "name", tanuloDt, new[] { "C_TANULOID" }, new[] { "TANULONEV", "OKTATASIAZONOSITO" }, magszorgDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, new[] { "MagatartasOsztalyzat" }, null, null, null, null, new[] { "AVERAGE", "COUNTIF,5", "COUNTIF,4", "COUNTIF,3", "COUNTIF,2", "COUNTIF,1" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTantargyiAtlag, "5", "4", "3", "2", "1" }, new[] { Numeric2BoldStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered });
var szorgalomHeaderDtCreatorArray = new List<string[]>
{
new[] { "id", "name", "torolt" },
new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaSzorgalom, "F" }
};
AddDataTablePivotTable(worksheet, 2, 4, CreateDataTable(szorgalomHeaderDtCreatorArray), new[] { "TOROLT" }, "name", tanuloDt, new[] { "C_TANULOID" }, null, magszorgDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, new[] { "SzorgalomOsztalyzat" }, null, null, null, null, new[] { "AVERAGE", "COUNTIF,5", "COUNTIF,4", "COUNTIF,3", "COUNTIF,2", "COUNTIF,1" }, null, new[] { Numeric2BoldStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered });
adatMezo = new string[] { "ERTEKELES" };
megjegyzesMezo = new string[] { "ERTEKELES_SZOVEG_MEGJEGYZES" };
retDimErtekeles = AddDataTablePivotTable(worksheet, 2, 5, tantargyakDt, "C_TANTARGYID", "TANTARGY_NEV", tanuloDt, "C_TANULOID", null, ertekelesDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, megjegyzesMezo, new[] { "AVERAGE", "IF,#3=0,#-1,1", null, null, "COUNTIF,1" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTanulmanyiAtlag, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTanulmanyiAtlag2, null, null, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaBukasokSzama }, new[] { Numeric2BoldStyleBottomBordered, Numeric2BoldStyleBottomBordered, null, null, IntegerBoldStyleBottomBordered }, new[] { "AVERAGE", "COUNTIF,5", "COUNTIF,4", "COUNTIF,3", "COUNTIF,2", "COUNTIF,1" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTantargyiAtlag, "5", "4", "3", "2", "1" }, new[] { Numeric2BoldStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered });
}
//Átlagok átlaga
AddAggregateFormulaCell(worksheet, 2 + retDimErtekeles[0] - 6, retDimErtekeles[1] + 5 - 5, "AVERAGE", 3, retDimErtekeles[1] + 5 - 5, 2 + retDimErtekeles[0] - 7, retDimErtekeles[1] + 5 - 5, true, Numeric2BoldBigerStyleBottomBordered);
//Átlagok 2 átlaga
AddAggregateFormulaCell(worksheet, 2 + retDimErtekeles[0] - 6, retDimErtekeles[1] + 5 - 4, "AVERAGE", 3, retDimErtekeles[1] + 5 - 4, 2 + retDimErtekeles[0] - 7, retDimErtekeles[1] + 5 - 4, true, Numeric2BoldBigerStyleBottomBordered);
//Bukások száma
AddAggregateFormulaCell(worksheet, 2 + retDimErtekeles[0] - 6, retDimErtekeles[1] + 5 - 1, "SUM", 3, retDimErtekeles[1] + 5 - 1, 2 + retDimErtekeles[0] - 7, retDimErtekeles[1] + 5 - 1, true, IntegerBoldStyleBottomBordered);
//Dicséret, Kitűnő számosságok
var szamossagTipusok = new List<string> { "Dicseret", "Kituno" };
var szamossagTipusokNev = new List<string> { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaDicseretekSzama, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaKitunoErtekelesekSzama };
var szamossagPos = 0;
foreach (var szamossagTipus in szamossagTipusok)
{
var szamossag1DtCreatorArray = new List<string[]>
{
new[] { "id", "name", "TOROLT"},
new[] { "1", szamossagTipusokNev[szamossagPos], "F" }
};
AddDataTablePivotTable(worksheet, 2, retDimErtekeles[1] + 5 - 3 + szamossagPos, CreateDataTable(szamossag1DtCreatorArray), new string[0], "name",
tanuloDt, new[] { "C_TANULOID" }, null, szamossagDT, IntegerBoldStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, new[] { szamossagTipus }, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
szamossagPos++;
}
//Tanórai
var feljegyzesTipusok = new List<string>(new[] { "TanoraiDicseret", "FelszerelesHiany", "HaziFeladatHiany" });
var feljegyzesTipusokNev = new List<string>(new[] { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTanoraiDicseret, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaFelszerelesHiany, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaHaziFeladatHiany });
var feljegyzesPos = 0;
foreach (var feljegyzesTipus in feljegyzesTipusok)
{
var tanoraiFeljegyzes1DtCreatorArray = new List<string[]>
{
new[] { "id", "name", "TOROLT"},
new[] { "1", feljegyzesTipusokNev[feljegyzesPos], "F" }
};
AddDataTablePivotTable(worksheet, 2, retDimErtekeles[1] + 5 + feljegyzesPos, CreateDataTable(tanoraiFeljegyzes1DtCreatorArray), new[] { "TOROLT" }, "name",
tanuloDt, new[] { "C_TANULOID" }, null, tanoraiFeljegyzesDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered,
new[] { feljegyzesTipus }, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
feljegyzesPos++;
}
var retDimFeljegyzes = new[] { retDimErtekeles[0], 3 };
//Mulasztási statisztika hozzáadása
var osszesHianyzasHeaderDtCreatorArray = new List<string[]>();
var hianyzasHeaderDtCreatorArray = new List<string[]>();
var kesespercHeaderDtCreatorArray = new List<string[]>();
var keseshianyzasHeaderDtCreatorArray = new List<string[]>();
var hozotthianyzasHeaderDtCreatorArray = new List<string[]>();
var feldolgozatlanHeaderDtCreatorArray = new List<string[]>();
var hianyzaskesespercFilter = new List<string>(new[] { "tipus_char", "c_igazolt" });
var keseshianyzasFilter = new List<string>(new[] { "c_igazolt" });
if (elmeletGyakorlat.Equals("0"))
{
osszesHianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt" });
osszesHianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaOsszesIgazoltHianyzas, "H", "T" });
osszesHianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaOsszesIgazolatlanHianyzas, "H", "F" });
hianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt" });
hianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazoltHianyzasok, "H", "T" });
hianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazolatlanHianyzasok, "H", "F" });
kesespercHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt" });
kesespercHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazoltKesesPerc, "K", "T" });
kesespercHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazolatlanKesesPerc, "K", "F" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "c_igazolt", "c_hozott" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazoltKesesHianyzas, "T", "F" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazolatlanKesesHianyzas, "F", "F" });
hozotthianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt" });
hozotthianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaHozottIgazoltHianyzas, "H", "T" });
hozotthianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaHozottIgazolatlanHianyzas, "H", "F" });
feldolgozatlanHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt" });
feldolgozatlanHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.FeldolgozatlanMulasztas, "H", "-" });
feldolgozatlanHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.FeldolgozatlanKesesPerc, "K", "-" });
}
else if (elmeletGyakorlat.Equals("1"))
{
hianyzaskesespercFilter.Add("c_gyakorlati");
keseshianyzasFilter.Add("c_gyakorlati");
osszesHianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt", "c_gyakorlati" });
osszesHianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaOsszesElmeletiIgazoltHianyzas, "H", "T", "F" });
osszesHianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaOsszesGyakorlatiIgazoltHianyzas, "H", "T", "T" });
osszesHianyzasHeaderDtCreatorArray.Add(new[] { "3", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaOsszesElmeletiIgazolatlanHianyzas, "H", "F", "F" });
osszesHianyzasHeaderDtCreatorArray.Add(new[] { "4", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaOsszesGyakorlatiIgazolatlanHianyzas, "H", "F", "T" });
hianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt", "c_gyakorlati" });
hianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazoltHianyzas, "H", "T", "F" });
hianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazoltHianyzas, "H", "T", "T" });
hianyzasHeaderDtCreatorArray.Add(new[] { "3", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazolatlanHianyzas, "H", "F", "F" });
hianyzasHeaderDtCreatorArray.Add(new[] { "4", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazolatlanHianyzas, "H", "F", "T" });
kesespercHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt", "c_gyakorlati", "c_hozott" });
kesespercHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazoltKesesPerc, "K", "T", "F", "F" });
kesespercHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazoltKesesPerc, "K", "T", "T", "F" });
kesespercHeaderDtCreatorArray.Add(new[] { "3", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazolatlanKesesPerc, "K", "F", "F", "F" });
kesespercHeaderDtCreatorArray.Add(new[] { "4", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazolatlanKesesPerc, "K", "F", "T", "F" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "c_igazolt", "c_gyakorlati", "c_hozott" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazoltKesesHianyzas, "T", "F", "F" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazoltKesesHianyzas, "T", "T", "F" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "3", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazolatlanKesesHianyzas, "F", "F", "F" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "4", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazolatlanKesesHianyzas, "F", "T", "F" });
hozotthianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt", "c_gyakorlati", "c_hozott" });
hozotthianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaHozottIgazoltHianyzas, "H", "T", "F", "T" });
hozotthianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaHozottIgazolatlanHianyzas, "H", "F", "F", "T" });
feldolgozatlanHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt", "c_gyakorlati" });
feldolgozatlanHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.FeldolgozatlanElmeletiMulasztas, "H", "-", "F" });
feldolgozatlanHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.FeldolgozatlanGyakorlatiMulasztas, "H", "-", "T" });
feldolgozatlanHeaderDtCreatorArray.Add(new[] { "3", Resources.ExcelNyomtatvanyResource.FeldolgozatlanElmeletiKesesPerc, "K", "-", "F" });
feldolgozatlanHeaderDtCreatorArray.Add(new[] { "4", Resources.ExcelNyomtatvanyResource.FeldolgozatlanGyakorlatiKesesPerc, "K", "-", "T" });
}
adatMezo = new[] { "OSSZES_MULASZTASOK_SZAMA" };
var retDimOsszesHianyzas = AddDataTablePivotTable(worksheet, 2, retDimErtekeles[1] + retDimFeljegyzes[1] + 5, CreateDataTable(osszesHianyzasHeaderDtCreatorArray), hianyzaskesespercFilter.ToArray(), "mulasztas_name", tanuloDt, new[] { "C_TANULOID" }, null, mulasztasDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
adatMezo = new[] { "MULASZTASOK_SZAMA" };
var retDimHianyzas = AddDataTablePivotTable(worksheet, 2, retDimErtekeles[1] + retDimFeljegyzes[1] + retDimOsszesHianyzas[1] + 5, CreateDataTable(hianyzasHeaderDtCreatorArray), hianyzaskesespercFilter.ToArray(), "mulasztas_name", tanuloDt, new[] { "C_TANULOID" }, null, mulasztasDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
adatMezo = new[] { "KESESPERC" };
var retDimKesesperc = AddDataTablePivotTable(worksheet, 2, retDimErtekeles[1] + retDimFeljegyzes[1] + retDimOsszesHianyzas[1] + retDimHianyzas[1] + 5, CreateDataTable(kesespercHeaderDtCreatorArray), hianyzaskesespercFilter.ToArray(), "mulasztas_name", tanuloDt, new[] { "C_TANULOID" }, null, mulasztasDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
adatMezo = new[] { "MULASZTASOK_SZAMA" };
var retDimKesesHianyzas = AddDataTablePivotTable(worksheet, 2, retDimErtekeles[1] + retDimFeljegyzes[1] + retDimOsszesHianyzas[1] + retDimHianyzas[1] + retDimKesesperc[1] + 5, CreateDataTable(keseshianyzasHeaderDtCreatorArray), keseshianyzasFilter.ToArray(), "mulasztas_name", tanuloDt, new[] { "C_TANULOID" }, null, mulasztasSumDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
adatMezo = new[] { "HOZOTTMULASZTASOK_SZAMA" };
var retDimHozottMulasztas = AddDataTablePivotTable(worksheet, 2, retDimErtekeles[1] + retDimFeljegyzes[1] + retDimOsszesHianyzas[1] + retDimHianyzas[1] + retDimKesesperc[1] + 5 + retDimKesesHianyzas[1], CreateDataTable(hozotthianyzasHeaderDtCreatorArray), hianyzaskesespercFilter.ToArray(), "mulasztas_name", tanuloDt, new[] { "C_TANULOID" }, null, mulasztasDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
adatMezo = new[] { "FELDOLGOZATLANOK_SZAMA" };
AddDataTablePivotTable(worksheet, 2, retDimErtekeles[1] + retDimFeljegyzes[1] + retDimOsszesHianyzas[1] + retDimHianyzas[1] + retDimKesesperc[1] + 5 + retDimKesesHianyzas[1] + retDimHozottMulasztas[1], CreateDataTable(feldolgozatlanHeaderDtCreatorArray), hianyzaskesespercFilter.ToArray(), "mulasztas_name", tanuloDt, new[] { "C_TANULOID" }, null, mulasztasDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
}
}
}

View file

@ -0,0 +1,83 @@
using System.Collections.Generic;
using System.Data;
using System.IO;
using Kreta.BusinessLogic.Classes;
using Kreta.Core.ConnectionType;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Util;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel
{
public class OsztalyTanuloinakHaviMulasztasiOsszesitoje : BaseNyomtatvanyExcel
{
public OsztalyTanuloinakHaviMulasztasiOsszesitoje(IConnectionType connectionType, string templateFilename = null) : base(connectionType)
{
StoredProcedure = "sp_GetOsztalyTanuloinakHaviMulasztasaiOsszesitoje";
FileInfo exFile = null;
if (templateFilename != null)
{
exFile = new FileInfo(templateFilename);
}
ExcelPackage = (exFile == null) ? new ExcelPackage() : new ExcelPackage(exFile);
//Munkalap tulajdonságok beállítása
SetWorkbookProperties();
}
public override void CreateSheet(Dictionary<string, string> dbParameters, int sheetIndex = 1)
{
DbParameters = dbParameters;
dbParameters.TryGetValue("pElmeletgyakorlat", out string elmeletGyakorlat);
if (string.IsNullOrWhiteSpace(elmeletGyakorlat))
elmeletGyakorlat = "0";
dbParameters.TryGetValue("pMulasztandoOrakszamaTeljesNaposMulasztashoz", out string pMulasztandoOrakszamaTeljesNaposMulasztashoz);
if (string.IsNullOrWhiteSpace(pMulasztandoOrakszamaTeljesNaposMulasztashoz))
pMulasztandoOrakszamaTeljesNaposMulasztashoz = "4";
// Adatforrás összeállítása
SetExcelDataSet();
DataAccessManual.Util.DataAccessBase.SetBoolFields(DataSet.Tables[13], "OJCSJKeresztfeleves,OJTechnikaiOsztaly,OJNemzetisegi,OJKettannyelvu,OJNyelviElokeszito,OJIsGyogypedagogiaiLogopediai,OJSportOsztaly,OJAranyJanosProgram");
DataSet.Tables[DataSet.Tables.Count - 1].TableName = "TanulokIktatasiAdatok";
DataSet.Tables[DataSet.Tables.Count - 2].TableName = "OsztalyIktatasiAdatok";
DataTable honapokDt = DataSet.Tables[0];
int index = 1;
foreach (DataRow honap in honapokDt.Rows)
{
//Munkalap összeállítása
ExcelWorksheet worksheet = CreateSheet(SDAConvert.ToString(honap["honapnev"]), index, eOrientation.Landscape, true, 2);
worksheet.Row(1).Height = elmeletGyakorlat.Equals("0") ? 30 : 45;
worksheet.Column(1).Width = 25;
worksheet.Column(2).Width = 13;
int dcol = 3;
for (; dcol <= (elmeletGyakorlat.Equals("0") ? 31 + 1 : 62 + 1); dcol++)
worksheet.Column(dcol).Width = 6;
int[] dim = AddDataTable(
worksheet, 1, 1, DataSet.Tables[index], null, IntegerStyleBottomBordered, HeaderStyleBottomBorderedBGGray,
new[] { HeaderStyleBottomBordered, NormalStyleBottomBordered }, new[] { HeaderStyleBottomBordered },
null, null, null,
2, new[] { "COUNT", "SUM" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyTanuloinakHaviMulasztasiOsszesitojeNapiHianyzoTanulok, Resources.ExcelNyomtatvanyResource.OsztalyTanuloinakHaviMulasztasiOsszesitojeNapiOsszesito }, new[] { IntegerBoldStyle, IntegerStyle }, HeaderStyle);
for (; dcol <= dim[1]; dcol++)
worksheet.Column(dcol).Width = 11;
if (dim[1] > 0)
{
worksheet.Column(dim[1]).Width = 15;
AddComment(worksheet, 1, dim[1], ">= " + FrameworkEnumExtensions.EnumToListManual<TeljesNaposMulasztasSzamitashozMiminalisanMulasztottOrakszamaModEnum>()[pMulasztandoOrakszamaTeljesNaposMulasztashoz]);
}
//Hiányzó fejlécek beállítása
AddTanuloAdatokFejlec(worksheet, 1);
index++;
}
}
}
}

View file

@ -0,0 +1,74 @@
using System.Collections.Generic;
using System.Data;
using System.IO;
using Kreta.Core.ConnectionType;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel
{
public class OsztalyTanuloinakMulasztasiGyakorlatiSzazalekStatisztika : BaseNyomtatvanyExcel
{
public OsztalyTanuloinakMulasztasiGyakorlatiSzazalekStatisztika(IConnectionType connectionType, bool isMultisheetExcel = false, string templateFilename = null) : base(connectionType, isMultisheetExcel)
{
StoredProcedure = "sp_Nyomtatvany_Excel_OsztalyTanuloinakGyakorlatiOraMulasztasiSzazalekStatisztika";
FileInfo exFile = null;
if (templateFilename != null)
{
exFile = new FileInfo(templateFilename);
}
ExcelPackage = (exFile == null) ? new ExcelPackage() : new ExcelPackage(exFile);
//Munkalap tulajdonságok beállítása
SetWorkbookProperties();
}
public override void CreateSheet(Dictionary<string, string> dbParameters, int sheetIndex = 1)
{
DbParameters = dbParameters;
// Adatforrás összeállítása
SetExcelDataSet();
DataAccessManual.Util.DataAccessBase.SetBoolFields(DataSet.Tables[4], "OJCSJKeresztfeleves,OJTechnikaiOsztaly,OJNemzetisegi,OJKettannyelvu,OJNyelviElokeszito,OJIsGyogypedagogiaiLogopediai,OJSportOsztaly,OJAranyJanosProgram");
DataTable tanulosDt = DataSet.Tables[0];
DataTable tantargyDt = DataSet.Tables[1];
DataTable mulasztasSzazalekDt = DataSet.Tables[2];
DataTable mulasztasGyakSzazalekDt = DataSet.Tables[3];
DataTable osztalyDt = DataSet.Tables[4];
//Munkalap összeállítása
ExcelWorksheet worksheet = CreateSheet((isMultisheetExcel) ? osztalyDt.Rows[0]["Osztalynev"].ToString() : Resources.ExcelNyomtatvanyResource.OsztalyTanuloinakMulasztasiGyakorlatiSzazalekStatisztikaMunkalapnev, sheetIndex, eOrientation.Landscape, true, 2);
worksheet.Row(1).Height = 120;
worksheet.Column(1).Width = 30;
worksheet.Column(2).Width = 13;
worksheet.View.FreezePanes(2, 2);
for (int col = 2; col <= tantargyDt.Columns.Count; col++)
worksheet.Column(col + 1).Width = 7;
int[] retDim = AddDataTablePivotTable(worksheet, 1, 1,
tantargyDt, "TANTARGYID", "TANTARGY_NEV",
tanulosDt, "TANULOID", new[] { "TANULONEV", "OKTATASIAZONOSITO" },
mulasztasSzazalekDt, PercentStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, new[] { "MulasztasArany" },
new[] { "Info" },
new[] { "AVERAGE" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyTanuloinakMulasztasiGyakorlatiSzazalekStatisztikaTanuloiAtlag }, new[] { PercentBoldStyleBottomBordered },
new[] { "AVERAGE" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyTanuloinakMulasztasiGyakorlatiSzazalekStatisztikaTantargyiAtlag }, new[] { PercentBoldStyleBottomBordered });
var osszesitettGyakorlatiDtCreatorArray = new List<string[]>
{
new[] { "id", "name", "gyakorlati" },
new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyTanuloinakMulasztasiGyakorlatiSzazalekStatisztikaOsszesitett, "T" }
};
//Hiányzó fejlécek beállítása
AddTanuloAdatokFejlec(worksheet, 1);
retDim = AddDataTablePivotTable(worksheet, 1, retDim[1] + 1,
CreateDataTable(osszesitettGyakorlatiDtCreatorArray), "gyakorlati", "name",
tanulosDt, "TANULOID", null,
mulasztasGyakSzazalekDt, PercentStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, new[] { "MulasztasArany" },
new[] { "Info" },
null, null, null,
new[] { "AVERAGE" }, new[] { "" }, new[] { PercentBoldStyleBottomBordered });
}
}
}

Some files were not shown because too many files have changed in this diff Show more