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

6678 lines
328 KiB
C#

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.HelperClasses.OsztalyCsoportbaSorolas;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic.TanuloErtekeles;
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.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Framework.Caching;
using Kreta.Framework.Util;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Helpers
{
public class OsztalyCsoportbaSorolasHelper : LogicBase
{
private readonly bool kovTanev = false;
private readonly bool isSzakkepzoIntezmeny = false;
private readonly bool isSelectedTanev21_22OrLater = false;
private readonly int aktivTanevId = 0;
private readonly int? kovTanevId = null;
public OsztalyCsoportbaSorolasHelper(IConnectionType connectionType, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater, int? aktivTanevId, int? kovTanevId, bool kovTanev = false) : base(connectionType)
{
this.kovTanev = kovTanev;
this.isSzakkepzoIntezmeny = isSzakkepzoIntezmeny;
this.isSelectedTanev21_22OrLater = isSelectedTanev21_22OrLater;
this.aktivTanevId = aktivTanevId.Value;
this.kovTanevId = kovTanevId;
}
public static void SaveZaradek(IConnectionType connectionType, SorolasZaradek zaradek, int tanuloCsoportId, int? tanevId = null)
{
if (zaradek.ZaradekSzovegList != null && zaradek.ZaradekSzovegList.Any(x => x.NyelvId == (int)AnyanyelvEnum.magyar && !string.IsNullOrWhiteSpace(x.Szoveg?.Trim())))
{
new ZaradekHelper(connectionType).SaveZaradek(
new ZaradekCo
{
TanuloCsoportId = tanuloCsoportId,
KeltezesDatuma = zaradek.KeltezesDatuma,
KeltezesHelye = zaradek.KeltezesHelye,
RogzitesDatuma = zaradek.RogzitesDatuma != DateTime.MinValue ? zaradek.RogzitesDatuma : SDAConvert.ToDateTime(zaradek.RogzitesDatumaStr).Value,
RogzitoId = zaradek.RogzitoId,
UtolsoModositasDatuma = zaradek.UtolsoModositasDatuma != DateTime.MinValue ? zaradek.UtolsoModositasDatuma : SDAConvert.ToDateTime(zaradek.UtolsoModositasDatumaStr).Value,
UtolsoModositoId = zaradek.UtolsoModositoId,
IsBizonyitvanybanMegjelenik = zaradek.IsBizonyitvanybanMegjelenik,
IsKiVagyAtsorolasiZaradek = zaradek.IsKiVagyAtsorolasiZaradek,
IsOsztalynaplobanMegjelenik = zaradek.IsOsztalynaplobanMegjelenik,
IsTorzslaponMegjelenik = zaradek.IsTorzslaponMegjelenik,
ZaradekSzovegList = zaradek.ZaradekSzovegList.Where(x => !string.IsNullOrWhiteSpace(x.Szoveg)).Select(x => new ZaradekNyelvCo { NyelvId = x.NyelvId, Szoveg = x.Szoveg.Trim() }).ToList()
},
zaradek.IsOsztalyfonok,
zaradek.IsAdministrator,
tanevId
);
}
}
public List<OsztalybaSorolasDDLItem> Osztalyok(OktNevelesiKategoriaEnum? kategoriaTipus = null, bool osztalybaNemSoroltTanulok = false)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h => h.TanuloCsoport().Osztalyok(TanevId, kategoriaTipus));
var osztalyList = new List<OsztalybaSorolasDDLItem>();
if (osztalybaNemSoroltTanulok)
{
var osztalybaBeNemSoroltTanulok = BesorolasResource.OsztalybaBeNemSoroltTanulok;
var aktivTanevNev = new TanevHelper(ConnectionType).GetAktivTanevNev();
if (!string.IsNullOrWhiteSpace(aktivTanevNev))
{
osztalybaBeNemSoroltTanulok += $" ({aktivTanevNev}-es tanév)";
}
osztalyList.Add(new OsztalyListItem()
{
Id = Constants.General.OsztalybaNemSoroltTanulokValue,
Nev = osztalybaBeNemSoroltTanulok
}.ConvertToDDLItem());
}
foreach (DataRow row in ds.Tables[0].Rows)
{
osztalyList.Add(new OsztalyListItem()
{
Id = row.Field<int>("ID"),
Nev = row.Field<string>("Nev")
}.ConvertToDDLItem());
}
return osztalyList.ToList();
}
public List<OsztalybaSorolasDDLItem> Csoportok(OktNevelesiKategoriaEnum? kategoriaTipus = null, bool dualisKepzesIsEnabled = false, bool csakDualis = false, int? szervezetId = null)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h => h.TanuloCsoport().GetCsoportok(TanevId, kategoriaTipus, dualisKepzesIsEnabled, csakDualis, szervezetId));
var csoportList = new List<OsztalybaSorolasDDLItem>();
foreach (DataRow row in ds.Tables[0].Rows)
{
csoportList.Add(new CsoportListItem
{
Id = row.Field<int>("ID"),
Nev = row.Field<string>("Nev"),
OsztalybontasId = szervezetId.IsEntityId() ? null : row.Field<int?>("OsztalyId"),
OsztalyNev = row.Field<string>("OsztalyNev")
}.ConvertToDDLItem());
}
return csoportList.ToList();
}
public List<OsztalybaSorolasDDLItem> OsztalyTanuloi(int osztalyId, DateTime? datum = null, bool pIsJogviszonyKezeles = false)
{
DateTime? tanevKezdoNapja = null;
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
tanevKezdoNapja = h.TanevDal().Get(TanevId).KezdoNap;
return h.TanuloCsoport().OsztalyTanuloi(TanevId, new List<int> { osztalyId }, this.kovTanev, datum, pIsJogviszonyKezeles);
});
var tanuloList = new OsztalyTanuloiList() { Id = osztalyId };
datum = datum ?? DateTime.Now.Date;
if (this.kovTanev && (datum < tanevKezdoNapja))
{
datum = tanevKezdoNapja;
}
foreach (DataRow row in ds.Tables[0].Rows)
{
var vegzaradekDbText = row.Field<string>("KiVagyAtsorolasiZaradek");
var besorolasDatum = row.Field<DateTime?>("BelepesDatum");
var kisorolasDatum = row.Field<DateTime?>("KilepesDatum");
if (!datum.HasValue || (besorolasDatum <= datum.Value && (!kisorolasDatum.HasValue || kisorolasDatum.Value > datum.Value)))
{
tanuloList.Add(row.Field<int>("ID"), new TanuloListItem()
{
Nev = row.Field<string>("Nev"),
NevElotagNelkul = row.Field<string>("NevElotagNelkul"),
BesorolasDatum = besorolasDatum,
KisorolasDatum = kisorolasDatum,
Aktiv = row.Field<bool>("Aktiv_BOOL"),
SzuletesiDatum = row.Field<DateTime>("SzulDatum"),
Neme = row.Field<string>("Neme_DNAME"),
Vegzaradek = string.IsNullOrWhiteSpace(vegzaradekDbText) ? null : vegzaradekDbText,
JogviszonyCount = pIsJogviszonyKezeles && row.Field<int?>("JogviszonyCount").HasValue ? row.Field<int>("JogviszonyCount") : 0,
JogviszonyId = pIsJogviszonyKezeles && row.Field<int?>("JogviszonyId").HasValue ? row.Field<int>("JogviszonyId") : 0
});
}
}
return tanuloList.ConvertToDDLItemList().OrderBy(x => x.NevElotagNelkul).ToList();
}
public List<OsztalybaSorolasDDLItem> CsoportTanuloi(int csoportId, bool isKovTanev = false, DateTime? datum = null)
{
var tanuloList = new CsoportTanuloiList() { Id = csoportId };
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
var csoport = h.Csoport().Get(csoportId);
var tanev = h.TanevDal().Get(csoport.TanevId);
DateTime lekerdezesDatum = datum ?? DateTime.Today;
if (tanev.ElsoTanitasiNap > DateTime.Today)
{
lekerdezesDatum = tanev.ElsoTanitasiNap.Value;
}
if (tanev.UtolsoNap < DateTime.Today)
{
lekerdezesDatum = tanev.UtolsoNap.Value;
}
tanuloList.OsztalybontasId = csoport.OsztalyBontasId > 0 ? (int?)csoport.OsztalyBontasId : null;
return h.TanuloCsoport().CsoportTanuloi(TanevId, csoportId, lekerdezesDatum, isKovTanev);
});
foreach (DataRow row in ds.Tables[0].Rows)
{
tanuloList.Add(row.Field<int>("ID"),
new TanuloListItem()
{
Nev = row.Field<string>("Nev"),
NevElotagNelkul = row.Field<string>("NevElotagNelkul"),
BesorolasDatum = row.Field<DateTime?>("BelepesDatum"),
KisorolasDatum = row.Field<DateTime?>("KilepesDatum"),
Aktiv = row.Field<bool>("Aktiv_BOOL"),
SzuletesiDatum = row.Field<DateTime>("SzulDatum"),
Neme = row.Field<string>("Neme_DNAME")
});
}
return tanuloList.ConvertToDDLItemList().OrderBy(x => x.NevElotagNelkul).ToList();
}
public List<OsztalybaSorolasDDLItem> OsztalybaNemSoroltTanulok(DateTime kisorolasDatum, bool isLeptetes = false, bool pIsJogviszonyKezeles = false)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
return h.TanuloCsoport().GetOsztalybaNemSoroltTanulok(kisorolasDatum, TanevId, isLeptetes, pIsJogviszonyKezeles);
});
var result = ds.Tables[0].AsEnumerable().Select(r => new OsztalybaSorolasDDLItem
{
Value = r.Field<int>("Id").ToString(),
Text = r.Field<string>("Nev"),
NevElotagNelkul = r.Field<string>("Nev"),
Aktiv = true,
SzulDatum = r.Field<DateTime>("SzulDatum"),
Neme = r.Field<string>("Neme_DNAME"),
JogviszonyCount = pIsJogviszonyKezeles && r.Field<int?>("JogviszonyCount").HasValue ? r.Field<int>("JogviszonyCount") : 0,
JogviszonyId = pIsJogviszonyKezeles && r.Field<int?>("JogviszonyId").HasValue ? r.Field<int>("JogviszonyId") : 0
}).OrderBy(x => x.Text).ToList();
return result;
}
public List<OsztalybaSorolasDDLItem> OsztalyNelkuliTanulok(OktNevelesiKategoriaEnum feladatKategoria)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h => h.TanuloCsoport().OsztalyNelkuliTanulok(TanevId, feladatKategoria));
var tanulokList = new BeNemSoroltTanulokList();
foreach (DataRow row in ds.Tables[0].Rows)
{
tanulokList.Add(row.Field<int>("ID"),
new TanuloListItem()
{
Nev = row.Field<string>("Nev"),
NevElotagNelkul = row.Field<string>("NevElotagNelkul"),
Aktiv = true,
SzuletesiDatum = row.Field<DateTime>("SzulDatum"),
Neme = row.Field<string>("Neme_DNAME")
});
}
return tanulokList.ConvertToDDLItemList().OrderBy(x => x.NevElotagNelkul).ToList();
}
public List<OsztalybaSorolasDDLItem> DualisTanulok(DateTime pLekerdezesDatum, int? pSzervezetId)
{
if (!pSzervezetId.HasValue)
{
return new List<OsztalybaSorolasDDLItem>();
}
var ds = Dal.CustomConnection.Run(ConnectionType, h => h.TanuloCsoport().GetDualisTanulok(TanevId, pLekerdezesDatum, pSzervezetId));
var tanulokList = new BeNemSoroltTanulokList();
foreach (DataRow row in ds.Tables[0].Rows)
{
tanulokList.Add(row.Field<int>("ID"),
new TanuloListItem()
{
Nev = row.Field<string>("Nev"),
NevElotagNelkul = row.Field<string>("NevElotagNelkul"),
Aktiv = true,
SzuletesiDatum = row.Field<DateTime>("SzulDatum"),
Neme = row.Field<string>("Neme_DNAME")
});
}
return tanulokList.ConvertToDDLItemList().OrderBy(x => x.NevElotagNelkul).ToList();
}
public List<OsztalybaSorolasDDLItem> AmiAktivTanulok(bool isKovTanev)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h => h.TanuloCsoport().OsszesTanulo(TanevId, isKovTanev));
var tanulokList = new AmiBesorolhatoTanulokList();
foreach (DataRow row in ds.Tables[0].Rows)
{
tanulokList.Add(row.Field<int>("ID"),
new TanuloListItem()
{
Nev = row.Field<string>("Nev"),
NevElotagNelkul = row.Field<string>("NevElotagNelkul"),
Aktiv = true,
SzuletesiDatum = row.Field<DateTime>("SzulDatum"),
Neme = row.Field<string>("Neme_DNAME")
});
}
return tanulokList.ConvertToDDLItemList().OrderBy(x => x.NevElotagNelkul).ToList();
}
public List<OsztalybaSorolasDDLItem> KiiratkoztatottTanulokAktivTanev(OktNevelesiKategoriaEnum feladatKategoria)
{
return KiiratkoztatottTanulokValasztottTanev(feladatKategoria, TanevId);
}
public List<OsztalybaSorolasDDLItem> KiiratkoztatottTanulokValasztottTanev(OktNevelesiKategoriaEnum feladatKategoria, int? tanevId = null)
{
if (!tanevId.IsEntityId())
{
return new List<OsztalybaSorolasDDLItem>();
}
var ds = Dal.CustomConnection.Run(ConnectionType, h => h.TanuloCsoport().KiiratkoztatottTanulok(feladatKategoria, tanevId.Value));
var tanulokList = new KiiratkoztatottTanulokList();
foreach (DataRow row in ds.Tables[0].Rows)
{
tanulokList.Add(row.Field<int>("ID"),
new TanuloListItem()
{
Nev = row.Field<string>("Nev"),
NevElotagNelkul = row.Field<string>("NevElotagNelkul"),
KisorolasDatum = row.Field<DateTime?>("KilepesDatum"),
Aktiv = true,
SzuletesiDatum = row.Field<DateTime>("SzulDatum"),
Neme = row.Field<string>("Neme_DNAME")
});
}
return tanulokList.ConvertToDDLItemList().OrderBy(x => x.NevElotagNelkul).ToList();
}
public List<OsztalybaSorolasDDLItem> KiiratkoztatottTanulokKovTanev(OktNevelesiKategoriaEnum feladatKategoria)
{
return KiiratkoztatottTanulokValasztottTanev(feladatKategoria, kovTanevId);
}
public List<OsztalybaSorolasDDLItem> FelvettNebulok()
{
var ds = Dal.CustomConnection.Run(ConnectionType, h => h.TanuloCsoport().GetFelvettNebulok());
var nebuloList = new NebulokList();
var rows = ds?.Tables[0].Rows;
if (rows != null)
{
foreach (DataRow row in rows)
{
nebuloList.Add(row.Field<int>("Id"),
new TanuloListItem()
{
Nev = $"{row.Field<string>("Csaladnev")} {row.Field<string>("Utonev")} ({row.Field<DateTime>("SzuletesiDatum"):yyyy.MM.dd})",
Aktiv = true,
SzuletesiDatum = row.Field<DateTime>("SzuletesiDatum")
});
}
}
return nebuloList.ConvertToDDLItemList().OrderBy(x => x.Text).ToList();
}
public List<OsztalybaSorolasDDLItem> FelvettEsMegNemLetezoKovTanevesNebulok(bool useNemFelvettStatusz)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h => h.TanuloCsoport().GetFelvettEsMegNemLetezoKovTanevesNebulok(useNemFelvettStatusz));
var nebuloList = new NebulokList();
var rows = ds?.Tables[0].Rows;
if (rows != null)
{
foreach (DataRow row in rows)
{
nebuloList.Add(row.Field<int>("Id"),
new TanuloListItem()
{
Nev = $"{row.Field<string>("Csaladnev")} {row.Field<string>("Utonev")} ({row.Field<DateTime>("SzuletesiDatum"):yyyy.MM.dd})",
Aktiv = true,
SzuletesiDatum = row.Field<DateTime>("SzuletesiDatum")
});
}
}
return nebuloList.ConvertToDDLItemList().OrderBy(x => x.Text).ToList();
}
public List<OsztalybaSorolasDDLItem> GetZaradekok()
{
List<DictionaryItem> enumList = ((int)GeneratedAdatszotarTipusEnum.SorolasOkaTipus).GetItemsByType(TanevId, true);
var result = new List<OsztalybaSorolasDDLItem>();
foreach (var item in enumList)
{
result.Add(new OsztalybaSorolasDDLItem()
{
Value = item.Id.ToString(),
Text = item.Name
});
}
return result.ToList();
}
public List<OsztalybaSorolasDDLItem> GetZaradekokNyelv(int nyelvId)
{
IDictionary<string, string> enumList;
var adatszotar = new AdatszotarHelper(ConnectionType);
enumList = adatszotar.GetAdatszotarLathatoElemekNyelv(GeneratedAdatszotarTipusEnum.SorolasOkaTipus, nyelvId);
var result = new List<OsztalybaSorolasDDLItem>();
foreach (var item in enumList)
{
result.Add(new OsztalybaSorolasDDLItem()
{
Value = item.Key,
Text = item.Value
});
}
return result.ToList();
}
public void NebuloMentes(IOsztalyCsoportbaSorolas model, bool isSzirIntezmeny)
{
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, handler =>
{
if (kovTanev)
{
model.Datum = new TanevHelper(new DalHandlerConnectionType(ConnectionType, handler)).GetTanevInfo().KezdoNap;
}
return new NebuloBesorolasLogic(this, handler).Alapkepzes(model, isSzirIntezmeny);
});
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void TanulokLetrehozasaBAINebulokbol(IOsztalyCsoportbaSorolas model, bool isSzirIntezmeny)
{
Dal.CustomConnection.Run(ConnectionType, handler =>
{
if (kovTanev)
{ model.Datum = new TanevHelper(new DalHandlerConnectionType(ConnectionType, handler)).GetTanevInfo().KezdoNap; }
new NebuloBesorolasLogic(this, handler).TanulokLetrehozasaNebulokbol(model, generateGondviseloBelepes: true, isSzirIntezmeny);
});
}
public List<OsztalybaSororlasItem> ConvertDDLItemToNormal(List<OsztalybaSorolasDDLItem> list)
{
List<OsztalybaSororlasItem> result = new List<OsztalybaSororlasItem>();
foreach (var item in list)
{
result.Add(new OsztalybaSororlasItem() { Id = int.Parse(item.Value) });
}
return result;
}
public (bool isError, string message, string osztallyalNemLefedettCsoportNevek) DeleteBesorolasValidate(int tanuloId, int osztalyId, bool needNemOsztalyBontottCsoportValidacio, int? tanuloCsoportId = null)
{
var isError = false;
var csoportNevList = string.Empty;
var message = Dal.CustomConnection.Run(ConnectionType, handler =>
{
var osztalyCsoportDal = handler.OsztalyCsoport();
var osztalyCsoportIDs = osztalyCsoportDal.GetKapcsolodoOsztalyBontasokkal(osztalyId);
var tanuloDal = handler.Tanulo();
var tanulo = tanuloDal.Get(tanuloId);
Enum.TryParse(osztalyCsoportDal.GetOsztalyCsoportFeladatKategoria(osztalyId).ToString(), out OktNevelesiKategoriaEnum kategoria);
var osztalyCsoportList = osztalyCsoportDal.GetOsztalyCsoportok(TanevId, (int)kategoria, false, tanuloIds: new List<int> { tanuloId }).Tables[0].AsEnumerable().Select
(x => new
{
TanuloCsoportId = x.Field<int>("Id"),
IsCsoport = x.Field<string>("IsCsoport").Equals("T"),
OsztalyCsoportId = x.Field<int>("OsztalyCsoportId"),
OsztalyBontas = x.Field<string>("OsztalyBontas"),
OsztalyCsoportNev = x.Field<string>("Nev"),
BesorolasDatuma = x.Field<DateTime>("ErvKezd"),
KisorolasDatuma = x.Field<DateTime?>("ErvVeg")
}).ToList();
var osztalyList = osztalyCsoportList.Where(osztaly => !osztaly.IsCsoport && (osztaly.OsztalyCsoportId != osztalyId || (osztaly.OsztalyCsoportId == osztalyId && osztaly.TanuloCsoportId != tanuloCsoportId))).OrderBy(x => x.BesorolasDatuma).ToList();
var nemOsztalybontottCsoportList = osztalyCsoportList.Where(x => x.IsCsoport && string.IsNullOrWhiteSpace(x.OsztalyBontas)).ToList();
var osztallyalNemLefedettCsoportNevList = new List<string>();
if (nemOsztalybontottCsoportList.Any())
{
if (osztalyList.Any())
{
var osztalyTagjaDictionary = new Dictionary<DateTime, DateTime?>();
var osztalyFirst = osztalyList[0];
DateTime kezdet = osztalyFirst.BesorolasDatuma;
DateTime? veg = osztalyFirst.KisorolasDatuma;
if (osztalyList.Count > 1)
{
for (int i = 1; i < osztalyList.Count; i++)
{
if (veg == null)
{
osztalyTagjaDictionary.Add(kezdet, veg);
break;
}
if (osztalyList[i].BesorolasDatuma >= kezdet && osztalyList[i].KisorolasDatuma > veg)
{
if (osztalyList[i].BesorolasDatuma <= veg)
{
veg = osztalyList[i].KisorolasDatuma;
}
else
{
if (!osztalyTagjaDictionary.ContainsKey(kezdet))
{
osztalyTagjaDictionary.Add(kezdet, veg);
kezdet = osztalyList[i].BesorolasDatuma;
veg = osztalyList[i].KisorolasDatuma;
}
}
}
}
}
else
{
osztalyTagjaDictionary.Add(kezdet, veg);
}
foreach (var csoport in nemOsztalybontottCsoportList)
{
if (!osztalyTagjaDictionary.Any(x => x.Key <= csoport.BesorolasDatuma && (x.Value >= csoport.KisorolasDatuma || x.Value == null)))
{
osztallyalNemLefedettCsoportNevList.Add(csoport.OsztalyCsoportNev);
}
}
}
else
{
osztallyalNemLefedettCsoportNevList.AddRange(nemOsztalybontottCsoportList.Select(x => x.OsztalyCsoportNev));
}
}
if (osztallyalNemLefedettCsoportNevList.Any() && needNemOsztalyBontottCsoportValidacio)
{
isError = true;
csoportNevList = string.Join(",", osztallyalNemLefedettCsoportNevList);
var errorMessage = $"{(kategoria == OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas ? ErrorResource.ANovendekNemTorolhetoAzOsztalybolMertTagjaEgyVagyTobbNemOsztalybontottCsoportnak : ErrorResource.ATanuloNemTorolhetoAzOsztalybolMertTagjaEgyVagyTobbNemOsztalybontottCsoportnak)}";
return $"{errorMessage} {csoportNevList}";
}
// Ha van kapcsolodó osztálybontásból nem törölt értékelése
if (tanulo.TanuloErtekeles.Any(x => !x.Torolt && osztalyCsoportIDs.Contains(x.OsztalyCsoportId)))
{
return kategoria == OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas ? ErrorResource.ANovendeknekVanMentettErtekelese : ErrorResource.ATanulonakVanMentettErtekelese;
}
// Ha csak ez az oszztálya van a mai napon az adott kategóriában, de van más csoportból nem törölt értékelése
if (!tanuloDal.VanMasOsztalya(tanuloId, osztalyId, kategoria) &&
tanulo.TanuloErtekeles.Any(x => !x.Torolt && !osztalyCsoportIDs.Contains(x.OsztalyCsoportId)))
{
return kategoria == OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas ? ErrorResource.ANovendeknekVanMentettErtekelese : ErrorResource.ATanulonakVanMentettErtekelese;
}
return string.Empty;
});
return (isError, message, csoportNevList);
}
public bool CheckOsztalyBesorolasDelete(int tanuloCsoportId, out List<string> errorMessages)
{
errorMessages = new List<string>();
var (validationErrors, osztalyCsoportAdatok, tanuloNev) = Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloCsoportEntity = h.TanuloCsoport().Get(tanuloCsoportId);
var tanevUtolsoNapja = h.TanevDal().Get(TanevId).UtolsoNap.Value;
var osztalyCsoportDict = GetOsztalyCsoportDict(h);
var errors = GetOsztalyBesorolasTorlesValidations(h, tanuloCsoportEntity.OsztalyCsoportId, tanuloCsoportEntity.TanuloId,
tanuloCsoportEntity.BelepesDatum.Value, tanuloCsoportEntity.KilepesDatum ?? tanevUtolsoNapja,
(OktNevelesiKategoriaEnum)tanuloCsoportEntity.OsztalyCsoport.FeladatKategoriaId);
return (errors, osztalyCsoportDict, tanuloCsoportEntity.Tanulo.NyomtatasiNev);
});
errorMessages.AddRange(CreateErrorMessagesFromOsztalyBesorolasValidationErrors(validationErrors, osztalyCsoportAdatok, tanuloNev, isTorles: true));
return !errorMessages.Any();
}
public bool CheckOsztalyBesorolasKezdetModositas(int tanuloCsoportId, DateTime changedBelepes, out List<string> errorMessages)
{
errorMessages = new List<string>();
var (validationErrors, osztalyCsoportAdatok, tanuloNev) = Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloCsoportEntity = h.TanuloCsoport().Get(tanuloCsoportId);
var osztalyCsoportDict = GetOsztalyCsoportDict(h);
var (datumTol, datumIg, isKorabbraModositas) = GetBesorolasKezdetModositasIntervallum(tanuloCsoportEntity, changedBelepes);
var errors = GetOsztalyBesorolasKezdetModositasValidations(h, tanuloCsoportEntity.OsztalyCsoportId, tanuloCsoportEntity.TanuloId,
datumTol, datumIg,
(OktNevelesiKategoriaEnum)tanuloCsoportEntity.OsztalyCsoport.FeladatKategoriaId,
isKorabbraModositas);
return (errors, osztalyCsoportDict, tanuloCsoportEntity.Tanulo.NyomtatasiNev);
});
errorMessages.AddRange(CreateErrorMessagesFromOsztalyBesorolasValidationErrors(validationErrors, osztalyCsoportAdatok, tanuloNev, isTorles: false));
return !errorMessages.Any();
}
public bool CheckOsztalyBesorolasVegeModositas(int tanuloCsoportId, DateTime changedKilepes, out List<string> errorMessages)
{
errorMessages = new List<string>();
var (validationErrors, osztalyCsoportAdatok, tanuloNev) = Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloCsoportEntity = h.TanuloCsoport().Get(tanuloCsoportId);
var osztalyCsoportDict = GetOsztalyCsoportDict(h);
if (tanuloCsoportEntity.BelepesDatum > changedKilepes)
{
var errors = new List<OsztalybaSorolasModositasValidacioItemCo>
{
new OsztalybaSorolasModositasValidacioItemCo
{
Oka = OsztalybaSorolasModositasValidacioHibaEnum.KilepesDatumaElobbiMintABelepesDatuma,
TanuloCsoportKilepesDatum = changedKilepes,
TanuloCsoportBelepesDatum = tanuloCsoportEntity.BelepesDatum
}
};
return (errors, osztalyCsoportDict, tanuloCsoportEntity.Tanulo.NyomtatasiNev);
}
else
{
var (datumTol, datumIg, isKorabbraModositas) = GetBesorolasVegeModositasIntervallum(h, tanuloCsoportEntity, changedKilepes);
var errors = GetOsztalyBesorolasVegeModositasValidations(h, tanuloCsoportEntity.OsztalyCsoportId, tanuloCsoportEntity.TanuloId,
datumTol, datumIg,
(OktNevelesiKategoriaEnum)tanuloCsoportEntity.OsztalyCsoport.FeladatKategoriaId,
isKorabbraModositas);
return (errors, osztalyCsoportDict, tanuloCsoportEntity.Tanulo.NyomtatasiNev);
}
});
errorMessages.AddRange(CreateErrorMessagesFromOsztalyBesorolasValidationErrors(validationErrors, osztalyCsoportAdatok, tanuloNev, isTorles: false));
return !errorMessages.Any();
}
public bool CheckCsoportBesorolasDelete(int tanuloCsoportId, out List<string> errorMessages, bool? isFromSzervezet = false)
{
errorMessages = new List<string>();
var (validationErrors, csoportNev, tanuloNev) = Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloCsoportEntity = h.TanuloCsoport().Get(tanuloCsoportId);
var tanevUtolsoNapja = h.TanevDal().Get(TanevId).UtolsoNap.Value;
var errors = GetCsoportBesorolasModositasValidacio(h, tanuloCsoportEntity.OsztalyCsoportId, tanuloCsoportEntity.TanuloId,
tanuloCsoportEntity.BelepesDatum.Value, tanuloCsoportEntity.KilepesDatum ?? tanevUtolsoNapja,
isFromSzervezet.HasValue && isFromSzervezet.Value ? (OktNevelesiKategoriaEnum?)null : (OktNevelesiKategoriaEnum)tanuloCsoportEntity.OsztalyCsoport.FeladatKategoriaId,
isTorolhetosegVizsgalat: true);
return (errors, tanuloCsoportEntity.OsztalyCsoport.Nev, tanuloCsoportEntity.Tanulo.NyomtatasiNev);
});
errorMessages.AddRange(CreateErrorMessagesFromCsoportBesorolasValidationErrors(validationErrors, csoportNev, tanuloNev, isTorles: true));
return !errorMessages.Any();
}
public bool CheckCsoportBesorolasKezdetModositas(int tanuloCsoportId, DateTime changedBelepes, out List<string> errorMessages, bool? isFromSzervezet = null)
{
errorMessages = new List<string>();
var (validationErrors, csoportNev, tanuloNev) = Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloCsoportEntity = h.TanuloCsoport().Get(tanuloCsoportId);
var (datumTol, datumIg, isKorabbraModositas) = GetBesorolasKezdetModositasIntervallum(tanuloCsoportEntity, changedBelepes);
var errors = GetCsoportBesorolasModositasValidacio(h, tanuloCsoportEntity.OsztalyCsoportId, tanuloCsoportEntity.TanuloId,
datumTol, datumIg,
isFromSzervezet.HasValue && isFromSzervezet.Value ? (OktNevelesiKategoriaEnum?)null : (OktNevelesiKategoriaEnum)tanuloCsoportEntity.OsztalyCsoport.FeladatKategoriaId,
isTorolhetosegVizsgalat: !isKorabbraModositas);
return (errors, tanuloCsoportEntity.OsztalyCsoport.Nev, tanuloCsoportEntity.Tanulo.NyomtatasiNev);
});
errorMessages.AddRange(CreateErrorMessagesFromCsoportBesorolasValidationErrors(validationErrors, csoportNev, tanuloNev, isTorles: false));
return !errorMessages.Any();
}
public bool CheckCsoportBesorolasVegeModositas(int tanuloCsoportId, DateTime changedKilepes, out List<string> errorMessages)
{
errorMessages = new List<string>();
var (validationErrors, csoportNev, tanuloNev) = Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloCsoportEntity = h.TanuloCsoport().Get(tanuloCsoportId);
if (tanuloCsoportEntity.BelepesDatum > changedKilepes)
{
var errors = new List<CsoportBesorolasModositasValidacioItemCo>
{
new CsoportBesorolasModositasValidacioItemCo
{
Oka = CsoportBesorolasModositasValidacioHibaEnum.KilepesDatumaElobbiMintABelepesDatuma,
TanuloCsoportKilepesDatum = changedKilepes,
TanuloCsoportBelepesDatum = tanuloCsoportEntity.BelepesDatum
}
};
return (errors, tanuloCsoportEntity.OsztalyCsoport.Nev, tanuloCsoportEntity.Tanulo.NyomtatasiNev);
}
else
{
var (datumTol, datumIg, isKorabbraModositas) = GetBesorolasVegeModositasIntervallum(h, tanuloCsoportEntity, changedKilepes);
var errors = GetCsoportBesorolasModositasValidacio(h, tanuloCsoportEntity.OsztalyCsoportId, tanuloCsoportEntity.TanuloId,
datumTol, datumIg,
(OktNevelesiKategoriaEnum?)tanuloCsoportEntity.OsztalyCsoport.FeladatKategoriaId,
isTorolhetosegVizsgalat: isKorabbraModositas);
return (errors, tanuloCsoportEntity.OsztalyCsoport.Nev, tanuloCsoportEntity.Tanulo.NyomtatasiNev);
}
});
errorMessages.AddRange(CreateErrorMessagesFromCsoportBesorolasValidationErrors(validationErrors, csoportNev, tanuloNev, isTorles: false));
return !errorMessages.Any();
}
public bool CheckCsoportAtsorolas(int tanuloCsoportId, DateTime datumTol, out List<string> errorMessages, bool? isFromSzervezet = null)
{
errorMessages = new List<string>();
var (validationErrors, csoportNev, tanuloNev) = Dal.CustomConnection.Run(ConnectionType, h =>
{
var tanuloCsoportEntity = h.TanuloCsoport().Get(tanuloCsoportId);
var tanevUtolsoNapja = h.TanevDal().Get(TanevId).UtolsoNap.Value;
var errors = GetCsoportBesorolasModositasValidacio(h, tanuloCsoportEntity.OsztalyCsoportId, tanuloCsoportEntity.TanuloId,
datumTol, tanuloCsoportEntity.KilepesDatum ?? tanevUtolsoNapja,
isFromSzervezet.HasValue && isFromSzervezet.Value ? (OktNevelesiKategoriaEnum?)null : (OktNevelesiKategoriaEnum)tanuloCsoportEntity.OsztalyCsoport.FeladatKategoriaId,
isTorolhetosegVizsgalat: true);
return (errors, string.Empty, tanuloCsoportEntity.Tanulo.NyomtatasiNev);
});
errorMessages.AddRange(CreateErrorMessagesFromCsoportBesorolasValidationErrors(validationErrors, csoportNev, tanuloNev, isTorles: true));
return !errorMessages.Any();
}
private Dictionary<int, string> GetOsztalyCsoportDict(IDalHandler dalHandler)
{
var osztalyCsoportDataSet = dalHandler.OsztalyCsoport().GetOsztalyCsoportDataSet(TanevId);
return osztalyCsoportDataSet.Tables[0].AsEnumerable().ToDictionary(r => r.Field<int>("Id"), r => r.Field<string>("Nev"));
}
private IEnumerable<string> CreateErrorMessagesFromOsztalyBesorolasValidationErrors(List<OsztalybaSorolasModositasValidacioItemCo> validationErrors,
Dictionary<int, string> osztalyCsoportAdatok, string tanuloNev, bool isTorles)
{
return validationErrors.Select(x =>
{
switch (x.Oka)
{
case OsztalybaSorolasModositasValidacioHibaEnum.VanOsztalybontottCsoportBesorolasa:
return string.Format(isTorles ? OsztalyCsoportResource.OsztalybaSorolasVanOsztalybontottCsoportTorlesHiba : OsztalyCsoportResource.OsztalybaSorolasVanOsztalybontottCsoportHiba,
tanuloNev, x.Datum.Value.ToShortDateString(), osztalyCsoportAdatok[x.OsztalyId.Value], osztalyCsoportAdatok[x.OsztalybontottCsoportId.Value]);
case OsztalybaSorolasModositasValidacioHibaEnum.VanCsoportBesorolasaOsztalybesorolasNelkul:
return string.Format(isTorles ? OsztalyCsoportResource.OsztalybaSorolasVanCsoportBesorolasaOsztalybesorolasNelkulTorlesHiba : OsztalyCsoportResource.OsztalybaSorolasVanCsoportBesorolasaOsztalybesorolasNelkulHiba,
tanuloNev, x.Datum.Value.ToShortDateString(), osztalyCsoportAdatok[x.OsztalyId.Value]);
case OsztalybaSorolasModositasValidacioHibaEnum.VanAzOsztalyhozMulasztasRogzitve:
return string.Format(isTorles ? OsztalyCsoportResource.OsztalybaSorolasVanAzOsztalyhozMulasztasRogzitveTorlesHiba : OsztalyCsoportResource.OsztalybaSorolasVanAzOsztalyhozMulasztasRogzitveHiba,
tanuloNev, x.Darab, osztalyCsoportAdatok[x.OsztalyId.Value]);
case OsztalybaSorolasModositasValidacioHibaEnum.VanAzOsztalyhozErtekelesRogzitve:
return string.Format(isTorles ? OsztalyCsoportResource.OsztalybaSorolasVanAzOsztalyhozErtekelesRogzitveTorlesHiba : OsztalyCsoportResource.OsztalybaSorolasVanAzOsztalyhozErtekelesRogzitveHiba,
tanuloNev, x.Darab, osztalyCsoportAdatok[x.OsztalyId.Value]);
case OsztalybaSorolasModositasValidacioHibaEnum.VanFeljegyzesRogzitveATanulonak:
return string.Format(isTorles ? OsztalyCsoportResource.OsztalybaSorolasVanFeljegyzesRogzitveATanulonakTorlesHiba : OsztalyCsoportResource.OsztalybaSorolasVanFeljegyzesRogzitveATanulonakHiba,
tanuloNev, x.Darab);
case OsztalybaSorolasModositasValidacioHibaEnum.VanIgazolasRogzitveATanulonak:
return string.Format(isTorles ? OsztalyCsoportResource.OsztalybaSorolasVanIgazolasRogzitveATanulonakTorlesHiba : OsztalyCsoportResource.OsztalybaSorolasVanIgazolasRogzitveATanulonakHiba,
tanuloNev, x.Darab);
case OsztalybaSorolasModositasValidacioHibaEnum.ATanuloMarTagjaAzAdottOsztalynak:
return string.Format(OsztalyCsoportResource.OsztalybaSorolasATanuloMarTagjaAzAdottOsztalynakHiba,
tanuloNev, x.Datum.Value.ToShortDateString(), osztalyCsoportAdatok[x.OsztalyId.Value]);
case OsztalybaSorolasModositasValidacioHibaEnum.ATanuloMarTagjaAMaxSzamuOsztalynak:
return string.Format(OsztalyCsoportResource.OsztalybaSorolasATanuloMarTagjaAMaxSzamuOsztalynakHiba,
tanuloNev, x.Datum.Value.ToShortDateString());
case OsztalybaSorolasModositasValidacioHibaEnum.KilepesDatumaElobbiMintABelepesDatuma:
return string.Format(OsztalyCsoportResource.KilepesDatumaElobbiMintABelepesDatuma, tanuloNev, x.TanuloCsoportKilepesDatum.Value.ToShortDateString(), x.TanuloCsoportBelepesDatum.Value.ToShortDateString());
default:
return string.Empty;
}
});
}
private IEnumerable<string> CreateErrorMessagesFromCsoportBesorolasValidationErrors(List<CsoportBesorolasModositasValidacioItemCo> validationErrors, string csoportNev, string tanuloNev, bool isTorles)
{
return validationErrors.Select(x =>
{
switch (x.Oka)
{
case CsoportBesorolasModositasValidacioHibaEnum.TanuloMarTagjaAzAdottCsoportnak:
return string.Format(OsztalyCsoportResource.CsoportbaSorolasTanuloMarTagjaAzAdottCsoportnakHiba,
tanuloNev, x.Datum.Value.ToShortDateString(), csoportNev);
case CsoportBesorolasModositasValidacioHibaEnum.TanuloNemTagjaEgyetlenOsztalynakSem:
return string.Format(OsztalyCsoportResource.CsoportbaSorolasTanuloNemTagjaEgyetlenOsztalynakSemHiba,
tanuloNev, x.Datum.Value.ToShortDateString());
case CsoportBesorolasModositasValidacioHibaEnum.TanuloNemTagjaAzOsztalybontottCsoportOsztalyanak:
return string.Format(OsztalyCsoportResource.CsoportbaSorolasTanuloNemTagjaAzOsztalybontottCsoportOsztalyanakHiba,
tanuloNev, x.Datum.Value.ToShortDateString(), csoportNev);
case CsoportBesorolasModositasValidacioHibaEnum.VanACsoporthozMulasztasRogzitve:
return string.Format(isTorles ? OsztalyCsoportResource.CsoportbaSorolasVanACsoporthozMulasztasRogzitveTorlesHiba : OsztalyCsoportResource.CsoportbaSorolasVanACsoporthozMulasztasRogzitveModositasHiba,
tanuloNev, x.Darab, csoportNev);
case CsoportBesorolasModositasValidacioHibaEnum.VanACsoporthozErtekelesRogzitve:
return string.Format(isTorles ? OsztalyCsoportResource.CsoportbaSorolasVanACsoporthozErtekelesRogzitveTorlesHiba : OsztalyCsoportResource.CsoportbaSorolasVanACsoporthozErtekelesRogzitveModositasHiba,
tanuloNev, x.Darab, csoportNev);
case CsoportBesorolasModositasValidacioHibaEnum.KilepesDatumaElobbiMintABelepesDatuma:
return string.Format(OsztalyCsoportResource.KilepesDatumaElobbiMintABelepesDatuma, tanuloNev, x.TanuloCsoportKilepesDatum.Value.ToShortDateString(), x.TanuloCsoportBelepesDatum.Value.ToShortDateString());
default:
return string.Empty;
}
});
}
private (DateTime datumTol, DateTime datumIg, bool isKorabbraModositas) GetBesorolasKezdetModositasIntervallum(ITanuloCsoport tanuloCsoport, DateTime changedDate)
{
DateTime datumTol, datumIg;
var isKorabbraModositas = changedDate < tanuloCsoport.BelepesDatum.Value;
if (isKorabbraModositas)
{
datumTol = changedDate;
datumIg = tanuloCsoport.BelepesDatum.Value.AddDays(-1);
}
else
{
datumTol = tanuloCsoport.BelepesDatum.Value;
datumIg = changedDate.AddDays(-1);
}
return (datumTol, datumIg, isKorabbraModositas);
}
private (DateTime datumTol, DateTime datumIg, bool isKorabbraModositas) GetBesorolasVegeModositasIntervallum(IDalHandler h, ITanuloCsoport tanuloCsoport, DateTime changedDate)
{
DateTime datumTol, datumIg;
var tanevVege = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanevInfo().UtolsoNap;
var isKorabbraModositas = changedDate < (tanuloCsoport.KilepesDatum ?? tanevVege);
if (isKorabbraModositas)
{
datumTol = changedDate;
datumIg = tanuloCsoport.KilepesDatum ?? tanevVege;
}
else
{
datumTol = (tanuloCsoport.KilepesDatum ?? tanevVege).AddDays(1);
datumIg = changedDate;
}
return (datumTol, datumIg, isKorabbraModositas);
}
public void DeleteOsztalyBesorolas(int tanuloCsoportId, int osztalyId, int tanuloId)
{
Dal.CustomConnection.Run(ConnectionType, handler =>
{
var osztalyCsoportDal = handler.OsztalyCsoport();
var tanuloCsoportDal = handler.TanuloCsoport();
var csoportDal = handler.Csoport();
var tanulo = handler.Tanulo().Get(tanuloId);
var tanuloCsoport = tanuloCsoportDal.Get(tanuloCsoportId);
var amiFoglalkozasok = tanuloCsoport.OsztalyCsoport.Foglalkozasok.SelectMany(x => x.FoglalkozasAmiTanulo).Where(x => x.TanuloId == tanuloId);
var foglalkozasAmiTanuloDal = handler.FoglalkozasAmiTanuloDal();
foreach (var amiFoglalkozasokItem in amiFoglalkozasok)
{
foglalkozasAmiTanuloDal.Delete(amiFoglalkozasokItem);
}
tanuloCsoportDal.Delete(tanuloCsoport);
foreach (var csoportBesorolas in tanulo.OsztalyCsoport.Where(tcs => osztalyCsoportDal.GetIsCsoport(tcs.OsztalyCsoportId) && !tcs.Torolt))
{
var csoport = csoportDal.Get(csoportBesorolas.OsztalyCsoportId);
if (csoport.OsztalyBontasId == osztalyId &&
(!tanuloCsoport.KilepesDatum.HasValue || csoportBesorolas.BelepesDatum < tanuloCsoport.KilepesDatum.Value) &&
(!csoportBesorolas.KilepesDatum.HasValue || tanuloCsoport.BelepesDatum < csoportBesorolas.KilepesDatum.Value))
{
tanuloCsoportDal.Delete(csoportBesorolas);
if (csoport.IsAutoEgyeniCsoport)
{
csoportDal.Delete(csoport, IntezmenyId, TanevId);
}
}
}
EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(new List<int> { tanuloId }, null);
});
}
public void DeleteCsoportBesorolas(string tanulocsoportId)
{
Dal.CustomConnection.Run(ConnectionType, handler =>
{
var tanuloCsoportDal = handler.TanuloCsoport();
var csoportDal = handler.Csoport();
var tancsopId = int.Parse(tanulocsoportId);
var tanuloCsoport = tanuloCsoportDal.Get(tancsopId);
var csoport = csoportDal.Get(tanuloCsoport.OsztalyCsoportId);
tanuloCsoportDal.Delete(tancsopId);
if (csoport.IsAutoEgyeniCsoport)
{
csoportDal.Delete(csoport, IntezmenyId, TanevId);
}
});
}
public void OsztalybaSorolasElsoAlkalommal(IOsztalyCsoportbaSorolas model)
{
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalybaSorolasElsoAlkalommalLogic(this, h).Alapkepzes(model));
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void OsztalyAtsorolas(IOsztalyCsoportbaSorolas model)
{
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, (h) => new OsztalyAtsorolasLogic(this, h).Alapkepzes(model));
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void OsztalyLeptetes(IOsztalyCsoportbaSorolas model)
{
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, (h) => new OsztalyLeptetesLogic(this, h).Alapkepzes(model));
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void OsztalybaSorolasJavitasa(IOsztalyCsoportbaSorolas model)
{
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyBesorolasJavitasLogic(this, h).Alapkepzes(model));
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void OsztalyKisorolas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo = null)
{
if (model.Datum.HasValue && jogviszonyCo != null && (!jogviszonyCo.Vege.HasValue || jogviszonyCo.Vege.Value < model.Datum.Value))
{
throw new BlException(OsztalyCsoportResource.JogviszonyVegeKisebbMintKisorolasDatum);
}
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, (h) => new OsztalyKisorolaslLogic(this, h).Alapkepzes(model, jogviszonyCo));
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void VisszaIratkoztatas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyVisszairatkoztatasLogic(this, h).Alapkepzes(model, jogviszonyCo));
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void CsoportbaSorolas(IOsztalyCsoportbaSorolas model)
{
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportbaSorolasLogic(this, h).Alapkepzes(model));
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void CsoportbolKisorolas(IOsztalyCsoportbaSorolas model)
{
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportKisorolaslLogic(this, h).Alapkepzes(model));
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void CsoportSorolasJavitas(IOsztalyCsoportbaSorolas model)
{
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportbaSorolasJavitasLogic(this, h).Alapkepzes(model));
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void CsoportbaAtsorolas(IOsztalyCsoportbaSorolas model)
{
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportAtsorolasLogic(this, h).Alapkepzes(model));
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void CsoportLeptetes(IOsztalyCsoportbaSorolas model)
{
var alapkepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportLeptetesLogic(this, h).Alapkepzes(model));
if (!string.IsNullOrWhiteSpace(alapkepzesTajekoztatoHibaUzenet))
{
throw new BlException(alapkepzesTajekoztatoHibaUzenet);
}
}
public void AmiOsztalybaSorolasElsoAlkalommal(IOsztalyCsoportbaSorolas model)
{
var amiKepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalybaSorolasElsoAlkalommalLogic(this, h).Amikepzes(model));
if (!string.IsNullOrWhiteSpace(amiKepzesTajekoztatoHibaUzenet))
{
throw new BlException(amiKepzesTajekoztatoHibaUzenet);
}
}
public void AmiOsztalybaSorolasJavitasa(IOsztalyCsoportbaSorolas model)
{
var amiKepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyBesorolasJavitasLogic(this, h).Amikepzes(model));
if (!string.IsNullOrWhiteSpace(amiKepzesTajekoztatoHibaUzenet))
{
throw new BlException(amiKepzesTajekoztatoHibaUzenet);
}
}
public void AmiOsztalyKisorolas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo = null)
{
if (model.Datum.HasValue && jogviszonyCo != null && (!jogviszonyCo.Vege.HasValue || jogviszonyCo.Vege.Value < model.Datum.Value))
{
throw new BlException(OsztalyCsoportResource.JogviszonyVegeKisebbMintKisorolasDatum);
}
var amiKepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyKisorolaslLogic(this, h).Amikepzes(model, jogviszonyCo));
if (!string.IsNullOrWhiteSpace(amiKepzesTajekoztatoHibaUzenet))
{
throw new BlException(amiKepzesTajekoztatoHibaUzenet);
}
}
public void AmiCsoportbaSorolas(IOsztalyCsoportbaSorolas model)
{
var amiKepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportbaSorolasLogic(this, h).Amikepzes(model));
if (!string.IsNullOrWhiteSpace(amiKepzesTajekoztatoHibaUzenet))
{
throw new BlException(amiKepzesTajekoztatoHibaUzenet);
}
}
public void AmiCsoportbolKisorolas(IOsztalyCsoportbaSorolas model)
{
var amiKepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportKisorolaslLogic(this, h).Amikepzes(model));
if (!string.IsNullOrWhiteSpace(amiKepzesTajekoztatoHibaUzenet))
{
throw new BlException(amiKepzesTajekoztatoHibaUzenet);
}
}
public void AmiCsoportSorolasJavitas(IOsztalyCsoportbaSorolas model)
{
var amiKepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportbaSorolasJavitasLogic(this, h).Amikepzes(model));
if (!string.IsNullOrWhiteSpace(amiKepzesTajekoztatoHibaUzenet))
{
throw new BlException(amiKepzesTajekoztatoHibaUzenet);
}
}
public void AmiCsoportbaAtsorolas(IOsztalyCsoportbaSorolas model)
{
var amiKepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportAtsorolasLogic(this, h).Amikepzes(model));
if (!string.IsNullOrWhiteSpace(amiKepzesTajekoztatoHibaUzenet))
{
throw new BlException(amiKepzesTajekoztatoHibaUzenet);
}
}
public void AmiCsoportLeptetes(IOsztalyCsoportbaSorolas model)
{
var amiKepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportLeptetesLogic(this, h).Amikepzes(model));
if (!string.IsNullOrWhiteSpace(amiKepzesTajekoztatoHibaUzenet))
{
throw new BlException(amiKepzesTajekoztatoHibaUzenet);
}
}
public void AmiOsztalyLeptetes(IOsztalyCsoportbaSorolas model)
{
var amiKepzesTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyLeptetesLogic(this, h).Amikepzes(model));
if (!string.IsNullOrWhiteSpace(amiKepzesTajekoztatoHibaUzenet))
{
throw new BlException(amiKepzesTajekoztatoHibaUzenet);
}
}
public void KollegiumOsztalybaSorolasElsoAlkalommal(IOsztalyCsoportbaSorolas model)
{
var kollegiumTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalybaSorolasElsoAlkalommalLogic(this, h).Kollegium(model));
if (!string.IsNullOrWhiteSpace(kollegiumTajekoztatoHibaUzenet))
{
throw new BlException(kollegiumTajekoztatoHibaUzenet);
}
}
public void KollegiumOsztalyAtsorolas(IOsztalyCsoportbaSorolas model)
{
var kollegiumTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyAtsorolasLogic(this, h).Kollegium(model));
if (!string.IsNullOrWhiteSpace(kollegiumTajekoztatoHibaUzenet))
{
throw new BlException(kollegiumTajekoztatoHibaUzenet);
}
}
public void KollegiumOsztalybaSorolasJavitasa(IOsztalyCsoportbaSorolas model)
{
var kollegiumTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyBesorolasJavitasLogic(this, h).Kollegium(model));
if (!string.IsNullOrWhiteSpace(kollegiumTajekoztatoHibaUzenet))
{
throw new BlException(kollegiumTajekoztatoHibaUzenet);
}
}
public void KollegiumOsztalyKisorolas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo = null)
{
if (model.Datum.HasValue && jogviszonyCo != null && (!jogviszonyCo.Vege.HasValue || jogviszonyCo.Vege.Value < model.Datum.Value))
{
throw new BlException(OsztalyCsoportResource.JogviszonyVegeKisebbMintKisorolasDatum);
}
var kollegiumTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyKisorolaslLogic(this, h).Kollegium(model, jogviszonyCo));
if (!string.IsNullOrWhiteSpace(kollegiumTajekoztatoHibaUzenet))
{
throw new BlException(kollegiumTajekoztatoHibaUzenet);
}
}
public void KollegiumVisszaIratkoztatas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
var kollegiumTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyVisszairatkoztatasLogic(this, h).Kollegium(model, jogviszonyCo));
if (!string.IsNullOrWhiteSpace(kollegiumTajekoztatoHibaUzenet))
{
throw new BlException(kollegiumTajekoztatoHibaUzenet);
}
}
public void KollegiumCsoportbaSorolas(IOsztalyCsoportbaSorolas model)
{
var kollegiumTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportbaSorolasLogic(this, h).Kollegium(model));
if (!string.IsNullOrWhiteSpace(kollegiumTajekoztatoHibaUzenet))
{
throw new BlException(kollegiumTajekoztatoHibaUzenet);
}
}
public void KollegiumCsoportbolKisorolas(IOsztalyCsoportbaSorolas model)
{
var kollegiumTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportKisorolaslLogic(this, h).Kollegium(model));
if (!string.IsNullOrWhiteSpace(kollegiumTajekoztatoHibaUzenet))
{
throw new BlException(kollegiumTajekoztatoHibaUzenet);
}
}
public void KollegiumCsoportSorolasJavitas(IOsztalyCsoportbaSorolas model)
{
var kollegiumTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportbaSorolasJavitasLogic(this, h).Kollegium(model));
if (!string.IsNullOrWhiteSpace(kollegiumTajekoztatoHibaUzenet))
{
throw new BlException(kollegiumTajekoztatoHibaUzenet);
}
}
public void KollegiumCsoportbaAtsorolas(IOsztalyCsoportbaSorolas model)
{
var kollegiumTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportAtsorolasLogic(this, h).Kollegium(model));
if (!string.IsNullOrWhiteSpace(kollegiumTajekoztatoHibaUzenet))
{
throw new BlException(kollegiumTajekoztatoHibaUzenet);
}
}
public void KollegiumCsoportLeptetes(IOsztalyCsoportbaSorolas model)
{
var kollegiumTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportLeptetesLogic(this, h).Kollegium(model));
if (!string.IsNullOrWhiteSpace(kollegiumTajekoztatoHibaUzenet))
{
throw new BlException(kollegiumTajekoztatoHibaUzenet);
}
}
public void KollegiumOsztalyLeptetes(IOsztalyCsoportbaSorolas model)
{
var kollegiumTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyLeptetesLogic(this, h).Kollegium(model));
if (!string.IsNullOrWhiteSpace(kollegiumTajekoztatoHibaUzenet))
{
throw new BlException(kollegiumTajekoztatoHibaUzenet);
}
}
internal List<OsztalybaSorolasModositasValidacioItemCo> GetOsztalyBesorolasModositasValidacio(IDalHandler h, int fromOsztalyId, int toOsztalyId, int tanuloId, DateTime datumTol, DateTime datumIg,
OktNevelesiKategoriaEnum feladatKategoria, bool isTorolhetosegVizsgalat, bool isCheckMaxOsztalyReturnKilepes)
{
var ds = h.OsztalyCsoport().GetOsztalyBesorolasModositasValidacio(TanevId, fromOsztalyId, toOsztalyId, tanuloId, datumTol, datumIg, feladatKategoria, isTorolhetosegVizsgalat, isCheckMaxOsztalyReturnKilepes);
var errors = new List<OsztalybaSorolasModositasValidacioItemCo>();
foreach (var row in ds.Tables[0].AsEnumerable())
{
var error = new OsztalybaSorolasModositasValidacioItemCo
{
Oka = (OsztalybaSorolasModositasValidacioHibaEnum)SDAConvert.ToInt32(row["Oka"]),
OsztalyId = SDAConvert.ToInt32(row["OsztalyId"]),
OsztalybontottCsoportId = SDAConvert.ToInt32(row["OsztalybontottCsoportId"]),
Darab = SDAConvert.ToInt32(row["Darab"]),
Datum = SDAConvert.ToDateTime(row["Datum"]),
};
errors.Add(error);
}
return errors;
}
private List<OsztalybaSorolasModositasValidacioItemCo> GetOsztalyBesorolasTorlesValidations(IDalHandler h, int osztalyId, int tanuloId, DateTime datumTol, DateTime datumIg, OktNevelesiKategoriaEnum feladatKategoria)
{
return GetOsztalyBesorolasModositasValidacio(h, osztalyId, -1, tanuloId, datumTol, datumIg, feladatKategoria, isTorolhetosegVizsgalat: true, isCheckMaxOsztalyReturnKilepes: true)
.Where(e => e.Oka != OsztalybaSorolasModositasValidacioHibaEnum.ATanuloMarTagjaAzAdottOsztalynak
&& e.Oka != OsztalybaSorolasModositasValidacioHibaEnum.ATanuloMarTagjaAMaxSzamuOsztalynak)
.ToList();
}
private List<OsztalybaSorolasModositasValidacioItemCo> GetOsztalyBesorolasKezdetModositasValidations(IDalHandler h, int osztalyId, int tanuloId, DateTime datumTol, DateTime datumIg, OktNevelesiKategoriaEnum feladatKategoria, bool isKorabbra)
{
return GetOsztalyBesorolasModositasValidacio(h, osztalyId, osztalyId, tanuloId, datumTol, datumIg, feladatKategoria, isTorolhetosegVizsgalat: !isKorabbra, isCheckMaxOsztalyReturnKilepes: false);
}
private List<OsztalybaSorolasModositasValidacioItemCo> GetOsztalyBesorolasVegeModositasValidations(IDalHandler h, int osztalyId, int tanuloId, DateTime datumTol, DateTime datumIg, OktNevelesiKategoriaEnum feladatKategoria, bool isKorabbra)
{
return GetOsztalyBesorolasModositasValidacio(h, osztalyId, osztalyId, tanuloId, datumTol, datumIg, feladatKategoria, isTorolhetosegVizsgalat: isKorabbra, isCheckMaxOsztalyReturnKilepes: true);
}
internal static void AddOsztalyBesorolasVegenekModositasaErrorMessages(SorolasValidate validate, List<string> errormessage, int tanuloId, List<OsztalybaSorolasModositasValidacioItemCo> messages)
{
errormessage.AddRange(messages.Select(x =>
{
switch (x.Oka)
{
case OsztalybaSorolasModositasValidacioHibaEnum.VanOsztalybontottCsoportBesorolasa:
return string.Format(OsztalyCsoportResource.OsztalybaSorolasVanOsztalybontottCsoportHiba, validate.TanuloAdatok[tanuloId].Nev, x.Datum.Value.ToString(Constants.ToStringPattern.HungarianDateWithSpaces), validate.OsztalyCsoportAdatok[x.OsztalyId.Value].Nev, validate.OsztalyCsoportAdatok[x.OsztalybontottCsoportId.Value].Nev);
case OsztalybaSorolasModositasValidacioHibaEnum.VanCsoportBesorolasaOsztalybesorolasNelkul:
return string.Format(OsztalyCsoportResource.OsztalybaSorolasVanCsoportBesorolasaOsztalybesorolasNelkulHiba, validate.TanuloAdatok[tanuloId].Nev, x.Datum.Value.ToString(Constants.ToStringPattern.HungarianDateWithSpaces), validate.OsztalyCsoportAdatok[x.OsztalyId.Value].Nev);
case OsztalybaSorolasModositasValidacioHibaEnum.VanAzOsztalyhozMulasztasRogzitve:
return string.Format(OsztalyCsoportResource.OsztalybaSorolasVanAzOsztalyhozMulasztasRogzitveHiba, validate.TanuloAdatok[tanuloId].Nev, x.Darab, validate.OsztalyCsoportAdatok[x.OsztalyId.Value].Nev);
case OsztalybaSorolasModositasValidacioHibaEnum.VanAzOsztalyhozErtekelesRogzitve:
return string.Format(OsztalyCsoportResource.OsztalybaSorolasVanAzOsztalyhozErtekelesRogzitveHiba, validate.TanuloAdatok[tanuloId].Nev, x.Darab, validate.OsztalyCsoportAdatok[x.OsztalyId.Value].Nev);
case OsztalybaSorolasModositasValidacioHibaEnum.VanFeljegyzesRogzitveATanulonak:
return string.Format(OsztalyCsoportResource.OsztalybaSorolasVanFeljegyzesRogzitveATanulonakHiba, validate.TanuloAdatok[tanuloId].Nev, x.Darab);
case OsztalybaSorolasModositasValidacioHibaEnum.VanIgazolasRogzitveATanulonak:
return string.Format(OsztalyCsoportResource.OsztalybaSorolasVanIgazolasRogzitveATanulonakHiba, validate.TanuloAdatok[tanuloId].Nev, x.Darab);
case OsztalybaSorolasModositasValidacioHibaEnum.ATanuloMarTagjaAzAdottOsztalynak:
return string.Format(OsztalyCsoportResource.OsztalybaSorolasATanuloMarTagjaAzAdottOsztalynakHiba, validate.TanuloAdatok[tanuloId].Nev, x.Datum.Value.ToString(Constants.ToStringPattern.HungarianDateWithSpaces), validate.OsztalyCsoportAdatok[x.OsztalyId.Value].Nev);
case OsztalybaSorolasModositasValidacioHibaEnum.ATanuloMarTagjaAMaxSzamuOsztalynak:
return string.Format(OsztalyCsoportResource.OsztalybaSorolasATanuloMarTagjaAMaxSzamuOsztalynakHiba, validate.TanuloAdatok[tanuloId].Nev, x.Datum.Value.ToString(Constants.ToStringPattern.HungarianDateWithSpaces));
default:
return string.Empty;
}
}));
}
public List<CsoportBesorolasModositasValidacioItemCo> GetCsoportBesorolasModositasValidacio(IDalHandler h, int csoportId, int tanuloId, DateTime datumTol, DateTime datumIg, OktNevelesiKategoriaEnum? feladatKategoria, bool isTorolhetosegVizsgalat)
{
var ds = h.OsztalyCsoport().GetCsoportBesorolasModositasValidacio(TanevId, csoportId, tanuloId, datumTol, datumIg, feladatKategoria, isTorolhetosegVizsgalat);
var result = ds.Tables[0].AsEnumerable().Select(r => new CsoportBesorolasModositasValidacioItemCo
{
Oka = (CsoportBesorolasModositasValidacioHibaEnum)SDAConvert.ToInt32(r["Oka"]),
Darab = SDAConvert.ToNullableInt32(r["Darab"]),
Datum = SDAConvert.ToDateTime(r["Datum"]),
}).ToList();
return result;
}
#region EGYMI
public void EGYMIOsztalybaSorolasElsoAlkalommal(IOsztalyCsoportbaSorolas model)
{
var egymiTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalybaSorolasElsoAlkalommalLogic(this, h).EGYMI(model));
if (!string.IsNullOrWhiteSpace(egymiTajekoztatoHibaUzenet))
{
throw new BlException(egymiTajekoztatoHibaUzenet);
}
}
public void EGYMIOsztalyAtsorolas(IOsztalyCsoportbaSorolas model)
{
var egymiTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyAtsorolasLogic(this, h).EGYMI(model));
if (!string.IsNullOrWhiteSpace(egymiTajekoztatoHibaUzenet))
{
throw new BlException(egymiTajekoztatoHibaUzenet);
}
}
public void EGYMIOsztalybaSorolasJavitasa(IOsztalyCsoportbaSorolas model)
{
var egymiTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyBesorolasJavitasLogic(this, h).EGYMI(model));
if (!string.IsNullOrWhiteSpace(egymiTajekoztatoHibaUzenet))
{
throw new BlException(egymiTajekoztatoHibaUzenet);
}
}
public void EGYMIOsztalyKisorolas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo = null)
{
if (model.Datum.HasValue && jogviszonyCo != null && (!jogviszonyCo.Vege.HasValue || jogviszonyCo.Vege.Value < model.Datum.Value))
{
throw new BlException(OsztalyCsoportResource.JogviszonyVegeKisebbMintKisorolasDatum);
}
var egymiTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyKisorolaslLogic(this, h).EGYMI(model, jogviszonyCo));
if (!string.IsNullOrWhiteSpace(egymiTajekoztatoHibaUzenet))
{
throw new BlException(egymiTajekoztatoHibaUzenet);
}
}
public void EGYMIVisszaIratkoztatas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
var egymiTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyVisszairatkoztatasLogic(this, h).EGYMI(model, jogviszonyCo));
if (!string.IsNullOrWhiteSpace(egymiTajekoztatoHibaUzenet))
{
throw new BlException(egymiTajekoztatoHibaUzenet);
}
}
public void EGYMICsoportbaSorolas(IOsztalyCsoportbaSorolas model)
{
var egymiTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportbaSorolasLogic(this, h).EGYMI(model));
if (!string.IsNullOrWhiteSpace(egymiTajekoztatoHibaUzenet))
{
throw new BlException(egymiTajekoztatoHibaUzenet);
}
}
public void EGYMICsoportbolKisorolas(IOsztalyCsoportbaSorolas model)
{
var egymiTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportKisorolaslLogic(this, h).EGYMI(model));
if (!string.IsNullOrWhiteSpace(egymiTajekoztatoHibaUzenet))
{
throw new BlException(egymiTajekoztatoHibaUzenet);
}
}
public void EGYMICsoportSorolasJavitas(IOsztalyCsoportbaSorolas model)
{
var egymiTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportbaSorolasJavitasLogic(this, h).EGYMI(model));
if (!string.IsNullOrWhiteSpace(egymiTajekoztatoHibaUzenet))
{
throw new BlException(egymiTajekoztatoHibaUzenet);
}
}
public void EGYMICsoportbaAtsorolas(IOsztalyCsoportbaSorolas model)
{
var egymiTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportAtsorolasLogic(this, h).EGYMI(model));
if (!string.IsNullOrWhiteSpace(egymiTajekoztatoHibaUzenet))
{
throw new BlException(egymiTajekoztatoHibaUzenet);
}
}
public void EGYMICsoportLeptetes(IOsztalyCsoportbaSorolas model)
{
var egymiTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new CsoportLeptetesLogic(this, h).EGYMI(model));
if (!string.IsNullOrWhiteSpace(egymiTajekoztatoHibaUzenet))
{
throw new BlException(egymiTajekoztatoHibaUzenet);
}
}
public void EGYMIOsztalyLeptetes(IOsztalyCsoportbaSorolas model)
{
var egymiTajekoztatoHibaUzenet = Dal.CustomConnection.Run(ConnectionType, h => new OsztalyLeptetesLogic(this, h).EGYMI(model));
if (!string.IsNullOrWhiteSpace(egymiTajekoztatoHibaUzenet))
{
throw new BlException(egymiTajekoztatoHibaUzenet);
}
}
#endregion EGYMI
private void VisszairatkozottTanuloJogviszonyMentes(List<int> tanuloIds, IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszony, IDalHandler h, int? kovTanevId)
{
foreach (var item in tanuloIds)
{
jogviszony.TanuloId = item;
new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).SaveTanuloJogviszony(jogviszony, kovTanevId);
}
}
private void KisoroltTanuloJogviszonyMegszuntetese(List<int> jogviszonyIds, JogviszonyCo jogviszony, IDalHandler h, int? kovTanevId)
{
foreach (var item in jogviszonyIds)
{
jogviszony.ID = item;
new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).TanuloJogviszonyMegszuntetese(jogviszony, kovTanevId);
}
}
private void EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(List<int> tanuloIds, IOsztalyCsoportbaSorolas model)
{
foreach (var tanuloId in tanuloIds)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
TanuloOsztalyBesorolasStatuszValtozasAdatCO tanuloOsztalyBesorolasStatuszValtozasAdatCO = new TanuloOsztalyBesorolasStatuszValtozasAdatCO();
var tanuloDal = h.Tanulo();
var tanulo = tanuloDal.Get(tanuloId);
var osztalyDal = h.Osztaly();
tanuloOsztalyBesorolasStatuszValtozasAdatCO.KretaIntezmenyAzonosito = IntezmenyAzonosito;
tanuloOsztalyBesorolasStatuszValtozasAdatCO.TanevKretaAzonosito = TanevId;
tanuloOsztalyBesorolasStatuszValtozasAdatCO.TanuloOktatasiAzonosito = tanulo.OktatasiAzonosito;
if (model != null && model.ToDDL.HasValue)
{
var osztaly = osztalyDal.Get(model.ToDDL.Value);
tanuloOsztalyBesorolasStatuszValtozasAdatCO.OsztalyKretaAzonosito = osztaly.ID;
tanuloOsztalyBesorolasStatuszValtozasAdatCO.OsztalyNeve = osztaly.Nev;
}
else
{
tanuloOsztalyBesorolasStatuszValtozasAdatCO.OsztalyKretaAzonosito = null;
tanuloOsztalyBesorolasStatuszValtozasAdatCO.OsztalyNeve = null;
}
TanuloHelper.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(tanuloOsztalyBesorolasStatuszValtozasAdatCO, IntezmenyAzonosito);
});
}
}
private void UpdateTanulokSzakkepzesesAdatok(List<int> tanuloIds, int osztalyId, IDalHandler h, bool isNKT = true)
{
var helper = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h));
var osztalyJellemzoi = helper.GetOsztalyJellemzoi(osztalyId: osztalyId);
var isSzakkepzesesUpdate = osztalyJellemzoi[OsztalyJellemzoEnum.IsSzakkepzeses];
var isNKTSzakkepzeses = osztalyJellemzoi[OsztalyJellemzoEnum.IsNKTSzakkepzeses] && isNKT;
if ((isSzakkepzesesUpdate || isNKTSzakkepzeses) && tanuloIds.Any())
{
var NKTesSZKTszakkepzesesAdatok = new OsztalyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOsztalyNKTesSZKTSzakkepzesesAdatok(osztalyId);
SetSzakkepzesesAdatokNaToNull(NKTesSZKTszakkepzesesAdatok);
var dal = h.Tanulo(GridParameters);
string tanulokString = string.Join(", ", tanuloIds);
dal.UpdateTanulokNKTesSZKTSzakkepzesesAdatok(tanulokString, NKTesSZKTszakkepzesesAdatok.ConvertToPCO(), isSzakkepzesesUpdate, isNKTSzakkepzeses);
}
}
private void SetSzakkepzesesAdatokNaToNull(SzakkepzesesAdatokCO szakkepzesesAdatok)
{
if (szakkepzesesAdatok.Szakmacsoport == (int)SzakmacsoportTipusEnum.Na)
{
szakkepzesesAdatok.Szakmacsoport = null;
}
if (szakkepzesesAdatok.Agazat == (int)AgazatTipusEnum.Na)
{
szakkepzesesAdatok.Agazat = null;
}
if (szakkepzesesAdatok.Szakkepesites == (int)SzakkepesitesTipusEnum.Na)
{
szakkepzesesAdatok.Szakkepesites = null;
}
if (szakkepzesesAdatok.Reszszakkepesites == (int)ReszszakkepesitesTipusEnum.Na)
{
szakkepzesesAdatok.Reszszakkepesites = null;
}
}
private void UpdateTanulokSzakkepzoAdatok(List<int> tanuloIds, int osztalyId, IDalHandler h)
{
var intezmenySzakkepzo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetIntezmenyiAdatok().IsSzakkepzoJuttatas;
if (!intezmenySzakkepzo || !tanuloIds.Any())
{
return;
}
var szakkepzoAdatok = new OsztalyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOsztalySzakkepzoAdatok(osztalyId);
var dal = h.JuttatasDAL();
var tanulokString = string.Join(", ", tanuloIds);
dal.UpdateTanulokSzakkepzoAdatok(FelhasznaloId, tanulokString, szakkepzoAdatok.ConvertToPCO());
dal.UpdateTanulokSzakkepzesiJuttatasok(TanevId, FelhasznaloId, (int)JuttatasTipusEnum.szakkepzesi_juttatas, tanulokIdString: tanulokString);
dal.UpdateTanulokSzakkepzesiJuttatasok(TanevId, FelhasznaloId, (int)JuttatasTipusEnum.apaczaiosztondij, tanulokIdString: tanulokString);
}
private void UpdateTanulokSzakkepzesiJuttatasok(List<int> tanuloIds, IDalHandler h)
{
var intezmenySzakkepzo = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetIntezmenyiAdatok().IsSzakkepzoJuttatas;
if (!intezmenySzakkepzo || !tanuloIds.Any())
{
return;
}
var dal = h.JuttatasDAL();
var tanulokString = string.Join(", ", tanuloIds);
dal.UpdateTanulokSzakkepzesiJuttatasok(TanevId, FelhasznaloId, (int)JuttatasTipusEnum.szakkepzesi_juttatas, tanulokIdString: tanulokString);
dal.UpdateTanulokSzakkepzesiJuttatasok(TanevId, FelhasznaloId, (int)JuttatasTipusEnum.apaczaiosztondij, tanulokIdString: tanulokString);
}
private bool TryGetCoport(int id, IDalHandler h, out ICsoport csoport)
{
try
{
csoport = h.Csoport().Get(id);
return true;
}
catch (Framework.Entities.EntityNotFoundException)
{
csoport = null;
return false;
}
}
private bool TryGetOsztaly(int id, IDalHandler h, out IOsztaly osztaly)
{
try
{
osztaly = h.Osztaly().Get(id);
return true;
}
catch (Framework.Entities.EntityNotFoundException)
{
osztaly = null;
return false;
}
}
private string GetErrorMessageForTanuloList(string errorMessage, List<string> tanulok, string lastMessage = null)
{
var message = string.Empty;
if (tanulok.Count > 0)
{
message += errorMessage;
message += "<ul><li>";
message += string.Join("</li><li>", tanulok);
message += "</li></ul><br/>";
if (!string.IsNullOrWhiteSpace(lastMessage))
{
message += lastMessage;
}
}
return message;
}
private string RemoveLastBrTag(string s)
{
var br = "<br/>";
var index = s.LastIndexOf(br);
if (index > -1 && s.Length - br.Length == index)
{
return s.Substring(0, index);
}
return s;
}
private void RemoveOsztalySzmkIfNeeded(IOsztaly osztaly, IEnumerable<int> kisoroltTanuloIds)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var needUpdate = false;
var tanuloDal = h.Tanulo();
var kisoroltTanulokGondviseloIds = tanuloDal.ListGondviseloByTanuloIds(kisoroltTanuloIds);
if (kisoroltTanulokGondviseloIds.NotNullAndAny())
{
if (osztaly.SZMKKepviseloId.IsEntityId() && kisoroltTanulokGondviseloIds.Contains(osztaly.SZMKKepviseloId))
{
osztaly.SZMKKepviselo = null;
needUpdate = true;
}
if (osztaly.SZMKKepviseloHelyettesId.IsEntityId() && kisoroltTanulokGondviseloIds.Contains(osztaly.SZMKKepviseloHelyettesId))
{
osztaly.SZMKKepviseloHelyettes = null;
needUpdate = true;
}
if (needUpdate)
{
var osztalyDal = h.Osztaly();
osztalyDal.FullUpdate(osztaly);
}
}
});
}
private class OsztalybaSorolasElsoAlkalommalLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private ICsoportDal _csoportDal;
private IOsztalyDal _osztalyDal;
private ITanuloCsoportDal _tanuloCsoportDal;
private TanuloTanugyiAdatokHelper _tanuloTanugyiAdatokHelper;
private ICsoportDal CsoportDal => _csoportDal ?? (_csoportDal = h.Csoport());
private IOsztalyDal OsztalyDal => _osztalyDal ?? (_osztalyDal = h.Osztaly());
private ITanuloCsoportDal TanuloCsoportDal => _tanuloCsoportDal ?? (_tanuloCsoportDal = h.TanuloCsoport());
private TanuloTanugyiAdatokHelper TanuloTanugyiAdatok => _tanuloTanugyiAdatokHelper ?? (_tanuloTanugyiAdatokHelper = new TanuloTanugyiAdatokHelper(new DalHandlerConnectionType(parent.ConnectionType, h)));
public OsztalybaSorolasElsoAlkalommalLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model)
{
if (parent.kovTanev)
{
model.Datum = new TanevHelper(parent.ConnectionType).GetTanevInfo().KezdoNap;
}
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out var osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenBesoroltTanulok = new List<int>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.NevelesOktatas, h);
var validationErrorMessages = new List<string>();
try
{
foreach (var tanuloId in tanuloIds)
{
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatumKezdete, out var limitBesorolasOsztalyId))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatumKezdete.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
AlapkepzesOsztalybaSorolas(tanuloId, model.ToDDL.Value, model.Datum.Value, model.Zaradek);
sikeresenBesoroltTanulok.Add(tanuloId);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenBesoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresenBesoroltTanulok, model.ToDDL.Value, h);
parent.UpdateTanulokSzakkepzoAdatok(sikeresenBesoroltTanulok, model.ToDDL.Value, h);
parent.UpdateTanulokSzakkepzesiJuttatasok(sikeresenBesoroltTanulok, h);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return message;
}
else
{
return string.Empty;
}
}
public string Amikepzes(IOsztalyCsoportbaSorolas model)
{
if (parent.kovTanev)
{
model.Datum = new TanevHelper(parent.ConnectionType).GetTanevInfo().KezdoNap;
}
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out var osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenBesoroltTanulok = new List<int>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas, h);
var hasError = false;
var tanuloBeVanSorolvaMegengedettSzamuOsztalyba = new List<string>();
var tanuloMarOsztalyCsoportTagja = new List<string>();
var tanuloOsztalyCsoportTagjaLesz = new List<string>();
var tanuloEgyeniCsoportNevMarLetezik = new List<string>();
try
{
var egyeniCsoportok = model.EgyeniCsoportAutoLetrehozas ? GetOsztalyEgyeniCSoportjai(osztaly.ID) : null;
foreach (var tanuloId in tanuloIds)
{
if (validate.TanuloMarOsztalyCsoportTagja(tanuloId, osztaly.ID))
{
hasError = true;
tanuloMarOsztalyCsoportTagja.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.TanuloOsztalyCsoportTagjaLesz(tanuloId, osztaly.ID))
{
hasError = true;
tanuloOsztalyCsoportTagjaLesz.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatumKezdete, out _))
{
hasError = true;
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaMegengedettSzamuOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatumKezdete.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
tanuloBeVanSorolvaMegengedettSzamuOsztalyba.Add(hibaUzenet);
continue;
}
AmiOsztalybaSorolas(tanuloId, validate.TanuloAdatok[tanuloId], model.ToDDL.Value, model.Datum.Value, model.Zaradek, model.EgyeniCsoportAutoLetrehozas, egyeniCsoportok);
sikeresenBesoroltTanulok.Add(tanuloId);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenBesoroltTanulok, model);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloMarOsztalyCsoportTagja, tanuloMarOsztalyCsoportTagja);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloOsztalyCsoportTagjaLesz, tanuloOsztalyCsoportTagjaLesz);
message += string.Join("<br/>", tanuloBeVanSorolvaMegengedettSzamuOsztalyba);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public string Kollegium(IOsztalyCsoportbaSorolas model)
{
if (parent.kovTanev)
{
model.Datum = new TanevHelper(parent.ConnectionType).GetTanevInfo().KezdoNap;
}
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out var osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenBesoroltTanulok = new List<int>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.Kollegium, h);
var validationErrorMessages = new List<string>();
try
{
foreach (var tanuloId in tanuloIds)
{
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatumKezdete, out var limitBesorolasOsztalyId))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatumKezdete.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
KollegiumOsztalybaSorolas(tanuloId, model.ToDDL.Value, model.Datum.Value, model.Zaradek);
sikeresenBesoroltTanulok.Add(tanuloId);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenBesoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresenBesoroltTanulok, model.ToDDL.Value, h, false);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return message;
}
else
{
return string.Empty;
}
}
public string EGYMI(IOsztalyCsoportbaSorolas model)
{
if (parent.kovTanev)
{
model.Datum = new TanevHelper(parent.ConnectionType).GetTanevInfo().KezdoNap;
}
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out var osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenBesoroltTanulok = new List<int>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.EGYMI, h);
var validationErrorMessages = new List<string>();
try
{
foreach (var tanuloId in tanuloIds)
{
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatumKezdete, out var limitBesorolasOsztalyId))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatumKezdete.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
EGYMIOsztalybaSorolas(tanuloId, model.ToDDL.Value, model.Datum.Value, model.Zaradek);
sikeresenBesoroltTanulok.Add(tanuloId);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenBesoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresenBesoroltTanulok, model.ToDDL.Value, h, false);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return message;
}
else
{
return string.Empty;
}
}
private void AlapkepzesOsztalybaSorolas(int tanuloId, int osztalyId, DateTime date, SorolasZaradek zaradek)
{
var osztaly = OsztalyDal.Get(osztalyId);
var entity = TanuloCsoportDal.Get();
entity.TanuloId = tanuloId;
entity.OsztalyCsoportId = osztalyId;
entity.BelepesDatum = date;
entity.BejegyzesIdopontja = DateTime.Now;
entity.TanevId = osztaly.TanevId;
entity.JogviszonyTipusID = osztaly.JogviszonyTipusId;
TanuloCsoportDal.Insert(entity);
SaveZaradek(parent.ConnectionType, zaradek, entity.ID);
TanuloTanugyiAdatok.InsertTanugyiAdatFromTanulo(tanuloId, entity.ID, osztaly, parent.isSelectedTanev21_22OrLater);
}
private void AmiOsztalybaSorolas(int tanuloId, TanuloListItem tanulo, int osztalyId, DateTime date, SorolasZaradek zaradek, bool egyeniCsoportAutoLetrehozas, List<(int Id, int TanuloId, int EgyeniCsoportId)> osztalyEgyeniCsoportjai)
{
var osztaly = OsztalyDal.Get(osztalyId);
var entity = TanuloCsoportDal.Get();
entity.TanuloId = tanuloId;
entity.OsztalyCsoportId = osztalyId;
entity.BelepesDatum = date;
entity.BejegyzesIdopontja = DateTime.Now;
entity.TanevId = osztaly.TanevId;
TanuloCsoportDal.Insert(entity);
TanuloTanugyiAdatok.InsertTanugyiAdatFromTanulo(tanuloId, entity.ID, osztaly, parent.isSelectedTanev21_22OrLater);
SaveZaradek(parent.ConnectionType, zaradek, entity.ID);
if (egyeniCsoportAutoLetrehozas)
{
EgyeniCSoportLetrehozas(tanuloId, tanulo.Nev, tanulo.SzuletesiDatum, date, osztaly, osztalyEgyeniCsoportjai);
}
}
private void KollegiumOsztalybaSorolas(int tanuloId, int osztalyId, DateTime date, SorolasZaradek zaradek)
{
var osztaly = OsztalyDal.Get(osztalyId);
var entity = TanuloCsoportDal.Get();
entity.TanuloId = tanuloId;
entity.OsztalyCsoportId = osztalyId;
entity.BelepesDatum = date;
entity.BejegyzesIdopontja = DateTime.Now;
entity.TanevId = osztaly.TanevId;
TanuloCsoportDal.Insert(entity);
TanuloTanugyiAdatok.InsertTanugyiAdatFromTanulo(tanuloId, entity.ID, osztaly, parent.isSelectedTanev21_22OrLater);
SaveZaradek(parent.ConnectionType, zaradek, entity.ID);
}
private void EGYMIOsztalybaSorolas(int tanuloId, int osztalyId, DateTime date, SorolasZaradek zaradek)
{
var osztaly = OsztalyDal.Get(osztalyId);
var entity = TanuloCsoportDal.Get();
entity.TanuloId = tanuloId;
entity.OsztalyCsoportId = osztalyId;
entity.BelepesDatum = date;
entity.BejegyzesIdopontja = DateTime.Now;
entity.TanevId = osztaly.TanevId;
TanuloCsoportDal.Insert(entity);
TanuloTanugyiAdatok.InsertTanugyiAdatFromTanulo(tanuloId, entity.ID, osztaly, parent.isSelectedTanev21_22OrLater);
SaveZaradek(parent.ConnectionType, zaradek, entity.ID);
}
public void EgyeniCSoportLetrehozas(int tanuloId, string tanuloNev, DateTime tanuloSzuletesiDatum, DateTime date, IOsztaly osztaly, List<(int Id, int TanuloId, int EgyeniCsoportId)> osztalyEgyeniCsoportjai)
{
var (Id, TanuloId, EgyeniCsoportId) = osztalyEgyeniCsoportjai.SingleOrDefault(x => x.TanuloId == tanuloId);
ICsoport egyeniCsoport;
if (EgyeniCsoportId > 0)
{
egyeniCsoport = CsoportDal.Get(EgyeniCsoportId);
egyeniCsoport.CsoportVezetoId = osztaly.OsztalyFonokId;
egyeniCsoport.EvfolyamTipusa = osztaly.EvfolyamTipusa;
egyeniCsoport.MuveszetiAgId = osztaly.MuveszetiAgId;
egyeniCsoport.ZenemuveszetiAgTipusId = (int)ZenemuveszetiAgTipusEnum.Egyeni;
egyeniCsoport.CsoportnaploMegnyitasa = date;
CsoportDal.Update(egyeniCsoport);
}
else
{
egyeniCsoport = CsoportDal.Get();
egyeniCsoport.IsAutoEgyeniCsoport = true;
egyeniCsoport.OsztalyBontasId = osztaly.ID;
egyeniCsoport.Tipusa = (int)CsoportTipusEnum.AlapfMuvOktZenemuveszetiCsoportEgyeniFotanszak;
egyeniCsoport.CsoportVezetoId = osztaly.OsztalyFonokId;
egyeniCsoport.FeladatEllatasiHelyId = osztaly.FeladatEllatasiHelyId;
egyeniCsoport.FeladatKategoriaId = osztaly.FeladatKategoriaId;
egyeniCsoport.Nev = GetEgyeniCsoportNev(osztaly.Nev, tanuloNev, tanuloSzuletesiDatum);
egyeniCsoport.EvfolyamTipusa = osztaly.EvfolyamTipusa;
egyeniCsoport.MuveszetiAgId = osztaly.MuveszetiAgId;
egyeniCsoport.ZenemuveszetiAgTipusId = (int)ZenemuveszetiAgTipusEnum.Egyeni;
egyeniCsoport.TanevId = osztaly.TanevId;
egyeniCsoport.AlTanevId = osztaly.TanevId;
egyeniCsoport.TervezettLetszam = 1;
egyeniCsoport.CsoportnaploMegnyitasa = date;
CsoportDal.Insert(egyeniCsoport);
}
var egyeniCsopSor = TanuloCsoportDal.Get();
egyeniCsopSor.TanuloId = tanuloId;
egyeniCsopSor.OsztalyCsoport = egyeniCsoport;
egyeniCsopSor.BelepesDatum = date;
egyeniCsopSor.BejegyzesIdopontja = DateTime.Now;
egyeniCsopSor.TanevId = egyeniCsoport.TanevId;
TanuloCsoportDal.Insert(egyeniCsopSor);
}
private string GetEgyeniCsoportNev(string osztalyNev, string tanuloNev, DateTime tanuloSzuletesiDatum)
{
string ujCsoportNev = $"{osztalyNev} - {tanuloNev}({tanuloSzuletesiDatum.ToShortDateString()})";
var list = new List<(int Id, string EgyeniCsoportNev)>();
foreach (DataRow row in TanuloCsoportDal.GetOsztalyCsoportokByNev(parent.TanevId, ujCsoportNev).Tables[0].Rows)
{
list.Add((SDAConvert.ToInt32(row["ID"]),
SDAConvert.ToString(row["EgyeniCsoportNev"])
));
}
List<int> hasonloCsoportNevSorszamok = list
.Where(x => x.EgyeniCsoportNev
.Contains(ujCsoportNev + "("))
.Select(x => SDAConvert.ToInt32(x.EgyeniCsoportNev
.Replace(ujCsoportNev, "")
.Replace("(", "")
.Replace(")", ""))).ToList();
int hasonloCsoportNevMaxSorszam = hasonloCsoportNevSorszamok.Any() ? hasonloCsoportNevSorszamok.Max() : 0;
return list.Any() ? string.Format("{0}({1})", ujCsoportNev, hasonloCsoportNevMaxSorszam + 1) : ujCsoportNev;
}
public List<(int Id, int TanuloId, int EgyeniCsoportId)> GetOsztalyEgyeniCSoportjai(int osztalyId)
{
var list = new List<(int Id, int TanuloId, int EgyeniCsoportId)>();
foreach (DataRow row in TanuloCsoportDal.GetOsztalyEgyeniCsoportok(parent.TanevId, osztalyId).Tables[0].Rows)
{
list.Add((SDAConvert.ToInt32(row["ID"]),
SDAConvert.ToInt32(row["TanuloId"]),
SDAConvert.ToInt32(row["EgyeniCsoportId"])
));
}
return list;
}
}
private class OsztalyKisorolaslLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private ITanuloDal _tanuloDal;
private ICsoportDal _csoportDal;
private ITanuloCsoportDal _tanuloCsoportDal;
private ITanuloDal TanuloDal => _tanuloDal ?? (_tanuloDal = h.Tanulo());
private ICsoportDal CsoportDal => _csoportDal ?? (_csoportDal = h.Csoport());
private ITanuloCsoportDal TanuloCsoportDal => _tanuloCsoportDal ?? (_tanuloCsoportDal = h.TanuloCsoport());
public OsztalyKisorolaslLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo = null)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
List<int> tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenKisoroltTanulok = new List<int>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.NevelesOktatas, h);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: true, toDdl: false);
IOsztaly osztaly;
if (model.FromDDL.HasValue && model.FromDDL.Value == 0)
{
foreach (var tanulo in tanuloIds)
{
if (model.ToElements.Any(x => x.Id == tanulo && x.JogviszonyCount > 0))
{
var JogviszontIds = model.ToElements.First(x => x.Id == tanulo && x.JogviszonyCount > 0).JogviszonyIds.Split(',').ToList().Select(y => Convert.ToInt32(y)).ToList();
parent.KisoroltTanuloJogviszonyMegszuntetese(JogviszontIds, jogviszonyCo, h, parent.kovTanevId);
}
}
return string.Empty;
}
if (!parent.TryGetOsztaly(model.FromDDL.Value, h, out osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var hasError = false;
var tanuloNemTagjaOCsADatumAlatt = new List<string>();
var tanulokRendelkeznekErtekelessel = new List<string>();
var tanulokRendelkeznekMulasztassal = new List<string>();
var tanuloTagjaNemBontottCsoportnakDeOsztalynakNem = new List<string>();
try
{
var tanulokErtekelessel = GetTanulokErtekelessel(model, OktNevelesiKategoriaEnum.NevelesOktatas);
var tanulokMulasztassal = GetTanulokMulasztassal(model, OktNevelesiKategoriaEnum.NevelesOktatas);
foreach (var tanulo in tanuloIds)
{
if (validate.TanuloNemTagjaOCsADatumAlatt(tanulo, model.FromDDL.Value))
{
hasError = true;
tanuloNemTagjaOCsADatumAlatt.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
if (tanulokErtekelessel.Contains(tanulo))
{
hasError = true;
tanulokRendelkeznekErtekelessel.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
if (tanulokMulasztassal.Contains(tanulo))
{
hasError = true;
tanulokRendelkeznekMulasztassal.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
var (isError, message, osztallyalNemLefedettCsoportNevek) = parent.DeleteBesorolasValidate(tanulo, model.FromDDL.Value, false);
if (isError)
{
hasError = true;
tanuloTagjaNemBontottCsoportnakDeOsztalynakNem.Add($"{validate.TanuloAdatok[tanulo].Nev} ({osztallyalNemLefedettCsoportNevek})");
}
var isKellFeluletenMegadottZaradekRogzitese = model.ToElements.Single(i => i.Id == tanulo).IsKellFeluletenMegadottZaradekRogzitese;
AlapKepzesOsztalyKisorolas(tanulo, model.Datum.Value, model.Zaradek, isKellFeluletenMegadottZaradekRogzitese);
if (model.ToElements.Any(x => x.Id == tanulo && x.JogviszonyCount > 0))
{
var JogviszontIds = model.ToElements.First(x => x.Id == tanulo && x.JogviszonyCount > 0).JogviszonyIds.Split(',').ToList().Select(y => Convert.ToInt32(y)).ToList();
parent.KisoroltTanuloJogviszonyMegszuntetese(JogviszontIds, jogviszonyCo, h, parent.kovTanevId);
}
sikeresenKisoroltTanulok.Add(tanulo);
}
parent.RemoveOsztalySzmkIfNeeded(osztaly, sikeresenKisoroltTanulok);
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenKisoroltTanulok, model);
parent.UpdateTanulokSzakkepzesiJuttatasok(sikeresenKisoroltTanulok, h);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(ErrorResource.NemKezeltAdatbazisHibaTortent, e);
}
if (hasError)
{
var message = parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloNemTagjaOCsADatumAlatt, tanuloNemTagjaOCsADatumAlatt);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanulokRendelkeznekErtekelessel, tanulokRendelkeznekErtekelessel, OsztalyCsoportResource.TanulokRendelkeznekErtekelesselLastMessage);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanulokRendelkeznekMulasztassal, tanulokRendelkeznekMulasztassal, OsztalyCsoportResource.TanulokRendelkeznekMulasztassalLastMessage);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.ATanuloNemTorolhetoAzOsztalybolMertTagjaEgyVagyTobbNemOsztalybontottCsoportnak, tanuloTagjaNemBontottCsoportnakDeOsztalynakNem);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
private List<int> GetTanulokErtekelessel(IOsztalyCsoportbaSorolas model, OktNevelesiKategoriaEnum feladatKategoriaId)
{
List<int> tanulokErtekelessel = new List<int>();
TanuloErtekelesListPco tanuloErtekelesListPco = new TanuloErtekelesListPco()
{
TanevId = parent.TanevId,
OsztalyCsoportId = model.FromDDL.Value,
FeladatKategoriaId = (int)feladatKategoriaId,
EgyszerAdhatoTanuloErtekelesTipusIdList = EnumExtensions.GetErtekelesTipusDictionaryItems(parent.TanevId, true).Select(x => x.Id).ToList(),
IsKellKapcsolodoCsoportok = true
};
DataSet tanulokErtekelesselDataSet = h.TanuloErtekelesDal().GetTanuloErtekelesListDataSet(tanuloErtekelesListPco);
List<OsztalybaSorolasDDLItem> osztalyTanuloi = parent.OsztalyTanuloi(model.FromDDL.Value, model.Datum);
var osztalyTanuloiDict = osztalyTanuloi.GroupBy(t => int.Parse(t.Value)).Select(t => new
{
Id = t.Key,
Besorolasok = t.Select(d => d.BesorolasDatum).ToList(),
AmiOsztalyokSzama = feladatKategoriaId == OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas ? (int?)(new TanuloHelper(parent.ConnectionType).GetTanuloAmiOsztalyainakSzama(t.Key, model.Datum)) : null
}).ToDictionary(t => t.Id);
foreach (DataRow ertekeles in tanulokErtekelesselDataSet.Tables[0].Rows)
{
var tanuloId = ertekeles.Field<int>("TanuloId");
var ertekelesDatuma = ertekeles.Field<DateTime>("Datum");
if (osztalyTanuloiDict.TryGetValue(tanuloId, out var tanulo) && tanulo.Besorolasok.Count == 1)
{
var besorolasDatuma = tanulo.Besorolasok.Single();
if (besorolasDatuma.HasValue)
{
var osztalybontasId = ertekeles.Field<int?>("OsztalybontasId");
var osztalyCsoportId = ertekeles.Field<int>("OsztalyCsoportId");
if (CheckTanuloErtekelesVizsgalatAmiOsztalyokEseten(feladatKategoriaId, tanulo.AmiOsztalyokSzama, osztalybontasId, osztalyCsoportId, model.FromDDL.Value))
{
var kisorolasDatuma = model.Datum;
if (ertekelesDatuma >= kisorolasDatuma)
{
tanulokErtekelessel.Add(tanuloId);
}
}
}
}
continue;
}
return tanulokErtekelessel.Distinct().ToList();
}
private bool CheckTanuloErtekelesVizsgalatAmiOsztalyokEseten(OktNevelesiKategoriaEnum feladatKategoriaId, int? tanuloAmiOsztalyainakSzama, int? ertekelesOsztalybontasId, int ertekelesOsztalyCsoportId, int osztalyCsoportId)
{
// Ha nem AMI, vagy 1 osztályba jár, akkor muszáj vizsgálni az értékelést.
if (feladatKategoriaId != OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas || tanuloAmiOsztalyainakSzama == 1)
{
return true;
}
// Ha AMI és több osztály osztályba is jár, akkor csak azokat az értékeléseket kell vizsgálni,
// amit az adott osztályba, illetve az osztálybontott csoportokon belül szerzett.
if (ertekelesOsztalyCsoportId == osztalyCsoportId || ertekelesOsztalybontasId == osztalyCsoportId)
{
return true;
}
return false;
}
private List<int> GetTanulokMulasztassal(IOsztalyCsoportbaSorolas model, OktNevelesiKategoriaEnum feladatKategoriaId)
{
List<int> tanulokMulasztassal = new List<int>();
MulasztasKeresesePCO mulasztasKeresesePCO = new MulasztasKeresesePCO()
{
TanevId = parent.TanevId,
OsztCsop = model.FromDDL.Value,
FeladatKategoriaId = (int)feladatKategoriaId,
IsKellKapcsolodoCsoportok = true
};
DataSet tanulokMulasztassalDataSet = h.MulasztasDal().GetMulasztasDataSet(mulasztasKeresesePCO);
List<OsztalybaSorolasDDLItem> osztalyTanuloi = parent.OsztalyTanuloi(model.FromDDL.Value, model.Datum);
foreach (DataRow mulasztas in tanulokMulasztassalDataSet.Tables[0].Rows)
{
var tanuloId = mulasztas.Field<int>("TanuloId");
var mulasztasDatuma = mulasztas.Field<DateTime>("Datum");
var tanuloBesorolasDS = osztalyTanuloi.Where(t => int.Parse(t.Value) == tanuloId).Select(b => b.BesorolasDatum).ToList();
if (tanuloBesorolasDS.Count == 1)
{
var besorolasDatuma = tanuloBesorolasDS[0];
var kisorolasDatuma = model.Datum;
if (!besorolasDatuma.HasValue)
{
continue;
}
if (mulasztasDatuma >= kisorolasDatuma)
{
tanulokMulasztassal.Add(tanuloId);
}
}
continue;
}
return tanulokMulasztassal.Distinct().ToList();
}
public string Amikepzes(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo = null)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: true, toDdl: false);
List<int> tanuloIds = model.ToElements.Select(i => i.Id).ToList();
if (model.FromDDL.HasValue && model.FromDDL.Value == 0)
{
foreach (var tanulo in tanuloIds)
{
if (model.ToElements.Any(x => x.Id == tanulo && x.JogviszonyCount > 0))
{
var JogviszontIds = model.ToElements.First(x => x.Id == tanulo && x.JogviszonyCount > 0).JogviszonyIds.Split(',').ToList().Select(y => Convert.ToInt32(y)).ToList();
parent.KisoroltTanuloJogviszonyMegszuntetese(JogviszontIds, jogviszonyCo, h, parent.kovTanevId);
}
}
return string.Empty;
}
if (!parent.TryGetOsztaly(model.FromDDL.Value, h, out IOsztaly osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var sikeresenKisoroltTanulok = new List<int>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas, h);
var hasError = false;
var tanuloNemTagjaOCsADatumAlatt = new List<string>();
var tanulokRendelkeznekErtekelessel = new List<string>();
var tanulokRendelkeznekMulasztassal = new List<string>();
var tanuloTagjaNemBontottCsoportnakDeOsztalynakNem = new List<string>();
try
{
var tanulokErtekelessel = GetTanulokErtekelessel(model, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas);
var tanulokMulasztassal = GetTanulokMulasztassal(model, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas);
foreach (var tanulo in tanuloIds)
{
if (validate.TanuloNemTagjaOCsADatumAlatt(tanulo, model.FromDDL.Value))
{
hasError = true;
tanuloNemTagjaOCsADatumAlatt.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
if (tanulokErtekelessel.Contains(tanulo))
{
hasError = true;
tanulokRendelkeznekErtekelessel.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
if (tanulokMulasztassal.Contains(tanulo))
{
hasError = true;
tanulokRendelkeznekMulasztassal.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
var (isError, message, osztallyalNemLefedettCsoportNevek) = parent.DeleteBesorolasValidate(tanulo, model.FromDDL.Value, false);
if (isError)
{
hasError = true;
tanuloTagjaNemBontottCsoportnakDeOsztalynakNem.Add($"{validate.TanuloAdatok[tanulo].Nev} ({osztallyalNemLefedettCsoportNevek})");
}
var isKellFeluletenMegadottZaradekRogzitese = model.ToElements.Single(i => i.Id == tanulo).IsKellFeluletenMegadottZaradekRogzitese;
AmiOsztalyKisorolas(tanulo, osztaly, model.Datum.Value, model.Zaradek, isKellFeluletenMegadottZaradekRogzitese);
if (model.ToElements.Any(x => x.Id == tanulo && x.JogviszonyCount > 0))
{
var JogviszontIds = model.ToElements.First(x => x.Id == tanulo && x.JogviszonyCount > 0).JogviszonyIds.Split(',').ToList().Select(y => Convert.ToInt32(y)).ToList();
parent.KisoroltTanuloJogviszonyMegszuntetese(JogviszontIds, jogviszonyCo, h, parent.kovTanevId);
}
sikeresenKisoroltTanulok.Add(tanulo);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenKisoroltTanulok, model);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(ErrorResource.NemKezeltAdatbazisHibaTortent, e);
}
if (hasError)
{
var message = parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloNemTagjaOCsADatumAlatt, tanuloNemTagjaOCsADatumAlatt);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanulokRendelkeznekErtekelessel, tanulokRendelkeznekErtekelessel);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanulokRendelkeznekMulasztassal, tanulokRendelkeznekMulasztassal);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.ATanuloNemTorolhetoAzOsztalybolMertTagjaEgyVagyTobbNemOsztalybontottCsoportnak, tanuloTagjaNemBontottCsoportnakDeOsztalynakNem);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public string Kollegium(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo = null)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: true, toDdl: false);
List<int> tanuloIds = model.ToElements.Select(i => i.Id).ToList();
if (model.FromDDL.HasValue && model.FromDDL.Value == 0)
{
foreach (var tanulo in tanuloIds)
{
if (model.ToElements.Any(x => x.Id == tanulo && x.JogviszonyCount > 0))
{
var JogviszontIds = model.ToElements.First(x => x.Id == tanulo && x.JogviszonyCount > 0).JogviszonyIds.Split(',').ToList().Select(y => Convert.ToInt32(y)).ToList();
parent.KisoroltTanuloJogviszonyMegszuntetese(JogviszontIds, jogviszonyCo, h, parent.kovTanevId);
}
}
return string.Empty;
}
if (!parent.TryGetOsztaly(model.FromDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var sikeresenKisoroltTanulok = new List<int>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.Kollegium, h);
var hasError = false;
var tanuloNemTagjaOCsADatumAlatt = new List<string>();
var tanulokRendelkeznekErtekelessel = new List<string>();
var tanulokRendelkeznekMulasztassal = new List<string>();
var tanuloTagjaNemBontottCsoportnakDeOsztalynakNem = new List<string>();
try
{
var tanulokErtekelessel = GetTanulokErtekelessel(model, OktNevelesiKategoriaEnum.Kollegium);
var tanulokMulasztassal = GetTanulokMulasztassal(model, OktNevelesiKategoriaEnum.Kollegium);
foreach (var tanulo in tanuloIds)
{
if (validate.TanuloNemTagjaOCsADatumAlatt(tanulo, model.FromDDL.Value))
{
hasError = true;
tanuloNemTagjaOCsADatumAlatt.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
if (tanulokErtekelessel.Contains(tanulo))
{
hasError = true;
tanulokRendelkeznekErtekelessel.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
if (tanulokMulasztassal.Contains(tanulo))
{
hasError = true;
tanulokRendelkeznekMulasztassal.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
var (isError, message, osztallyalNemLefedettCsoportNevek) = parent.DeleteBesorolasValidate(tanulo, model.FromDDL.Value, false);
if (isError)
{
hasError = true;
tanuloTagjaNemBontottCsoportnakDeOsztalynakNem.Add($"{validate.TanuloAdatok[tanulo].Nev} ({osztallyalNemLefedettCsoportNevek})");
}
KollegiumOsztalyKisorolas(tanulo, model.Datum.Value, model.Zaradek);
if (model.ToElements.Any(x => x.Id == tanulo && x.JogviszonyCount > 0))
{
var JogviszontIds = model.ToElements.First(x => x.Id == tanulo && x.JogviszonyCount > 0).JogviszonyIds.Split(',').ToList().Select(y => Convert.ToInt32(y)).ToList();
parent.KisoroltTanuloJogviszonyMegszuntetese(JogviszontIds, jogviszonyCo, h, parent.kovTanevId);
}
sikeresenKisoroltTanulok.Add(tanulo);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenKisoroltTanulok, model);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(ErrorResource.NemKezeltAdatbazisHibaTortent, e);
}
if (hasError)
{
var message = parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloNemTagjaOCsADatumAlatt, tanuloNemTagjaOCsADatumAlatt);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanulokRendelkeznekErtekelessel, tanulokRendelkeznekErtekelessel);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanulokRendelkeznekMulasztassal, tanulokRendelkeznekMulasztassal);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.ATanuloNemTorolhetoAzOsztalybolMertTagjaEgyVagyTobbNemOsztalybontottCsoportnak, tanuloTagjaNemBontottCsoportnakDeOsztalynakNem);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public string EGYMI(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo = null)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: true, toDdl: false);
List<int> tanuloIds = model.ToElements.Select(i => i.Id).ToList();
if (model.FromDDL.HasValue && model.FromDDL.Value == 0)
{
foreach (var tanulo in tanuloIds)
{
if (model.ToElements.Any(x => x.Id == tanulo && x.JogviszonyCount > 0))
{
var JogviszontIds = model.ToElements.First(x => x.Id == tanulo && x.JogviszonyCount > 0).JogviszonyIds.Split(',').ToList().Select(y => Convert.ToInt32(y)).ToList();
parent.KisoroltTanuloJogviszonyMegszuntetese(JogviszontIds, jogviszonyCo, h, parent.kovTanevId);
}
}
return string.Empty;
}
if (!parent.TryGetOsztaly(model.FromDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var sikeresenKisoroltTanulok = new List<int>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.EGYMI, h);
var hasError = false;
var tanuloNemTagjaOCsADatumAlatt = new List<string>();
var tanulokRendelkeznekErtekelessel = new List<string>();
var tanulokRendelkeznekMulasztassal = new List<string>();
var tanuloTagjaNemBontottCsoportnakDeOsztalynakNem = new List<string>();
try
{
var tanulokErtekelessel = GetTanulokErtekelessel(model, OktNevelesiKategoriaEnum.EGYMI);
var tanulokMulasztassal = GetTanulokMulasztassal(model, OktNevelesiKategoriaEnum.EGYMI);
foreach (var tanulo in tanuloIds)
{
if (validate.TanuloNemTagjaOCsADatumAlatt(tanulo, model.FromDDL.Value))
{
hasError = true;
tanuloNemTagjaOCsADatumAlatt.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
if (tanulokErtekelessel.Contains(tanulo))
{
hasError = true;
tanulokRendelkeznekErtekelessel.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
if (tanulokMulasztassal.Contains(tanulo))
{
hasError = true;
tanulokRendelkeznekMulasztassal.Add(validate.TanuloAdatok[tanulo].Nev);
continue;
}
var (isError, message, osztallyalNemLefedettCsoportNevek) = parent.DeleteBesorolasValidate(tanulo, model.FromDDL.Value, false);
if (isError)
{
hasError = true;
tanuloTagjaNemBontottCsoportnakDeOsztalynakNem.Add($"{validate.TanuloAdatok[tanulo].Nev} ({osztallyalNemLefedettCsoportNevek})");
}
EGYMIOsztalyKisorolas(tanulo, model.Datum.Value, model.Zaradek);
if (model.ToElements.Any(x => x.Id == tanulo && x.JogviszonyCount > 0))
{
var JogviszontIds = model.ToElements.First(x => x.Id == tanulo && x.JogviszonyCount > 0).JogviszonyIds.Split(',').ToList().Select(y => Convert.ToInt32(y)).ToList();
parent.KisoroltTanuloJogviszonyMegszuntetese(JogviszontIds, jogviszonyCo, h, parent.kovTanevId);
}
sikeresenKisoroltTanulok.Add(tanulo);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenKisoroltTanulok, model);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(ErrorResource.NemKezeltAdatbazisHibaTortent, e);
}
if (hasError)
{
var message = parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloNemTagjaOCsADatumAlatt, tanuloNemTagjaOCsADatumAlatt);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanulokRendelkeznekErtekelessel, tanulokRendelkeznekErtekelessel);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanulokRendelkeznekMulasztassal, tanulokRendelkeznekMulasztassal);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.ATanuloNemTorolhetoAzOsztalybolMertTagjaEgyVagyTobbNemOsztalybontottCsoportnak, tanuloTagjaNemBontottCsoportnakDeOsztalynakNem);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
private void AlapKepzesOsztalyKisorolas(int tanuloId, DateTime date, SorolasZaradek zaradek, bool isKellFeluletenMegadottZaradekRogzitese)
{
var tanulo = TanuloDal.Get(tanuloId);
try
{
var helper = new OsztalyCsoportHelper(parent.ConnectionType);
foreach (var tcs in tanulo.OsztalyCsoport.Where(x =>
x.BelepesDatum <= date
&& (x.KilepesDatum == null || x.KilepesDatum > date)
&& !x.Torolt
&& x.OsztalyCsoport.FeladatKategoriaId == (int)OktNevelesiKategoriaEnum.NevelesOktatas))
{
var isOsztaly = helper.GetIsOsztaly(tcs.OsztalyCsoportId);
DeleteBesorolas(tcs, date, zaradek, (isKellFeluletenMegadottZaradekRogzitese && isOsztaly));
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
throw new BlException($"{tanulo.NyomtatasiNev} {ErrorResource.KisorolasaKozbenHibaTortent}", e);
}
catch (BlException)
{
throw;
}
catch
{
throw new BlException(ErrorResource.NemKezeltAdatbazisHibaTortent, e);
}
}
}
public void AmiOsztalyKisorolas(int tanuloId, IOsztaly osztaly, DateTime date, SorolasZaradek zaradek, bool isKellFeluletenMegadottZaradekRogzitese = true)
{
var tanulo = TanuloDal.Get(tanuloId);
try
{
var helper = new OsztalyCsoportHelper(parent.ConnectionType);
var list = new List<(int Id, string Nev, int TanuloCsoportId, int? CsoportId, int? OsztalybontasId, bool AutoEgyeni, DateTime? CsoportLetrehozasDatuma)>();
foreach (DataRow row in TanuloCsoportDal.GetTanuloOsztalyKapcsolatok(osztaly.TanevId, tanuloId, date, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas).Tables[0].Rows)
{
list.Add((SDAConvert.ToInt32(row["Id"]),
SDAConvert.ToString(row["Nev"]),
SDAConvert.ToInt32(row["TanuloCsoportId"]),
SDAConvert.ToNullableInt32(row["CsoportId"]),
SDAConvert.ToNullableInt32(row["OsztalybontasId"]),
SDAConvert.ToBooleanFromTF(row["IsAutoEgyeni"]),
SDAConvert.ToDateTime(row["CsoportLetrehozasDatuma"])
));
}
if (list.Any(x => x.CsoportId == null && x.Id != osztaly.ID)) /*van másik osztálya*/
{
DeleteBesorolas(list.Single(x => x.Id == osztaly.ID), date, zaradek, isKellFeluletenMegadottZaradekRogzitese);
foreach (var item in list.Where(x => x.OsztalybontasId == osztaly.ID))
{
DeleteBesorolas(item, date, zaradek, false);
}
}
else
{
foreach (var item in list)
{
var isOsztaly = helper.GetIsOsztaly(item.Id);
DeleteBesorolas(item, date, zaradek, (isKellFeluletenMegadottZaradekRogzitese && isOsztaly));
}
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
throw new BlException($"{tanulo.NyomtatasiNev} {ErrorResource.KisorolasaKozbenHibaTortent}", e);
}
catch (BlException)
{
throw;
}
catch
{
throw new BlException(ErrorResource.NemKezeltAdatbazisHibaTortent, e);
}
}
}
private void KollegiumOsztalyKisorolas(int tanuloId, DateTime date, SorolasZaradek zaradek)
{
var tanulo = TanuloDal.Get(tanuloId);
try
{
var helper = new OsztalyCsoportHelper(parent.ConnectionType);
foreach (var tcs in tanulo.OsztalyCsoport.Where(x =>
x.BelepesDatum <= date
&& (x.KilepesDatum == null || x.KilepesDatum > date)
&& !x.Torolt
&& x.OsztalyCsoport.FeladatKategoriaId == (int)OktNevelesiKategoriaEnum.Kollegium))
{
var isOsztaly = helper.GetIsOsztaly(tcs.OsztalyCsoportId);
DeleteBesorolas(tcs, date, zaradek, isOsztaly);
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
throw new BlException($"{tanulo.NyomtatasiNev} {ErrorResource.KisorolasaKozbenHibaTortent}", e);
}
catch (BlException)
{
throw;
}
catch
{
throw new BlException(ErrorResource.NemKezeltAdatbazisHibaTortent, e);
}
}
}
private void EGYMIOsztalyKisorolas(int tanuloId, DateTime date, SorolasZaradek zaradek)
{
var tanulo = TanuloDal.Get(tanuloId);
try
{
var helper = new OsztalyCsoportHelper(parent.ConnectionType);
foreach (var tcs in tanulo.OsztalyCsoport.Where(x =>
x.BelepesDatum <= date
&& (x.KilepesDatum == null || x.KilepesDatum > date)
&& !x.Torolt
&& x.OsztalyCsoport.FeladatKategoriaId == (int)OktNevelesiKategoriaEnum.EGYMI))
{
var isOsztaly = helper.GetIsOsztaly(tcs.OsztalyCsoportId);
DeleteBesorolas(tcs, date, zaradek, isOsztaly);
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
throw new BlException($"{tanulo.NyomtatasiNev} {ErrorResource.KisorolasaKozbenHibaTortent}", e);
}
catch (BlException)
{
throw;
}
catch
{
throw new BlException(ErrorResource.NemKezeltAdatbazisHibaTortent, e);
}
}
}
public void DeleteBesorolas(ITanuloCsoport item, DateTime date, SorolasZaradek zaradek, bool isZaradekMentes = true)
{
DeleteBesorolas(item, 0, false, null, date, zaradek, isZaradekMentes);
}
private void DeleteBesorolas(ITanuloCsoport item, int? csoportId, bool autoEgyeni, DateTime? csoportLetrehozasDatum, DateTime kilepesDatum, SorolasZaradek zaradek, bool isZaradekMentes = true)
{
if (item.BelepesDatum == kilepesDatum)
{
Dal.CustomConnection.Run(parent.ConnectionType, handler =>
{
var amiFoglalkozasok = item.OsztalyCsoport.Foglalkozasok.SelectMany(x => x.FoglalkozasAmiTanulo).Where(x => x.TanuloId == item.TanuloId);
var foglalkozasAmiTanuloDal = handler.FoglalkozasAmiTanuloDal();
foreach (var amiFoglalkozasokItem in amiFoglalkozasok)
{
foglalkozasAmiTanuloDal.Delete(amiFoglalkozasokItem);
}
});
TanuloCsoportDal.Delete(item, logikai: true);
if (autoEgyeni && csoportLetrehozasDatum.HasValue && csoportLetrehozasDatum.Value.Date == kilepesDatum.Date)
{
CsoportDal.Delete(csoportId.Value, parent.IntezmenyId, parent.TanevId);
}
}
else
{
item.KilepesDatum = kilepesDatum;
item.KilepesRogzitesDatum = DateTime.Now;
if (csoportId > 0 && autoEgyeni)
{
var csoport = CsoportDal.Get(csoportId.Value);
csoport.CsoportnaploZarasa = kilepesDatum;
CsoportDal.Update(csoport);
}
TanuloCsoportDal.Update(item);
if (isZaradekMentes)
{
SaveZaradek(parent.ConnectionType, zaradek, item.ID);
}
}
}
private void DeleteBesorolas((int Id, string Nev, int TanuloCsoportId, int? CsoportId, int? OsztalybontasId, bool AutoEgyeni, DateTime? CsoportLetrehozasDatuma) item, DateTime date, SorolasZaradek zaradek, bool isZaradekMentes = true)
{
var tcs = TanuloCsoportDal.Get(item.TanuloCsoportId);
DeleteBesorolas(tcs, item.CsoportId, item.AutoEgyeni, item.CsoportLetrehozasDatuma, date, zaradek, isZaradekMentes);
}
}
private class OsztalyBesorolasJavitasLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private ITanuloDal _tanuloDal;
private IOsztalyDal _osztalyDal;
private ICsoportDal _csoportDal;
private IOsztalyCsoportDal _osztalyCsoportDal;
private ITanuloCsoportDal _tanuloCsoportDal;
private TanuloTanugyiAdatokHelper _tanuloTanugyiAdatokHelper;
private CsoportKisorolaslLogic _csoportKisorolaslLogic;
private OsztalybaSorolasElsoAlkalommalLogic _osztalybaSorolasLogic;
private ITanuloDal TanuloDal => _tanuloDal ?? (_tanuloDal = h.Tanulo());
private IOsztalyCsoportDal OsztalyCSoportDal => _osztalyCsoportDal ?? (_osztalyCsoportDal = h.OsztalyCsoport());
private IOsztalyDal OsztalyDal => _osztalyDal ?? (_osztalyDal = h.Osztaly());
private ITanuloCsoportDal TanuloCsoportDal => _tanuloCsoportDal ?? (_tanuloCsoportDal = h.TanuloCsoport());
private ICsoportDal CsoportDal => _csoportDal ?? (_csoportDal = h.Csoport());
private TanuloTanugyiAdatokHelper TanuloTanugyiAdatok => _tanuloTanugyiAdatokHelper ?? (_tanuloTanugyiAdatokHelper = new TanuloTanugyiAdatokHelper(new DalHandlerConnectionType(parent.ConnectionType, h)));
private CsoportKisorolaslLogic CsoportKisorolasLogic => _csoportKisorolaslLogic ?? (_csoportKisorolaslLogic = new CsoportKisorolaslLogic(parent, h));
private OsztalybaSorolasElsoAlkalommalLogic OsztalybaSorolasLogic => _osztalybaSorolasLogic ?? (_osztalybaSorolasLogic = new OsztalybaSorolasElsoAlkalommalLogic(parent, h));
public OsztalyBesorolasJavitasLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model)
{
SorolasValidate.ValidateModel(model, datum: false, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4020)/*A célcsoport nem létezik.*/);
}
if (model.FromDDL.Value == model.ToDDL.Value)
{
throw new BlException(OsztalyCsoportResource.ForrasCelOCsMegegyezik);
}
var datum = GetDatum();
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenAtsoroltTanulok = new List<int>();
var errormessage = new List<string>();
var hasError = false;
try
{
var validate = new SorolasValidate(datum, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.NevelesOktatas, h);
foreach (var tanulo in model.ToElements)
{
var hasTanuloError = false;
var fromOsztalyId = tanulo.Fromid.Value;
var tcsAdatok = validate.GetOsztalyCsoportTanuloCsoportAdatok(fromOsztalyId, tanulo.Id);
if (tcsAdatok == null)
{
errormessage.Add(string.Format(OsztalyCsoportResource.OsztalybaSorolasATanuloNemTagjaAzOsztalynak, validate.TanuloAdatok[tanulo.Id].Nev));
hasError |= true;
continue;
}
var datumTol = tcsAdatok.Belepes;
var datumIg = tcsAdatok.Kilepes.Value;
var messages = parent.GetOsztalyBesorolasModositasValidacio(h, fromOsztalyId, model.ToDDL.Value, tanulo.Id, datumTol, datumIg, OktNevelesiKategoriaEnum.NevelesOktatas, true, true);
// NOTE: Turai Tamás kérésére téves besorolás javításakor a lenti hibától eltekintünk.
messages = messages.Where(m => m.Oka != OsztalybaSorolasModositasValidacioHibaEnum.VanCsoportBesorolasaOsztalybesorolasNelkul).ToList();
if (messages.Count > 0)
{
hasTanuloError = true;
AddOsztalyBesorolasVegenekModositasaErrorMessages(validate, errormessage, tanulo.Id, messages);
}
if (validate.BesorolasJavitasValidate(tanulo.Id, datumTol, out var limitBesorolasDatum, out var limitBesorolasOsztalyId) && limitBesorolasOsztalyId != fromOsztalyId)
{
hasTanuloError = true;
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanulo.Id].Nev,
limitBesorolasDatum.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
errormessage.Add(hibaUzenet);
}
if (hasTanuloError)
{
hasError |= hasTanuloError;
continue;
}
AlapKepzesOsztalyBesorolasJavitas(tanulo.Id, tanulo.Fromid.Value, model.ToDDL.Value, tcsAdatok.Belepes, parent.isSzakkepzoIntezmeny, parent.isSelectedTanev21_22OrLater);
sikeresenAtsoroltTanulok.Add(tanulo.Id);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenAtsoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresenAtsoroltTanulok, model.ToDDL.Value, h);
parent.UpdateTanulokSzakkepzoAdatok(sikeresenAtsoroltTanulok, model.ToDDL.Value, h);
parent.UpdateTanulokSzakkepzesiJuttatasok(sikeresenAtsoroltTanulok, h);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = string.Join("<br/>", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public string Amikepzes(IOsztalyCsoportbaSorolas model)
{
SorolasValidate.ValidateModel(model, datum: false, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4020)/*A célcsoport nem létezik.*/);
}
if (model.FromDDL.Value == model.ToDDL.Value)
{
throw new BlException(OsztalyCsoportResource.ForrasCelOCsMegegyezik);
}
var datum = GetDatum();
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenAtsoroltTanulok = new List<int>();
var errormessage = new List<string>();
var hasError = false;
try
{
var validate = new SorolasValidate(datum, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas, h);
var egyeniCsoportok = OsztalybaSorolasLogic.GetOsztalyEgyeniCSoportjai(model.ToDDL.Value);
foreach (var tanulo in model.ToElements)
{
var hasTanuloError = false;
var fromOsztalyId = tanulo.Fromid.Value;
var tcsAdatok = validate.GetOsztalyCsoportTanuloCsoportAdatok(fromOsztalyId, tanulo.Id);
if (tcsAdatok == null)
{
errormessage.Add(string.Format(OsztalyCsoportResource.OsztalybaSorolasATanuloNemTagjaAzOsztalynak, validate.TanuloAdatok[tanulo.Id].Nev));
hasError |= true;
continue;
}
var datumTol = tcsAdatok.Belepes;
var datumIg = datum;
var messages = parent.GetOsztalyBesorolasModositasValidacio(h, fromOsztalyId, model.ToDDL.Value, tanulo.Id, datumTol, datumIg, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas, true, true);
// NOTE: Turai Tamás kérésére téves besorolás javításakor a lenti hibától eltekintünk.
messages = messages.Where(m => m.Oka != OsztalybaSorolasModositasValidacioHibaEnum.VanCsoportBesorolasaOsztalybesorolasNelkul).ToList();
if (messages.Count > 0)
{
hasTanuloError = true;
AddOsztalyBesorolasVegenekModositasaErrorMessages(validate, errormessage, tanulo.Id, messages);
}
if (validate.BesorolasJavitasValidate(tanulo.Id, tcsAdatok.Belepes, out var limitBesorolasDatum, out var limitBesorolasOsztalyId) && limitBesorolasOsztalyId != fromOsztalyId)
{
hasTanuloError = true;
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanulo.Id].Nev,
limitBesorolasDatum.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
errormessage.Add(hibaUzenet);
}
if (hasTanuloError)
{
hasError |= hasTanuloError;
continue;
}
AmiOsztalyBesorolasJavitas(tanulo.Id, tanulo.Fromid.Value, model.ToDDL.Value, tcsAdatok.Belepes, egyeniCsoportok, parent.isSzakkepzoIntezmeny, parent.isSelectedTanev21_22OrLater);
sikeresenAtsoroltTanulok.Add(tanulo.Id);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenAtsoroltTanulok, model);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = string.Join("<br/>", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public string Kollegium(IOsztalyCsoportbaSorolas model)
{
SorolasValidate.ValidateModel(model, datum: false, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4020)/*A célcsoport nem létezik.*/);
}
if (model.FromDDL.Value == model.ToDDL.Value)
{
throw new BlException(OsztalyCsoportResource.ForrasCelOCsMegegyezik);
}
var datum = GetDatum();
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenAtsoroltTanulok = new List<int>();
var errormessage = new List<string>();
var hasError = false;
try
{
var validate = new SorolasValidate(datum, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.Kollegium, h);
foreach (var tanulo in model.ToElements)
{
var hasTanuloError = false;
var fromOsztalyId = tanulo.Fromid.Value;
var tcsAdatok = validate.GetOsztalyCsoportTanuloCsoportAdatok(fromOsztalyId, tanulo.Id);
if (tcsAdatok == null)
{
errormessage.Add(string.Format(OsztalyCsoportResource.OsztalybaSorolasATanuloNemTagjaAzOsztalynak, validate.TanuloAdatok[tanulo.Id].Nev));
hasError |= true;
continue;
}
var datumTol = tcsAdatok.Belepes;
var datumIg = datum;
var messages = parent.GetOsztalyBesorolasModositasValidacio(h, fromOsztalyId, model.ToDDL.Value, tanulo.Id, datumTol, datumIg, OktNevelesiKategoriaEnum.Kollegium, true, true);
// NOTE: Turai Tamás kérésére téves besorolás javításakor a lenti hibától eltekintünk.
messages = messages.Where(m => m.Oka != OsztalybaSorolasModositasValidacioHibaEnum.VanCsoportBesorolasaOsztalybesorolasNelkul).ToList();
if (messages.Count > 0)
{
hasTanuloError = true;
AddOsztalyBesorolasVegenekModositasaErrorMessages(validate, errormessage, tanulo.Id, messages);
}
if (validate.BesorolasJavitasValidate(tanulo.Id, datumTol, out var limitBesorolasDatum, out var limitBesorolasOsztalyId) && limitBesorolasOsztalyId != fromOsztalyId)
{
hasTanuloError = true;
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanulo.Id].Nev,
limitBesorolasDatum.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
errormessage.Add(hibaUzenet);
}
if (hasTanuloError)
{
hasError |= hasTanuloError;
continue;
}
KollegiumOsztalyBesorolasJavitas(tanulo.Id, tanulo.Fromid.Value, model.ToDDL.Value, tcsAdatok.Belepes, parent.isSzakkepzoIntezmeny, parent.isSelectedTanev21_22OrLater);
sikeresenAtsoroltTanulok.Add(tanulo.Id);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenAtsoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresenAtsoroltTanulok, model.ToDDL.Value, h, false);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = string.Join("<br/>", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public string EGYMI(IOsztalyCsoportbaSorolas model)
{
SorolasValidate.ValidateModel(model, datum: false, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4020)/*A célcsoport nem létezik.*/);
}
if (model.FromDDL.Value == model.ToDDL.Value)
{
throw new BlException(OsztalyCsoportResource.ForrasCelOCsMegegyezik);
}
var datum = GetDatum();
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenAtsoroltTanulok = new List<int>();
var errormessage = new List<string>();
var hasError = false;
try
{
var validate = new SorolasValidate(datum, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.EGYMI, h);
foreach (var tanulo in model.ToElements)
{
var hasTanuloError = false;
var fromOsztalyId = tanulo.Fromid.Value;
var tcsAdatok = validate.GetOsztalyCsoportTanuloCsoportAdatok(fromOsztalyId, tanulo.Id);
if (tcsAdatok == null)
{
errormessage.Add(string.Format(OsztalyCsoportResource.OsztalybaSorolasATanuloNemTagjaAzOsztalynak, validate.TanuloAdatok[tanulo.Id].Nev));
hasError |= true;
continue;
}
var datumTol = tcsAdatok.Belepes;
var datumIg = datum;
var messages = parent.GetOsztalyBesorolasModositasValidacio(h, fromOsztalyId, model.ToDDL.Value, tanulo.Id, datumTol, datumIg, OktNevelesiKategoriaEnum.EGYMI, true, true);
// NOTE: Turai Tamás kérésére téves besorolás javításakor a lenti hibától eltekintünk.
messages = messages.Where(m => m.Oka != OsztalybaSorolasModositasValidacioHibaEnum.VanCsoportBesorolasaOsztalybesorolasNelkul).ToList();
if (messages.Count > 0)
{
hasTanuloError = true;
AddOsztalyBesorolasVegenekModositasaErrorMessages(validate, errormessage, tanulo.Id, messages);
}
if (validate.BesorolasJavitasValidate(tanulo.Id, datumTol, out var limitBesorolasDatum, out var limitBesorolasOsztalyId) && limitBesorolasOsztalyId != fromOsztalyId)
{
hasTanuloError = true;
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanulo.Id].Nev,
limitBesorolasDatum.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
errormessage.Add(hibaUzenet);
}
if (hasTanuloError)
{
hasError |= hasTanuloError;
continue;
}
EGYMIOsztalyBesorolasJavitas(tanulo.Id, tanulo.Fromid.Value, model.ToDDL.Value, tcsAdatok.Belepes, parent.isSzakkepzoIntezmeny, parent.isSelectedTanev21_22OrLater);
sikeresenAtsoroltTanulok.Add(tanulo.Id);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenAtsoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresenAtsoroltTanulok, model.ToDDL.Value, h, false);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = string.Join("<br/>", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
private void AlapKepzesOsztalyBesorolasJavitas(int tanuloId, int fromOsztalyId, int toOsztalyId, DateTime date, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater)
{
try
{
var tanulo = TanuloDal.Get(tanuloId);
var toOsztaly = OsztalyDal.Get(toOsztalyId);
TanuloCsoportDal.RemoveTanuloMulasztasByDate(tanuloId, fromOsztalyId, date);
//Jelenlegi osztálya, ezt akarjuk javítani
var tcsOld = tanulo.OsztalyCsoport.Single(x => x.OsztalyCsoportId == fromOsztalyId && x.BelepesDatum <= date && (x.KilepesDatum == null || x.KilepesDatum > date) && !x.Torolt);
var tanuloElozoOsztalyKapcsolat = tanulo.OsztalyCsoport.Where(x =>
x.KilepesDatum == tcsOld.BelepesDatum.Value
&& OsztalyCSoportDal.IsOsztaly(x.OsztalyCsoportId, parent.TanevId) && !x.Torolt).ToList();
if (tanuloElozoOsztalyKapcsolat.Count > 0 && (tanuloElozoOsztalyKapcsolat.Single().OsztalyCsoportId == toOsztalyId))
{
//Ha a tanulót nem is akarták átrakni, azaz visszakerül az előző osztályába, akkor a
//rossz tanulócsoport rekordot töröljük (logikailag), az előző tanulócsoport kilépésdátumát pedig nullázzuk
var tcsNew = tanuloElozoOsztalyKapcsolat.Single();
tcsNew.KilepesDatum = null;
TanuloCsoportDal.Update(tcsNew);
//tanugyi adatokat nem kell másolni, már van neki ehhez a kapcsolathoz
CsoportKisorolasLogic.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, date);
TanuloCsoportDal.Delete(tcsOld, logikai: true); //deleteket végig kell nétni
}
else
{
var tcsNew = TanuloCsoportDal.Get();
tcsNew.TanuloId = tanuloId;
tcsNew.OsztalyCsoportId = toOsztalyId;
tcsNew.BelepesDatum = tcsOld.BelepesDatum;
tcsNew.BejegyzesIdopontja = tcsOld.BejegyzesIdopontja;
tcsNew.TanevId = parent.TanevId;
tcsNew.JogviszonyTipusID = toOsztaly.JogviszonyTipusId;
TanuloCsoportDal.Delete(tcsOld, logikai: true);
TanuloCsoportDal.Insert(tcsNew);
CsoportKisorolasLogic.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, date);
TanuloTanugyiAdatok.InsertTanugyiAdatForBesorolasJavitas(tcsOld.TanuloTanugyiAdatok, tcsNew.ID, toOsztaly, isSzakkepzoIntezmeny, isSelectedTanev21_22OrLater);
var fromOsztaly = OsztalyDal.Get(fromOsztalyId);
if (fromOsztaly.SZMKKepviseloId != -1 && tcsOld.Tanulo.Gondviselo.Any(g => g.ID == fromOsztaly.SZMKKepviseloId))
{
OsztalyDal.UpdateOsztalySZMKKepviseloIdToNull(tcsOld.OsztalyCsoportId, tcsOld.TanevId, tcsOld.IntezmenyId);
}
if (fromOsztaly.SZMKKepviseloHelyettesId != -1 && tcsOld.Tanulo.Gondviselo.Any(g => g.ID == fromOsztaly.SZMKKepviseloHelyettesId))
{
OsztalyDal.UpdateOsztalySZMKKepviseloHelyettesIdToNull(tcsOld.OsztalyCsoportId, tcsOld.TanevId, tcsOld.IntezmenyId);
}
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
var tanulo = h.Tanulo().Get(tanuloId);
throw new BlException(string.Format("{0} {1}", tanulo.NyomtatasiNev, OsztalyCsoportResource.KisorolasKozbenHibaTortent /*átsorolása közben hiba történt*/), e);
}
catch
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
}
}
private void AmiOsztalyBesorolasJavitas(int tanuloId, int fromOsztalyId, int toOsztalyId, DateTime fromBelepesDatuma, List<(int Id, int TanuloId, int EgyeniCsoportId)> egyeniCsoportok, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater)
{
try
{
var tanulo = TanuloDal.Get(tanuloId);
var toOsztaly = OsztalyDal.Get(toOsztalyId);
TanuloCsoportDal.RemoveTanuloMulasztasByDate(tanuloId, fromOsztalyId, fromBelepesDatuma);
//Jelenlegi osztálya, ezt akarjuk javítani
var javitandoTanuloCsoport = tanulo.OsztalyCsoport.Single(x => x.OsztalyCsoportId == fromOsztalyId && x.BelepesDatum <= fromBelepesDatuma && (x.KilepesDatum == null || x.KilepesDatum > fromBelepesDatuma) && !x.Torolt);
var osztalybontottCsoportok = new List<(int Id, int CsoportId, bool AutoEgyeni, int CsoportTanuloSzam)>();
foreach (DataRow row in TanuloCsoportDal.GetTanuloOsztalyBontasosCsoportKapcsolatai(parent.TanevId, tanuloId, fromOsztalyId).Tables[0].Rows)
{
osztalybontottCsoportok.Add((SDAConvert.ToInt32(row["Id"]),
SDAConvert.ToInt32(row["CsoportId"]),
SDAConvert.ToBooleanFromTF(row["C_ISAUTOEGYENICSOPORT"]),
SDAConvert.ToInt32(row["CsoportTanuloSzam"])
));
}
var tcsNew = TanuloCsoportDal.Get();
tcsNew.TanuloId = tanuloId;
tcsNew.OsztalyCsoportId = toOsztalyId;
tcsNew.BelepesDatum = javitandoTanuloCsoport.BelepesDatum;
tcsNew.BejegyzesIdopontja = javitandoTanuloCsoport.BejegyzesIdopontja;
tcsNew.TanevId = parent.TanevId;
if (osztalybontottCsoportok.Any(x => x.AutoEgyeni || x.CsoportTanuloSzam == 1) && toOsztaly.MuveszetiAgId == (int)MuveszetiAgEnum.ZenemuveszetiAg)
{
OsztalybaSorolasLogic.EgyeniCSoportLetrehozas(tanuloId, tanulo.NyomtatasiNev, tanulo.SzuletesiDatum, javitandoTanuloCsoport.BelepesDatum.Value, toOsztaly, egyeniCsoportok);
}
TanuloCsoportDal.Delete(javitandoTanuloCsoport, logikai: true);
TanuloCsoportDal.Insert(tcsNew);
TanuloTanugyiAdatok.InsertTanugyiAdatForBesorolasJavitas(javitandoTanuloCsoport.TanuloTanugyiAdatok, tcsNew.ID, toOsztaly, isSzakkepzoIntezmeny, isSelectedTanev21_22OrLater);
foreach (var (Id, CsoportId, AutoEgyeni, CsoportTanuloSzam) in osztalybontottCsoportok)
{
var tcs = TanuloCsoportDal.Get(Id);
if (tcs.BelepesDatum == fromBelepesDatuma.Date)
{
TanuloCsoportDal.Delete(tcs, logikai: true);
if (AutoEgyeni || CsoportTanuloSzam == 1)
{
CsoportDal.Delete(CsoportId, parent.IntezmenyId, parent.TanevId);
}
}
else
{
tcs.KilepesDatum = fromBelepesDatuma;
TanuloCsoportDal.Update(tcs);
}
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
var tanulo = h.Tanulo().Get(tanuloId);
throw new BlException($"{tanulo.NyomtatasiNev} {OsztalyCsoportResource.KisorolasKozbenHibaTortent}", e);
}
catch
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
}
}
private void KollegiumOsztalyBesorolasJavitas(int tanuloId, int fromOsztalyId, int toOsztalyId, DateTime date, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater)
{
try
{
var tanulo = TanuloDal.Get(tanuloId);
var toOsztaly = OsztalyDal.Get(toOsztalyId);
TanuloCsoportDal.RemoveTanuloMulasztasByDate(tanuloId, fromOsztalyId, date);
//Jelenlegi osztálya, ezt akarjuk javítani
var tcsOld = tanulo.OsztalyCsoport.Single(x => x.OsztalyCsoportId == fromOsztalyId && x.BelepesDatum <= date && (x.KilepesDatum == null || x.KilepesDatum > date) && !x.Torolt);
var tanuloElozoOsztalyKapcsolat = tanulo.OsztalyCsoport.Where(x =>
x.KilepesDatum == tcsOld.BelepesDatum.Value
&& OsztalyCSoportDal.IsOsztaly(x.OsztalyCsoportId, parent.TanevId) && !x.Torolt).ToList();
if (tanuloElozoOsztalyKapcsolat.Count > 0 && (tanuloElozoOsztalyKapcsolat.Single().OsztalyCsoportId == toOsztalyId))
{
//Ha a tanulót nem is akarták átrakni, azaz visszakerül az előző osztályába, akkor a
//rossz tanulócsoport rekordot töröljük (logikailag), az előző tanulócsoport kilépésdátumát pedig nullázzuk
var tcsNew = tanuloElozoOsztalyKapcsolat.Single();
tcsNew.KilepesDatum = null;
TanuloCsoportDal.Update(tcsNew);
//tanugyi adatokat nem kell másolni, már van neki ehhez a kapcsolathoz
CsoportKisorolasLogic.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, date);
TanuloCsoportDal.Delete(tcsOld, logikai: true); //deleteket végig kell nétni
}
else
{
var tcsNew = TanuloCsoportDal.Get();
tcsNew.TanuloId = tanuloId;
tcsNew.OsztalyCsoportId = toOsztalyId;
tcsNew.BelepesDatum = tcsOld.BelepesDatum;
tcsNew.BejegyzesIdopontja = tcsOld.BejegyzesIdopontja;
tcsNew.TanevId = parent.TanevId;
TanuloCsoportDal.Delete(tcsOld, logikai: true);
TanuloCsoportDal.Insert(tcsNew);
CsoportKisorolasLogic.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, date);
TanuloTanugyiAdatok.InsertTanugyiAdatForBesorolasJavitas(tcsOld.TanuloTanugyiAdatok, tcsNew.ID, toOsztaly, isSzakkepzoIntezmeny, isSelectedTanev21_22OrLater);
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
var tanulo = h.Tanulo().Get(tanuloId);
throw new BlException(string.Format("{0} {1}", tanulo.NyomtatasiNev, OsztalyCsoportResource.KisorolasKozbenHibaTortent/*átsorolása közben hiba történt*/), e);
}
catch
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
}
}
private void EGYMIOsztalyBesorolasJavitas(int tanuloId, int fromOsztalyId, int toOsztalyId, DateTime date, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater)
{
try
{
var tanulo = TanuloDal.Get(tanuloId);
var toOsztaly = OsztalyDal.Get(toOsztalyId);
TanuloCsoportDal.RemoveTanuloMulasztasByDate(tanuloId, fromOsztalyId, date);
//Jelenlegi osztálya, ezt akarjuk javítani
var tcsOld = tanulo.OsztalyCsoport.Single(x => x.OsztalyCsoportId == fromOsztalyId && x.BelepesDatum <= date && (x.KilepesDatum == null || x.KilepesDatum > date) && !x.Torolt);
var tanuloElozoOsztalyKapcsolat = tanulo.OsztalyCsoport.Where(x =>
x.KilepesDatum == tcsOld.BelepesDatum.Value
&& OsztalyCSoportDal.IsOsztaly(x.OsztalyCsoportId, parent.TanevId) && !x.Torolt).ToList();
if (tanuloElozoOsztalyKapcsolat.Count > 0 && (tanuloElozoOsztalyKapcsolat.Single().OsztalyCsoportId == toOsztalyId))
{
//Ha a tanulót nem is akarták átrakni, azaz visszakerül az előző osztályába, akkor a
//rossz tanulócsoport rekordot töröljük (logikailag), az előző tanulócsoport kilépésdátumát pedig nullázzuk
var tcsNew = tanuloElozoOsztalyKapcsolat.Single();
tcsNew.KilepesDatum = null;
TanuloCsoportDal.Update(tcsNew);
//tanugyi adatokat nem kell másolni, már van neki ehhez a kapcsolathoz
CsoportKisorolasLogic.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, date);
TanuloCsoportDal.Delete(tcsOld, logikai: true); //deleteket végig kell nétni
}
else
{
var tcsNew = TanuloCsoportDal.Get();
tcsNew.TanuloId = tanuloId;
tcsNew.OsztalyCsoportId = toOsztalyId;
tcsNew.BelepesDatum = tcsOld.BelepesDatum;
tcsNew.BejegyzesIdopontja = tcsOld.BejegyzesIdopontja;
tcsNew.TanevId = parent.TanevId;
TanuloCsoportDal.Delete(tcsOld, logikai: true);
TanuloCsoportDal.Insert(tcsNew);
var fromOsztaly = OsztalyDal.Get(fromOsztalyId);
if (fromOsztaly.SZMKKepviseloId != -1 && tcsOld.Tanulo.Gondviselo.Any(g => g.ID == fromOsztaly.SZMKKepviseloId))
{
OsztalyDal.UpdateOsztalySZMKKepviseloIdToNull(tcsOld.OsztalyCsoportId, tcsOld.TanevId, tcsOld.IntezmenyId);
}
if (fromOsztaly.SZMKKepviseloHelyettesId != -1 && tcsOld.Tanulo.Gondviselo.Any(g => g.ID == fromOsztaly.SZMKKepviseloHelyettesId))
{
OsztalyDal.UpdateOsztalySZMKKepviseloHelyettesIdToNull(tcsOld.OsztalyCsoportId, tcsOld.TanevId, tcsOld.IntezmenyId);
}
CsoportKisorolasLogic.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, date);
TanuloTanugyiAdatok.InsertTanugyiAdatForBesorolasJavitas(tcsOld.TanuloTanugyiAdatok, tcsNew.ID, toOsztaly, isSzakkepzoIntezmeny, isSelectedTanev21_22OrLater);
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
var tanulo = h.Tanulo().Get(tanuloId);
throw new BlException(string.Format("{0} {1}", tanulo.NyomtatasiNev, OsztalyCsoportResource.KisorolasKozbenHibaTortent/*átsorolása közben hiba történt*/), e);
}
catch
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
}
}
private DateTime GetDatum()
{
DateTime datum;
if (parent.kovTanev)
{
var th = new TanevHelper(parent.ConnectionType);
var kovTanevCo = th.GetTanevInfo();
datum = kovTanevCo.KezdoNap;
}
else
{
datum = DateTime.Now;
}
return datum;
}
}
private class OsztalyAtsorolasLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private readonly bool osszesCsoportbolKisorolas;
private ITanuloDal _tanuloDal;
private IOsztalyDal _osztalyDal;
private ITanuloCsoportDal _tanuloCsoportDal;
private TanuloHelper _tanuloHelper;
private TanuloTanugyiAdatokHelper _tanuloTanugyiAdatokHelper;
private CsoportKisorolaslLogic _csoportKisorolaslLogic;
private OsztalyKisorolaslLogic _osztalyKisorolaslLogic;
private ITanuloDal TanuloDal => _tanuloDal ?? (_tanuloDal = h.Tanulo());
private ITanuloCsoportDal TanuloCsoportDal => _tanuloCsoportDal ?? (_tanuloCsoportDal = h.TanuloCsoport());
private IOsztalyDal OsztalyDal => _osztalyDal ?? (_osztalyDal = h.Osztaly());
private TanuloHelper TanuloHelper => _tanuloHelper ?? (_tanuloHelper = new TanuloHelper(parent.ConnectionType));
private TanuloTanugyiAdatokHelper TanuloTanugyiAdatok => _tanuloTanugyiAdatokHelper ?? (_tanuloTanugyiAdatokHelper = new TanuloTanugyiAdatokHelper(new DalHandlerConnectionType(parent.ConnectionType, h)));
private CsoportKisorolaslLogic CsoportKisorolasl => _csoportKisorolaslLogic ?? (_csoportKisorolaslLogic = new CsoportKisorolaslLogic(parent, h));
private OsztalyKisorolaslLogic OsztalyKisorolasl => _osztalyKisorolaslLogic ?? (_osztalyKisorolaslLogic = new OsztalyKisorolaslLogic(parent, h));
public OsztalyAtsorolasLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
osszesCsoportbolKisorolas = new SystemSettingsHelper(new DalHandlerConnectionType(parent.ConnectionType, h)).GetSystemSettingValue<bool>(Enums.RendszerBeallitasTipusEnum.Tanulok_osztalyok_kozotti_atsorolasa_eseten_a_csoportbontasokon_kivuli_csoportokbol_valo_kilepteteset_is_automatikusan_elvegezze_a_program);
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.NevelesOktatas, h);
SorolasValidate.ValidateModel(model, datum: false, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out var osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var sikeresAtsoroltTanulok = new List<int>();
var errormessage = new List<string>();
var hasError = false;
try
{
foreach (var tanuloId in tanuloIds)
{
var hasTanuloError = false;
var fromOsztalyId = model.ToElements.Single(i => i.Id == tanuloId).Fromid.Value;
var isKellFeluletenMegadottZaradekRogzitese = model.ToElements.Single(i => i.Id == tanuloId).IsKellFeluletenMegadottZaradekRogzitese;
var tcsAdatok = validate.GetOsztalyCsoportTanuloCsoportAdatok(fromOsztalyId, tanuloId);
if (tcsAdatok == null)
{
errormessage.Add(string.Format(OsztalyCsoportResource.OsztalybaSorolasATanuloNemTagjaAzOsztalynak, validate.TanuloAdatok[tanuloId].Nev));
hasError |= true;
continue;
}
var datumTol = model.Datum.Value.AddDays(1);
var datumIg = tcsAdatok.Kilepes.Value;
var messages = parent.GetOsztalyBesorolasModositasValidacio(h, fromOsztalyId, model.ToDDL.Value, tanuloId, datumTol, datumIg, OktNevelesiKategoriaEnum.NevelesOktatas, true, true);
// KRETA2-7433
messages = messages.Where(m => m.Oka != OsztalybaSorolasModositasValidacioHibaEnum.VanOsztalybontottCsoportBesorolasa && m.Oka != OsztalybaSorolasModositasValidacioHibaEnum.VanCsoportBesorolasaOsztalybesorolasNelkul).ToList();
datumTol = tcsAdatok.Kilepes.Value.AddDays(1);
datumIg = model.Datum.Value;
messages.AddRange(parent.GetOsztalyBesorolasModositasValidacio(h, fromOsztalyId, model.ToDDL.Value, tanuloId, datumTol, datumIg, OktNevelesiKategoriaEnum.NevelesOktatas, false, true));
if (messages.Count > 0)
{
hasTanuloError = true;
AddOsztalyBesorolasVegenekModositasaErrorMessages(validate, errormessage, tanuloId, messages);
}
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatum, out var limitBesorolasOsztalyId) && limitBesorolasOsztalyId != fromOsztalyId)
{
hasTanuloError = true;
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatum.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
errormessage.Add(hibaUzenet);
}
if (hasTanuloError)
{
hasError |= hasTanuloError;
continue;
}
AlapKepzesOsztalyAtsorolas(tanuloId, fromOsztalyId, model.ToDDL.Value, model.Datum.Value, model.Zaradek, osszesCsoportbolKisorolas, isKellFeluletenMegadottZaradekRogzitese, parent.isSzakkepzoIntezmeny, parent.isSelectedTanev21_22OrLater);
sikeresAtsoroltTanulok.Add(tanuloId);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresAtsoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresAtsoroltTanulok, model.ToDDL.Value, h);
parent.UpdateTanulokSzakkepzoAdatok(sikeresAtsoroltTanulok, model.ToDDL.Value, h);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = string.Join("<br/>", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public string Kollegium(IOsztalyCsoportbaSorolas model)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: false, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out var osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresAtsoroltTanulok = new List<int>();
var errormessage = new List<string>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.Kollegium, h);
var hasError = false;
try
{
foreach (var tanuloId in tanuloIds)
{
var hasTanuloError = false;
var fromOsztalyId = model.ToElements.Single(i => i.Id == tanuloId).Fromid.Value;
var tcsAdatok = validate.GetOsztalyCsoportTanuloCsoportAdatok(fromOsztalyId, tanuloId);
if (tcsAdatok == null)
{
errormessage.Add(string.Format(OsztalyCsoportResource.OsztalybaSorolasATanuloNemTagjaAzOsztalynak, validate.TanuloAdatok[tanuloId].Nev));
hasError |= true;
continue;
}
var datumTol = model.Datum.Value.AddDays(1);
var datumIg = tcsAdatok.Kilepes.Value;
var messages = parent.GetOsztalyBesorolasModositasValidacio(h, fromOsztalyId, model.ToDDL.Value, tanuloId, datumTol, datumIg, OktNevelesiKategoriaEnum.Kollegium, true, true);
// KRETA2-7433
messages = messages.Where(m => m.Oka != OsztalybaSorolasModositasValidacioHibaEnum.VanOsztalybontottCsoportBesorolasa && m.Oka != OsztalybaSorolasModositasValidacioHibaEnum.VanCsoportBesorolasaOsztalybesorolasNelkul).ToList();
datumTol = tcsAdatok.Kilepes.Value.AddDays(1);
datumIg = model.Datum.Value;
messages.AddRange(parent.GetOsztalyBesorolasModositasValidacio(h, fromOsztalyId, model.ToDDL.Value, tanuloId, datumTol, datumIg, OktNevelesiKategoriaEnum.Kollegium, false, true));
if (messages.Count > 0)
{
hasTanuloError = true;
AddOsztalyBesorolasVegenekModositasaErrorMessages(validate, errormessage, tanuloId, messages);
}
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatum, out var limitBesorolasOsztalyId) && limitBesorolasOsztalyId != fromOsztalyId)
{
hasTanuloError = true;
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatum.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
errormessage.Add(hibaUzenet);
}
if (hasTanuloError)
{
hasError |= hasTanuloError;
continue;
}
KollegiumOsztalyAtsorolas(tanuloId, fromOsztalyId, model.ToDDL.Value, model.Datum.Value, model.Zaradek, parent.isSzakkepzoIntezmeny, parent.isSelectedTanev21_22OrLater);
sikeresAtsoroltTanulok.Add(tanuloId);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresAtsoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresAtsoroltTanulok, model.ToDDL.Value, h, false);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = string.Join("<br/>", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public string EGYMI(IOsztalyCsoportbaSorolas model)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: false, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out var osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresAtsoroltTanulok = new List<int>();
var errormessage = new List<string>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.EGYMI, h);
var hasError = false;
try
{
foreach (var tanuloId in tanuloIds)
{
var hasTanuloError = false;
var fromOsztalyId = model.ToElements.Single(i => i.Id == tanuloId).Fromid.Value;
var tcsAdatok = validate.GetOsztalyCsoportTanuloCsoportAdatok(fromOsztalyId, tanuloId);
if (tcsAdatok == null)
{
errormessage.Add(string.Format(OsztalyCsoportResource.OsztalybaSorolasATanuloNemTagjaAzOsztalynak, validate.TanuloAdatok[tanuloId].Nev));
hasError |= true;
continue;
}
var datumTol = model.Datum.Value.AddDays(1);
var datumIg = tcsAdatok.Kilepes.Value;
var messages = parent.GetOsztalyBesorolasModositasValidacio(h, fromOsztalyId, model.ToDDL.Value, tanuloId, datumTol, datumIg, OktNevelesiKategoriaEnum.EGYMI, true, true);
// KRETA2-7433
messages = messages.Where(m => m.Oka != OsztalybaSorolasModositasValidacioHibaEnum.VanOsztalybontottCsoportBesorolasa && m.Oka != OsztalybaSorolasModositasValidacioHibaEnum.VanCsoportBesorolasaOsztalybesorolasNelkul).ToList();
datumTol = tcsAdatok.Kilepes.Value.AddDays(1);
datumIg = model.Datum.Value;
messages.AddRange(parent.GetOsztalyBesorolasModositasValidacio(h, fromOsztalyId, model.ToDDL.Value, tanuloId, datumTol, datumIg, OktNevelesiKategoriaEnum.EGYMI, false, true));
if (messages.Count > 0)
{
hasTanuloError = true;
AddOsztalyBesorolasVegenekModositasaErrorMessages(validate, errormessage, tanuloId, messages);
}
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatum, out var limitBesorolasOsztalyId) && limitBesorolasOsztalyId != fromOsztalyId)
{
hasTanuloError = true;
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatum.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
errormessage.Add(hibaUzenet);
}
if (hasTanuloError)
{
hasError |= hasTanuloError;
continue;
}
EGYMIOsztalyAtsorolas(tanuloId, fromOsztalyId, model.ToDDL.Value, model.Datum.Value, model.Zaradek, parent.isSzakkepzoIntezmeny, parent.isSelectedTanev21_22OrLater);
sikeresAtsoroltTanulok.Add(tanuloId);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresAtsoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresAtsoroltTanulok, model.ToDDL.Value, h, false);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = string.Join("<br/>", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
private void AlapKepzesOsztalyAtsorolas(int tanuloId, int fromOsztalyId, int toOsztalyId, DateTime belepesDatum, SorolasZaradek zaradek, bool kisorolasOsszeCsoprotbol, bool isKellFeluletenMegadottZaradekRogzitese, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater)
{
try
{
var tanulo = TanuloDal.Get(tanuloId);
var tanuloAktOsztaly = tanulo.OsztalyCsoport.First(x => x.OsztalyCsoportId == fromOsztalyId && (x.KilepesDatum == null || x.KilepesDatum > belepesDatum) && !x.Torolt);
tanuloAktOsztaly.TanuloTanugyiAdatok.NaploSorszam = null;
tanuloAktOsztaly.TanuloTanugyiAdatok.TorzslapSzam = null;
var tanuloUjOsztalya = OsztalyDal.Get(toOsztalyId);
var tcsUj = TanuloCsoportDal.Get();
tcsUj.TanuloId = tanulo.ID;
tcsUj.OsztalyCsoportId = toOsztalyId;
tcsUj.BejegyzesIdopontja = DateTime.Now;
tcsUj.BelepesDatum = belepesDatum;
tcsUj.JogviszonyTipusID = tanuloUjOsztalya.JogviszonyTipusId;
tcsUj.TanevId = parent.TanevId;
TanuloCsoportDal.Insert(tcsUj);
OsztalyKisorolasl.DeleteBesorolas(tanuloAktOsztaly, belepesDatum, zaradek, isKellFeluletenMegadottZaradekRogzitese);
if (osszesCsoportbolKisorolas)
{
CsoportKisorolasl.KisorolasOsszesCsoportbol(tanuloId, fromOsztalyId, belepesDatum);
}
else
{
CsoportKisorolasl.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, belepesDatum);
}
TanuloTanugyiAdatok.InsertTanugyiAdatForAtsorolas(tanuloAktOsztaly.TanuloTanugyiAdatok, tcsUj.ID, tanuloUjOsztalya, isSzakkepzoIntezmeny, isSelectedTanev21_22OrLater);
if (tanulo.IsMulasztasMiattKizart)
{
tanulo.IsMulasztasMiattKizart = false;
TanuloDal.Update(tanulo);
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
var tanulo = h.Tanulo().Get(tanuloId);
throw new BlException($"{tanulo.NyomtatasiNev} {OsztalyCsoportResource.KisorolasKozbenHibaTortent}", e);
}
catch (BlException)
{
throw;
}
catch
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
}
}
private void KollegiumOsztalyAtsorolas(int tanuloId, int fromOsztalyId, int toOsztalyId, DateTime belepesDatum, SorolasZaradek zaradek, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater)
{
try
{
var tanulo = TanuloDal.Get(tanuloId);
var tanuloAktOsztaly = tanulo.OsztalyCsoport.First(x => x.OsztalyCsoportId == fromOsztalyId && (x.KilepesDatum == null || x.KilepesDatum > belepesDatum) && !x.Torolt);
var tanuloUjOsztalya = OsztalyDal.Get(toOsztalyId);
var tcsUj = TanuloCsoportDal.Get();
tcsUj.TanuloId = tanulo.ID;
tcsUj.OsztalyCsoportId = toOsztalyId;
tcsUj.BejegyzesIdopontja = DateTime.Now;
tcsUj.BelepesDatum = belepesDatum;
tcsUj.TanevId = parent.TanevId;
TanuloCsoportDal.Insert(tcsUj);
SaveZaradek(parent.ConnectionType, zaradek, tcsUj.ID);
OsztalyKisorolasl.DeleteBesorolas(tanuloAktOsztaly, belepesDatum, zaradek);
if (osszesCsoportbolKisorolas)
{
CsoportKisorolasl.KisorolasOsszesCsoportbol(tanuloId, fromOsztalyId, belepesDatum);
}
else
{
CsoportKisorolasl.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, belepesDatum);
}
TanuloTanugyiAdatok.InsertTanugyiAdatForAtsorolas(tanuloAktOsztaly.TanuloTanugyiAdatok, tcsUj.ID, tanuloUjOsztalya, isSzakkepzoIntezmeny, isSelectedTanev21_22OrLater);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
var tanulo = h.Tanulo().Get(tanuloId);
throw new BlException($"{tanulo.NyomtatasiNev} {OsztalyCsoportResource.KisorolasKozbenHibaTortent}", e);
}
catch (BlException)
{
throw;
}
catch
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
}
}
private void EGYMIOsztalyAtsorolas(int tanuloId, int fromOsztalyId, int toOsztalyId, DateTime belepesDatum, SorolasZaradek zaradek, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater)
{
try
{
var tanulo = TanuloDal.Get(tanuloId);
var tanuloAktOsztaly = tanulo.OsztalyCsoport.First(x => x.OsztalyCsoportId == fromOsztalyId && (x.KilepesDatum == null || x.KilepesDatum > belepesDatum) && !x.Torolt);
var tanuloUjOsztalya = OsztalyDal.Get(toOsztalyId);
var tcsUj = TanuloCsoportDal.Get();
tcsUj.TanuloId = tanulo.ID;
tcsUj.OsztalyCsoportId = toOsztalyId;
tcsUj.BejegyzesIdopontja = DateTime.Now;
tcsUj.BelepesDatum = belepesDatum;
tcsUj.TanevId = parent.TanevId;
TanuloCsoportDal.Insert(tcsUj);
SaveZaradek(parent.ConnectionType, zaradek, tcsUj.ID);
OsztalyKisorolasl.DeleteBesorolas(tanuloAktOsztaly, belepesDatum, zaradek);
if (osszesCsoportbolKisorolas)
{
CsoportKisorolasl.KisorolasOsszesCsoportbol(tanuloId, fromOsztalyId, belepesDatum);
}
else
{
CsoportKisorolasl.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, belepesDatum);
}
TanuloTanugyiAdatok.InsertTanugyiAdatForAtsorolas(tanuloAktOsztaly.TanuloTanugyiAdatok, tcsUj.ID, tanuloUjOsztalya, isSzakkepzoIntezmeny, isSelectedTanev21_22OrLater);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
var tanulo = h.Tanulo().Get(tanuloId);
throw new BlException($"{tanulo.NyomtatasiNev} {OsztalyCsoportResource.KisorolasKozbenHibaTortent}", e);
}
catch (BlException)
{
throw;
}
catch
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
}
}
}
private class OsztalyVisszairatkoztatasLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private ITanuloDal _tanuloDal;
private IOsztalyDal _osztalyDal;
private ITanuloCsoportDal _tanuloCsoportDal;
private IFelhasznaloDal _felhasznaloDal;
private TanuloTanugyiAdatokHelper _tanuloTanugyiAdatokHelper;
private TanuloHelper _tanuloHelper;
private ITanuloDal TanuloDal => _tanuloDal ?? (_tanuloDal = h.Tanulo());
private IOsztalyDal OsztalyDal => _osztalyDal ?? (_osztalyDal = h.Osztaly());
private ITanuloCsoportDal TanuloCsoportDal => _tanuloCsoportDal ?? (_tanuloCsoportDal = h.TanuloCsoport());
private IFelhasznaloDal FelhasznaloDal => _felhasznaloDal ?? (_felhasznaloDal = h.Felhasznalo());
private TanuloTanugyiAdatokHelper TanuloTanugyiAdatok => _tanuloTanugyiAdatokHelper ?? (_tanuloTanugyiAdatokHelper = new TanuloTanugyiAdatokHelper(new DalHandlerConnectionType(parent.ConnectionType, h)));
private TanuloHelper TanuloHelper => _tanuloHelper ?? (_tanuloHelper = new TanuloHelper(parent.ConnectionType));
public OsztalyVisszairatkoztatasLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
return !parent.kovTanev ?
AlapAktTanevVisszairatkoztatas(model, jogviszonyCo) :
AlapKovTanevVisszairatkoztatas(model, jogviszonyCo);
}
public string Kollegium(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
return !parent.kovTanev ?
KollegiumAktTanevVisszairatkoztatas(model, jogviszonyCo) :
KollegiumKovTanevVisszairatkoztatas(model, jogviszonyCo);
}
public string EGYMI(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
return !parent.kovTanev ?
EGYMIAktTanevVisszairatkoztatas(model, jogviszonyCo) :
EGYMIKovTanevVisszairatkoztatas(model, jogviszonyCo);
}
private string AlapAktTanevVisszairatkoztatas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
List<int> tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenVisszairatkozottTanulok = new List<int>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.NevelesOktatas, h);
var validationErrorMessages = new List<string>();
try
{
foreach (var tanuloId in tanuloIds)
{
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatumKezdete, out var limitBesorolasOsztalyId))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatumKezdete.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
if (!model.FromDDL.HasValue || model.FromDDL == parent.aktivTanevId)
{
AktTanevVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.Datum.Value, model.Zaradek);
sikeresenVisszairatkozottTanulok.Add(tanuloId);
}
else
{
var aktTanevTanuloId = ElozoTanevekVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.FromDDL.Value, parent.TanevId, model.Datum.Value, model.Zaradek, ref validationErrorMessages);
if (aktTanevTanuloId.IsEntityId())
{
sikeresenVisszairatkozottTanulok.Add(aktTanevTanuloId.Value);
}
}
}
parent.VisszairatkozottTanuloJogviszonyMentes(sikeresenVisszairatkozottTanulok, model, jogviszonyCo, h, parent.kovTanevId);
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenVisszairatkozottTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresenVisszairatkozottTanulok, model.ToDDL.Value, h);
parent.UpdateTanulokSzakkepzoAdatok(sikeresenVisszairatkozottTanulok, model.ToDDL.Value, h);
parent.UpdateTanulokSzakkepzesiJuttatasok(sikeresenVisszairatkozottTanulok, h);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return message;
}
else
{
return string.Empty;
}
}
private string AlapKovTanevVisszairatkoztatas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: true, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
List<int> tanuloIds = model.ToElements.Select(i => i.Id).ToList();
List<int> aktualisTanuloIds = new List<int>();
var sikeresenVisszairatkozottTanulok = new List<int>();
foreach (var tanuloId in tanuloIds)
{
var tanuloEgyediAzonosito = FelhasznaloDal.GetFelhasznaloEgyediAzonosito(parent.IntezmenyId, tanuloId);
var valosTanuloId = FelhasznaloDal.GetFelhasznaloByEgyediAzonositoAndTanev(tanuloEgyediAzonosito, parent.TanevId);
aktualisTanuloIds.Add(valosTanuloId ?? tanuloId);
}
var validate = new SorolasValidate(model.Datum.Value, aktualisTanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.NevelesOktatas, h);
var validationErrorMessages = new List<string>();
try
{
foreach (var tanuloId in aktualisTanuloIds)
{
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatumKezdete, out var limitBesorolasOsztalyId))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatumKezdete.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
if (!model.FromDDL.HasValue || model.FromDDL == parent.kovTanevId)
{
KovTanevVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.Datum.Value, model.Zaradek);
sikeresenVisszairatkozottTanulok.Add(tanuloId);
}
else
{
var aktTanevTanuloId = ElozoTanevekVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.FromDDL.Value, parent.TanevId, model.Datum.Value, model.Zaradek, ref validationErrorMessages);
if (aktTanevTanuloId.IsEntityId())
{
sikeresenVisszairatkozottTanulok.Add(aktTanevTanuloId.Value);
}
}
}
parent.VisszairatkozottTanuloJogviszonyMentes(sikeresenVisszairatkozottTanulok, model, jogviszonyCo, h, parent.kovTanevId);
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenVisszairatkozottTanulok, model);
parent.UpdateTanulokSzakkepzesiJuttatasok(sikeresenVisszairatkozottTanulok, h);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return message;
}
else
{
return string.Empty;
}
}
private string KollegiumAktTanevVisszairatkoztatas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
List<int> tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenVisszairatkozottTanulok = new List<int>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.Kollegium, h);
var validationErrorMessages = new List<string>();
try
{
foreach (var tanuloId in tanuloIds)
{
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatumKezdete, out var limitBesorolasOsztalyId))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatumKezdete.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
if (!model.FromDDL.HasValue || model.FromDDL == parent.aktivTanevId)
{
AktTanevVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.Datum.Value, model.Zaradek);
sikeresenVisszairatkozottTanulok.Add(tanuloId);
}
else
{
var aktTanevTanuloId = ElozoTanevekVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.FromDDL.Value, parent.TanevId, model.Datum.Value, model.Zaradek, ref validationErrorMessages);
if (aktTanevTanuloId.IsEntityId())
{
sikeresenVisszairatkozottTanulok.Add(aktTanevTanuloId.Value);
}
}
}
parent.VisszairatkozottTanuloJogviszonyMentes(sikeresenVisszairatkozottTanulok, model, jogviszonyCo, h, parent.kovTanevId);
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenVisszairatkozottTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresenVisszairatkozottTanulok, model.ToDDL.Value, h, false);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return message;
}
else
{
return string.Empty;
}
}
private string KollegiumKovTanevVisszairatkoztatas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: true, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
List<int> tanuloIds = model.ToElements.Select(i => i.Id).ToList();
List<int> aktualisTanuloIds = new List<int>();
var sikeresenVisszairatkozottTanulok = new List<int>();
foreach (var tanuloId in tanuloIds)
{
var tanuloEgyediAzonosito = FelhasznaloDal.GetFelhasznaloEgyediAzonosito(parent.IntezmenyId, tanuloId);
var valosTanuloId = FelhasznaloDal.GetFelhasznaloByEgyediAzonositoAndTanev(tanuloEgyediAzonosito, parent.TanevId);
aktualisTanuloIds.Add(valosTanuloId ?? tanuloId);
}
var validate = new SorolasValidate(model.Datum.Value, aktualisTanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.Kollegium, h);
var validationErrorMessages = new List<string>();
try
{
foreach (var tanuloId in aktualisTanuloIds)
{
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatumKezdete, out var limitBesorolasOsztalyId))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatumKezdete.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
if (!model.FromDDL.HasValue || model.FromDDL == parent.kovTanevId)
{
KovTanevVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.Datum.Value, model.Zaradek);
sikeresenVisszairatkozottTanulok.Add(tanuloId);
}
else
{
var aktTanevTanuloId = ElozoTanevekVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.FromDDL.Value, parent.TanevId, model.Datum.Value, model.Zaradek, ref validationErrorMessages);
if (aktTanevTanuloId.IsEntityId())
{
sikeresenVisszairatkozottTanulok.Add(aktTanevTanuloId.Value);
}
}
}
parent.VisszairatkozottTanuloJogviszonyMentes(sikeresenVisszairatkozottTanulok, model, jogviszonyCo, h, parent.kovTanevId);
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenVisszairatkozottTanulok, model);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return message;
}
else
{
return string.Empty;
}
}
private string EGYMIAktTanevVisszairatkoztatas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
List<int> tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenVisszairatkozottTanulok = new List<int>();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.EGYMI, h);
var validationErrorMessages = new List<string>();
try
{
foreach (var tanuloId in tanuloIds)
{
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatumKezdete, out var limitBesorolasOsztalyId))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatumKezdete.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
if (!model.FromDDL.HasValue || model.FromDDL == parent.aktivTanevId)
{
AktTanevVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.Datum.Value, model.Zaradek);
sikeresenVisszairatkozottTanulok.Add(tanuloId);
}
else
{
var aktTanevTanuloId = ElozoTanevekVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.FromDDL.Value, parent.TanevId, model.Datum.Value, model.Zaradek, ref validationErrorMessages);
if (aktTanevTanuloId.IsEntityId())
{
sikeresenVisszairatkozottTanulok.Add(aktTanevTanuloId.Value);
}
}
}
parent.VisszairatkozottTanuloJogviszonyMentes(sikeresenVisszairatkozottTanulok, model, jogviszonyCo, h, parent.kovTanevId);
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenVisszairatkozottTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresenVisszairatkozottTanulok, model.ToDDL.Value, h, false);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return message;
}
else
{
return string.Empty;
}
}
private string EGYMIKovTanevVisszairatkoztatas(IOsztalyCsoportbaSorolas model, JogviszonyCo jogviszonyCo)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, datum: true, fromDdl: true, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out _))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
List<int> tanuloIds = model.ToElements.Select(i => i.Id).ToList();
List<int> aktualisTanuloIds = new List<int>();
var sikeresenVisszairatkozottTanulok = new List<int>();
foreach (var tanuloId in tanuloIds)
{
var tanuloEgyediAzonosito = FelhasznaloDal.GetFelhasznaloEgyediAzonosito(parent.IntezmenyId, tanuloId);
var valosTanuloId = FelhasznaloDal.GetFelhasznaloByEgyediAzonositoAndTanev(tanuloEgyediAzonosito, parent.TanevId);
aktualisTanuloIds.Add(valosTanuloId ?? tanuloId);
}
var validate = new SorolasValidate(model.Datum.Value, aktualisTanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.EGYMI, h);
var validationErrorMessages = new List<string>();
try
{
foreach (var tanuloId in aktualisTanuloIds)
{
if (validate.JogviszonyLimitTullepes(tanuloId, out var limitBesorolasDatumKezdete, out var limitBesorolasOsztalyId))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloBeVanSorolvaOsztalyba,
validate.TanuloAdatok[tanuloId].Nev,
limitBesorolasDatumKezdete.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[limitBesorolasOsztalyId.Value].Nev,
validate.OsztalyCsoportAdatok[model.ToDDL.Value].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
if (!model.FromDDL.HasValue || model.FromDDL == parent.kovTanevId)
{
KovTanevVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.Datum.Value, model.Zaradek);
sikeresenVisszairatkozottTanulok.Add(tanuloId);
}
else
{
var aktTanevTanuloId = ElozoTanevekVisszairatkoztatasLogic(tanuloId, model.ToDDL.Value, model.FromDDL.Value, parent.TanevId, model.Datum.Value, model.Zaradek, ref validationErrorMessages);
if (aktTanevTanuloId.IsEntityId())
{
sikeresenVisszairatkozottTanulok.Add(aktTanevTanuloId.Value);
}
}
}
parent.VisszairatkozottTanuloJogviszonyMentes(sikeresenVisszairatkozottTanulok, model, jogviszonyCo, h, parent.kovTanevId);
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenVisszairatkozottTanulok, model);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return message;
}
else
{
return string.Empty;
}
}
private void AktTanevVisszairatkoztatasLogic(int tanuloId, int osztalyId, DateTime date, SorolasZaradek zaradek)
{
var osztaly = OsztalyDal.Get(osztalyId);
var tanuloCsoportDal = TanuloCsoportDal;
var ds = TanuloCsoportDal.GetTanuloByTanevAndOsztalyAndKiiratkoztatasDatum(parent.TanevId, tanuloId, osztalyId, date);
int? tanulocsoportId = null;
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 && ds.Tables[0].Rows[0]["ID"] != DBNull.Value && string.IsNullOrWhiteSpace(ds.Tables[0].Rows[0]["ID"].ToString()) == false)
{
tanulocsoportId = (int)ds.Tables[0].Rows[0]["ID"];
}
var entity = tanulocsoportId.HasValue ? tanuloCsoportDal.Get(tanulocsoportId.Value) : tanuloCsoportDal.Get();
entity.BejegyzesIdopontja = DateTime.Now;
entity.OsztalyCsoportId = osztalyId;
entity.TanuloId = tanuloId;
entity.TanevId = parent.TanevId;
entity.JogviszonyTipusID = osztaly.JogviszonyTipusId;
if (tanulocsoportId.HasValue)
{
entity.KilepesDatum = null;
entity.KilepesRogzitesDatum = null;
TanuloTanugyiAdatok.UpdateJegyzekAdatokForVisszairatkozas(entity.TanuloTanugyiAdatok, parent.isSelectedTanev21_22OrLater);
tanuloCsoportDal.FullUpdate(entity);
}
else
{
entity.BelepesDatum = date;
tanuloCsoportDal.Insert(entity);
TanuloTanugyiAdatok.InsertTanugyiAdatFromTanulo(tanuloId, entity.ID, osztaly, parent.isSelectedTanev21_22OrLater);
}
SaveZaradek(parent.ConnectionType, zaradek, entity.ID);
}
private void KovTanevVisszairatkoztatasLogic(int tanuloId, int toOsztalyId, DateTime belepesDatum, SorolasZaradek zaradek)
{
var tanulo = TanuloDal.Get(tanuloId);
var osztaly = OsztalyDal.Get(toOsztalyId);
var newTanuloId = string.IsNullOrEmpty(tanulo.OktatasiAzonosito) ? (int)default : TanuloCsoportDal.CheckOktatasiAzonosito(tanulo.OktatasiAzonosito, parent.TanevId);
if (!newTanuloId.IsEntityId())
{
newTanuloId = TanuloCsoportDal.Check4TValidacio((int)Validation4TEnum.Tanulo, tanulo.Vezeteknev, tanulo.Utonev, tanulo.AnyjaNeve, tanulo.SzuletesiHely, tanulo.SzuletesiDatum, null, parent.TanevId, tanulo.Elotag);
if (!newTanuloId.IsEntityId())
{
newTanuloId = TanuloHelper.CloneTanuloEntity(tanulo, parent.aktivTanevId, parent.kovTanevId.Value);
}
}
var entity = TanuloCsoportDal.Get();
entity.TanuloId = newTanuloId;
entity.OsztalyCsoportId = toOsztalyId;
entity.BejegyzesIdopontja = DateTime.Now;
entity.BelepesDatum = belepesDatum;
entity.TanevId = parent.TanevId;
TanuloCsoportDal.Insert(entity);
TanuloTanugyiAdatok.InsertTanugyiAdatFromTanulo(newTanuloId, entity.ID, osztaly, parent.isSelectedTanev21_22OrLater);
SaveZaradek(parent.ConnectionType, zaradek, entity.ID);
}
private int? ElozoTanevekVisszairatkoztatasLogic(int tanuloId, int osztalyId, int srcTanevId, int trgTanevId, DateTime date, SorolasZaradek zaradek, ref List<string> validationErrorMessages)
{
var tanulo = TanuloDal.Get(tanuloId);
var osztaly = OsztalyDal.Get(osztalyId);
var newTanuloId = string.IsNullOrEmpty(tanulo.OktatasiAzonosito) ? (int)default : TanuloCsoportDal.CheckOktatasiAzonosito(tanulo.OktatasiAzonosito, parent.TanevId);
if (!newTanuloId.IsEntityId())
{
newTanuloId = TanuloCsoportDal.Check4TValidacio((int)Validation4TEnum.Tanulo, tanulo.Vezeteknev, tanulo.Utonev, tanulo.AnyjaNeve, tanulo.SzuletesiHely, tanulo.SzuletesiDatum, null, parent.TanevId, tanulo.Elotag);
if (!newTanuloId.IsEntityId())
{
newTanuloId = TanuloHelper.CloneTanuloEntity(tanulo, srcTanevId: srcTanevId, trgTanevId: trgTanevId);
var entity = TanuloCsoportDal.Get();
entity.TanuloId = newTanuloId;
entity.OsztalyCsoportId = osztalyId;
entity.BejegyzesIdopontja = DateTime.Now;
entity.BelepesDatum = date;
entity.TanevId = parent.TanevId;
TanuloCsoportDal.Insert(entity);
TanuloTanugyiAdatok.InsertTanugyiAdatFromTanulo(newTanuloId, entity.ID, osztaly, parent.isSelectedTanev21_22OrLater);
SaveZaradek(parent.ConnectionType, zaradek, entity.ID);
return newTanuloId;
}
else
{
validationErrorMessages.Add(string.Format(OsztalyCsoportResource.A0NevuTanuloLetezikAktTanevben, tanulo.NyomtatasiNev));
return null;
}
}
else
{
validationErrorMessages.Add(string.Format(OsztalyCsoportResource.A0NevuTanuloOktAzonLetezikAktTanevben, tanulo.NyomtatasiNev));
return null;
}
}
}
private class CsoportbaSorolasLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private ITanuloCsoportDal _tanuloCsoportDal;
private ITanuloCsoportDal TanuloCsoportDal => _tanuloCsoportDal ?? (_tanuloCsoportDal = h.TanuloCsoport());
public CsoportbaSorolasLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model)
{
return CsoportbaSorolas(model, OktNevelesiKategoriaEnum.NevelesOktatas);
}
public string Amikepzes(IOsztalyCsoportbaSorolas model)
{
return CsoportbaSorolas(model, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas);
}
public string Kollegium(IOsztalyCsoportbaSorolas model)
{
return CsoportbaSorolas(model, OktNevelesiKategoriaEnum.Kollegium);
}
public string EGYMI(IOsztalyCsoportbaSorolas model)
{
return CsoportbaSorolas(model, OktNevelesiKategoriaEnum.EGYMI);
}
private string CsoportbaSorolas(IOsztalyCsoportbaSorolas model, OktNevelesiKategoriaEnum kategoria)
{
var duplicatedTanulo = model.ToElements.GroupBy(x => x.Id).Where(x => x.Count() > 1);
var sb = new StringBuilder(ErrorResource.AzAlabbiTanulokTobbszorSzerepelnek).Append("<ol>");
foreach (var tanuloID in duplicatedTanulo)
{
var name = h.Felhasznalo().Get(tanuloID.Key).NyomtatasiNev;
sb.Append(Core.Constants.General.Sortores).Append("<li>").Append(name).Append("</li>");
}
if (duplicatedTanulo.Any())
{
throw new BlException(sb.Append("</ol>").ToString());
}
if (parent.kovTanev)
{
model.Datum = new TanevHelper(parent.ConnectionType).GetTanevInfo().KezdoNap;
}
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, fromDdl: !model.IsFromSzervezet);
if (model.IsFromSzervezet)
{
SorolasValidate.SzervezetValidateModel(parent.ConnectionType, parent.TanevId, model);
}
if (!parent.TryGetCoport(model.ToDDL.Value, h, out var celCsoport))
{
throw new BlException(StringResourcesUtil.GetString(4020)/*A célcsoport nem létezik.*/);
}
var validationErrorMessages = new List<string>();
try
{
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, model.IsFromSzervezet ? (OktNevelesiKategoriaEnum?)null : kategoria, h);
foreach (var tanuloId in tanuloIds)
{
var nemBesorolhatoTanulo = false;
if (validate.TanuloMarTagjaCsoportnak(tanuloId, celCsoport.ID))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloMarTagjaAzAdottCsoportnak,
validate.TanuloAdatok[tanuloId].Nev,
model.Datum.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[celCsoport.ID].Nev);
validationErrorMessages.Add(hibaUzenet);
nemBesorolhatoTanulo = true;
}
if (celCsoport.OsztalyBontasId.IsEntityId())
{
if (validate.TanuloNemTagjaAzOsztalybontottOsztalynak(tanuloId, celCsoport.OsztalyBontasId, out var nemTagjaOsztalynakBeginDate))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloNemTagjaAzOsztalybontottOsztalynak,
validate.TanuloAdatok[tanuloId].Nev,
nemTagjaOsztalynakBeginDate.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[celCsoport.OsztalyBontasId].Nev,
validate.OsztalyCsoportAdatok[celCsoport.ID].Nev);
validationErrorMessages.Add(hibaUzenet);
nemBesorolhatoTanulo = true;
}
}
else
{
if (validate.TanuloNemTagjaEgyetlenOsztalynakSem(tanuloId, out var osztalyNelkulBeginDate))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloNincsBesorolvaEgyetlenOsztalybaSem,
validate.TanuloAdatok[tanuloId].Nev,
osztalyNelkulBeginDate.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[celCsoport.ID].Nev);
validationErrorMessages.Add(hibaUzenet);
nemBesorolhatoTanulo = true;
}
}
if (kategoria == OktNevelesiKategoriaEnum.NevelesOktatas)
{
if (h.Csoport().Get(celCsoport.ID).Tipusa == (int)CsoportTipusEnum.apaczai_mentorcsoport && validate.TanuloMarTagjaMentorcsoportnak(tanuloId))
{
var hibauzenet = string.Format(OsztalyCsoportResource.MarMasikMentorCsoportTagja, validate.TanuloAdatok[tanuloId].Nev);
validationErrorMessages.Add(hibauzenet);
nemBesorolhatoTanulo = true;
}
}
if (nemBesorolhatoTanulo)
{
continue;
}
AlapKepzesCsoportbaSorolas(tanuloId, celCsoport.ID, model.Datum.Value, model.Zaradek);
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return message;
}
else
{
return string.Empty;
}
}
public void AlapKepzesCsoportbaSorolas(int tanuloId, int csoportId, DateTime date, SorolasZaradek zaradek = null)
{
var entity = TanuloCsoportDal.Get();
entity.TanuloId = tanuloId;
entity.OsztalyCsoportId = csoportId;
entity.BelepesDatum = date;
entity.BejegyzesIdopontja = DateTime.Now;
entity.TanevId = parent.TanevId;
TanuloCsoportDal.Insert(entity);
if (zaradek != null)
{
SaveZaradek(parent.ConnectionType, zaradek, entity.ID);
}
}
}
private class CsoportbaSorolasJavitasLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private ITanuloCsoportDal _tanuloCsoportDal;
private CsoportbaSorolasLogic _csoportbaSorolasLogic;
private ITanuloCsoportDal TanuloCsoportDal => _tanuloCsoportDal ?? (_tanuloCsoportDal = h.TanuloCsoport());
private CsoportbaSorolasLogic CsoportbaSorolasLogic => _csoportbaSorolasLogic ?? (_csoportbaSorolasLogic = new CsoportbaSorolasLogic(parent, h));
public CsoportbaSorolasJavitasLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model)
{
return CsoportbaSorolasJavitas(model, OktNevelesiKategoriaEnum.NevelesOktatas);
}
public string Amikepzes(IOsztalyCsoportbaSorolas model)
{
return CsoportbaSorolasJavitas(model, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas);
}
public string Kollegium(IOsztalyCsoportbaSorolas model)
{
return CsoportbaSorolasJavitas(model, OktNevelesiKategoriaEnum.Kollegium);
}
public string EGYMI(IOsztalyCsoportbaSorolas model)
{
return CsoportbaSorolasJavitas(model, OktNevelesiKategoriaEnum.EGYMI);
}
private string CsoportbaSorolasJavitas(IOsztalyCsoportbaSorolas model, OktNevelesiKategoriaEnum kategoria)
{
SorolasValidate.ValidateModel(model, datum: false);
if (model.IsFromSzervezet)
{
SorolasValidate.SzervezetValidateModel(parent.ConnectionType, parent.TanevId, model);
}
if (!parent.TryGetCoport(model.ToDDL.Value, h, out var celCsoport))
{
throw new BlException(StringResourcesUtil.GetString(4020)/*A célcsoport nem létezik.*/);
}
var validationErrorMessages = new List<string>();
try
{
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var tanuloCsoportListByTanulos = GetTanuloCsoportByTanuloIds(tanuloIds, model.IsFromSzervezet ? (OktNevelesiKategoriaEnum?)null : kategoria);
foreach (var tanuloId in tanuloIds)
{
var tanuloCsoport = tanuloCsoportListByTanulos.Single(t => t.OsztalyCsoportId == model.FromDDL.Value && t.TanuloId == tanuloId);
if (!parent.CheckCsoportBesorolasDelete(tanuloCsoport.Id, out var errorMessages, model.IsFromSzervezet))
{
validationErrorMessages.AddRange(errorMessages);
continue;
}
var validate = new SorolasValidate(tanuloCsoport.Belepes, new List<int> { tanuloId }, parent.TanevId, model.IsFromSzervezet ? (OktNevelesiKategoriaEnum?)null : kategoria, h);
if (validate.TanuloMarTagjaCsoportnak(tanuloId, celCsoport.ID))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloMarTagjaAzAdottCsoportnak,
validate.TanuloAdatok[tanuloId].Nev,
tanuloCsoport.Belepes.ToShortDateString(),
validate.OsztalyCsoportAdatok[celCsoport.ID].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
if (celCsoport.OsztalyBontasId.IsEntityId())
{
if (validate.TanuloNemTagjaAzOsztalybontottOsztalynak(tanuloId, celCsoport.OsztalyBontasId, out var nemTagjaOsztalynakBeginDate))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloNemTagjaAzOsztalybontottOsztalynak,
validate.TanuloAdatok[tanuloId].Nev,
nemTagjaOsztalynakBeginDate.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[celCsoport.OsztalyBontasId].Nev,
validate.OsztalyCsoportAdatok[celCsoport.ID].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
}
else
{
if (validate.TanuloNemTagjaEgyetlenOsztalynakSem(tanuloId, out var osztalyNelkulBeginDate))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloNincsBesorolvaEgyetlenOsztalybaSem,
validate.TanuloAdatok[tanuloId].Nev,
osztalyNelkulBeginDate.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[celCsoport.ID].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
}
CsoportbaSorolasLogic.AlapKepzesCsoportbaSorolas(tanuloId, celCsoport.ID, tanuloCsoport.Belepes, model.Zaradek);
CsoportbolTorles(tanuloCsoport.Id);
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
private IEnumerable<TanuloOsztalyCsoport> GetTanuloCsoportByTanuloIds(IEnumerable<int> tanuloIds, OktNevelesiKategoriaEnum? kategoriaTipus)
{
var ds = TanuloCsoportDal.GetTanuloOsztalyCsoport(parent.TanevId, tanuloIds, kategoriaTipus);
return ds.Tables[0].AsEnumerable().Select(r => new TanuloOsztalyCsoport
{
Id = r.Field<int>("ID"),
OsztalyCsoportId = r.Field<int>("OsztalyCsoportId"),
TanuloId = r.Field<int>("TanuloId"),
Belepes = r.Field<DateTime>("BelepesDatum"),
Kilepes = r.Field<DateTime?>("KilepesDatum")
});
}
private void CsoportbolTorles(int tanuloCsoportId)
{
TanuloCsoportDal.Delete(tanuloCsoportId);
}
}
private class CsoportAtsorolasLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private ITanuloCsoportDal _tanuloCsoportDal;
private ITanuloCsoportDal TanuloCsoportDal => _tanuloCsoportDal ?? (_tanuloCsoportDal = h.TanuloCsoport());
public CsoportAtsorolasLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model)
{
return AktTanevAtsorolas(model, OktNevelesiKategoriaEnum.NevelesOktatas);
}
public string Amikepzes(IOsztalyCsoportbaSorolas model)
{
return AktTanevAtsorolas(model, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas);
}
public string Kollegium(IOsztalyCsoportbaSorolas model)
{
return AktTanevAtsorolas(model, OktNevelesiKategoriaEnum.Kollegium);
}
public string EGYMI(IOsztalyCsoportbaSorolas model)
{
return AktTanevAtsorolas(model, OktNevelesiKategoriaEnum.EGYMI);
}
private string AktTanevAtsorolas(IOsztalyCsoportbaSorolas model, OktNevelesiKategoriaEnum kategoria)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model);
if (model.IsFromSzervezet)
{
SorolasValidate.SzervezetValidateModel(parent.ConnectionType, parent.TanevId, model);
}
if (!parent.TryGetCoport(model.ToDDL.Value, h, out var celCsoport))
{
throw new BlException(StringResourcesUtil.GetString(4020)/*A célcsoport nem létezik.*/);
}
var validationErrorMessages = new List<string>();
try
{
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, model.IsFromSzervezet ? (OktNevelesiKategoriaEnum?)null : kategoria, h);
foreach (var tanuloId in tanuloIds)
{
var forrasTanuloCsoportId = validate.GetTanuloCsoportId(model.FromDDL.Value, tanuloId);
if (!parent.CheckCsoportAtsorolas(forrasTanuloCsoportId, model.Datum.Value, out var errorMessages, model.IsFromSzervezet))
{
validationErrorMessages.AddRange(errorMessages);
continue;
}
if (validate.TanuloMarTagjaCsoportnak(tanuloId, celCsoport.ID))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloMarTagjaAzAdottCsoportnak,
validate.TanuloAdatok[tanuloId].Nev,
model.Datum.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[celCsoport.ID].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
if (celCsoport.OsztalyBontasId.IsEntityId())
{
if (validate.TanuloNemTagjaAzOsztalybontottOsztalynak(tanuloId, celCsoport.OsztalyBontasId, out var nemTagjaOsztalynakBeginDate))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloNemTagjaAzOsztalybontottOsztalynak,
validate.TanuloAdatok[tanuloId].Nev,
nemTagjaOsztalynakBeginDate.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[celCsoport.OsztalyBontasId].Nev,
validate.OsztalyCsoportAdatok[celCsoport.ID].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
}
else
{
if (validate.TanuloNemTagjaEgyetlenOsztalynakSem(tanuloId, out var osztalyNelkulBeginDate))
{
var hibaUzenet = string.Format(OsztalyCsoportResource.TanuloNincsBesorolvaEgyetlenOsztalybaSem,
validate.TanuloAdatok[tanuloId].Nev,
osztalyNelkulBeginDate.Value.ToShortDateString(),
validate.OsztalyCsoportAdatok[celCsoport.ID].Nev);
validationErrorMessages.Add(hibaUzenet);
continue;
}
}
var isKellFeluletenMegadottZaradekRogzitese = model.ToElements.Single(i => i.Id == tanuloId).IsKellFeluletenMegadottZaradekRogzitese;
AlapAktTanevAtsorolasLogic(tanuloId, forrasTanuloCsoportId, celCsoport.ID, model.Datum.Value, model.Zaradek, isKellFeluletenMegadottZaradekRogzitese);
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (validationErrorMessages.Any())
{
var message = string.Join("<br/>", validationErrorMessages);
return message;
}
else
{
return string.Empty;
}
}
private void AlapAktTanevAtsorolasLogic(int tanuloId, int forrasTanuloCsoportId, int celCsoportId, DateTime date, SorolasZaradek zaradek, bool isKellFeluletenMegadottZaradekRogzitese)
{
var kisorolt = TanuloCsoportDal.Get(forrasTanuloCsoportId);
var kilepesDatuma = date;
if (kisorolt.BelepesDatum.HasValue && kisorolt.BelepesDatum.Value.Date.Equals(kilepesDatuma.Date))
{
TanuloCsoportDal.Delete(kisorolt, logikai: true);
}
else
{
kisorolt.KilepesDatum = kilepesDatuma;
kisorolt.KilepesRogzitesDatum = DateTime.Now;
TanuloCsoportDal.Update(kisorolt);
if (isKellFeluletenMegadottZaradekRogzitese)
{
SaveZaradek(parent.ConnectionType, zaradek, kisorolt.ID);
}
}
var besorolt = TanuloCsoportDal.Get();
besorolt.TanuloId = tanuloId;
besorolt.OsztalyCsoportId = celCsoportId;
besorolt.BelepesDatum = date;
besorolt.BejegyzesIdopontja = DateTime.Now;
besorolt.TanevId = parent.TanevId;
TanuloCsoportDal.Insert(besorolt);
}
}
private class CsoportKisorolaslLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private ITanuloCsoportDal _tanuloCsoportDal;
private ITanuloCsoportDal TanuloCsoportDal => _tanuloCsoportDal ?? (_tanuloCsoportDal = h.TanuloCsoport());
public CsoportKisorolaslLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model)
{
return CsoportKisorolas(model, OktNevelesiKategoriaEnum.NevelesOktatas);
}
public string Amikepzes(IOsztalyCsoportbaSorolas model)
{
return CsoportKisorolas(model, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas);
}
public string Kollegium(IOsztalyCsoportbaSorolas model)
{
return CsoportKisorolas(model, OktNevelesiKategoriaEnum.Kollegium);
}
public string EGYMI(IOsztalyCsoportbaSorolas model)
{
return CsoportKisorolas(model, OktNevelesiKategoriaEnum.EGYMI);
}
private string CsoportKisorolas(IOsztalyCsoportbaSorolas model, OktNevelesiKategoriaEnum kategoria)
{
SorolasValidate.IsDatumInTanev(parent.ConnectionType, model.Datum.Value);
SorolasValidate.ValidateModel(model, toDdl: false);
var errormessage = new List<string>();
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var hasError = false;
var nemTagjaAzOsztalynakABeallitottDatumIdejen = new List<string>();
var tanuloNemTagjaOCsADatumAlatt = new List<string>();
var nemAForrasCsoportTagjaAMegadottIdopontban = new List<string>();
try
{
var validate = new SorolasValidate(model.Datum.Value, tanuloIds, parent.TanevId, model.IsFromSzervezet ? (OktNevelesiKategoriaEnum?)null : kategoria, h);
DateTime? kilepesDatumValidalashoz = model.Datum;
foreach (var item in model.ToElements)
{
if (!item.Fromid.HasValue || !parent.TryGetCoport(item.Fromid.Value, h, out var forrasCsoport))
{
hasError = true;
errormessage.Add(StringResourcesUtil.GetString(4046));/*A forrás csoport nem létezik.*/
continue;
}
if (validate.NemTagjaAzOsztalynakABeallitottDatumIdejen(item.Id))
{
hasError = true;
nemTagjaAzOsztalynakABeallitottDatumIdejen.Add(validate.TanuloAdatok[item.Id].Nev);
continue;
}
if (validate.TanuloNemTagjaOCsADatumAlatt(item.Id, forrasCsoport.ID))
{
hasError = true;
tanuloNemTagjaOCsADatumAlatt.Add(validate.TanuloAdatok[item.Id].Nev);
continue;
}
var forrasTanuloCsoport = validate.GetOsztalyCsoportTanuloCsoportAdatok(forrasCsoport.ID, item.Id);
if (forrasTanuloCsoport == null)
{
hasError = true;
nemAForrasCsoportTagjaAMegadottIdopontban.Add(validate.TanuloAdatok[item.Id].Nev);
continue;
}
if (forrasTanuloCsoport.Kilepes.HasValue && !model.Datum.HasValue)
{
var tanevCo = new TanevHelper(parent.ConnectionType).GetTanevInfo();
kilepesDatumValidalashoz = tanevCo.UtolsoNap;
}
if (!parent.CheckCsoportBesorolasVegeModositas(forrasTanuloCsoport.Id, kilepesDatumValidalashoz.Value, out var errorMessages))
{
errormessage.AddRange(errorMessages);
hasError = true;
continue;
}
AlapkepzesCsoportbolKisorolas(forrasTanuloCsoport.Id, model.Datum.Value, model.Zaradek, item.IsKellFeluletenMegadottZaradekRogzitese);
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.NemTagjaAzOsztalynakABeallitottDatumIdejen, nemTagjaAzOsztalynakABeallitottDatumIdejen);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloNemTagjaOCsADatumAlatt, tanuloNemTagjaOCsADatumAlatt);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.NemAForrasCsoportTagjaAMegadottIdopontban, nemAForrasCsoportTagjaAMegadottIdopontban);
message += string.Join("<br/>", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public void AlapkepzesCsoportbolKisorolas(int tanuloCsoportId, DateTime date, SorolasZaradek zaradek, bool isKellFeluletenMegadottZaradekRogzitese = true, int? tanevId = null)
{
var entity = TanuloCsoportDal.Get(tanuloCsoportId);
if (entity.BelepesDatum.HasValue && entity.BelepesDatum.Value.Date.Equals(date.Date))
{
TanuloCsoportDal.Delete(entity);
}
else
{
entity.KilepesDatum = date;
entity.KilepesRogzitesDatum = DateTime.Now;
TanuloCsoportDal.Update(entity);
if (isKellFeluletenMegadottZaradekRogzitese)
{
SaveZaradek(parent.ConnectionType, zaradek, entity.ID, tanevId);
}
}
}
public void KisorolasOsztalybontasosCsoportokbol(int tanuloId, int osztalyId, DateTime belepesDatuma)
{
var csoportKapcsolatok = TanuloCsoportDal.GetTanuloOsztalyBontasosCsoportKapcsolatai(parent.TanevId, tanuloId, osztalyId);
foreach (DataRow row in csoportKapcsolatok.Tables[0].Rows)
{
var tcs = TanuloCsoportDal.Get(row.Field<int>("ID"));
if (tcs.BelepesDatum == belepesDatuma.Date)
{
TanuloCsoportDal.Delete(tcs);
}
else
{
if (tcs.KilepesDatum == null || tcs.KilepesDatum > belepesDatuma)
{
tcs.KilepesDatum = belepesDatuma;
TanuloCsoportDal.Update(tcs);
}
}
}
}
public void KisorolasOsszesCsoportbol(int tanuloId, int osztalyId, DateTime belepesDatuma)
{
var tanuloCsopList = TanuloCsoportDal.GetFeladatkategoriabaTartozoTanuloCsoportok(parent.TanevId, tanuloId, osztalyId);
foreach (DataRow row in tanuloCsopList.Tables[0].Rows)
{
var tcs = TanuloCsoportDal.Get(row.Field<int>("ID"));
if (tcs.BelepesDatum == belepesDatuma.Date)
{
TanuloCsoportDal.Delete(tcs);
}
else
{
if (tcs.KilepesDatum == null || tcs.KilepesDatum > belepesDatuma)
{
tcs.KilepesDatum = belepesDatuma;
TanuloCsoportDal.Update(tcs);
}
}
}
}
}
private class NebuloBesorolasLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private ITanuloDal _tanuloDal;
private INebuloDal _nebuloDal;
private ICimDal _cimDal;
private IGondviseloDal _gondviseloDal;
private ITelefonDal _telefonDal;
private IEmailDal _emailDal;
private IFelhasznaloBelepesDal _felhasznaloBelepesDal;
private ICimDal CimDal => _cimDal ?? (_cimDal = h.Cim());
private IGondviseloDal GondviseloDal => _gondviseloDal ?? (_gondviseloDal = h.Gondviselo());
private ITelefonDal TelefonDal => _telefonDal ?? (_telefonDal = h.Telefon());
private IEmailDal EmailDal => _emailDal ?? (_emailDal = h.Email());
private INebuloDal NebuloDal => _nebuloDal ?? (_nebuloDal = h.Nebulo());
private ITanuloDal TanuloDal => _tanuloDal ?? (_tanuloDal = h.Tanulo());
private IFelhasznaloBelepesDal FelhasznaloBelepesDal => _felhasznaloBelepesDal ?? (_felhasznaloBelepesDal = h.FelhasznaloBelepes());
public NebuloBesorolasLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model, bool isSzirIntezmeny)
{
var torlendoNebulokIdList = TanulokLetrehozasaNebulokbol(model, generateGondviseloBelepes: false, isSzirIntezmeny);
var alapkepzesTajekoztatoHibaUzenet = new OsztalybaSorolasElsoAlkalommalLogic(parent, h).Alapkepzes(model);
NebulokTorlese(torlendoNebulokIdList);
return alapkepzesTajekoztatoHibaUzenet;
}
public List<int> TanulokLetrehozasaNebulokbol(IOsztalyCsoportbaSorolas model, bool generateGondviseloBelepes, bool isSzirIntezmeny)
{
var torlendoNebulokIdList = new List<int>();
foreach (var item in model.ToElements)
{
var nebulo = NebuloDal.Get(item.Id);
var tanulo = TanuloDal.Get();
SetTanuloAlapadatok(model, nebulo, tanulo);
torlendoNebulokIdList.Add(item.Id);
item.Id = tanulo.ID;
SetTanuloCim(nebulo, tanulo);
if (!nebulo.TartozkodasiHelyAzonos)
{
SetTanuloTartozkodasiHely(nebulo, tanulo);
}
var gondviselo = GondviseloDal.Get();
SetTanuloGondviselo(gondviselo, nebulo, tanulo);
var felhasznaloBelepesHelper = new FelhasznaloBelepesHelper(new DalHandlerConnectionType(parent.ConnectionType, h));
if (generateGondviseloBelepes)
{
var gondviseloIndex = 1;
var gondviseloBelepesiNeve = CommonUtils.GenerateGondviseloBejelentkezesiNev(FelhasznaloBelepesDal, tanulo.OktatasiAzonosito, ref gondviseloIndex, parent.TanevId);
if (!isSzirIntezmeny)
{
felhasznaloBelepesHelper.GrantLogin(tanulo.ID, gondviseloBelepesiNeve.Trim(), tanulo.SzuletesiDatum.ToString("yyyy-MM-dd"), gondviselo.ID, kotelezoValtoztatni: true);
}
}
if (nebulo.KepviseloCimeAzonos)
{
SetTanuloGondviseloCimeAzonos(nebulo, tanulo, gondviselo);
}
else
{
SetTanuloGondviseloCime(nebulo, tanulo, gondviselo);
}
if (!string.IsNullOrWhiteSpace(nebulo.TKEmailCim))
{
SetTanuloGondviseloEmail(nebulo, gondviselo, tanulo);
}
if (!string.IsNullOrWhiteSpace(nebulo.TKTelefon))
{
SetTanuloGondviseloTelefon(nebulo, gondviselo, tanulo);
}
if (!string.IsNullOrWhiteSpace(nebulo.TKNeve2))
{
var gondviselo2 = GondviseloDal.Get();
SetTanuloGondviselo2(gondviselo2, nebulo, tanulo);
var gondviseloIndex = 2;
var gondviseloBelepesiNeve = CommonUtils.GenerateGondviseloBejelentkezesiNev(FelhasznaloBelepesDal, tanulo.OktatasiAzonosito, ref gondviseloIndex, parent.TanevId);
if (!isSzirIntezmeny)
{
felhasznaloBelepesHelper.GrantLogin(tanulo.ID, gondviseloBelepesiNeve.Trim(), tanulo.SzuletesiDatum.ToString("yyyy-MM-dd"), gondviselo2.ID, kotelezoValtoztatni: true);
}
if (nebulo.Kepviselo2CimeAzonos)
{
SetTanuloGondviselo2CimAzonos(nebulo, tanulo, gondviselo2);
}
else
{
SetTanuloGondviselo2Cim(nebulo, tanulo, gondviselo2);
}
if (!string.IsNullOrWhiteSpace(nebulo.TKEmailCim2))
{
SetTanuloGondviselo2Email(nebulo, gondviselo2, tanulo);
}
if (!string.IsNullOrWhiteSpace(nebulo.TKTelefon2))
{
SetTanuloGondviselo2Telefon(nebulo, gondviselo2, tanulo);
}
}
}
return torlendoNebulokIdList;
}
private void SetTanuloGondviselo2Telefon(INebulo nebulo, IGondviselo gondviselo2, ITanulo tanulo)
{
var gondviseloTelefon = TelefonDal.Get();
gondviseloTelefon.Alapertelmezett = true;
gondviseloTelefon.TelefonSzam = nebulo.TKTelefon2;
gondviseloTelefon.TelefonTipusa = (int)TelefonTipusEnum.Mobil;
gondviseloTelefon.GondviseloId = gondviselo2.ID;
gondviseloTelefon.FelhasznaloId = tanulo.ID;
gondviseloTelefon.TanevId = tanulo.TanevId;
TelefonDal.Insert(gondviseloTelefon);
}
private void SetTanuloGondviselo2Email(INebulo nebulo, IGondviselo gondviselo2, ITanulo tanulo)
{
var gondviseloEmail = EmailDal.Get();
gondviseloEmail.Alapertelmezett = true;
gondviseloEmail.EmailCim = nebulo.TKEmailCim2;
gondviseloEmail.EmailTipusa = (int)EmailTipusEnum.Hivatalos;
gondviseloEmail.GondviseloId = gondviselo2.ID;
gondviseloEmail.FelhasznaloId = tanulo.ID;
gondviseloEmail.TanevId = tanulo.TanevId;
EmailDal.Insert(gondviseloEmail);
}
private void SetTanuloGondviselo2Cim(INebulo nebulo, ITanulo tanulo, IGondviselo gondviselo2)
{
var gondviseloCim = CimDal.Get();
gondviseloCim.Ajto = nebulo.TKAjto2;
gondviseloCim.CimTipusa = (int)CimTipusEnum.allando_lakcim;
gondviseloCim.Emelet = nebulo.TKEmelet2;
gondviseloCim.FelhasznaloId = tanulo.ID;
gondviseloCim.GondviseloId = gondviselo2.ID;
gondviseloCim.Hazszam = nebulo.TKHazszam2;
gondviseloCim.IranyitoSzam = nebulo.TKIranyitoszam2;
gondviseloCim.Kozterulet = nebulo.TKKozteruletNev2;
gondviseloCim.KozteruletJellegeNev = nebulo.TKKozteruletJellegeNev2;
gondviseloCim.Orszag = nebulo.TKOrszagTipusId2 ?? (int)OrszagTipusEnum.Magyarorszag;
gondviseloCim.Varos = nebulo.TKHelysegNev2;
gondviseloCim.TanevId = tanulo.TanevId;
CimDal.Insert(gondviseloCim);
}
private void SetTanuloGondviselo2CimAzonos(INebulo nebulo, ITanulo tanulo, IGondviselo gondviselo2)
{
var gondviseloCim = CimDal.Get();
gondviseloCim.Ajto = nebulo.Ajto;
gondviseloCim.CimTipusa = (int)CimTipusEnum.allando_lakcim;
gondviseloCim.Emelet = nebulo.Emelet;
gondviseloCim.FelhasznaloId = tanulo.ID;
gondviseloCim.GondviseloId = gondviselo2.ID;
gondviseloCim.Hazszam = nebulo.Hazszam;
gondviseloCim.IranyitoSzam = nebulo.Iranyitoszam;
gondviseloCim.Kozterulet = nebulo.KozteruletNev;
gondviseloCim.KozteruletJellegeNev = nebulo.KozteruletJellegeNev;
gondviseloCim.Orszag = nebulo.OrszagTipusId ?? (int)OrszagTipusEnum.Magyarorszag;
gondviseloCim.Varos = nebulo.HelysegNev;
gondviseloCim.TanevId = tanulo.TanevId;
CimDal.Insert(gondviseloCim);
}
private void SetTanuloGondviselo2(IGondviselo gondviselo2, INebulo nebulo, ITanulo tanulo)
{
gondviselo2.Aktiv = true;
gondviselo2.Nev = nebulo.TKNeve2;
gondviselo2.RokonsagFoka = nebulo.TKRokonsagiFoka2 ?? (int)RokonsagiFokEnum.na;
gondviselo2.TanuloId = tanulo.ID;
gondviselo2.TanevId = tanulo.TanevId;
GondviseloDal.Insert(gondviselo2);
}
private void SetTanuloGondviseloTelefon(INebulo nebulo, IGondviselo gondviselo, ITanulo tanulo)
{
var gondviseloTelefon = TelefonDal.Get();
gondviseloTelefon.Alapertelmezett = true;
gondviseloTelefon.TelefonSzam = nebulo.TKTelefon;
gondviseloTelefon.TelefonTipusa = (int)TelefonTipusEnum.Mobil;
gondviseloTelefon.GondviseloId = gondviselo.ID;
gondviseloTelefon.FelhasznaloId = tanulo.ID;
gondviseloTelefon.TanevId = tanulo.TanevId;
TelefonDal.Insert(gondviseloTelefon);
}
private void SetTanuloGondviseloEmail(INebulo nebulo, IGondviselo gondviselo, ITanulo tanulo)
{
var gondviseloEmail = EmailDal.Get();
gondviseloEmail.Alapertelmezett = true;
gondviseloEmail.EmailCim = nebulo.TKEmailCim;
gondviseloEmail.EmailTipusa = (int)EmailTipusEnum.Hivatalos;
gondviseloEmail.GondviseloId = gondviselo.ID;
gondviseloEmail.FelhasznaloId = tanulo.ID;
gondviseloEmail.TanevId = tanulo.TanevId;
EmailDal.Insert(gondviseloEmail);
}
private void SetTanuloGondviseloCime(INebulo nebulo, ITanulo tanulo, IGondviselo gondviselo)
{
var gondviseloCim = CimDal.Get();
gondviseloCim.Ajto = nebulo.TKAjto;
gondviseloCim.CimTipusa = (int)CimTipusEnum.allando_lakcim;
gondviseloCim.Emelet = nebulo.TKEmelet;
gondviseloCim.FelhasznaloId = tanulo.ID;
gondviseloCim.GondviseloId = gondviselo.ID;
gondviseloCim.Hazszam = nebulo.TKHazszam;
gondviseloCim.IranyitoSzam = nebulo.TKIranyitoszam;
gondviseloCim.Kozterulet = nebulo.TKKozteruletNev;
gondviseloCim.KozteruletJellegeNev = nebulo.TKKozteruletJellegeNev;
gondviseloCim.Orszag = nebulo.TKOrszagTipusId ?? (int)OrszagTipusEnum.Magyarorszag;
gondviseloCim.Varos = nebulo.TKHelysegNev;
gondviseloCim.TanevId = tanulo.TanevId;
CimDal.Insert(gondviseloCim);
}
private void SetTanuloGondviseloCimeAzonos(INebulo nebulo, ITanulo tanulo, IGondviselo gondviselo)
{
var gondviseloCim = CimDal.Get();
gondviseloCim.Ajto = nebulo.Ajto;
gondviseloCim.CimTipusa = (int)CimTipusEnum.allando_lakcim;
gondviseloCim.Emelet = nebulo.Emelet;
gondviseloCim.FelhasznaloId = tanulo.ID;
gondviseloCim.GondviseloId = gondviselo.ID;
gondviseloCim.Hazszam = nebulo.Hazszam;
gondviseloCim.IranyitoSzam = nebulo.Iranyitoszam;
gondviseloCim.Kozterulet = nebulo.KozteruletNev;
gondviseloCim.KozteruletJellegeNev = nebulo.KozteruletJellegeNev;
gondviseloCim.Orszag = nebulo.OrszagTipusId ?? (int)OrszagTipusEnum.Magyarorszag;
gondviseloCim.Varos = nebulo.HelysegNev;
gondviseloCim.TanevId = tanulo.TanevId;
CimDal.Insert(gondviseloCim);
}
private void SetTanuloGondviselo(IGondviselo gondviselo, INebulo nebulo, ITanulo tanulo)
{
gondviselo.Aktiv = true;
gondviselo.Nev = nebulo.TKNeve;
gondviselo.RokonsagFoka = nebulo.TKRokonsagiFoka ?? (int)RokonsagiFokEnum.na;
gondviselo.TanuloId = tanulo.ID;
gondviselo.TanevId = tanulo.TanevId;
GondviseloDal.Insert(gondviselo);
}
private void SetTanuloTartozkodasiHely(INebulo nebulo, ITanulo tanulo)
{
var tanuloTartozkodasiHely = CimDal.Get();
tanuloTartozkodasiHely.Ajto = nebulo.THAjto;
tanuloTartozkodasiHely.CimTipusa = (int)CimTipusEnum.tartozkodasi_hely;
tanuloTartozkodasiHely.Emelet = nebulo.THEmelet;
tanuloTartozkodasiHely.FelhasznaloId = tanulo.ID;
tanuloTartozkodasiHely.Hazszam = nebulo.THHazszam;
tanuloTartozkodasiHely.IranyitoSzam = nebulo.THIranyitoszam;
tanuloTartozkodasiHely.Kozterulet = nebulo.THKozteruletNev;
tanuloTartozkodasiHely.KozteruletJellegeNev = nebulo.THKozteruletJellegeNev;
tanuloTartozkodasiHely.Orszag = nebulo.THOrszagTipusId ?? (int)OrszagTipusEnum.Magyarorszag;
tanuloTartozkodasiHely.Varos = nebulo.THHelysegNev;
tanuloTartozkodasiHely.TanevId = tanulo.TanevId;
CimDal.Insert(tanuloTartozkodasiHely);
}
private void SetTanuloCim(INebulo nebulo, ITanulo tanulo)
{
var tanuloAllandoCim = CimDal.Get();
tanuloAllandoCim.Ajto = nebulo.Ajto;
tanuloAllandoCim.CimTipusa = (int)CimTipusEnum.allando_lakcim;
tanuloAllandoCim.Emelet = nebulo.Emelet;
tanuloAllandoCim.FelhasznaloId = tanulo.ID;
tanuloAllandoCim.Hazszam = nebulo.Hazszam;
tanuloAllandoCim.IranyitoSzam = nebulo.Iranyitoszam;
tanuloAllandoCim.Kozterulet = nebulo.KozteruletNev;
tanuloAllandoCim.KozteruletJellegeNev = nebulo.KozteruletJellegeNev;
tanuloAllandoCim.Orszag = nebulo.OrszagTipusId ?? (int)OrszagTipusEnum.Magyarorszag;
tanuloAllandoCim.Varos = nebulo.HelysegNev;
tanuloAllandoCim.TanevId = tanulo.TanevId;
CimDal.Insert(tanuloAllandoCim);
}
private void SetTanuloAlapadatok(IOsztalyCsoportbaSorolas model, INebulo nebulo, ITanulo tanulo)
{
if (nebulo.Allampolgarsaga.HasValue)
{
tanulo.Allampolgarsaga = nebulo.Allampolgarsaga.Value;
}
tanulo.Allampolgarsaga2 = nebulo.Allampolgarsaga2;
if (nebulo.Anyanyelve.HasValue)
{
tanulo.Anyanyelve = nebulo.Anyanyelve.Value;
}
tanulo.NevSorrend = false;
tanulo.Elotag = Extensions.NameExtensions.CleanElotag(nebulo.Elotag);
tanulo.Vezeteknev = nebulo.TanuloCsaladiNeve;
tanulo.Utonev = nebulo.TanuloUtoneve;
tanulo.NyomtatasiNev = Extensions.NameExtensions.GetNevSorrendben("F", tanulo.Elotag, tanulo.Vezeteknev, tanulo.Utonev);
tanulo.KeresesiNev = CommonUtilsDal.KopaszNev(tanulo.NyomtatasiNev);
tanulo.SzuletesiNevSorrend = false;
tanulo.SzuletesiNevElotag = null;
tanulo.SzuletesiVezeteknev = nebulo.SzuletesiCsaladiNeve;
tanulo.SzuletesiUtonev = nebulo.SzuletesiUtoneve;
tanulo.SzuletesiNev = Extensions.NameExtensions.GetNevSorrendben("F", tanulo.SzuletesiNevElotag, tanulo.SzuletesiVezeteknev, tanulo.SzuletesiUtonev);
tanulo.AnyjaNeveSorrend = false;
tanulo.AnyjaNeveElotag = null;
tanulo.AnyjaVezetekneve = nebulo.EdesanyjaSzuletesiCsaladiNeve;
tanulo.AnyjaUtoneve = nebulo.EdesanyjaSzuletesiUtoneve;
var anyjaNeve = Extensions.NameExtensions.GetNevSorrendben("F", tanulo.AnyjaNeveElotag, tanulo.AnyjaVezetekneve, tanulo.AnyjaUtoneve);
if (anyjaNeve.Length > 64)
{
tanulo.AnyjaNeve = anyjaNeve.Substring(0, 64);
}
else
{
tanulo.AnyjaNeve = anyjaNeve;
}
if (nebulo.Neme.HasValue)
{
tanulo.Neme = nebulo.Neme.Value;
}
tanulo.OktatasiAzonosito = nebulo.OktatasiAzonositoSzama;
tanulo.SzuletesiHely = nebulo.SzuletesiHely;
tanulo.SzuletesiDatum = nebulo.SzuletesiIdo;
tanulo.SzuletesiOrszag = nebulo.SzuletesiOrszag;
tanulo.BTMProblemas = nebulo.BTM ?? false;
tanulo.BTMLetszamSuly = nebulo.BTMLetszamSuly ?? 1;
tanulo.SajatosNevelesu = nebulo.SNI ?? false;
tanulo.SNILetszamSuly = nebulo.SNILetszamSuly.HasValue ? Convert.ToInt32(nebulo.SNILetszamSuly) : 1;
tanulo.Vezeteknev = nebulo.TanuloCsaladiNeve;
tanulo.Utonev = nebulo.TanuloUtoneve;
tanulo.TanevId = parent.TanevId;
tanulo.IntezmenyId = parent.IntezmenyId;
tanulo.FelvetelTaneveId = parent.TanevId;
if (model.Datum.HasValue)
{
tanulo.NyilvantartasKezdete = model.Datum.Value;
}
tanulo.HatranyosHelyzetu = (int)HatranyosHelyzetTipusEnum.nem_hatranyos_helyzetu;
tanulo.TestnevelesTipusa = (int)TestnevelesTipusEnum.normal_testneveles;
TanuloDal.Insert(tanulo);
}
private void NebulokTorlese(List<int> torlendoNebulokIdList)
{
foreach (var nebulo in torlendoNebulokIdList)
{
NebuloDal.Delete(nebulo);
}
}
}
private class OsztalyLeptetesLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private ITanuloDal _tanuloDal;
private IOsztalyDal _osztalyDal;
private ITanuloCsoportDal _tanuloCsoportDal;
private TanuloHelper _tanuloHelper;
private TanuloTanugyiAdatokHelper _tanuloTanugyiAdatokHelper;
private CsoportKisorolaslLogic _csoportKisorolaslLogic;
private OsztalyKisorolaslLogic _osztalyKisorolaslLogic;
private OsztalybaSorolasElsoAlkalommalLogic _osztalybaSorolasLogic;
private ITanuloDal TanuloDal => _tanuloDal ?? (_tanuloDal = h.Tanulo());
private ITanuloCsoportDal TanuloCsoportDal => _tanuloCsoportDal ?? (_tanuloCsoportDal = h.TanuloCsoport());
private IOsztalyDal OsztalyDal => _osztalyDal ?? (_osztalyDal = h.Osztaly());
private TanuloHelper TanuloHelper => _tanuloHelper ?? (_tanuloHelper = new TanuloHelper(parent.ConnectionType));
private TanuloTanugyiAdatokHelper TanuloTanugyiAdatok => _tanuloTanugyiAdatokHelper ?? (_tanuloTanugyiAdatokHelper = new TanuloTanugyiAdatokHelper(new DalHandlerConnectionType(parent.ConnectionType, h)));
private CsoportKisorolaslLogic CsoportKisorolasl => _csoportKisorolaslLogic ?? (_csoportKisorolaslLogic = new CsoportKisorolaslLogic(parent, h));
private OsztalyKisorolaslLogic OsztalyKisorolasl => _osztalyKisorolaslLogic ?? (_osztalyKisorolaslLogic = new OsztalyKisorolaslLogic(parent, h));
private OsztalybaSorolasElsoAlkalommalLogic OsztalybaSorolasLogic => _osztalybaSorolasLogic ?? (_osztalybaSorolasLogic = new OsztalybaSorolasElsoAlkalommalLogic(parent, h));
public OsztalyLeptetesLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model)
{
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
DateTime belepesDatuma;
DateTime kilepesDatuma;
var th = new TanevHelper(parent.ConnectionType);
var kovTanevDatumok = th.GetTanevInfo();
belepesDatuma = kovTanevDatumok.KezdoNap;
// A kilépés dátumának egy nappal előbbinek kell lenni, mint a belépésnek.
kilepesDatuma = belepesDatuma.AddDays(-1);
var validate = new SorolasValidate(belepesDatuma, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.NevelesOktatas, h);
SorolasValidate.ValidateModel(model, datum: false, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out var osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
var sikeresAtsoroltTanulok = new List<int>();
var errormessage = new List<string>();
var hasError = false;
var marTagjaOsztalynak = new List<string>();
var tanuloMarOsztalyCsoportTagja = new List<string>();
var tanuloOsztalyCsoportTagjaLesz = new List<string>();
var marKiLettAzOsztalybolSorolva = new List<string>();
var osztalyokSzamaLimitTullepes = new List<string>();
try
{
foreach (var tanuloId in tanuloIds)
{
int fromOsztalyId = model.ToElements.Single(i => i.Id == tanuloId).Fromid.Value;
var message = TanuloHelper.GetUtkozoOsztalyok(tanuloId, belepesDatuma, model.ToDDL.Value, OktNevelesiKategoriaEnum.NevelesOktatas, true, fromOsztalyId);
if (!string.IsNullOrWhiteSpace(message))
{
hasError = true;
errormessage.Add(message);
continue;
}
if (validate.OsztalyokSzamaLimitTullepes(tanuloId, OktNevelesiKategoriaEnum.NevelesOktatas))
{
hasError = true;
osztalyokSzamaLimitTullepes.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (!validate.NemTagjaAzOsztalynakABeallitottDatumIdejen(tanuloId))
{
hasError = true;
marTagjaOsztalynak.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.TanuloMarOsztalyCsoportTagja(tanuloId, osztaly.ID))
{
hasError = true;
tanuloMarOsztalyCsoportTagja.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.TanuloOsztalyCsoportTagjaLesz(tanuloId, osztaly.ID))
{
hasError = true;
tanuloOsztalyCsoportTagjaLesz.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.MarKiLettAzOsztalybolSorolva(parent.aktivTanevId, tanuloId, model.FromDDL.Value, kilepesDatuma))
{
hasError = true;
marKiLettAzOsztalybolSorolva.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
AlapKepzesOsztalyLeptetes(tanuloId, fromOsztalyId, model.ToDDL.Value, kilepesDatuma, belepesDatuma, model.Zaradek, parent.isSzakkepzoIntezmeny, parent.isSelectedTanev21_22OrLater);
sikeresAtsoroltTanulok.Add(tanuloId);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresAtsoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresAtsoroltTanulok, model.ToDDL.Value, h);
parent.UpdateTanulokSzakkepzoAdatok(sikeresAtsoroltTanulok, model.ToDDL.Value, h);
parent.UpdateTanulokSzakkepzesiJuttatasok(sikeresAtsoroltTanulok, h);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.MarTagjaOsztalynak, marTagjaOsztalynak);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloMarOsztalyCsoportTagja, tanuloMarOsztalyCsoportTagja);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloOsztalyCsoportTagjaLesz, tanuloOsztalyCsoportTagjaLesz);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.MarKiLettAzOsztalybolSorolva, marKiLettAzOsztalybolSorolva);
message += parent.GetErrorMessageForTanuloList(ErrorResource.TanuloOsztalybasorolasainakSzamaMeghaladjaALimitet, osztalyokSzamaLimitTullepes);
message += string.Join("<br/>", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public string Amikepzes(IOsztalyCsoportbaSorolas model)
{
SorolasValidate.ValidateModel(model, datum: false, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out var osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
DateTime belepesDatuma;
DateTime kilepesDatuma;
var th = new TanevHelper(parent.ConnectionType);
var kovTanevDatumok = th.GetTanevInfo();
belepesDatuma = kovTanevDatumok.KezdoNap;
// A kilépés dátumának egy nappal előbbinek kell lenni, mint a belépésnek.
kilepesDatuma = belepesDatuma.AddDays(-1);
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresenLeptetettTanulok = new List<int>();
var validate = new SorolasValidate(belepesDatuma, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas, h);
var hasError = false;
var jogviszonyLimitTullepes = new List<string>();
var tanuloMarOsztalyCsoportTagja = new List<string>();
var tanuloOsztalyCsoportTagjaLesz = new List<string>();
var errormessage = new List<string>();
var osztalyokSzamaLimitTullepes = new List<string>();
try
{
foreach (var tanuloId in tanuloIds)
{
int fromOsztalyId = model.ToElements.Single(i => i.Id == tanuloId).Fromid.Value;
if (validate.OsztalyokSzamaLimitTullepes(tanuloId, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas))
{
hasError = true;
osztalyokSzamaLimitTullepes.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.JogviszonyLimitTullepes(tanuloId))
{
hasError = true;
jogviszonyLimitTullepes.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.TanuloMarOsztalyCsoportTagja(tanuloId, osztaly.ID))
{
hasError = true;
tanuloMarOsztalyCsoportTagja.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.TanuloOsztalyCsoportTagjaLesz(tanuloId, osztaly.ID))
{
hasError = true;
tanuloOsztalyCsoportTagjaLesz.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
AmiKepzesOsztalyLeptetes(tanuloId, fromOsztalyId, model.ToDDL.Value, kilepesDatuma, belepesDatuma, model.Zaradek, parent.isSzakkepzoIntezmeny, parent.isSelectedTanev21_22OrLater);
sikeresenLeptetettTanulok.Add(tanuloId);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresenLeptetettTanulok, model);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.JogviszonyLimitTullepes, jogviszonyLimitTullepes);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloMarOsztalyCsoportTagja, tanuloMarOsztalyCsoportTagja);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloOsztalyCsoportTagjaLesz, tanuloOsztalyCsoportTagjaLesz);
message += parent.GetErrorMessageForTanuloList(ErrorResource.TanuloOsztalybasorolasainakSzamaMeghaladjaALimitet, osztalyokSzamaLimitTullepes);
message += string.Join("<br />", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public string Kollegium(IOsztalyCsoportbaSorolas model)
{
SorolasValidate.ValidateModel(model, datum: false, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out var osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
DateTime belepesDatuma;
DateTime kilepesDatuma;
var th = new TanevHelper(parent.ConnectionType);
var kovTanevDatumok = th.GetTanevInfo();
belepesDatuma = kovTanevDatumok.KezdoNap;
// A kilépés dátumának egy nappal előbbinek kell lenni, mint a belépésnek.
kilepesDatuma = belepesDatuma.AddDays(-1);
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresAtsoroltTanulok = new List<int>();
var errormessage = new List<string>();
var validate = new SorolasValidate(belepesDatuma, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.Kollegium, h);
var hasError = false;
var marTagjaOsztalynak = new List<string>();
var tanuloMarOsztalyCsoportTagja = new List<string>();
var tanuloOsztalyCsoportTagjaLesz = new List<string>();
var osztalyokSzamaLimitTullepes = new List<string>();
try
{
foreach (var tanuloId in tanuloIds)
{
int fromOsztalyId = model.ToElements.Single(i => i.Id == tanuloId).Fromid.Value;
var message = TanuloHelper.GetUtkozoOsztalyok(tanuloId, belepesDatuma, model.ToDDL.Value, OktNevelesiKategoriaEnum.Kollegium, true, fromOsztalyId);
if (!string.IsNullOrWhiteSpace(message))
{
hasError = true;
errormessage.Add(message);
continue;
}
if (validate.OsztalyokSzamaLimitTullepes(tanuloId, OktNevelesiKategoriaEnum.Kollegium))
{
hasError = true;
osztalyokSzamaLimitTullepes.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (!validate.NemTagjaAzOsztalynakABeallitottDatumIdejen(tanuloId))
{
hasError = true;
marTagjaOsztalynak.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.TanuloMarOsztalyCsoportTagja(tanuloId, osztaly.ID))
{
hasError = true;
tanuloMarOsztalyCsoportTagja.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.TanuloOsztalyCsoportTagjaLesz(tanuloId, osztaly.ID))
{
hasError = true;
tanuloOsztalyCsoportTagjaLesz.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
KollegiumOsztalyLeptetes(tanuloId, fromOsztalyId, model.ToDDL.Value, kilepesDatuma, belepesDatuma, model.Zaradek, parent.isSzakkepzoIntezmeny, parent.isSelectedTanev21_22OrLater);
sikeresAtsoroltTanulok.Add(tanuloId);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresAtsoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresAtsoroltTanulok, model.ToDDL.Value, h, false);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.MarTagjaOsztalynak, marTagjaOsztalynak);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloMarOsztalyCsoportTagja, tanuloMarOsztalyCsoportTagja);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloOsztalyCsoportTagjaLesz, tanuloOsztalyCsoportTagjaLesz);
message += parent.GetErrorMessageForTanuloList(ErrorResource.TanuloOsztalybasorolasainakSzamaMeghaladjaALimitet, osztalyokSzamaLimitTullepes);
message += string.Join("<br />", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
public string EGYMI(IOsztalyCsoportbaSorolas model)
{
SorolasValidate.ValidateModel(model, datum: false, fromDdl: false, toDdl: true);
if (!parent.TryGetOsztaly(model.ToDDL.Value, h, out var osztaly))
{
throw new BlException(StringResourcesUtil.GetString(4028));
}
DateTime belepesDatuma;
DateTime kilepesDatuma;
var th = new TanevHelper(parent.ConnectionType);
var kovTanevDatumok = th.GetTanevInfo();
belepesDatuma = kovTanevDatumok.KezdoNap;
// A kilépés dátumának egy nappal előbbinek kell lenni, mint a belépésnek.
kilepesDatuma = belepesDatuma.AddDays(-1);
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var sikeresAtsoroltTanulok = new List<int>();
var errormessage = new List<string>();
var validate = new SorolasValidate(belepesDatuma, tanuloIds, parent.TanevId, OktNevelesiKategoriaEnum.EGYMI, h);
var hasError = false;
var marTagjaOsztalynak = new List<string>();
var tanuloMarOsztalyCsoportTagja = new List<string>();
var tanuloOsztalyCsoportTagjaLesz = new List<string>();
var osztalyokSzamaLimitTullepes = new List<string>();
try
{
foreach (var tanuloId in tanuloIds)
{
int fromOsztalyId = model.ToElements.Single(i => i.Id == tanuloId).Fromid.Value;
var message = TanuloHelper.GetUtkozoOsztalyok(tanuloId, belepesDatuma, model.ToDDL.Value, OktNevelesiKategoriaEnum.EGYMI, true, fromOsztalyId);
if (!string.IsNullOrWhiteSpace(message))
{
hasError = true;
errormessage.Add(message);
continue;
}
if (validate.OsztalyokSzamaLimitTullepes(tanuloId, OktNevelesiKategoriaEnum.EGYMI))
{
hasError = true;
osztalyokSzamaLimitTullepes.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (!validate.NemTagjaAzOsztalynakABeallitottDatumIdejen(tanuloId))
{
hasError = true;
marTagjaOsztalynak.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.TanuloMarOsztalyCsoportTagja(tanuloId, osztaly.ID))
{
hasError = true;
tanuloMarOsztalyCsoportTagja.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
if (validate.TanuloOsztalyCsoportTagjaLesz(tanuloId, osztaly.ID))
{
hasError = true;
tanuloOsztalyCsoportTagjaLesz.Add(validate.TanuloAdatok[tanuloId].Nev);
continue;
}
EGYMIOsztalyLeptetes(tanuloId, fromOsztalyId, model.ToDDL.Value, kilepesDatuma, belepesDatuma, model.Zaradek, parent.isSzakkepzoIntezmeny, parent.isSelectedTanev21_22OrLater);
sikeresAtsoroltTanulok.Add(tanuloId);
}
parent.EugyErtesitesTanuloOsztalyBesorolasStatuszValtozasrol(sikeresAtsoroltTanulok, model);
parent.UpdateTanulokSzakkepzesesAdatok(sikeresAtsoroltTanulok, model.ToDDL.Value, h, false);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.MarTagjaOsztalynak, marTagjaOsztalynak);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloMarOsztalyCsoportTagja, tanuloMarOsztalyCsoportTagja);
message += parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloOsztalyCsoportTagjaLesz, tanuloOsztalyCsoportTagjaLesz);
message += parent.GetErrorMessageForTanuloList(ErrorResource.TanuloOsztalybasorolasainakSzamaMeghaladjaALimitet, osztalyokSzamaLimitTullepes);
message += string.Join("<br />", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
private void AmiKepzesOsztalyLeptetes(int tanuloId, int fromOsztalyId, int toOsztalyId, DateTime kilepesDatum, DateTime belepesDatum, SorolasZaradek zaradek, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater)
{
try
{
var tanulo = TanuloDal.Get(tanuloId);
var newTanuloId = string.IsNullOrEmpty(tanulo.OktatasiAzonosito) ? (int)default : TanuloCsoportDal.CheckOktatasiAzonosito(tanulo.OktatasiAzonosito, parent.TanevId);
if (newTanuloId <= 0)
{
newTanuloId = TanuloCsoportDal.Check4TValidacio((int)Validation4TEnum.Tanulo, tanulo.Vezeteknev, tanulo.Utonev, tanulo.AnyjaNeve, tanulo.SzuletesiHely, tanulo.SzuletesiDatum, null, parent.TanevId, tanulo.Elotag);
if (newTanuloId <= 0)
{
newTanuloId = TanuloHelper.CloneTanuloEntity(tanulo, parent.aktivTanevId, parent.kovTanevId.Value);
}
}
var tanuloAktOsztaly = tanulo.OsztalyCsoport.First(x => x.OsztalyCsoportId == fromOsztalyId && (x.KilepesDatum == null || x.KilepesDatum > kilepesDatum) && !x.Torolt);
var tanuloUjOsztalya = OsztalyDal.Get(toOsztalyId);
var tcsUj = TanuloCsoportDal.Get();
tcsUj.TanuloId = newTanuloId;
tcsUj.OsztalyCsoportId = toOsztalyId;
tcsUj.BejegyzesIdopontja = DateTime.Now;
tcsUj.BelepesDatum = belepesDatum;
tcsUj.TanevId = parent.TanevId;
TanuloCsoportDal.Insert(tcsUj);
SaveZaradek(parent.ConnectionType, zaradek, tanuloAktOsztaly.ID, tanuloAktOsztaly.TanevId);
var osztalybontottCsoportok = new List<(int Id, int CsoportId, bool AutoEgyeni, int CsoportTanuloSzam)>();
var egyeniCsoportok = OsztalybaSorolasLogic.GetOsztalyEgyeniCSoportjai(toOsztalyId);
var rows = TanuloCsoportDal.GetTanuloOsztalyBontasosCsoportKapcsolatai(parent.aktivTanevId, tanuloId, fromOsztalyId).Tables[0].Rows;
foreach (DataRow row in rows)
{
osztalybontottCsoportok.Add((SDAConvert.ToInt32(row["Id"]),
SDAConvert.ToInt32(row["CsoportId"]),
SDAConvert.ToBooleanFromTF(row["C_ISAUTOEGYENICSOPORT"]),
SDAConvert.ToInt32(row["CsoportTanuloSzam"])
));
}
if (tanuloUjOsztalya.MuveszetiAgId == (int)MuveszetiAgEnum.ZenemuveszetiAg && osztalybontottCsoportok.Any(x => x.AutoEgyeni || x.CsoportTanuloSzam == 1))
{
OsztalybaSorolasLogic.EgyeniCSoportLetrehozas(newTanuloId, tanulo.NyomtatasiNev, tanulo.SzuletesiDatum, belepesDatum, tanuloUjOsztalya, egyeniCsoportok);
}
OsztalyKisorolasl.AmiOsztalyKisorolas(tanulo.ID, OsztalyDal.Get(tanuloAktOsztaly.OsztalyCsoportId), kilepesDatum, zaradek, false);
TanuloTanugyiAdatok.InsertTanugyiAdatForLeptetes(tanuloAktOsztaly.TanuloTanugyiAdatok, tcsUj.ID, tanuloUjOsztalya, isSzakkepzoIntezmeny, isSelectedTanev21_22OrLater);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
var tanulo = h.Tanulo().Get(tanuloId);
throw new BlException($"{tanulo.NyomtatasiNev} {OsztalyCsoportResource.KisorolasKozbenHibaTortent}", e);
}
catch (BlException)
{
throw;
}
catch
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
}
}
private void AlapKepzesOsztalyLeptetes(int tanuloId, int fromOsztalyId, int toOsztalyId, DateTime kilepesDatum, DateTime belepesDatum, SorolasZaradek zaradek, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater)
{
try
{
var tanulo = TanuloDal.Get(tanuloId);
var newTanuloId = string.IsNullOrEmpty(tanulo.OktatasiAzonosito) ? (int)default : TanuloCsoportDal.CheckOktatasiAzonosito(tanulo.OktatasiAzonosito, parent.TanevId);
if (newTanuloId <= 0)
{
newTanuloId = TanuloCsoportDal.Check4TValidacio((int)Validation4TEnum.Tanulo, tanulo.Vezeteknev, tanulo.Utonev, tanulo.AnyjaNeve, tanulo.SzuletesiHely, tanulo.SzuletesiDatum, null, parent.TanevId, tanulo.Elotag);
if (newTanuloId <= 0)
{
newTanuloId = TanuloHelper.CloneTanuloEntity(tanulo, parent.aktivTanevId, parent.kovTanevId.Value);
}
}
var tanuloAktOsztaly = tanulo.OsztalyCsoport.FirstOrDefault(x => x.OsztalyCsoportId == fromOsztalyId && (x.KilepesDatum == null || x.KilepesDatum > kilepesDatum) && !x.Torolt);
var tanuloUjOsztalya = OsztalyDal.Get(toOsztalyId);
var tcsUj = TanuloCsoportDal.Get();
tcsUj.TanuloId = newTanuloId;
tcsUj.OsztalyCsoportId = toOsztalyId;
tcsUj.BejegyzesIdopontja = DateTime.Now;
tcsUj.BelepesDatum = belepesDatum;
tcsUj.JogviszonyTipusID = tanuloAktOsztaly?.JogviszonyTipusID;
tcsUj.TanevId = parent.TanevId;
TanuloCsoportDal.Insert(tcsUj);
if (tanuloAktOsztaly != null)
{
tanuloAktOsztaly.KilepesDatum = kilepesDatum;
tanuloAktOsztaly.KilepesRogzitesDatum = DateTime.Now;
TanuloCsoportDal.Update(tanuloAktOsztaly);
SaveZaradek(parent.ConnectionType, zaradek, tanuloAktOsztaly.ID, tanuloAktOsztaly.TanevId);
CsoportKisorolasl.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, kilepesDatum);
TanuloTanugyiAdatok.InsertTanugyiAdatForLeptetes(tanuloAktOsztaly.TanuloTanugyiAdatok, tcsUj.ID, tanuloUjOsztalya, isSzakkepzoIntezmeny, isSelectedTanev21_22OrLater);
}
else
{
TanuloTanugyiAdatok.InsertTanugyiAdatFromTanulo(newTanuloId, tcsUj.ID, tanuloUjOsztalya, parent.isSelectedTanev21_22OrLater);
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
var tanulo = h.Tanulo().Get(tanuloId);
throw new BlException($"{tanulo.NyomtatasiNev} {OsztalyCsoportResource.KisorolasKozbenHibaTortent}", e);
}
catch (BlException)
{
throw;
}
catch
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
}
}
private void KollegiumOsztalyLeptetes(int tanuloId, int fromOsztalyId, int toOsztalyId, DateTime kilepesDatum, DateTime belepesDatum, SorolasZaradek zaradek, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater)
{
try
{
var tanulo = TanuloDal.Get(tanuloId);
var newTanuloId = string.IsNullOrEmpty(tanulo.OktatasiAzonosito) ? (int)default : TanuloCsoportDal.CheckOktatasiAzonosito(tanulo.OktatasiAzonosito, parent.TanevId);
if (newTanuloId <= 0)
{
newTanuloId = TanuloCsoportDal.Check4TValidacio((int)Validation4TEnum.Tanulo, tanulo.Vezeteknev, tanulo.Utonev, tanulo.AnyjaNeve, tanulo.SzuletesiHely, tanulo.SzuletesiDatum, null, parent.TanevId, tanulo.Elotag);
if (newTanuloId <= 0)
{
newTanuloId = TanuloHelper.CloneTanuloEntity(tanulo, parent.aktivTanevId, parent.kovTanevId.Value);
}
}
var tanuloAktOsztaly = tanulo.OsztalyCsoport.First(x => x.OsztalyCsoportId == fromOsztalyId && (x.KilepesDatum == null || x.KilepesDatum > kilepesDatum) && !x.Torolt);
var tanuloUjOsztalya = OsztalyDal.Get(toOsztalyId);
var tcsUj = TanuloCsoportDal.Get();
tcsUj.TanuloId = newTanuloId;
tcsUj.OsztalyCsoportId = toOsztalyId;
tcsUj.BejegyzesIdopontja = DateTime.Now;
tcsUj.BelepesDatum = belepesDatum;
tcsUj.TanevId = parent.TanevId;
tanuloAktOsztaly.KilepesDatum = kilepesDatum;
tanuloAktOsztaly.KilepesRogzitesDatum = DateTime.Now;
TanuloCsoportDal.Update(tanuloAktOsztaly);
SaveZaradek(parent.ConnectionType, zaradek, tanuloAktOsztaly.ID, tanuloAktOsztaly.TanevId);
TanuloCsoportDal.Insert(tcsUj);
CsoportKisorolasl.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, kilepesDatum);
TanuloTanugyiAdatok.InsertTanugyiAdatForLeptetes(tanuloAktOsztaly.TanuloTanugyiAdatok, tcsUj.ID, tanuloUjOsztalya, isSzakkepzoIntezmeny, isSelectedTanev21_22OrLater);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
var tanulo = h.Tanulo().Get(tanuloId);
throw new BlException($"{tanulo.NyomtatasiNev} {OsztalyCsoportResource.KisorolasKozbenHibaTortent}", e);
}
catch (BlException)
{
throw;
}
catch
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
}
}
private void EGYMIOsztalyLeptetes(int tanuloId, int fromOsztalyId, int toOsztalyId, DateTime kilepesDatum, DateTime belepesDatum, SorolasZaradek zaradek, bool isSzakkepzoIntezmeny, bool isSelectedTanev21_22OrLater)
{
try
{
var tanulo = TanuloDal.Get(tanuloId);
var newTanuloId = string.IsNullOrEmpty(tanulo.OktatasiAzonosito) ? (int)default : TanuloCsoportDal.CheckOktatasiAzonosito(tanulo.OktatasiAzonosito, parent.TanevId);
if (newTanuloId <= 0)
{
newTanuloId = TanuloCsoportDal.Check4TValidacio((int)Validation4TEnum.Tanulo, tanulo.Vezeteknev, tanulo.Utonev, tanulo.AnyjaNeve, tanulo.SzuletesiHely, tanulo.SzuletesiDatum, null, parent.TanevId, tanulo.Elotag);
if (newTanuloId <= 0)
{
newTanuloId = TanuloHelper.CloneTanuloEntity(tanulo, parent.aktivTanevId, parent.kovTanevId.Value);
}
}
var tanuloAktOsztaly = tanulo.OsztalyCsoport.First(x => x.OsztalyCsoportId == fromOsztalyId && (x.KilepesDatum == null || x.KilepesDatum > kilepesDatum) && !x.Torolt);
var tanuloUjOsztalya = OsztalyDal.Get(toOsztalyId);
var tcsUj = TanuloCsoportDal.Get();
tcsUj.TanuloId = newTanuloId;
tcsUj.OsztalyCsoportId = toOsztalyId;
tcsUj.BejegyzesIdopontja = DateTime.Now;
tcsUj.BelepesDatum = belepesDatum;
tcsUj.TanevId = parent.TanevId;
tanuloAktOsztaly.KilepesDatum = kilepesDatum;
tanuloAktOsztaly.KilepesRogzitesDatum = DateTime.Now;
TanuloCsoportDal.Update(tanuloAktOsztaly);
SaveZaradek(parent.ConnectionType, zaradek, tanuloAktOsztaly.ID, tanuloAktOsztaly.TanevId);
TanuloCsoportDal.Insert(tcsUj);
CsoportKisorolasl.KisorolasOsztalybontasosCsoportokbol(tanuloId, fromOsztalyId, kilepesDatum);
TanuloTanugyiAdatok.InsertTanugyiAdatForLeptetes(tanuloAktOsztaly.TanuloTanugyiAdatok, tcsUj.ID, tanuloUjOsztalya, isSzakkepzoIntezmeny, isSelectedTanev21_22OrLater);
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
try
{
var tanulo = h.Tanulo().Get(tanuloId);
throw new BlException($"{tanulo.NyomtatasiNev} {OsztalyCsoportResource.KisorolasKozbenHibaTortent}", e);
}
catch (BlException)
{
throw;
}
catch
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
}
}
}
private class CsoportLeptetesLogic
{
private readonly IDalHandler h;
private readonly OsztalyCsoportbaSorolasHelper parent;
private ITanuloCsoportDal _tanuloCsoportDal;
private CsoportKisorolaslLogic _csoportKisorolaslLogic;
private CsoportbaSorolasLogic _csoportbaSorolasLogic;
private ITanuloCsoportDal TanuloCsoportDal => _tanuloCsoportDal ?? (_tanuloCsoportDal = h.TanuloCsoport());
private CsoportKisorolaslLogic CsoportKisorolasLogic => _csoportKisorolaslLogic ?? (_csoportKisorolaslLogic = new CsoportKisorolaslLogic(parent, h));
private CsoportbaSorolasLogic CsoportbaSorolasLogic => _csoportbaSorolasLogic ?? (_csoportbaSorolasLogic = new CsoportbaSorolasLogic(parent, h));
public CsoportLeptetesLogic(OsztalyCsoportbaSorolasHelper parent, IDalHandler h)
{
this.parent = parent;
this.h = h;
}
public string Alapkepzes(IOsztalyCsoportbaSorolas model)
{
return CsoportLeptetes(model, OktNevelesiKategoriaEnum.NevelesOktatas);
}
public string Amikepzes(IOsztalyCsoportbaSorolas model)
{
return CsoportLeptetes(model, OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas);
}
public string Kollegium(IOsztalyCsoportbaSorolas model)
{
return CsoportLeptetes(model, OktNevelesiKategoriaEnum.Kollegium);
}
public string EGYMI(IOsztalyCsoportbaSorolas model)
{
return CsoportLeptetes(model, OktNevelesiKategoriaEnum.EGYMI);
}
public string CsoportLeptetes(IOsztalyCsoportbaSorolas model, OktNevelesiKategoriaEnum kategoria)
{
SorolasValidate.ValidateModel(model, datum: false);
DateTime openDate;
DateTime closeDate;
var tanevHelper = new TanevHelper(parent.ConnectionType);
openDate = tanevHelper.GetTanevInfo().KezdoNap;
closeDate = tanevHelper.GetTanevInfo(parent.aktivTanevId).UtolsoNap;
if (!parent.TryGetCoport(model.ToDDL.Value, h, out var celCsoport))
{
throw new BlException(StringResourcesUtil.GetString(4020)/*A célcsoport nem létezik.*/);
}
var errormessage = new List<string>();
var tanuloIds = model.ToElements.Select(i => i.Id).ToList();
var tanulos = GetKovTanevTanuloIds(tanuloIds);
var aktTanevValidate = new SorolasValidate(closeDate, tanuloIds, parent.aktivTanevId, kategoria, h);
var hasError = false;
var tanuloNemSorolhatoMertNincsOsztalya = new List<string>();
var nemTagjaAzOsztalynak = new List<string>();
try
{
var helper = new TanuloHelper(parent.ConnectionType);
foreach (var item in tanulos)
{
if (!item.KovTanuloId.HasValue)
{
hasError = true;
tanuloNemSorolhatoMertNincsOsztalya.Add(item.KovTanuloNev);
continue;
}
if (celCsoport.OsztalyBontasId != -1 && !item.KovOsztalyList.Any(x => x.Id == celCsoport.OsztalyBontasId))
{
hasError = true;
nemTagjaAzOsztalynak.Add(item.KovTanuloNev);
continue;
}
var forrasTanuloCsoportId = aktTanevValidate.GetTanuloCsoportId(model.FromDDL.Value, item.AktTanuloId);
var message = helper.GetUtkozoCsoportok(item.KovTanuloId.Value, openDate, celCsoport.ID, kategoria, true, forrasTanuloCsoportId);
if (!string.IsNullOrWhiteSpace(message))
{
hasError = true;
errormessage.Add(message);
continue;
}
try
{
CsoportbaSorolasLogic.AlapKepzesCsoportbaSorolas(item.KovTanuloId.Value, celCsoport.ID, openDate);
}
catch (SDA.DataProvider.UniqueKeyViolationException)
{
hasError = true;
errormessage.Add(string.Format(ErrorResource.TanuloMarTagjaACsoportnak, item.KovTanuloNev));
continue;
}
CsoportKisorolasLogic.AlapkepzesCsoportbolKisorolas(forrasTanuloCsoportId, closeDate, model.Zaradek, tanevId: parent.aktivTanevId);
}
}
catch (BlException)
{
throw;
}
catch (Exception e)
{
throw new BlException(StringResourcesUtil.GetString(4001)/*Nem kezelt adatbázis hiba történt!*/, e);
}
if (hasError)
{
var message = parent.GetErrorMessageForTanuloList(OsztalyCsoportResource.TanuloNemSorolhatoMertNincsOsztalya, tanuloNemSorolhatoMertNincsOsztalya);
message += parent.GetErrorMessageForTanuloList(string.Format(OsztalyCsoportResource.NemTagjaAzOsztalynakFormat, celCsoport.OsztalyBontas?.Nev), nemTagjaAzOsztalynak);
message += string.Join("<br/>", errormessage);
return parent.RemoveLastBrTag(message);
}
else
{
return string.Empty;
}
}
private List<CsoportAtsorolas> GetKovTanevTanuloIds(List<int> tanuloIds)
{
var kovTanuloList = new List<CsoportAtsorolas>();
foreach (var item in tanuloIds)
{
DataSet ds = TanuloCsoportDal.GetKovTanuloByAktTanulo(parent.TanevId, item);
var row = ds.Tables[0].Rows[0];
var osztalyList = ds.Tables[0].AsEnumerable().Where(x => x.Field<int?>("KovTanuloOsztalyId").HasValue);
var rowTanuloId = row.Field<int>("AktTanuloId");
CsoportAtsorolas data = kovTanuloList.SingleOrDefault(a => a.AktTanuloId == rowTanuloId);
if (data == null)
{
data = new CsoportAtsorolas()
{
AktTanuloId = row.Field<int>("AktTanuloId"),
KovTanuloId = row.Field<int?>("KovTanuloId"),
KovTanuloNev = row.Field<string>("KovTanuloNev"),
};
kovTanuloList.Add(data);
}
foreach (var kovOsztaly in osztalyList)
{
data.TryAddKovOsztaly(kovOsztaly.Field<int?>("KovTanuloOsztalyId"), kovOsztaly.Field<string>("KovTanuloOsztalyNev"));
}
}
return kovTanuloList;
}
private class CsoportAtsorolas
{
public CsoportAtsorolas()
{
KovOsztalyList = new List<KovOsztaly>();
}
public string KovTanuloNev { get; set; }
public int AktTanuloId { get; set; }
public int? KovTanuloId { get; set; }
public List<KovOsztaly> KovOsztalyList { get; }
public void TryAddKovOsztaly(int? id, string nev)
{
if (id.HasValue)
{ KovOsztalyList.Add(new KovOsztaly { Id = id.Value, Nev = nev }); }
}
public class KovOsztaly
{
public int Id { get; set; }
public string Nev { get; set; }
}
}
}
}
}