6678 lines
328 KiB
C#
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; }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|