init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,27 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class AmiBesorolhatoTanulokList : Dictionary<int, TanuloListItem>
|
||||
{
|
||||
public List<OsztalybaSorolasDDLItem> ConvertToDDLItemList()
|
||||
{
|
||||
List<OsztalybaSorolasDDLItem> Result = new List<OsztalybaSorolasDDLItem>();
|
||||
foreach (var item in this)
|
||||
{
|
||||
Result.Add(new OsztalybaSorolasDDLItem()
|
||||
{
|
||||
Value = item.Key.ToString(),
|
||||
Text = item.Value.Nev,
|
||||
NevElotagNelkul = item.Value.NevElotagNelkul,
|
||||
BesorolasDatum = item.Value.BesorolasDatum,
|
||||
KisorolasDatum = item.Value.KisorolasDatum,
|
||||
Aktiv = item.Value.Aktiv,
|
||||
SzulDatum = item.Value.SzuletesiDatum,
|
||||
Neme = item.Value.Neme
|
||||
});
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class BeNemSoroltTanulokList : Dictionary<int, TanuloListItem>
|
||||
{
|
||||
public List<OsztalybaSorolasDDLItem> ConvertToDDLItemList()
|
||||
{
|
||||
List<OsztalybaSorolasDDLItem> Result = new List<OsztalybaSorolasDDLItem>();
|
||||
foreach (var item in this)
|
||||
{
|
||||
Result.Add(new OsztalybaSorolasDDLItem()
|
||||
{
|
||||
Value = item.Key.ToString(),
|
||||
Text = item.Value.Nev,
|
||||
NevElotagNelkul = item.Value.NevElotagNelkul,
|
||||
BesorolasDatum = item.Value.BesorolasDatum,
|
||||
KisorolasDatum = item.Value.KisorolasDatum,
|
||||
Aktiv = item.Value.Aktiv,
|
||||
SzulDatum = item.Value.SzuletesiDatum,
|
||||
Neme = item.Value.Neme
|
||||
});
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public static class BesorolasDateRangeUtil
|
||||
{
|
||||
public static BesorolasOverlapResult CalculateMaxOverlap(DateTime besorolasKezdete, DateTime besorolasVege, IEnumerable<BesorolasDateRange> besorolasok)
|
||||
{
|
||||
var maxOverlapCount = 0;
|
||||
DateTime? maxOverlapBeginDate = null;
|
||||
int? maxOverlapOsztalyId = null;
|
||||
|
||||
var dateList = CreateDateList(besorolasKezdete, besorolasVege);
|
||||
foreach (var date in dateList)
|
||||
{
|
||||
var overlappedRanges = GetOverlappedRanges(date, besorolasok);
|
||||
var overlapCount = overlappedRanges.Count();
|
||||
if (overlapCount > maxOverlapCount)
|
||||
{
|
||||
maxOverlapCount = overlapCount;
|
||||
maxOverlapBeginDate = date;
|
||||
var overlappedBesorolas = overlappedRanges.FirstOrDefault(x => x.OsztalyCsoportId.HasValue);
|
||||
if (overlappedBesorolas != null)
|
||||
{
|
||||
maxOverlapOsztalyId = overlappedBesorolas.OsztalyCsoportId.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new BesorolasOverlapResult(maxOverlapCount, maxOverlapBeginDate, maxOverlapOsztalyId);
|
||||
}
|
||||
|
||||
public static BesorolasOverlapResult CalculateMinOverlap(DateTime besorolasKezdete, DateTime besorolasVege, IEnumerable<BesorolasDateRange> besorolasok)
|
||||
{
|
||||
var minOverlapCount = int.MaxValue;
|
||||
DateTime? minOverlapBeginDate = null;
|
||||
|
||||
var dateList = CreateDateList(besorolasKezdete, besorolasVege);
|
||||
foreach (var date in dateList)
|
||||
{
|
||||
var overlappedRanges = GetOverlappedRanges(date, besorolasok);
|
||||
var overlapCount = overlappedRanges.Count();
|
||||
if (overlapCount < minOverlapCount)
|
||||
{
|
||||
minOverlapCount = overlapCount;
|
||||
minOverlapBeginDate = date;
|
||||
}
|
||||
}
|
||||
|
||||
return new BesorolasOverlapResult(minOverlapCount, minOverlapBeginDate);
|
||||
}
|
||||
|
||||
private static IEnumerable<DateTime> CreateDateList(DateTime begin, DateTime end)
|
||||
{
|
||||
return Enumerable.Range(0, end.Subtract(begin).Days).Select(d => begin.AddDays(d));
|
||||
}
|
||||
|
||||
private static IEnumerable<BesorolasDateRange> GetOverlappedRanges(DateTime examinedDate, IEnumerable<BesorolasDateRange> ranges)
|
||||
{
|
||||
// NOTE: Ha egyszer a besorolás jobbról is zárt lesz, akkor az End-nél egyenlőséget is kell vizsgálni.
|
||||
return ranges.Where(r => r.Begin <= examinedDate && r.End > examinedDate);
|
||||
}
|
||||
}
|
||||
|
||||
public class BesorolasDateRange
|
||||
{
|
||||
public DateTime Begin { get; set; }
|
||||
|
||||
public DateTime End { get; set; }
|
||||
|
||||
public int? OsztalyCsoportId { get; set; }
|
||||
}
|
||||
|
||||
public class BesorolasOverlapResult
|
||||
{
|
||||
public int OverlapCount { get; private set; }
|
||||
|
||||
public DateTime? OverlapBeginDate { get; private set; }
|
||||
|
||||
public int? MaxOverlapOsztalyId { get; private set; }
|
||||
|
||||
public BesorolasOverlapResult(int overlapCount, DateTime? overlapBeginDate)
|
||||
{
|
||||
OverlapCount = overlapCount;
|
||||
OverlapBeginDate = overlapBeginDate;
|
||||
}
|
||||
|
||||
public BesorolasOverlapResult(int overlapCount, DateTime? overlapBeginDate, int? maxOverlapOsztalyId)
|
||||
{
|
||||
OverlapCount = overlapCount;
|
||||
OverlapBeginDate = overlapBeginDate;
|
||||
MaxOverlapOsztalyId = maxOverlapOsztalyId;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
using System;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class CsoportBesorolasModositasValidacioItemCo : TanuloCsoportSorolasValidacioItemCo
|
||||
{
|
||||
public CsoportBesorolasModositasValidacioHibaEnum Oka { get; set; }
|
||||
|
||||
public DateTime? Datum { get; set; }
|
||||
|
||||
public int? Darab { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class CsoportListItem
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Nev { get; set; }
|
||||
public int? OsztalybontasId { get; set; }
|
||||
public string OsztalyNev { get; set; }
|
||||
public OsztalybaSorolasDDLItem ConvertToDDLItem()
|
||||
{
|
||||
return new OsztalybaSorolasDDLItem()
|
||||
{
|
||||
Text = Nev,
|
||||
Value = Id.ToString(),
|
||||
FilterId = OsztalybontasId,
|
||||
Group = ""
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class CsoportTanuloiList : Dictionary<int, TanuloListItem>
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int? OsztalybontasId { get; set; }
|
||||
|
||||
public List<OsztalybaSorolasDDLItem> ConvertToDDLItemList()
|
||||
{
|
||||
List<OsztalybaSorolasDDLItem> Result = new List<OsztalybaSorolasDDLItem>();
|
||||
foreach (var item in this)
|
||||
{
|
||||
Result.Add(new OsztalybaSorolasDDLItem()
|
||||
{
|
||||
Value = item.Key.ToString(),
|
||||
Text = item.Value.Nev,
|
||||
NevElotagNelkul = item.Value.NevElotagNelkul,
|
||||
FilterId = OsztalybontasId,
|
||||
BesorolasDatum = item.Value.BesorolasDatum,
|
||||
KisorolasDatum = item.Value.KisorolasDatum,
|
||||
Aktiv = item.Value.Aktiv,
|
||||
SzulDatum = item.Value.SzuletesiDatum
|
||||
});
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class KiiratkoztatottTanulokList : Dictionary<int, TanuloListItem>
|
||||
{
|
||||
public List<OsztalybaSorolasDDLItem> ConvertToDDLItemList()
|
||||
{
|
||||
List<OsztalybaSorolasDDLItem> Result = new List<OsztalybaSorolasDDLItem>();
|
||||
foreach (var item in this)
|
||||
{
|
||||
Result.Add(new OsztalybaSorolasDDLItem()
|
||||
{
|
||||
Value = item.Key.ToString(),
|
||||
Text = item.Value.Nev,
|
||||
NevElotagNelkul = item.Value.NevElotagNelkul,
|
||||
KisorolasDatum = item.Value.KisorolasDatum,
|
||||
Aktiv = item.Value.Aktiv,
|
||||
SzulDatum = item.Value.SzuletesiDatum
|
||||
});
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class NebulokList : Dictionary<int, TanuloListItem>
|
||||
{
|
||||
public List<OsztalybaSorolasDDLItem> ConvertToDDLItemList()
|
||||
{
|
||||
var result = new List<OsztalybaSorolasDDLItem>();
|
||||
foreach (var item in this)
|
||||
{
|
||||
result.Add(new OsztalybaSorolasDDLItem()
|
||||
{
|
||||
Value = item.Key.ToString(),
|
||||
Text = item.Value.Nev,
|
||||
|
||||
BesorolasDatum = item.Value.BesorolasDatum,
|
||||
KisorolasDatum = item.Value.KisorolasDatum,
|
||||
Aktiv = item.Value.Aktiv,
|
||||
SzulDatum = item.Value.SzuletesiDatum
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class OsztalyCsoportList : Dictionary<int, OsztalyCsoportListItem>
|
||||
{
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class OsztalyCsoportListItem
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public string Nev { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
using System;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class OsztalyListItem
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Nev { get; set; }
|
||||
|
||||
public OsztalybaSorolasDDLItem ConvertToDDLItem()
|
||||
{
|
||||
return new OsztalybaSorolasDDLItem()
|
||||
{
|
||||
Text = Nev,
|
||||
Value = Id.ToString(),
|
||||
FilterId = null,
|
||||
Group = ""
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class OsztalybaSorolasDDLItem
|
||||
{
|
||||
public int? FilterId { get; set; }
|
||||
public string Value { get; set; }
|
||||
public string Text { get; set; }
|
||||
public string Group { get; set; }
|
||||
public DateTime? BesorolasDatum { get; set; }
|
||||
public DateTime? KisorolasDatum { get; set; }
|
||||
public bool Aktiv { get; set; }
|
||||
public DateTime SzulDatum { get; set; }
|
||||
public string Neme { get; set; }
|
||||
public string Osztalya { get; set; }
|
||||
public string Vegzaradek { get; set; }
|
||||
public string NevElotagNelkul { get; set; }
|
||||
public int JogviszonyCount { get; set; }
|
||||
public int JogviszonyId { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class OsztalyTanuloiList : Dictionary<int, TanuloListItem>
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public List<OsztalybaSorolasDDLItem> ConvertToDDLItemList()
|
||||
{
|
||||
List<OsztalybaSorolasDDLItem> Result = new List<OsztalybaSorolasDDLItem>();
|
||||
foreach (var item in this)
|
||||
{
|
||||
Result.Add(new OsztalybaSorolasDDLItem()
|
||||
{
|
||||
Value = item.Key.ToString(),
|
||||
Text = item.Value.Nev,
|
||||
NevElotagNelkul = item.Value.NevElotagNelkul,
|
||||
BesorolasDatum = item.Value.BesorolasDatum,
|
||||
KisorolasDatum = item.Value.KisorolasDatum,
|
||||
Aktiv = item.Value.Aktiv,
|
||||
SzulDatum = item.Value.SzuletesiDatum,
|
||||
Neme = item.Value.Neme,
|
||||
Vegzaradek = item.Value.Vegzaradek,
|
||||
JogviszonyCount = item.Value.JogviszonyCount,
|
||||
JogviszonyId = item.Value.JogviszonyId
|
||||
});
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class OsztalybaSorolasModositasValidacioItemCo : TanuloCsoportSorolasValidacioItemCo
|
||||
{
|
||||
public OsztalybaSorolasModositasValidacioHibaEnum Oka { get; set; }
|
||||
|
||||
public int? OsztalyId { get; set; }
|
||||
|
||||
public int? OsztalybontottCsoportId { get; set; }
|
||||
|
||||
public int Darab { get; set; }
|
||||
|
||||
public DateTime? Datum { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class OsztalybaSororlasItem
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int? Fromid { get; set; }
|
||||
public bool IsVanMentettVegzaradek { get; set; }
|
||||
public bool IsKellFeluletenMegadottZaradekRogzitese { get; set; }
|
||||
public int? JogviszonyCount { get; set; }
|
||||
public string JogviszonyIds { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,527 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,171 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
||||
using Kreta.Core;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class SorolasZaradek
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.Bizonyitvany), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public bool IsBizonyitvanybanMegjelenik { get; set; }
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.Bizonyitvanyban), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public string IsBizonyitvanMegjelenesString => IsBizonyitvanybanMegjelenik ? CommonResource.Igen : CommonResource.Nem;
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.Vegzaradek), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public bool IsKiVagyAtsorolasiZaradek { get; set; }
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.Vegzaradek), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public string IsVegzaradekString => IsKiVagyAtsorolasiZaradek ? CommonResource.Igen : CommonResource.Nem;
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.Naplo), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public bool IsOsztalynaplobanMegjelenik { get; set; }
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.Naploban), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public string IsNaploMegjelenesString => IsOsztalynaplobanMegjelenik ? CommonResource.Igen : CommonResource.Nem;
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.Torzslap), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public bool IsTorzslaponMegjelenik { get; set; }
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.Torzslapon), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public string IsTorzslapMegjelenesString => IsTorzslaponMegjelenik ? CommonResource.Igen : CommonResource.Nem;
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.KeltezesDatuma), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
[KretaDateRange(ErrorMessageResourceName = nameof(OsztalyCsoportResource.KeltezesDatumaNemLehetKorabbiMint_1900), ErrorMessageResourceType = typeof(OsztalyCsoportResource))]
|
||||
public DateTime? KeltezesDatuma { get; set; }
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.KeltezesDatuma), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public string KeltezesDatumaShortDateString => KeltezesDatuma.ToShortDateString();
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.KeltezesHelye), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
[StringLength(maximumLength: 255, ErrorMessageResourceName = nameof(OsztalyCsoportResource.KeltezesHelyeMax255Karakter), ErrorMessageResourceType = typeof(OsztalyCsoportResource))]
|
||||
public string KeltezesHelye { get; set; }
|
||||
|
||||
public DateTime RogzitesDatuma { get; set; }
|
||||
|
||||
public DateTime UtolsoModositasDatuma { get; set; }
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.RogzitesDatum), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public string RogzitesDatumaStr => RogzitesDatuma.ToString(Constants.ToStringPattern.HungarianDate);
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.UtolsoModositasDatum), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public string UtolsoModositasDatumaStr => UtolsoModositasDatuma.ToString(Constants.ToStringPattern.HungarianDate);
|
||||
|
||||
public int RogzitoId { get; set; }
|
||||
|
||||
public int UtolsoModositoId { get; set; }
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.UtolsoModositoNev), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public string UtolsoModositoNev { get; set; }
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.RogzitoNev), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public string RogzitoNev { get; set; }
|
||||
|
||||
public int? TanuloCsoportId { get; set; }
|
||||
|
||||
public List<ZaradekNyelvItem> ZaradekSzovegList { get; set; }
|
||||
|
||||
public string ZaradekUrl { get; set; }
|
||||
|
||||
public string ZaradekPlaceholder { get; set; }
|
||||
|
||||
public bool IsOfoRogzithetEvkoziZaradekot { get; set; }
|
||||
|
||||
public bool IsOfoRogzithetKiVagyAtsorolasiZaradekot { get; set; }
|
||||
|
||||
public bool IsOsztalyfonok { get; set; }
|
||||
|
||||
public bool IsAdministrator { get; set; }
|
||||
|
||||
public bool IsZaradekKotelezo { get; set; }
|
||||
|
||||
private List<int> _nemzetiDokumentumNyelvek;
|
||||
|
||||
public bool IsTorolheto { get; set; }
|
||||
|
||||
public SorolasZaradek() { ZaradekSzovegList = new List<ZaradekNyelvItem>(); }
|
||||
|
||||
public SorolasZaradek(IConnectionType connectionType, bool pIsKiVagyAtsorolasiZaradek, string pZaradekUrl)
|
||||
{
|
||||
SetBaseData(connectionType, pIsKiVagyAtsorolasiZaradek, pZaradekUrl, null);
|
||||
}
|
||||
|
||||
public SorolasZaradek(IConnectionType connectionType, bool pIsKiVagyAtsorolasiZaradek)
|
||||
{
|
||||
SetBaseData(connectionType, pIsKiVagyAtsorolasiZaradek, null, null);
|
||||
}
|
||||
|
||||
public SorolasZaradek(IConnectionType connectionType, ZaradekCo zaradekCo)
|
||||
{
|
||||
SetBaseData(connectionType, zaradekCo.IsKiVagyAtsorolasiZaradek, null, null);
|
||||
|
||||
Id = zaradekCo.Id;
|
||||
IsBizonyitvanybanMegjelenik = zaradekCo.IsBizonyitvanybanMegjelenik;
|
||||
IsOsztalynaplobanMegjelenik = zaradekCo.IsOsztalynaplobanMegjelenik;
|
||||
IsTorzslaponMegjelenik = zaradekCo.IsTorzslaponMegjelenik;
|
||||
KeltezesDatuma = zaradekCo.KeltezesDatuma.Value;
|
||||
KeltezesHelye = zaradekCo.KeltezesHelye;
|
||||
TanuloCsoportId = zaradekCo.TanuloCsoportId;
|
||||
UtolsoModositasDatuma = zaradekCo.UtolsoModositasDatuma;
|
||||
UtolsoModositoId = zaradekCo.UtolsoModositoId;
|
||||
UtolsoModositoNev = zaradekCo.UtolsoModositoNev;
|
||||
RogzitoNev = zaradekCo.RogzitoNev;
|
||||
RogzitesDatuma = zaradekCo.RogzitesDatuma;
|
||||
_nemzetiDokumentumNyelvek.Add((int)AnyanyelvEnum.magyar);
|
||||
IsTorolheto = !zaradekCo.IsKiVagyAtsorolasiZaradek || new ZaradekHelper(connectionType).IsKiVagyAtsorolasiZaradekTorolheto(zaradekCo.TanuloCsoportId.Value, zaradekCo.Id.Value);
|
||||
foreach (var nemzetiDokumentumNyelv in _nemzetiDokumentumNyelvek)
|
||||
{
|
||||
ZaradekSzovegList.Single(x => x.NyelvId == nemzetiDokumentumNyelv).Szoveg = zaradekCo.ZaradekSzovegList.SingleOrDefault(x => x.NyelvId == nemzetiDokumentumNyelv)?.Szoveg ?? string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
public ZaradekCo ConvertToCo()
|
||||
{
|
||||
var co = new ZaradekCo
|
||||
{
|
||||
Id = Id,
|
||||
TanuloCsoportId = TanuloCsoportId,
|
||||
IsBizonyitvanybanMegjelenik = IsBizonyitvanybanMegjelenik,
|
||||
IsKiVagyAtsorolasiZaradek = IsKiVagyAtsorolasiZaradek,
|
||||
IsOsztalynaplobanMegjelenik = IsOsztalynaplobanMegjelenik,
|
||||
IsTorzslaponMegjelenik = IsTorzslaponMegjelenik,
|
||||
KeltezesDatuma = KeltezesDatuma,
|
||||
KeltezesHelye = KeltezesHelye,
|
||||
RogzitoId = RogzitoId,
|
||||
UtolsoModositoId = UtolsoModositoId,
|
||||
ZaradekSzovegList = this.ZaradekSzovegList.Where(x => !string.IsNullOrWhiteSpace(x.Szoveg)).Select(x => new ZaradekNyelvCo { NyelvId = x.NyelvId, Szoveg = x.Szoveg.Trim() }).ToList()
|
||||
};
|
||||
|
||||
return co;
|
||||
}
|
||||
|
||||
private void SetBaseData(IConnectionType connectionType, bool isKiVagyAtsorolasiZaradek, string zaradekUrl, string zaradekPlaceholder)
|
||||
{
|
||||
var systemSettingsHelper = new SystemSettingsHelper(connectionType);
|
||||
|
||||
_nemzetiDokumentumNyelvek = systemSettingsHelper.GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek);
|
||||
|
||||
ZaradekSzovegList = new List<ZaradekNyelvItem> { new ZaradekNyelvItem { NyelvId = (int)AnyanyelvEnum.magyar, Szoveg = string.Empty } };
|
||||
ZaradekSzovegList.AddRange(_nemzetiDokumentumNyelvek.ConvertAll(zaradekNyelv => new ZaradekNyelvItem { NyelvId = zaradekNyelv, Szoveg = string.Empty }));
|
||||
|
||||
IsOfoRogzithetEvkoziZaradekot = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyfonok_megtekintheti_modosithatja_osztalyaba_jaro_tanulok_zaradekat);
|
||||
IsOfoRogzithetKiVagyAtsorolasiZaradekot = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyfonok_kiegeszitheti_osztalyaba_jaro_tanulok_ki_vagy_atsorolsasi_zaradekat);
|
||||
ZaradekUrl = zaradekUrl;
|
||||
ZaradekPlaceholder = zaradekPlaceholder ?? OsztalyCsoportResource.ValasszaKiAZaradekot;
|
||||
IsKiVagyAtsorolasiZaradek = isKiVagyAtsorolasiZaradek;
|
||||
IsZaradekKotelezo = isKiVagyAtsorolasiZaradek;
|
||||
KeltezesDatuma = DateTime.Now.Date;
|
||||
KeltezesHelye = new IntezmenyHelper(connectionType).GetIntezmenyiAdatok().Varos;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
using System;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class TanuloCsoportSorolasValidacioItemCo
|
||||
{
|
||||
public DateTime? TanuloCsoportBelepesDatum { get; set; }
|
||||
|
||||
public DateTime? TanuloCsoportKilepesDatum { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class TanuloListItem
|
||||
{
|
||||
public string Nev { get; set; }
|
||||
public string NevElotagNelkul { get; set; }
|
||||
public DateTime SzuletesiDatum { get; set; }
|
||||
public DateTime? BesorolasDatum { get; set; }
|
||||
public DateTime? KisorolasDatum { get; set; }
|
||||
public bool Aktiv { get; set; }
|
||||
public string Neme { get; set; }
|
||||
public string Vegzaradek { get; set; }
|
||||
public int JogviszonyCount { get; set; }
|
||||
public int JogviszonyId { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
using System;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
|
||||
public class TanuloOsztalya
|
||||
{
|
||||
public int TanuloId { get; set; }
|
||||
public int OsztalyId { get; set; }
|
||||
public DateTime? Kilepes { get; set; }
|
||||
public DateTime Belepes { get; set; }
|
||||
}
|
||||
|
||||
public class TanuloOsztalyCsoport
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int TanuloId { get; set; }
|
||||
public int OsztalyCsoportId { get; set; }
|
||||
public DateTime? Kilepes { get; set; }
|
||||
public DateTime Belepes { get; set; }
|
||||
}
|
||||
|
||||
public class ValidMethode
|
||||
{
|
||||
public bool IsValid;
|
||||
public string Message;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class TanulokList : Dictionary<int, TanuloListItem>
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
using Kreta.DataAccess.Interfaces;
|
||||
|
||||
namespace Kreta.BusinessLogic.HelperClasses.OsztalyCsoportbaSorolas
|
||||
{
|
||||
public class ZaradekNyelvItem : IZaradekNyelv
|
||||
{
|
||||
public int NyelvId { get; set; }
|
||||
public string Szoveg { get; set; }
|
||||
public int ZaradekId { get; set; }
|
||||
public IZaradek Zaradek { get; set; }
|
||||
public int IntezmenyId { get; set; }
|
||||
public IIntezmeny Intezmeny { get; set; }
|
||||
public int TanevId { get; set; }
|
||||
public ITanev Tanev { get; set; }
|
||||
public int ID { get; set; }
|
||||
public bool Torolt { get; set; }
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue