using System.Collections.Generic;
using System.Linq;
using Kreta.Ellenorzo.BL.VN.Adatszotar;
using Kreta.Ellenorzo.Dao.VN.Tantargy;
using Kreta.Ellenorzo.Domain.VN.Adatszotar;
using Kreta.Ellenorzo.Domain.VN.Logic;
using Kreta.Ellenorzo.Domain.VN.Tantargy;
using Kreta.Ellenorzo.Enums.VN;
using Kreta.Enums;
namespace Kreta.Ellenorzo.BL.VN.Logic
{
///
/// Author: Érsek Zalán Created On: 2019.09
///
internal static class TantargyLogic
{
internal static readonly TantargyResponse MagatartasTantargy = new TantargyResponse(nameof(MagatartasSzorgalomTantargy.Magatartas),
EnumLogic.GetDisplayNameAttribute(MagatartasSzorgalomTantargy.Magatartas),
new Adatszotar(nameof(MagatartasSzorgalomTantargy.Magatartas),
EnumLogic.GetDisplayNameAttribute(MagatartasSzorgalomTantargy.Magatartas)), 0)
{
TantargyInTtf = false
};
internal static readonly TantargyResponse SzorgalomTantargy = new TantargyResponse(nameof(MagatartasSzorgalomTantargy.Szorgalom),
EnumLogic.GetDisplayNameAttribute(MagatartasSzorgalomTantargy.Szorgalom),
new Adatszotar(nameof(MagatartasSzorgalomTantargy.Szorgalom),
EnumLogic.GetDisplayNameAttribute(MagatartasSzorgalomTantargy.Szorgalom)), 1)
{
TantargyInTtf = false
};
internal static void RemoveOsztalyfonokiKategoriasTantargyak(List tantargyList)
{
_ = tantargyList.RemoveAll(x => x.TargykategoriaId == (int)TargyKategoriaTipusEnum.osztalyfonoki_elet_es_palyatervezes && !x.ErtekelesBol);
}
internal static void OrderTantargyList(HashSet tantargyList, int tanevId)
{
var targyKategoriaTipusById = AdatszotarSubqueries.GetTipusByIdDictionary((int)GeneratedAdatszotarTipusEnum.TargyKategoriaTipus, tanevId);
foreach (var tantargy in tantargyList.Where(x => x.Uid.Id != 0))
{
tantargy.TantargyKategoriaOrderIndex = targyKategoriaTipusById[tantargy.Kategoria.Uid.Id].Order ?? 10000;
tantargy.FotargyTantargyKategoriaOrderIndex = tantargy.FotargyKategoriaId.HasValue ? targyKategoriaTipusById[tantargy.FotargyKategoriaId.Value].Order ?? 10000 : (int?)null;
}
int index = 2;
foreach (TantargyResponse tantargy in tantargyList.Where(x => x.Uid.Id != 0) // A Magatartás és Szorgalom Id-ja 0, ezeket nem rendezzük, fix első két helyen vannak.
.OrderBy(x => x.SorSzam)
.ThenBy(x => x.IsFotargy ? x.TantargyKategoriaOrderIndex : x.FotargyTantargyKategoriaOrderIndex)
.ThenBy(x => x.IsFotargy ? x.Nev : x.FotargyNev)
.ThenBy(x => x.IsFotargy ? 0 : 1)
.ThenBy(x => x.Nev)
.ToList())
{
tantargy.SortIndex = index;
++index;
}
}
}
}