527 lines
22 KiB
C#
527 lines
22 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.BusinessLogic.Interfaces;
|
|
using Kreta.Core;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.Core.Exceptions;
|
|
using Kreta.DataAccessManual.Interfaces;
|
|
using Kreta.Enums;
|
|
using Kreta.Enums.ManualEnums;
|
|
using Kreta.Resources;
|
|
|
|
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
|
{
|
|
internal class SorolasValidate
|
|
{
|
|
internal static void ValidateModel(IOsztalyCsoportbaSorolas model, bool datum = true, bool fromDdl = true, bool toDdl = true)
|
|
{
|
|
List<string> errormessages = new List<string>();
|
|
if (toDdl && !model.ToDDL.HasValue)
|
|
{
|
|
errormessages.Add(BesorolasResource.CelPanelKitolteseKotelezo);
|
|
}
|
|
|
|
if (fromDdl && !model.FromDDL.HasValue)
|
|
{
|
|
errormessages.Add(BesorolasResource.ForrasPanelKitolteseKotelezo);
|
|
}
|
|
|
|
if (datum && !model.Datum.HasValue)
|
|
{
|
|
errormessages.Add(ErrorResource.DatumMegadasaKotelezo);
|
|
}
|
|
|
|
if (model.Zaradek == null)
|
|
{
|
|
model.Zaradek = new SorolasZaradek();
|
|
}
|
|
|
|
if (model.Zaradek.IsZaradekKotelezo
|
|
&& model.ToElements.Any(x => !x.IsVanMentettVegzaradek)
|
|
&& (model.Zaradek.ZaradekSzovegList == null || !model.Zaradek.ZaradekSzovegList.Any(x => x.NyelvId == (int)AnyanyelvEnum.magyar && !string.IsNullOrWhiteSpace(x.Szoveg))))
|
|
{
|
|
errormessages.Add(OsztalyCsoportResource.ZaradekSzovegeKotelezo);
|
|
}
|
|
|
|
if (model.ToElements.Any(x => x.JogviszonyCount > 0 && (string.IsNullOrWhiteSpace(x.JogviszonyIds) || x.JogviszonyIds == "0")))
|
|
{
|
|
errormessages.Add(OsztalyCsoportResource.Legalabb1JogviszonyValasztasaKotelezo);
|
|
}
|
|
|
|
if (!model.Zaradek.KeltezesDatuma.HasValue && model.Zaradek.IsZaradekKotelezo)
|
|
{
|
|
errormessages.Add(OsztalyCsoportResource.KeltezesDatumaKotelezo);
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(model.Zaradek.KeltezesHelye) && model.Zaradek.IsZaradekKotelezo)
|
|
{
|
|
errormessages.Add(OsztalyCsoportResource.KeltezesHelyeKotelezo);
|
|
}
|
|
|
|
if (errormessages.Count > 0)
|
|
{
|
|
throw new BlException(string.Join(Constants.General.Sortores, errormessages));
|
|
}
|
|
}
|
|
|
|
internal static void SzervezetValidateModel(IConnectionType connectionType, int tanevId, IOsztalyCsoportbaSorolas model)
|
|
{
|
|
var errormessages = new List<string>();
|
|
var osztalyCsoportHelper = new OsztalyCsoportHelper(connectionType);
|
|
var tanulokSzakmajegyzekek = osztalyCsoportHelper.GetTanulokSzakmajegyzeke(tanevId, model.ToElements.Select(x => x.Id).ToList(), model.Datum ?? DateTime.Now);
|
|
|
|
var tanuloSzakmaNelkulList = new List<string>();
|
|
foreach (var szakmajegyzek in tanulokSzakmajegyzekek)
|
|
{
|
|
if (szakmajegyzek.SzakmaTipusId == null || szakmajegyzek.SzakmaTipusId == (int)SzakmaTipusEnum.na)
|
|
{
|
|
tanuloSzakmaNelkulList.Add(szakmajegyzek.NevElotagNelkul);
|
|
}
|
|
}
|
|
|
|
if(tanuloSzakmaNelkulList.Any())
|
|
{
|
|
errormessages.Add($"{string.Join(", ", tanuloSzakmaNelkulList.ToArray())} {OsztalyCsoportResource.TanuloSzakmaAdatNincsBeallitvaDualisCsoport}");
|
|
}
|
|
|
|
var csoportSzakmajegyzekek = osztalyCsoportHelper.GetCsoportTanuloinakSzakmajegyzeke(model.ToDDL.Value, model.Datum ?? DateTime.Now);
|
|
var groupoltTanulokSzakmajegyzekek = tanulokSzakmajegyzekek.GroupBy(t => new
|
|
{
|
|
SzakmaTipusId = t.SzakmaTipusId,
|
|
SzakmairanyTipusId = t.SzakmairanyTipusId
|
|
}).ToList();
|
|
if (groupoltTanulokSzakmajegyzekek.Count > 1 && csoportSzakmajegyzekek.Count == 0)
|
|
{
|
|
errormessages.Add(OsztalyCsoportResource.TanulokNemEgyezoSzakmaSzakmairany);
|
|
}
|
|
|
|
if (csoportSzakmajegyzekek.Count == 1)
|
|
{
|
|
var tanulokNemEgyezoSzakmaSzakmairany = tanulokSzakmajegyzekek.Where(x => !x.SzakmaTipusId.HasValue
|
|
|| !csoportSzakmajegyzekek.First().SzakmaTipusId.HasValue || x.SzakmaTipusId != csoportSzakmajegyzekek.First().SzakmaTipusId
|
|
|| !(x.SzakmairanyTipusId == csoportSzakmajegyzekek.First().SzakmairanyTipusId)).ToList();
|
|
if (tanulokNemEgyezoSzakmaSzakmairany.Count > 0)
|
|
{
|
|
var csoportSzakmajegyzeke = csoportSzakmajegyzekek[0].SzakmaTipusId.GetDisplayName<SzakmaTipusEnum>(tanevId) +
|
|
(!csoportSzakmajegyzekek[0].SzakmairanyTipusId.HasValue ? "" : "/" + csoportSzakmajegyzekek[0].SzakmairanyTipusId.GetDisplayName<SzakmaTipusEnum>(tanevId));
|
|
errormessages.Add(string.Format(OsztalyCsoportResource.TanulokSzakmaSzakmairanyNemEgyezikACsoportSzakmaSzakmairanyal, string.Join(", ", tanulokNemEgyezoSzakmaSzakmairany.Select(x => x.NevElotagNelkul).ToList()), csoportSzakmajegyzeke));
|
|
}
|
|
}
|
|
|
|
if (errormessages.Count > 0)
|
|
{
|
|
throw new BlException(string.Join(Constants.General.Sortores, errormessages));
|
|
}
|
|
}
|
|
|
|
internal static void IsDatumInTanev(IConnectionType connectionType, DateTime date)
|
|
{
|
|
var tanevHelper = new TanevHelper(connectionType);
|
|
var data = tanevHelper.GetTanevInfo();
|
|
if (date < data.KezdoNap || date > data.UtolsoNap)
|
|
{
|
|
throw new BlException(string.Format(OsztalyCsoportResource.SorolasDatumTanevbeKellEssen, data.KezdoNap.ToString("yyyy.MM.dd."), data.UtolsoNap.ToString("yyyy.MM.dd.")));
|
|
}
|
|
}
|
|
|
|
private readonly int _tanevId;
|
|
private readonly IDalHandler _dalHandler;
|
|
private readonly DateTime _actualDate;
|
|
private readonly DateTime _tanevUtolsoNap;
|
|
private readonly List<int> _tanuloIds;
|
|
private readonly OktNevelesiKategoriaEnum? _kategoriaTipus;
|
|
private List<TanuloOsztalya> _tanulokOsztalyai;
|
|
private List<TanuloOsztalya> _tanulokElozoTanevOsztalyai;
|
|
private TanulokList _tanuloAdatok;
|
|
private OsztalyCsoportList _osztalyCsoportAdatok;
|
|
private List<TanuloOsztalyCsoport> _tanuloOsztalyCSoport;
|
|
private readonly int _jogviszonyLimit;
|
|
|
|
private IEnumerable<TanuloOsztalya> TanulokOsztalyai
|
|
{
|
|
get
|
|
{
|
|
if (_tanulokOsztalyai != null)
|
|
{
|
|
return _tanulokOsztalyai;
|
|
}
|
|
_tanulokOsztalyai = GetTanulokOsztalyai();
|
|
return _tanulokOsztalyai;
|
|
}
|
|
}
|
|
|
|
private IEnumerable<TanuloOsztalya> TanulokElozoTanevOsztalyai(int aktivTanevId)
|
|
{
|
|
if (_tanulokElozoTanevOsztalyai != null)
|
|
{
|
|
return _tanulokElozoTanevOsztalyai;
|
|
}
|
|
_tanulokElozoTanevOsztalyai = GetTanulokElozoTanevOsztalyai(aktivTanevId);
|
|
return _tanulokElozoTanevOsztalyai;
|
|
}
|
|
|
|
private IEnumerable<TanuloOsztalya> TanulokOsztalyaiDate
|
|
{
|
|
get
|
|
{
|
|
return TanulokOsztalyai.Where(i => i.Belepes <= _actualDate.Date && (!i.Kilepes.HasValue || i.Kilepes.Value > _actualDate.Date)).ToList();
|
|
}
|
|
}
|
|
|
|
private IEnumerable<TanuloOsztalya> TanulokOsztalyaiFuture
|
|
{
|
|
get
|
|
{
|
|
return TanulokOsztalyai.Where(i => i.Belepes > _actualDate.Date).ToList();
|
|
}
|
|
}
|
|
|
|
private IEnumerable<TanuloOsztalyCsoport> TanuloOsztalyCSoport
|
|
{
|
|
get
|
|
{
|
|
if (_tanuloOsztalyCSoport != null)
|
|
{
|
|
return _tanuloOsztalyCSoport;
|
|
}
|
|
_tanuloOsztalyCSoport = TanulokOsztalyCsoportjai();
|
|
return _tanuloOsztalyCSoport;
|
|
}
|
|
}
|
|
|
|
private IEnumerable<TanuloOsztalyCsoport> TanuloOsztalyCSoportDate
|
|
{
|
|
get
|
|
{
|
|
return TanuloOsztalyCSoport.Where(i => i.Belepes <= _actualDate.Date && (!i.Kilepes.HasValue || i.Kilepes.Value > _actualDate.Date)).ToList();
|
|
}
|
|
}
|
|
|
|
private IEnumerable<TanuloOsztalyCsoport> TanuloOsztalyCSoportFuture
|
|
{
|
|
get
|
|
{
|
|
return TanuloOsztalyCSoport.Where(i => i.Belepes > _actualDate.Date).ToList();
|
|
}
|
|
}
|
|
|
|
internal TanulokList TanuloAdatok
|
|
{
|
|
get
|
|
{
|
|
if (_tanuloAdatok != null)
|
|
{
|
|
return _tanuloAdatok;
|
|
}
|
|
_tanuloAdatok = GetTanulokAdatai();
|
|
return _tanuloAdatok;
|
|
}
|
|
}
|
|
|
|
internal OsztalyCsoportList OsztalyCsoportAdatok
|
|
{
|
|
get
|
|
{
|
|
if (_osztalyCsoportAdatok != null)
|
|
{
|
|
return _osztalyCsoportAdatok;
|
|
}
|
|
_osztalyCsoportAdatok = GetOsztalyCsoportAdatok();
|
|
return _osztalyCsoportAdatok;
|
|
}
|
|
}
|
|
|
|
internal TanuloOsztalyCsoport GetOsztalyCsoportTanuloCsoportAdatok(int osztalyCsoportId, int tanuloId)
|
|
{
|
|
var tcss = TanuloOsztalyCSoport.Where(x => (x.TanuloId == tanuloId) && (x.OsztalyCsoportId == osztalyCsoportId)).ToList();
|
|
if (tcss.Count > 0)
|
|
{
|
|
var first = tcss.OrderByDescending(x => x.Belepes).First();
|
|
if (!first.Kilepes.HasValue)
|
|
{
|
|
first.Kilepes = GetTanevUtolsoNap();
|
|
}
|
|
return first;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
internal SorolasValidate(DateTime date, List<int> tanuloIds, int tanevId, OktNevelesiKategoriaEnum? kategoriaTipus, IDalHandler dalHandler)
|
|
{
|
|
_actualDate = date;
|
|
_tanuloIds = tanuloIds.Distinct().ToList();
|
|
_tanevId = tanevId;
|
|
_dalHandler = dalHandler;
|
|
_kategoriaTipus = kategoriaTipus;
|
|
_jogviszonyLimit = dalHandler.TanuloCsoport().GetJogviszonyLimit(tanevId, kategoriaTipus ?? OktNevelesiKategoriaEnum.NevelesOktatas);
|
|
_tanevUtolsoNap = GetTanevUtolsoNap();
|
|
}
|
|
|
|
internal bool NemTagjaAzOsztalynakABeallitottDatumIdejen(int tanuloId)
|
|
{
|
|
return !TanulokOsztalyaiDate.Any(t => t.TanuloId == tanuloId);
|
|
}
|
|
|
|
internal bool TanuloNemTagjaOCsADatumAlatt(int tanuloId, int ocsId)
|
|
{
|
|
return !TanuloOsztalyCSoportDate.Any(t => t.TanuloId == tanuloId && t.OsztalyCsoportId == ocsId);
|
|
}
|
|
|
|
internal bool JogviszonyLimitTullepes(int tanuloId)
|
|
{
|
|
var aktualisOsztalyok = TanulokOsztalyaiDate.Count(t => t.TanuloId == tanuloId);
|
|
var jovobeliOsztalyok = TanulokOsztalyaiFuture.Count(t => t.TanuloId == tanuloId);
|
|
|
|
return (aktualisOsztalyok + jovobeliOsztalyok) >= _jogviszonyLimit;
|
|
}
|
|
|
|
internal bool JogviszonyLimitTullepes(int tanuloId, out DateTime? limitBesorolasDatum, out int? limitBesorolasOsztalyId)
|
|
{
|
|
var besorolasok = CreateOsztalyBesorolasDateRangeList(tanuloId, withCurrentOne: true);
|
|
var overlapResult = BesorolasDateRangeUtil.CalculateMaxOverlap(_actualDate, _tanevUtolsoNap, besorolasok);
|
|
|
|
limitBesorolasDatum = overlapResult.OverlapBeginDate;
|
|
limitBesorolasOsztalyId = overlapResult.MaxOverlapOsztalyId;
|
|
return overlapResult.OverlapCount > _jogviszonyLimit;
|
|
}
|
|
|
|
internal bool BesorolasJavitasValidate(int tanuloId, DateTime startDate, out DateTime? limitBesorolasDatum, out int? limitBesorolasOsztalyId)
|
|
{
|
|
var besorolasok = CreateOsztalyBesorolasDateRangeList(tanuloId, withCurrentOne: false);
|
|
var overlapResult = BesorolasDateRangeUtil.CalculateMaxOverlap(startDate, _tanevUtolsoNap, besorolasok);
|
|
|
|
limitBesorolasDatum = overlapResult.OverlapBeginDate;
|
|
limitBesorolasOsztalyId = overlapResult.MaxOverlapOsztalyId;
|
|
return overlapResult.OverlapCount > _jogviszonyLimit;
|
|
}
|
|
|
|
internal bool TanuloMarOsztalyCsoportTagja(int tanuloId, int ocsId)
|
|
{
|
|
return TanuloOsztalyCSoportDate.Any(a => a.TanuloId == tanuloId && a.OsztalyCsoportId == ocsId);
|
|
}
|
|
|
|
internal bool TanuloOsztalyCsoportTagjaLesz(int tanuloId, int ocsId)
|
|
{
|
|
return TanuloOsztalyCSoportFuture.Any(a => a.TanuloId == tanuloId && a.OsztalyCsoportId == ocsId);
|
|
}
|
|
|
|
internal bool MarKiLettAzOsztalybolSorolva(int aktivTanevId, int tanuloId, int ocsId, DateTime kilepesDatuma)
|
|
{
|
|
return TanulokElozoTanevOsztalyai(aktivTanevId).Any(a => a.TanuloId == tanuloId && a.OsztalyId == ocsId && a.Kilepes != null && a.Kilepes > kilepesDatuma);
|
|
}
|
|
|
|
internal int GetTanuloCsoportId(int csoportId, int tanuloId)
|
|
{
|
|
var tanuloCSoport = TanuloOsztalyCSoportDate.SingleOrDefault(a => a.TanuloId == tanuloId && a.OsztalyCsoportId == csoportId);
|
|
|
|
if (tanuloCSoport != null)
|
|
{
|
|
return tanuloCSoport.Id;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
internal ValidMethode TanuloMarLetezikKovTanevben(int tanuloId, int kovTanevId)
|
|
{
|
|
var tanulo = _dalHandler.Tanulo().Get(tanuloId);
|
|
var newTanuloId = string.IsNullOrEmpty(tanulo.OktatasiAzonosito) ? (int)default : _dalHandler.TanuloCsoport().CheckOktatasiAzonosito(tanulo.OktatasiAzonosito, kovTanevId);
|
|
|
|
if (newTanuloId.IsEntityId())
|
|
{
|
|
return new ValidMethode
|
|
{
|
|
IsValid = false,
|
|
Message = string.Format(BesorolasResource.TanuloMarLetezikKovetkezoTanevbenOktatasiAzonosito, tanulo.OktatasiAzonosito),
|
|
};
|
|
}
|
|
|
|
newTanuloId = _dalHandler.TanuloCsoport().Check4TValidacio((int)Validation4TEnum.Tanulo, tanulo.Vezeteknev, tanulo.Utonev, tanulo.AnyjaNeve, tanulo.SzuletesiHely, tanulo.SzuletesiDatum, null, kovTanevId, tanulo.Elotag);
|
|
|
|
if (newTanuloId.IsEntityId())
|
|
{
|
|
return new ValidMethode
|
|
{
|
|
IsValid = false,
|
|
Message = string.Format(BesorolasResource.TanuloMarLetezikKovetkezoTanevben4TAdatok, tanulo.NyomtatasiNev),
|
|
};
|
|
}
|
|
|
|
return new ValidMethode
|
|
{
|
|
IsValid = true,
|
|
};
|
|
}
|
|
|
|
internal bool TanuloNemTagjaEgyetlenOsztalynakSem(int tanuloId, out DateTime? osztalyNelkulBeginDate)
|
|
{
|
|
var besorolasok = CreateOsztalyBesorolasDateRangeList(tanuloId, withCurrentOne: false);
|
|
var overlapResult = BesorolasDateRangeUtil.CalculateMinOverlap(_actualDate, _tanevUtolsoNap, besorolasok);
|
|
|
|
osztalyNelkulBeginDate = overlapResult.OverlapBeginDate;
|
|
return overlapResult.OverlapCount == 0;
|
|
}
|
|
|
|
internal bool TanuloMarTagjaCsoportnak(int tanuloId, int csoportId)
|
|
{
|
|
var tanuloCsoportjai = TanuloOsztalyCSoport.Where(tcs => tcs.TanuloId == tanuloId && tcs.OsztalyCsoportId == csoportId
|
|
&& ((tcs.Belepes <= _actualDate && (!tcs.Kilepes.HasValue || tcs.Kilepes.Value > _actualDate)) || tcs.Belepes > _actualDate));
|
|
|
|
return tanuloCsoportjai.Any();
|
|
}
|
|
|
|
internal bool TanuloNemTagjaAzOsztalybontottOsztalynak(int tanuloId, int osztalybontasId, out DateTime? nemTagjaOsztalynakBeginDate)
|
|
{
|
|
var besorolasok = CreateOsztalyBesorolasDateRangeList(tanuloId, withCurrentOne: false, examinedOsztalyId: osztalybontasId);
|
|
var overlapResult = BesorolasDateRangeUtil.CalculateMinOverlap(_actualDate, _tanevUtolsoNap, besorolasok);
|
|
|
|
nemTagjaOsztalynakBeginDate = overlapResult.OverlapBeginDate;
|
|
return overlapResult.OverlapCount == 0;
|
|
}
|
|
|
|
internal bool OsztalyokSzamaLimitTullepes(int tanuloId, OktNevelesiKategoriaEnum feladatKategoria)
|
|
{
|
|
var limit = _dalHandler.TanuloCsoport().GetJogviszonyLimit(_tanevId, feladatKategoria);
|
|
|
|
var tanulo = _dalHandler.Tanulo().Get(tanuloId);
|
|
var newTanuloId = string.IsNullOrEmpty(tanulo.OktatasiAzonosito) ? (int)default : _dalHandler.TanuloCsoport().CheckOktatasiAzonosito(tanulo.OktatasiAzonosito, _tanevId);
|
|
|
|
if (newTanuloId <= 0)
|
|
{
|
|
newTanuloId = _dalHandler.TanuloCsoport().Check4TValidacio((int)Validation4TEnum.Tanulo, tanulo.Vezeteknev, tanulo.Utonev, tanulo.AnyjaNeve, tanulo.SzuletesiHely, tanulo.SzuletesiDatum, null, _tanevId, tanulo.Elotag);
|
|
}
|
|
|
|
var osztalyBesorolasainakSzama = _dalHandler.TanuloCsoport().GetTanuloOsztalybaSorolasainakSzama(newTanuloId, _tanevId, feladatKategoria);
|
|
|
|
var result = osztalyBesorolasainakSzama >= limit;
|
|
|
|
return result;
|
|
}
|
|
|
|
internal bool TanuloMarTagjaMentorcsoportnak(int tanuloId)
|
|
{
|
|
var tanulo = _dalHandler.Tanulo().Get(tanuloId);
|
|
return tanulo.OsztalyCsoport.Any(x =>
|
|
{
|
|
if (((x.BelepesDatum <= _actualDate && (!x.KilepesDatum.HasValue || x.KilepesDatum.Value > _actualDate)) || x.BelepesDatum > _actualDate)
|
|
&& _dalHandler.OsztalyCsoport().GetIsCsoport(x.OsztalyCsoportId))
|
|
{
|
|
return _dalHandler.Csoport().Get(x.OsztalyCsoportId).Tipusa == (int)CsoportTipusEnum.apaczai_mentorcsoport;
|
|
}
|
|
return false;
|
|
});
|
|
}
|
|
|
|
private TanulokList GetTanulokAdatai()
|
|
{
|
|
DataSet ds = _dalHandler.TanuloCsoport().GetTanulokAdatai(_tanuloIds);
|
|
var result = new TanulokList();
|
|
foreach (DataRow row in ds.Tables[0].Rows)
|
|
{
|
|
result.Add(row.Field<int>("ID"), new TanuloListItem()
|
|
{
|
|
Nev = row.Field<string>("Nev"),
|
|
SzuletesiDatum = row.Field<DateTime>("SzulDatum")
|
|
});
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private OsztalyCsoportList GetOsztalyCsoportAdatok()
|
|
{
|
|
var result = new OsztalyCsoportList();
|
|
var ds = _dalHandler.OsztalyCsoport().GetOsztalyCsoportDataSet(_tanevId, (int?)_kategoriaTipus);
|
|
foreach (DataRow row in ds.Tables[0].AsEnumerable())
|
|
{
|
|
result.Add(row.Field<int>("ID"), new OsztalyCsoportListItem
|
|
{
|
|
Id = row.Field<int>("Id"),
|
|
Nev = row.Field<string>("Nev")
|
|
});
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private List<TanuloOsztalya> GetTanulokOsztalyai()
|
|
{
|
|
var ds = _dalHandler.TanuloCsoport().FilterTanuloIsInClass(_tanevId, _tanuloIds, _kategoriaTipus);
|
|
return (from row in ds.Tables[0].AsEnumerable()
|
|
select new TanuloOsztalya
|
|
{
|
|
TanuloId = row.Field<int>("ID"),
|
|
OsztalyId = row.Field<int>("OsztalyID"),
|
|
Kilepes = row.Field<DateTime?>("KilepesDatum"),
|
|
Belepes = row.Field<DateTime>("BelepesDatum")
|
|
}).ToList();
|
|
}
|
|
|
|
private List<TanuloOsztalya> GetTanulokElozoTanevOsztalyai(int aktTanevId)
|
|
{
|
|
var ds = _dalHandler.TanuloCsoport().FilterTanuloIsInClass(aktTanevId, _tanuloIds, _kategoriaTipus);
|
|
return (from row in ds.Tables[0].AsEnumerable()
|
|
select new TanuloOsztalya
|
|
{
|
|
TanuloId = row.Field<int>("ID"),
|
|
OsztalyId = row.Field<int>("OsztalyID"),
|
|
Kilepes = row.Field<DateTime?>("KilepesDatum"),
|
|
Belepes = row.Field<DateTime>("BelepesDatum")
|
|
}).ToList();
|
|
}
|
|
|
|
private List<TanuloOsztalyCsoport> TanulokOsztalyCsoportjai()
|
|
{
|
|
var ds = _dalHandler.TanuloCsoport().GetTanulokOsztalyCSoport(_tanevId, _tanuloIds, _kategoriaTipus);
|
|
return (from row in ds.Tables[0].AsEnumerable()
|
|
select new TanuloOsztalyCsoport
|
|
{
|
|
TanuloId = row.Field<int>("TanuloId"),
|
|
OsztalyCsoportId = row.Field<int>("OsztalyCsoportId"),
|
|
Id = row.Field<int>("ID"),
|
|
Kilepes = row.Field<DateTime?>("KilepesDatum"),
|
|
Belepes = row.Field<DateTime>("BelepesDatum")
|
|
}).ToList();
|
|
}
|
|
|
|
private DateTime GetTanevUtolsoNap()
|
|
{
|
|
var tanev = _dalHandler.TanevDal().Get(_tanevId);
|
|
if (!tanev.UtolsoNap.HasValue)
|
|
{
|
|
throw new ArgumentNullException();
|
|
}
|
|
return tanev.UtolsoNap.Value;
|
|
}
|
|
|
|
private IEnumerable<BesorolasDateRange> CreateOsztalyBesorolasDateRangeList(int tanuloId, bool withCurrentOne, int? examinedOsztalyId = null)
|
|
{
|
|
var result = new List<BesorolasDateRange>();
|
|
if (withCurrentOne)
|
|
{
|
|
result.Add(new BesorolasDateRange
|
|
{
|
|
Begin = _actualDate,
|
|
End = _tanevUtolsoNap,
|
|
});
|
|
}
|
|
|
|
var tanuloOsztalyai = TanulokOsztalyaiDate.Where(t => t.TanuloId == tanuloId).Concat(TanulokOsztalyaiFuture.Where(t => t.TanuloId == tanuloId));
|
|
if (examinedOsztalyId.HasValue)
|
|
{
|
|
tanuloOsztalyai = tanuloOsztalyai.Where(o => o.OsztalyId == examinedOsztalyId);
|
|
}
|
|
|
|
result.AddRange(tanuloOsztalyai.Select(o => new BesorolasDateRange
|
|
{
|
|
Begin = o.Belepes,
|
|
End = o.Kilepes ?? _tanevUtolsoNap,
|
|
OsztalyCsoportId = o.OsztalyId
|
|
}));
|
|
|
|
return result;
|
|
}
|
|
}
|
|
}
|