init
This commit is contained in:
		
							
								
								
									
										185
									
								
								Kreta.BusinessLogic/Logic/Mulasztas/MulasztasLogic.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								Kreta.BusinessLogic/Logic/Mulasztas/MulasztasLogic.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,185 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Data;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Kreta.BusinessLogic.Classes;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
 | 
			
		||||
using Kreta.Core.ConnectionType;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
using Kreta.Enums.ManualEnums;
 | 
			
		||||
using Kreta.Enums.ManualEnums.SystemSettings;
 | 
			
		||||
using Kreta.Resources;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Mulasztas
 | 
			
		||||
{
 | 
			
		||||
    public class MulasztasLogic
 | 
			
		||||
    {
 | 
			
		||||
        private readonly IConnectionType ConnectionType;
 | 
			
		||||
 | 
			
		||||
        public MulasztasLogic(IConnectionType connectionType)
 | 
			
		||||
        {
 | 
			
		||||
            ConnectionType = connectionType;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public DataSet GetMulasztasok(int osztalycsoportId, int tanoraId, DateTime oraKezdete, DateTime oraVege, int targyId, int tanarId, bool hianyzokAutoKitoltes, SzervezetTipusEnum? szervezetTipus = null)
 | 
			
		||||
        {
 | 
			
		||||
            var systemHelper = new SystemSettingsHelper(ConnectionType);
 | 
			
		||||
            var tantargyHelper = new TantargyHelper(ConnectionType);
 | 
			
		||||
            var tanevHelper = new TanevHelper(ConnectionType);
 | 
			
		||||
            var osztalyCsoportHelper = new OsztalyCsoportHelper(ConnectionType);
 | 
			
		||||
 | 
			
		||||
            var magantanuloMulasztasKezeles = (SystemSettingMagantanuloMulasztas)systemHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Magantanulo_oralatogatas_aloli_mentessegenek_kezelese);
 | 
			
		||||
            var parhuzamosOraKezeles = systemHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.A_foglalkozasok_mulasztasi_adatai_megadasanal_a_parhuzamos_orakkal_valo_utkozes_vizsgalata);
 | 
			
		||||
            var csakMegtartott = systemHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Naplozaskor_mulasztas_szazalek_szamitas) == 1 ? 0 : 1;
 | 
			
		||||
            var alapertelmezettMulasztasTipus = (MulasztasTipusEnum)systemHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.alapertelmezett_statusz_naplozasok_eseteben);
 | 
			
		||||
 | 
			
		||||
            if (osztalyCsoportHelper.GetCsoportTipusByOsztalyCsoportId(osztalycsoportId) == CsoportTipusEnum.apaczai_mentorcsoport)
 | 
			
		||||
            {
 | 
			
		||||
                alapertelmezettMulasztasTipus = MulasztasTipusEnum.ures;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var tanevCo = tanevHelper.GetTanevInfo();
 | 
			
		||||
            var isGyakorlatiTantargy = tantargyHelper.IsGyakorlatiTantargy(targyId);
 | 
			
		||||
            var parhuzamosOranNaplozottak = new MulasztasHelper(ConnectionType).ListParhuzamosOranNaplozottMulasztasTanuloId(oraKezdete, oraVege, tanoraId);
 | 
			
		||||
 | 
			
		||||
            var elozoOranhianyzottTanulok = hianyzokAutoKitoltes ? new TanuloHelper(ConnectionType).GetElozoOranHianyzottTanulok(oraKezdete, osztalycsoportId) : null;
 | 
			
		||||
            var tantargybolElozoOranHianyzottTanulok = new OrarendiOraHelper(ConnectionType).GetElozoOranHianyzottTanulo(targyId, osztalycsoportId, oraKezdete);
 | 
			
		||||
 | 
			
		||||
            var ds = osztalyCsoportHelper.GetMulasztasEsFelmentesOsztalyCsoportTanuloi(osztalycsoportId, tanoraId, targyId, tanarId, oraKezdete.Date, csakMegtartott, tanevCo, alapertelmezettMulasztasTipus);
 | 
			
		||||
            ds.Tables[0].Columns.Add("elozoOranHianyzott", typeof(bool));
 | 
			
		||||
 | 
			
		||||
            foreach (DataRow row in ds.Tables[0].Rows)
 | 
			
		||||
            {
 | 
			
		||||
                SetAmiTooltipsAndInfos(row);
 | 
			
		||||
                CheckMagantanuloFelmentes(row, magantanuloMulasztasKezeles, isGyakorlatiTantargy, oraKezdete);
 | 
			
		||||
                SetParhuzamosOraFelmentett(row, parhuzamosOraKezeles, parhuzamosOranNaplozottak);
 | 
			
		||||
                if ((row["MulasztasId"] == DBNull.Value) && hianyzokAutoKitoltes)
 | 
			
		||||
                { SetMulasztasHianyzasFromLastLesson(row, elozoOranhianyzottTanulok); }
 | 
			
		||||
                SetMulasztasIgazolas(row);
 | 
			
		||||
                SetMulasztasEloreRogzitettIgazolas(row, tanoraId);
 | 
			
		||||
                SetElozoOranHianyzottTanulo(row, tantargybolElozoOranHianyzottTanulok);
 | 
			
		||||
                SetMulasztasTipusUresOraMentesseg(row, oraKezdete, tanoraId);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return ds;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void CheckMagantanuloFelmentes(DataRow row, SystemSettingMagantanuloMulasztas magantanuloMulasztasKezeles, bool isGyakorlatiTantargy, DateTime oraKezdete)
 | 
			
		||||
        {
 | 
			
		||||
            var magantanulosagKezdete = SDAConvert.ToDateTime(row["MagantanulosagKezdete"]);
 | 
			
		||||
            var magantanulosagVege = SDAConvert.ToDateTime(row["MagantanulosagVege"]);
 | 
			
		||||
            if (SDAConvert.ToBoolean(row["IsMagantanulo_BOOL"]) && (magantanulosagKezdete.HasValue == false || magantanulosagKezdete.Value.Date <= oraKezdete.Date) && (!magantanulosagVege.HasValue || magantanulosagVege >= oraKezdete.Date))
 | 
			
		||||
            {
 | 
			
		||||
                if (SDAConvert.ToBoolean(row["OraMentesseg_BOOL"]) || (magantanuloMulasztasKezeles != SystemSettingMagantanuloMulasztas.KotelezoMegjelenie && (magantanuloMulasztasKezeles != SystemSettingMagantanuloMulasztas.CsakGyakorlaton || !isGyakorlatiTantargy)))
 | 
			
		||||
                {
 | 
			
		||||
                    row["OraMentesseg"] = "T";
 | 
			
		||||
                    row["OraMentesseg_BOOL"] = true;
 | 
			
		||||
                    row["Oka"] = row["Oka"] + " " + OrarendResource.Magantanulo;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    row["OraMentesseg"] = "F";
 | 
			
		||||
                    row["OraMentesseg_BOOL"] = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SetParhuzamosOraFelmentett(DataRow row, bool parhuzamosOraKezeles, List<int> parhuzamosOranNaplozottak)
 | 
			
		||||
        {
 | 
			
		||||
            if (!parhuzamosOraKezeles)
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            if (parhuzamosOranNaplozottak.Count > 0 && parhuzamosOranNaplozottak.Contains(SDAConvert.ToInt32(row["ID"])))
 | 
			
		||||
            {
 | 
			
		||||
                row["OraMentesseg"] = "T";
 | 
			
		||||
                row["OraMentesseg_BOOL"] = true;
 | 
			
		||||
                row["Oka"] = row["Oka"] + " " + OrarendResource.ParhuzamosOranMarNaploztak;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SetMulasztasHianyzasFromLastLesson(DataRow row, List<int> elozoOranhianyzottTanulok)
 | 
			
		||||
        {
 | 
			
		||||
            if (elozoOranhianyzottTanulok?.Count > 0)
 | 
			
		||||
            {
 | 
			
		||||
                if (elozoOranhianyzottTanulok.Contains(SDAConvert.ToInt32(row["ID"])))
 | 
			
		||||
                {
 | 
			
		||||
                    row["MulasztasTipus"] = (int)MulasztasTipusEnum.hianyzas;
 | 
			
		||||
                    row["MulasztasTipus_DNAME"] = MulasztasTipusEnum.hianyzas.GetDisplayName(ConnectionType.TanevId);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SetMulasztasIgazolas(DataRow row)
 | 
			
		||||
        {
 | 
			
		||||
            var igazoltMulasztas = SDAConvert.ToBooleanFromTF(row["Igazolt"], NullValue: false);
 | 
			
		||||
            if (igazoltMulasztas)
 | 
			
		||||
            {
 | 
			
		||||
                row["Oka"] = row["Oka"] + " " + OrarendResource.ATanulonakVanRogzitveIgazolasa;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SetElozoOranHianyzottTanulo(DataRow row, List<int> tantargybolElozoOranHianyzottTanulok)
 | 
			
		||||
        {
 | 
			
		||||
            if (tantargybolElozoOranHianyzottTanulok.Any())
 | 
			
		||||
            {
 | 
			
		||||
                if (tantargybolElozoOranHianyzottTanulok.Contains(row.Field<int>("ID")))
 | 
			
		||||
                {
 | 
			
		||||
                    row["elozoOranHianyzott"] = true;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    row["elozoOranHianyzott"] = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SetMulasztasEloreRogzitettIgazolas(DataRow row, int tanoraId)
 | 
			
		||||
        {
 | 
			
		||||
            if (tanoraId < 0)
 | 
			
		||||
            {
 | 
			
		||||
                if (row["RogzitettIgazolas"].ToString() == "T" && string.IsNullOrWhiteSpace(SDAConvert.ToString(row["MulasztasId"])))
 | 
			
		||||
                {
 | 
			
		||||
                    row["MulasztasTipus"] = (int)MulasztasTipusEnum.hianyzas;
 | 
			
		||||
                    row["MulasztasTipus_DNAME"] = MulasztasTipusEnum.hianyzas.GetDisplayName(ConnectionType.TanevId);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SetMulasztasTipusUresOraMentesseg(DataRow row, DateTime oraKezdete, int tanoraId)
 | 
			
		||||
        {
 | 
			
		||||
            // csak nem naplózott óráknál kell
 | 
			
		||||
            if (tanoraId < 0)
 | 
			
		||||
            {
 | 
			
		||||
                var magantanulosagKezdete = SDAConvert.ToDateTime(row["MagantanulosagKezdete"]);
 | 
			
		||||
                var magantanulosagVege = SDAConvert.ToDateTime(row["MagantanulosagVege"]);
 | 
			
		||||
                if (SDAConvert.ToBoolean(row["OraMentesseg_BOOL"]) ||
 | 
			
		||||
                    (SDAConvert.ToBoolean(row["IsMagantanulo_BOOL"]) && (magantanulosagKezdete.HasValue == false || magantanulosagKezdete.Value.Date <= oraKezdete.Date) && (!magantanulosagVege.HasValue || magantanulosagVege >= oraKezdete.Date)))
 | 
			
		||||
                {
 | 
			
		||||
                    row["MulasztasTipus"] = (int)MulasztasTipusEnum.ures;
 | 
			
		||||
                    row["MulasztasTipus_DNAME"] = MulasztasTipusEnum.ures.GetDisplayName(ConnectionType.TanevId);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SetAmiTooltipsAndInfos(DataRow row)
 | 
			
		||||
        {
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(row.Field<string>("EvfolyamId_DNAME")))
 | 
			
		||||
            {
 | 
			
		||||
                row["TanuloNev"] = row.Field<string>("TanuloNev").Substring(0, row.Field<string>("TanuloNev").Length - 1) +
 | 
			
		||||
                    " - " +
 | 
			
		||||
                    row.Field<string>("EvfolyamId_DNAME") + ", " +
 | 
			
		||||
                    row.Field<string>("AmiTagozatId_DNAME") + ")";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(row.Field<string>("AmiFotargyId_DNAME")))
 | 
			
		||||
            { row["AmiFotargyId_DNAME"] = "-"; }
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(row.Field<string>("AmiTagozatId_DNAME")))
 | 
			
		||||
            { row["AmiTagozatId_DNAME"] = "-"; }
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(row.Field<string>("AmiTantargyKotelezosegId_DNAME")))
 | 
			
		||||
            { row["AmiTantargyKotelezosegId_DNAME"] = "-"; }
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(row.Field<string>("EvfolyamId_DNAME")))
 | 
			
		||||
            { row["EvfolyamId_DNAME"] = "-"; }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user