init
This commit is contained in:
		
							
								
								
									
										118
									
								
								Kreta.BusinessLogic/Logic/ExportLogic.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								Kreta.BusinessLogic/Logic/ExportLogic.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,118 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Data;
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
using Kreta.BusinessLogic.Classes;
 | 
			
		||||
using OfficeOpenXml;
 | 
			
		||||
using OfficeOpenXml.Style;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic
 | 
			
		||||
{
 | 
			
		||||
    public static class ExportLogic
 | 
			
		||||
    {
 | 
			
		||||
        /// TODO devKornél(enhancement): Ha nem fog ellátni plusz funkciót, akkor csinálni egy optimálisabbat, ami csak oszlopot nevez át és töröl
 | 
			
		||||
        public static DataTable MapDataTable(DataTable fromTable, (string nameFrom, string nameTo, Type type)[] map)
 | 
			
		||||
        {
 | 
			
		||||
            var toTable = new DataTable();
 | 
			
		||||
            foreach (var (_, nameTo, type) in map)
 | 
			
		||||
            {
 | 
			
		||||
                toTable.Columns.Add(nameTo, type);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            foreach (var item in fromTable.AsEnumerable())
 | 
			
		||||
            {
 | 
			
		||||
                toTable.Rows.Add(GetDataRow(item));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            TryCreateHeaderIfNotExist(toTable);
 | 
			
		||||
 | 
			
		||||
            return toTable;
 | 
			
		||||
 | 
			
		||||
            DataRow GetDataRow(DataRow fromRow)
 | 
			
		||||
            {
 | 
			
		||||
                var toRow = toTable.NewRow();
 | 
			
		||||
                foreach (var (nameFrom, nameTo, type) in map)
 | 
			
		||||
                {
 | 
			
		||||
                    toRow[nameTo] = Convert.ChangeType(fromRow[nameFrom], type);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                return toRow;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Kicserélésre kerül az oszlopsorrend, beállításra kerül az oszlop típusa és átneveződik az oszlop neve a 'map' paraméternek megfelelően.
 | 
			
		||||
        /// Végül, remove-olva lesznek a sorrendezésből kimaradt ('map'-ben nem szereplő) oszlopok.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="dataTable"></param>
 | 
			
		||||
        /// <param name="map"></param>
 | 
			
		||||
        /// <param name="removeUnusedColumns"></param>
 | 
			
		||||
        public static void MapDataTable(DataTable dataTable, (string fromColumn, string toColumn, Type type)[] map, bool removeUnusedColumns)
 | 
			
		||||
        {
 | 
			
		||||
            for (var i = 0; i < map.Length; i++)
 | 
			
		||||
            {
 | 
			
		||||
                dataTable.Columns[map[i].fromColumn].SetOrdinal(i);
 | 
			
		||||
                dataTable.Columns[map[i].fromColumn].DataType = map[i].type;
 | 
			
		||||
                dataTable.Columns[map[i].fromColumn].ColumnName = map[i].toColumn; // csak a végén nevezhető át!
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (removeUnusedColumns)
 | 
			
		||||
            {
 | 
			
		||||
                for (var i = dataTable.Columns.Count - 1; i >= map.Length; i--)
 | 
			
		||||
                {
 | 
			
		||||
                    dataTable.Columns.RemoveAt(i);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static bool TryCreateHeaderIfNotExist(DataTable table)
 | 
			
		||||
        {
 | 
			
		||||
            if (table.Rows.Count < 1)
 | 
			
		||||
            {
 | 
			
		||||
                table.Rows.Add(table.NewRow());
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Dátum oszlopok megjelenítésének korrigálása, már az export fájlnál.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="exportColumns"></param>
 | 
			
		||||
        /// <param name="workSheet"></param>
 | 
			
		||||
        public static void FormatDateFields((string fromColumn, string toColumn, Type type)[] exportColumns, ExcelWorksheet workSheet)
 | 
			
		||||
        {
 | 
			
		||||
            for (int i = 0; i < exportColumns.Length; i++)
 | 
			
		||||
            {
 | 
			
		||||
                if (typeof(DateTime).Equals(exportColumns[i].type))
 | 
			
		||||
                {
 | 
			
		||||
                    workSheet.Column(i + 1).Style.Numberformat.Format = SDAFormat.ShortDate;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static void SetHeaderStyles(ExcelRange range)
 | 
			
		||||
        {
 | 
			
		||||
            range.Style.Fill.PatternType = ExcelFillStyle.Solid;
 | 
			
		||||
            range.Style.Fill.BackgroundColor.SetColor(Core.Constants.Export.HeaderColor);
 | 
			
		||||
            range.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
 | 
			
		||||
            range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
 | 
			
		||||
            range.Style.Font.Bold = Core.Constants.Export.HeaderIsBold;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static void SetRowColorAlternate(ExcelWorksheet worksheet, int rowCount)
 | 
			
		||||
        {
 | 
			
		||||
            //NOTE: minden masodik sort szürkével jelöljük az excelben
 | 
			
		||||
            for (var i = 1; i <= rowCount + 1; i++)
 | 
			
		||||
            {
 | 
			
		||||
                if (i % 2 == 0)
 | 
			
		||||
                {
 | 
			
		||||
                    worksheet.Row(i).Style.Fill.PatternType = ExcelFillStyle.Solid;
 | 
			
		||||
                    worksheet.Row(i).Style.Fill.BackgroundColor.SetColor(Color.LightGray);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										117
									
								
								Kreta.BusinessLogic/Logic/Feljegyzes/FeljegyzesLogic.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								Kreta.BusinessLogic/Logic/Feljegyzes/FeljegyzesLogic.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,117 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Data;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Kreta.BusinessLogic.Classes;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers;
 | 
			
		||||
using Kreta.Core;
 | 
			
		||||
using Kreta.Core.ConnectionType;
 | 
			
		||||
using Kreta.DataAccessManual;
 | 
			
		||||
using Kreta.DataAccessManual.Interfaces;
 | 
			
		||||
using Kreta.DataAccessManual.Util;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
using Kreta.KretaServer.SystemSettings;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Feljegyzes
 | 
			
		||||
{
 | 
			
		||||
    public class FeljegyzesLogic
 | 
			
		||||
    {
 | 
			
		||||
        private readonly IConnectionType ConnectionType;
 | 
			
		||||
 | 
			
		||||
        public FeljegyzesLogic(IConnectionType connectionType)
 | 
			
		||||
        {
 | 
			
		||||
            ConnectionType = connectionType;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// INFO @DevKornel: Mobil használja
 | 
			
		||||
        public void RemoveHiddenRowsFromFeljegyzesDataSet(DataTable dataTable, string columnHeader, int tanuloId)
 | 
			
		||||
        {
 | 
			
		||||
            Dal.CustomConnection.Run(ConnectionType, h =>
 | 
			
		||||
            {
 | 
			
		||||
                bool isVegzosOsztalyTanuloja = GetIsVegzosOsztalyTanuloja(tanuloId, h);
 | 
			
		||||
                for (int i = dataTable.Rows.Count - 1; i >= 0; --i)
 | 
			
		||||
                {
 | 
			
		||||
                    int tipusId = SDAConvert.ToInt32(dataTable.Rows[i][columnHeader]);
 | 
			
		||||
                    if (tipusId == (int)EsemenyTipusEnum.INegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsINegyedevesJegyHidden() ||
 | 
			
		||||
                        tipusId == (int)EsemenyTipusEnum.IINegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsIiNegyedevesJegyHidden() ||
 | 
			
		||||
                        tipusId == (int)EsemenyTipusEnum.FeleviBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsFeleviJegyHidden() ||
 | 
			
		||||
                        tipusId == (int)EsemenyTipusEnum.IIINegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsIiiNegyedevesJegyHidden() ||
 | 
			
		||||
                        tipusId == (int)EsemenyTipusEnum.IVNegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsIvNegyedevesJegyHidden(isVegzosOsztalyTanuloja) ||
 | 
			
		||||
                        tipusId == (int)EsemenyTipusEnum.EvVegiBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb && IsEvvegiJegyHidden(isVegzosOsztalyTanuloja) ||
 | 
			
		||||
                        tipusId == (int)EsemenyTipusEnum.TorzslaponMegjelenoEgyebFeljegyzesVagyHatarozat)
 | 
			
		||||
                    {
 | 
			
		||||
                        dataTable.Rows.RemoveAt(i);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // INFO @DevKornél: Mobil használja
 | 
			
		||||
        private bool GetIsVegzosOsztalyTanuloja(int tanuloId, IDalHandler h)
 | 
			
		||||
        {
 | 
			
		||||
            var isVegzosOsztalyTanuloja = false;
 | 
			
		||||
 | 
			
		||||
            int? osztalyId = new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanuloAlapkepzesesOsztalyId(tanuloId);
 | 
			
		||||
            if (osztalyId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                isVegzosOsztalyTanuloja = new OsztalyCsoportHelper(new DalHandlerConnectionType(ConnectionType, h)).GetIsVegzosOsztalyCsoport(osztalyId.Value);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return isVegzosOsztalyTanuloja;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool IsEvvegiJegyHidden(bool isVegzosOsztalyTanuloja)
 | 
			
		||||
        {
 | 
			
		||||
            //NOTE: Ha végzős, akkor a végzős évvégi jegy megjelenítés dátumát vesszük figyelembe, különben az évvégi jegy megjelenítés dátumát!
 | 
			
		||||
            DateTime? megjelenitesDate = isVegzosOsztalyTanuloja ? SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma_vegzos, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId) : SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
 | 
			
		||||
            return megjelenitesDate > DateTime.UtcNow;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool IsINegyedevesJegyHidden()
 | 
			
		||||
        {
 | 
			
		||||
            DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.I_Negyedeves_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
 | 
			
		||||
            return megjelenitesDate > DateTime.UtcNow;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool IsIiNegyedevesJegyHidden()
 | 
			
		||||
        {
 | 
			
		||||
            DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.II_Negyedeves_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
 | 
			
		||||
            return megjelenitesDate > DateTime.UtcNow;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool IsFeleviJegyHidden()
 | 
			
		||||
        {
 | 
			
		||||
            DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Felevi_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
 | 
			
		||||
            return megjelenitesDate > DateTime.UtcNow;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool IsIiiNegyedevesJegyHidden()
 | 
			
		||||
        {
 | 
			
		||||
            DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.III_Negyedeves_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
 | 
			
		||||
            return megjelenitesDate > DateTime.UtcNow;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool IsIvNegyedevesJegyHidden(bool isVegzosOsztalyTanuloja)
 | 
			
		||||
        {
 | 
			
		||||
            DateTime? megjelenitesDate;
 | 
			
		||||
            DateTime? ivNegyedevesJegyMegjelenitesDate = SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.IV_Negyedeves_jegyek_megjelenesenek_datuma, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId);
 | 
			
		||||
            if (isVegzosOsztalyTanuloja)
 | 
			
		||||
            {
 | 
			
		||||
                //NOTE: Ha végzős, akkor a végzős évvégi jegy megjelenítés és a IV. negyedéves jegy megjelenítés dátum közül a korábbit vesszük figyelembe!
 | 
			
		||||
                List<DateTime?> megjelenitesDateList = new List<DateTime?>
 | 
			
		||||
                {
 | 
			
		||||
                    ivNegyedevesJegyMegjelenitesDate,
 | 
			
		||||
                    SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma_vegzos, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId)
 | 
			
		||||
                };
 | 
			
		||||
                megjelenitesDate = megjelenitesDateList.OfType<DateTime>().Min();
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                //NOTE: Ha nem végzős, akkor a IV. negyedéves jegy megjelenítés dátumát vesszük figyelembe!
 | 
			
		||||
                megjelenitesDate = ivNegyedevesJegyMegjelenitesDate;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return megjelenitesDate > DateTime.UtcNow;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								Kreta.BusinessLogic/Logic/HaziFeladatLogic.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								Kreta.BusinessLogic/Logic/HaziFeladatLogic.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic
 | 
			
		||||
{
 | 
			
		||||
    public static class HaziFeladatLogic
 | 
			
		||||
    {
 | 
			
		||||
        public static void IsTanarRogzitette(TanarHaziFeladatDetailCO co)
 | 
			
		||||
        {
 | 
			
		||||
            //if (!co.IsTanarRogzitette || )
 | 
			
		||||
            //{
 | 
			
		||||
            //    co.Szoveg = OrarendResource.EhhezAzOrahozATanarMegNemRogzitettHaziFeladatotAzOnlineFeluleten;
 | 
			
		||||
            //}
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										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"] = "-"; }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,19 @@
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
 | 
			
		||||
{
 | 
			
		||||
    public class DigitalisOktatasAdatok
 | 
			
		||||
    {
 | 
			
		||||
        public int? DigEszkozTipusId { get; set; }
 | 
			
		||||
        public int? DigPlatformTipusId { get; set; }
 | 
			
		||||
        public List<int> DigTamEszkozTipusList { get; set; }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(TanoraCO co)
 | 
			
		||||
        {
 | 
			
		||||
            DigEszkozTipusId = co.DigEszkozTipusId;
 | 
			
		||||
            DigPlatformTipusId = co.DigPlatformTipusId;
 | 
			
		||||
            DigTamEszkozTipusList = co.DigTamEszkozTipusIdList;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,18 @@
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
 | 
			
		||||
{
 | 
			
		||||
    public class EgyediNaplozasElokeszitesCo : NaplozasElokeszitesCo
 | 
			
		||||
    {
 | 
			
		||||
        public int TanarId { get; set; }
 | 
			
		||||
        public int? TeremId { get; set; }
 | 
			
		||||
        public int? FoglakozasId { get; set; }
 | 
			
		||||
        public int? OsztalyCsoportId { get; set; }
 | 
			
		||||
        public int? TantargyId { get; set; }
 | 
			
		||||
        public int? CsengetesirendOraId { get; set; }
 | 
			
		||||
        public int? CsengetesirendId { get; set; }
 | 
			
		||||
        public int? HelyettesitesId { get; set; }
 | 
			
		||||
        public int? HelyettesitesTanarId { get; set; }
 | 
			
		||||
        public string HelyettesitesOka { get; set; }
 | 
			
		||||
        public int? HelyettesitesTipus { get; set; }
 | 
			
		||||
        public bool IsOraOsszevonas { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,37 @@
 | 
			
		||||
using System;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
 | 
			
		||||
{
 | 
			
		||||
    public class HazifeladatModel
 | 
			
		||||
    {
 | 
			
		||||
        public int? Id { get; set; }
 | 
			
		||||
        public string Szoveg { get; set; }
 | 
			
		||||
        public DateTime? Hatarido { get; set; }
 | 
			
		||||
        public int? CsatolmanyId { get; set; }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(TanoraCO co)
 | 
			
		||||
        {
 | 
			
		||||
            Id = co.HaziFeladatId;
 | 
			
		||||
            Szoveg = co.HaziFeladat;
 | 
			
		||||
            Hatarido = co.HaziHatarideje;
 | 
			
		||||
            CsatolmanyId = co.HaziFeladatCsatolmanyId;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(NaplozasCo co)
 | 
			
		||||
        {
 | 
			
		||||
            Id = co.Hazifeladat.Id;
 | 
			
		||||
            Szoveg = co.Hazifeladat.Szoveg;
 | 
			
		||||
            Hatarido = co.Hazifeladat.Hatarido;
 | 
			
		||||
            CsatolmanyId = co.Hazifeladat.CsatolmanyId;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(NaplozasMobilCo co)
 | 
			
		||||
        {
 | 
			
		||||
            Id = co.Hazifeladat.Id;
 | 
			
		||||
            Szoveg = co.Hazifeladat.Szoveg;
 | 
			
		||||
            Hatarido = co.Hazifeladat.Hatarido;
 | 
			
		||||
            CsatolmanyId = co.Hazifeladat.CsatolmanyId;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,55 @@
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
 | 
			
		||||
{
 | 
			
		||||
    public class HelyettesitesModel
 | 
			
		||||
    {
 | 
			
		||||
        public int? Id { get; set; }
 | 
			
		||||
        public int? TanarId { get; set; }
 | 
			
		||||
        public string Oka { get; set; }
 | 
			
		||||
        public int? Tipus { get; set; }
 | 
			
		||||
        public bool IsKeresoAltalTalaltOra { get; set; }
 | 
			
		||||
        public bool IsTulora { get; set; }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(EgyediNaplozasElokeszitesCo input, int userId)
 | 
			
		||||
        {
 | 
			
		||||
            Id = input.HelyettesitesId;
 | 
			
		||||
            TanarId = input.HelyettesitesTipus.HasValue ? userId : (int?)null;
 | 
			
		||||
            Oka = input.HelyettesitesOka;
 | 
			
		||||
            Tipus = input.HelyettesitesTipus;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(TanoraCO co)
 | 
			
		||||
        {
 | 
			
		||||
            Id = co.HelyettesitesId;
 | 
			
		||||
            TanarId = co.Helyettesito;
 | 
			
		||||
            Oka = co.HelyettesitesOka;
 | 
			
		||||
            Tipus = co.HelyettesitesTipus;
 | 
			
		||||
            IsTulora = co.HelyettesIsTulora;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(NaplozasCo co, bool isEgyediNaplozas)
 | 
			
		||||
        {
 | 
			
		||||
            if (co.Helyettesites.Oka != null)
 | 
			
		||||
            {
 | 
			
		||||
                Oka = co.Helyettesites.Oka;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var helyettesitettOrarendiOra = Id.HasValue && Id > 0; /*csak akkor van értéke ha az orarendi ora már feltöltötte és volt rajta beállított helyetesites*/
 | 
			
		||||
            if (helyettesitettOrarendiOra)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!co.Helyettesites.TanarId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            IsKeresoAltalTalaltOra = !isEgyediNaplozas;
 | 
			
		||||
            Id = co.Helyettesites.Id;
 | 
			
		||||
            TanarId = co.Helyettesites.TanarId;
 | 
			
		||||
            Tipus = co.Helyettesites.Tipus;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,10 @@
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
 | 
			
		||||
{
 | 
			
		||||
    public class HelyettesitesNaplozasElokeszitesCo : NaplozasElokeszitesCo
 | 
			
		||||
    {
 | 
			
		||||
        public int? HelyettesitesId { get; set; }
 | 
			
		||||
        public int? HelyettesitesTanarId { get; set; }
 | 
			
		||||
        public string HelyettesitesOka { get; set; }
 | 
			
		||||
        public int? HelyettesitesTipus { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,20 @@
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
 | 
			
		||||
{
 | 
			
		||||
    public class MulasztasItem
 | 
			
		||||
    {
 | 
			
		||||
        public int? MulasztasId { get; set; }
 | 
			
		||||
        public int TanuloId { get; set; }
 | 
			
		||||
        public int? MulasztasTipus { get; set; }
 | 
			
		||||
        public int? Keses { get; set; }
 | 
			
		||||
 | 
			
		||||
        public bool HazifeladatHiany { get; set; }
 | 
			
		||||
        public bool FelszerelesHiany { get; set; }
 | 
			
		||||
        public bool Felmentes { get; set; }
 | 
			
		||||
        public bool TanoraiDicseret { get; set; }
 | 
			
		||||
 | 
			
		||||
        public int? HazifeladatHianyId { get; set; }
 | 
			
		||||
        public int? FelszerelesHianyId { get; set; }
 | 
			
		||||
        public int? FelmentesId { get; set; }
 | 
			
		||||
        public int? TanoraiDicseretId { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,83 @@
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers;
 | 
			
		||||
using Kreta.Core.ConnectionType;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
 | 
			
		||||
{
 | 
			
		||||
    public class MulasztasModel
 | 
			
		||||
    {
 | 
			
		||||
        public MulasztasModel()
 | 
			
		||||
        {
 | 
			
		||||
            MulasztasList = new List<MulasztasItem>();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public int? JogviszonySzunetletetokDb { get; set; }
 | 
			
		||||
        public string JogviszonySzunetletetok { get; set; }
 | 
			
		||||
        public int? SzakmaiGyakorlatonLevokDb { get; set; }
 | 
			
		||||
        public string SzakmaiGyakorlatonLevok { get; set; }
 | 
			
		||||
        public List<MulasztasItem> MulasztasList { get; set; }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(NaplozasCo co, int maxKeses)
 | 
			
		||||
        {
 | 
			
		||||
            foreach (var item in co.MulasztasList)
 | 
			
		||||
            {
 | 
			
		||||
                MulasztasList.Add(new MulasztasItem()
 | 
			
		||||
                {
 | 
			
		||||
                    MulasztasId = item.MulasztasId,
 | 
			
		||||
 | 
			
		||||
                    TanuloId = item.TanuloId,
 | 
			
		||||
                    MulasztasTipus = item.MulasztasTipus,
 | 
			
		||||
                    Keses = item.Keses >= maxKeses ? maxKeses : item.Keses,
 | 
			
		||||
                    HazifeladatHiany = item.HazifeladatHiany,
 | 
			
		||||
                    FelszerelesHiany = item.FelszerelesHiany,
 | 
			
		||||
                    Felmentes = item.Felmentes,
 | 
			
		||||
                    TanoraiDicseret = item.TanoraiDicseret,
 | 
			
		||||
 | 
			
		||||
                    HazifeladatHianyId = item.HazifeladatHianyId,
 | 
			
		||||
                    FelszerelesHianyId = item.FelszerelesHianyId,
 | 
			
		||||
                    FelmentesId = item.FelmentesId,
 | 
			
		||||
                    TanoraiDicseretId = item.TanoraiDicseretId
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(IConnectionType connectionType, NaplozasMobilCo co, int maxKeses, int? tanitasiOraId)
 | 
			
		||||
        {
 | 
			
		||||
            var oraMulasztasai = new MulasztasHelper(connectionType).GetTanoraMulasztasai(tanitasiOraId);
 | 
			
		||||
            var oraFeljegyzesei = new FeljegyzesekHelper(connectionType).GetTanoraFeljegyzesei(tanitasiOraId);
 | 
			
		||||
 | 
			
		||||
            foreach (var item in co.MulasztasList)
 | 
			
		||||
            {
 | 
			
		||||
                var mulasztasItem = new MulasztasItem()
 | 
			
		||||
                {
 | 
			
		||||
                    TanuloId = item.TanuloId,
 | 
			
		||||
                    MulasztasTipus = item.MulasztasTipus,
 | 
			
		||||
                    Keses = item.Keses >= maxKeses ? maxKeses : item.Keses,
 | 
			
		||||
                    HazifeladatHiany = item.HazifeladatHiany,
 | 
			
		||||
                    FelszerelesHiany = item.FelszerelesHiany,
 | 
			
		||||
                    Felmentes = item.Felmentes,
 | 
			
		||||
                    TanoraiDicseret = item.TanoraiDicseret,
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                var oldMulasztasId = oraMulasztasai.FirstOrDefault(a => a.TanuloId == item.TanuloId);
 | 
			
		||||
                mulasztasItem.MulasztasId = oldMulasztasId?.MulasztasId;
 | 
			
		||||
 | 
			
		||||
                var oldHazifeladatHiany = oraFeljegyzesei.FirstOrDefault(a => a.TanuloId == item.TanuloId && a.FeljegyzesTipus == (int)EsemenyTipusEnum.HaziFeladatHiany);
 | 
			
		||||
                mulasztasItem.HazifeladatHianyId = oldHazifeladatHiany?.FeljegyzesId;
 | 
			
		||||
 | 
			
		||||
                var oldFelszereleshiany = oraFeljegyzesei.FirstOrDefault(a => a.TanuloId == item.TanuloId && a.FeljegyzesTipus == (int)EsemenyTipusEnum.Felszereleshiany);
 | 
			
		||||
                mulasztasItem.FelszerelesHianyId = oldFelszereleshiany?.FeljegyzesId;
 | 
			
		||||
 | 
			
		||||
                var oldFelmentes = oraFeljegyzesei.FirstOrDefault(a => a.TanuloId == item.TanuloId && a.FeljegyzesTipus == (int)EsemenyTipusEnum.SzakmaiMentessegNemHivatalos);
 | 
			
		||||
                mulasztasItem.FelmentesId = oldFelmentes?.FeljegyzesId;
 | 
			
		||||
 | 
			
		||||
                var oldDicseret = oraFeljegyzesei.FirstOrDefault(a => a.TanuloId == item.TanuloId && a.FeljegyzesTipus == (int)EsemenyTipusEnum.Dicseret);
 | 
			
		||||
                mulasztasItem.TanoraiDicseretId = oldDicseret?.FeljegyzesId;
 | 
			
		||||
 | 
			
		||||
                MulasztasList.Add(mulasztasItem);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,14 @@
 | 
			
		||||
using System;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas
 | 
			
		||||
{
 | 
			
		||||
    public class NaplozasElokeszitesCo
 | 
			
		||||
    {
 | 
			
		||||
        public DateTime Start { get; set; }
 | 
			
		||||
        public DateTime End { get; set; }
 | 
			
		||||
 | 
			
		||||
        public int? OrarendiOraId { get; set; }
 | 
			
		||||
        public int? TanitasiOraId { get; set; }
 | 
			
		||||
        public int? SzervezetTipusId { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,320 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Data;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Kreta.BusinessLogic.Classes;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
 | 
			
		||||
using Kreta.BusinessLogic.Logic.Naplozas.Validacio;
 | 
			
		||||
using Kreta.Core;
 | 
			
		||||
using Kreta.Core.ConnectionType;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
using Kreta.Resources;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
 | 
			
		||||
{
 | 
			
		||||
    public class NaplozasElokeszitesLogic
 | 
			
		||||
    {
 | 
			
		||||
        protected NaplozasElokeszitesModel Model;
 | 
			
		||||
 | 
			
		||||
        protected IConnectionType ConnectionType;
 | 
			
		||||
 | 
			
		||||
        protected NaploValidacio Validator;
 | 
			
		||||
 | 
			
		||||
        public NaplozasElokeszitesModel GetModel
 | 
			
		||||
        {
 | 
			
		||||
            get { return Model; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected NaplozasElokeszitesLogic(NaploValidacio validator)
 | 
			
		||||
        {
 | 
			
		||||
            Validator = validator;
 | 
			
		||||
            ConnectionType = validator.ConnectionType;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public NaplozasElokeszitesLogic(NaploValidacio validator, NaplozasElokeszitesCo input) : this(validator)
 | 
			
		||||
        {
 | 
			
		||||
            FillInnerModel(input);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public NaplozasElokeszitesLogic(NaploValidacio validator, EgyediNaplozasElokeszitesCo input) : this(validator)
 | 
			
		||||
        {
 | 
			
		||||
            FillInnerModel(input);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public NaplozasElokeszitesLogic(NaploValidacio validator, HelyettesitesNaplozasElokeszitesCo input) : this(validator)
 | 
			
		||||
        {
 | 
			
		||||
            FillInnerModel(input);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void FillInnerModel(NaplozasElokeszitesCo input)
 | 
			
		||||
        {
 | 
			
		||||
            var thelper = new TanoraHelper(ConnectionType);
 | 
			
		||||
 | 
			
		||||
            var oraCo = thelper.GetTanoraByOrarendiId(input.TanitasiOraId ?? input.OrarendiOraId.Value, input.Start, input.TanitasiOraId.HasValue, isTanuloOrGondviselo: false);
 | 
			
		||||
 | 
			
		||||
            if (input is HelyettesitesNaplozasElokeszitesCo helyettesitesNaplozasElokeszitesInput)
 | 
			
		||||
            {
 | 
			
		||||
                oraCo.HelyettesitesTipus = helyettesitesNaplozasElokeszitesInput.HelyettesitesTipus ?? oraCo.HelyettesitesTipus;
 | 
			
		||||
                oraCo.HelyettesitesId = helyettesitesNaplozasElokeszitesInput.HelyettesitesId ?? oraCo.HelyettesitesId;
 | 
			
		||||
                oraCo.HelyettesitesOka = !string.IsNullOrWhiteSpace(helyettesitesNaplozasElokeszitesInput.HelyettesitesOka) ? helyettesitesNaplozasElokeszitesInput.HelyettesitesOka : oraCo.HelyettesitesOka;
 | 
			
		||||
                oraCo.Helyettesito = ConnectionType.FelhasznaloId;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Model = new NaplozasElokeszitesModel(ConnectionType.FelhasznaloId, input.SzervezetTipusId);
 | 
			
		||||
 | 
			
		||||
            var systemSettingsHelper = new SystemSettingsHelper(ConnectionType);
 | 
			
		||||
            var helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Helyettesites_eseten_felugyelet_alapertelmezetten_sorszamozando);
 | 
			
		||||
 | 
			
		||||
            Model.OraAdat.Fill(oraCo, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
 | 
			
		||||
 | 
			
		||||
            if (input.TanitasiOraId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                SetEgyediOraEvesOraszam(thelper, sorszamozando: false);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                SetEgyediOraEvesOraszam(thelper, Model.OraAdat.IsSorszamozando);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            SetOsztalyfonok(new OsztalyHelper(ConnectionType));
 | 
			
		||||
            SetElozoOraAdatai(new OrarendiOraHelper(ConnectionType));
 | 
			
		||||
            SetSzamonkeresElorejelzesAdatai(new SzamonkeresElorejelzesHelper(ConnectionType));
 | 
			
		||||
            SetHetesekAdatai(new HetesekHelper(ConnectionType));
 | 
			
		||||
            SetTemaLista(thelper);
 | 
			
		||||
            SetMentessegList(new OrarendHelper(ConnectionType));
 | 
			
		||||
 | 
			
		||||
            Model.OraTulajdonsag.Fill(oraCo);
 | 
			
		||||
            Model.Helyettesites.Fill(oraCo);
 | 
			
		||||
            if (!Model.SzervezetTipusId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                Model.Hazifeladat.Fill(oraCo);
 | 
			
		||||
                Model.DigitalisOktatas.Fill(oraCo);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void FillInnerModel(EgyediNaplozasElokeszitesCo input)
 | 
			
		||||
        {
 | 
			
		||||
            Model = new NaplozasElokeszitesModel(ConnectionType.FelhasznaloId);
 | 
			
		||||
 | 
			
		||||
            if (input.FoglakozasId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                var helper = new TantargyFelosztasHelper(ConnectionType);
 | 
			
		||||
                var ttf = helper.GetFoglalkozasDataById(input.FoglakozasId.Value);
 | 
			
		||||
                var nemzetisegiOra = SDAConvert.ToBooleanFromTF(ttf.Tables[0].Rows[0]["NemzetisegiOra"]);
 | 
			
		||||
                var naplozasCo = new NaplozasCo
 | 
			
		||||
                {
 | 
			
		||||
                    OraTulajdosag = new NaplozasCo.OraTulajdonsagModel
 | 
			
		||||
                    {
 | 
			
		||||
                        NemzetisegiOra = nemzetisegiOra
 | 
			
		||||
                    }
 | 
			
		||||
                };
 | 
			
		||||
                Model.OraTulajdonsag.Fill(naplozasCo);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Model.IsEgyediNaplozas = true;
 | 
			
		||||
 | 
			
		||||
            var systemSettingsHelper = new SystemSettingsHelper(ConnectionType);
 | 
			
		||||
            var helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Helyettesites_eseten_felugyelet_alapertelmezetten_sorszamozando);
 | 
			
		||||
 | 
			
		||||
            Model.OraAdat.Fill(ConnectionType, input, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
 | 
			
		||||
 | 
			
		||||
            Model.Helyettesites.Fill(input, ConnectionType.FelhasznaloId);
 | 
			
		||||
 | 
			
		||||
            var tanarHelper = new TanarHelper(ConnectionType);
 | 
			
		||||
            var tanoraHelper = new TanoraHelper(ConnectionType);
 | 
			
		||||
 | 
			
		||||
            SetTanar(tanarHelper, input.HelyettesitesTanarId);
 | 
			
		||||
            SetOraszam(new CsengetesiRendOrakHelper(ConnectionType));
 | 
			
		||||
            SetTantargyOsztalycsoport();
 | 
			
		||||
 | 
			
		||||
            SetEgyediOraEvesOraszam(tanoraHelper, Model.OraAdat.IsSorszamozando);
 | 
			
		||||
            SetElozoOraAdatai(new OrarendiOraHelper(ConnectionType));
 | 
			
		||||
            SetEgyediOraTema(tanoraHelper);
 | 
			
		||||
            SetTemaLista(tanoraHelper);
 | 
			
		||||
            SetHazifeladat();
 | 
			
		||||
            SetHetesekAdatai(new HetesekHelper(ConnectionType));
 | 
			
		||||
            SetOraVegeByOrahossz();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SetOraVegeByOrahossz()
 | 
			
		||||
        {
 | 
			
		||||
            var isOravegeBeallitasOrahosszAlapjan = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Orarendi_Elem_Hossz);
 | 
			
		||||
            if (isOravegeBeallitasOrahosszAlapjan)
 | 
			
		||||
            {
 | 
			
		||||
                var csoport = new CsoportHelper(ConnectionType).GetCsoportCoList().SingleOrDefault(cs => cs.Id == Model.OraAdat.OsztalyCsoportId.Value);
 | 
			
		||||
                if (csoport != null)
 | 
			
		||||
                {
 | 
			
		||||
                    var csoportTipusList = new AdatszotarHelper(ConnectionType).GetCsoportTipusList();
 | 
			
		||||
                    var csoportTipusId = csoport.TipusId ?? (int)CsoportTipusEnum.iskolai_csoport_tanorai_celu_;
 | 
			
		||||
                    var csoportTipus = csoportTipusList.Single(cs => cs.Id == csoportTipusId);
 | 
			
		||||
 | 
			
		||||
                    if (csoportTipus.OraPerc.HasValue)
 | 
			
		||||
                    {
 | 
			
		||||
                        Model.OraAdat.OraVege = Model.OraAdat.OraKezdete.AddMinutes(csoportTipus.OraPerc.Value);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetMentessegList(OrarendHelper helper)
 | 
			
		||||
        {
 | 
			
		||||
            var ds = helper.GetOraMentessegList(Model.OraAdat.OraKezdete, Model.OraAdat.OraVege, Model.OraAdat.OsztalyCsoportId.Value);
 | 
			
		||||
            if (ds.Tables[0].Rows.Count == 1)
 | 
			
		||||
            {
 | 
			
		||||
                var row = ds.Tables[0].Rows[0];
 | 
			
		||||
                Model.Mulasztas.JogviszonySzunetletetokDb = row.Field<int>("JogviszonyDb");
 | 
			
		||||
                Model.Mulasztas.JogviszonySzunetletetok = row.Field<string>("JogviszonyNevSor");
 | 
			
		||||
                Model.Mulasztas.SzakmaiGyakorlatonLevokDb = row.Field<int>("SzakmaiGyakDb");
 | 
			
		||||
                Model.Mulasztas.SzakmaiGyakorlatonLevok = row.Field<string>("SzakmaiGyakNevSor");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetTemaLista(TanoraHelper helper)
 | 
			
		||||
        {
 | 
			
		||||
            Model.OraAdat.TemaLista = helper.GetTemaIdAndNameForNaplozasDDL(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.TanarId.Value, Model.SzervezetTipusId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetElozoOraAdatai(OrarendiOraHelper helper)
 | 
			
		||||
        {
 | 
			
		||||
            var elozoOraAdatai = helper.GetElozoOraAdatai(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.TanarId.Value, Model.OraAdat.OraKezdete);
 | 
			
		||||
            Model.OraAdat.ElozoOraAdat = elozoOraAdatai?.ElozoOraAdatai ?? string.Empty;
 | 
			
		||||
            Model.OraAdat.ElozoOraTema = elozoOraAdatai?.ElozoOraTemaja ?? string.Empty;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetSzamonkeresElorejelzesAdatai(SzamonkeresElorejelzesHelper helper)
 | 
			
		||||
        {
 | 
			
		||||
            var ds = helper.GetSzamonkeresElorejelzesDetailDataSet(new SzamonkeresElorejelzesSearchCO
 | 
			
		||||
            {
 | 
			
		||||
                OraGroupId = Model.OraAdat.GroupId,
 | 
			
		||||
                Datum = Model.OraAdat.OraKezdete.Date,
 | 
			
		||||
                OraszamSrc = Model.OraAdat.Oraszam,
 | 
			
		||||
                OsztalyCsoportId = Model.OraAdat.OsztalyCsoportId
 | 
			
		||||
            }, isKellKapcsolodoOsztalyok: false);
 | 
			
		||||
 | 
			
		||||
            if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 && !string.IsNullOrWhiteSpace(SDAConvert.ToString(ds.Tables[0].Rows[0]["SzamonkeresMod"])))
 | 
			
		||||
            {
 | 
			
		||||
                Model.OraAdat.SzamonkeresModId = SDAConvert.ToInt32(ds.Tables[0].Rows[0]["SzamonkeresModId"]);
 | 
			
		||||
                Model.OraAdat.SzamonkeresModja = SDAConvert.ToString(ds.Tables[0].Rows[0]["SzamonkeresMod"]);
 | 
			
		||||
                Model.OraAdat.SzamonkeresMegnevezes = SDAConvert.ToString(ds.Tables[0].Rows[0]["SzamonkeresMegnevezes"]);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetHetesekAdatai(HetesekHelper helper)
 | 
			
		||||
        {
 | 
			
		||||
            Model.OraAdat.Hetesek = helper.GetHetesekForDatum(Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.OraKezdete.Date);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetOsztalyfonok(OsztalyHelper helper)
 | 
			
		||||
        {
 | 
			
		||||
            Model.OraAdat.OsztalyfonokId = helper.GetOsztalyfonokByOsztalyId(Model.OraAdat.OsztalyCsoportId.Value);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetTanar(TanarHelper helper, int? helyettesTanarId)
 | 
			
		||||
        {
 | 
			
		||||
            if (helyettesTanarId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                Model.OraAdat.TanarNev = helper.GetTanarNev(helyettesTanarId.Value);
 | 
			
		||||
                Model.OraAdat.TanarId = helyettesTanarId;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                Model.OraAdat.TanarNev = helper.GetTanarNev(ConnectionType.FelhasznaloId);
 | 
			
		||||
                Model.OraAdat.TanarId = ConnectionType.FelhasznaloId;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetOraszam(CsengetesiRendOrakHelper helper)
 | 
			
		||||
        {
 | 
			
		||||
            if (!Model.OraAdat.IsTanorankivuli)
 | 
			
		||||
            {
 | 
			
		||||
                Model.OraAdat.Oraszam = helper.GetCsengetesiRendOraSzam(Model.OraAdat.CsengetesirendOraId.Value);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetTantargyOsztalycsoport()
 | 
			
		||||
        {
 | 
			
		||||
            TantargyFoglalkozasCO foglalkozas = null;
 | 
			
		||||
 | 
			
		||||
            if (Model.OraAdat.FoglakozasId.IsEntityId() && (!Model.OraAdat.OsztalyCsoportId.IsEntityId() || !Model.OraAdat.TantargyId.IsEntityId()))
 | 
			
		||||
            {
 | 
			
		||||
                foglalkozas = new FoglalkozasHelper(ConnectionType).GetFoglalkozas(Model.OraAdat.FoglakozasId.Value);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (Model.OraAdat.OsztalyCsoportId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                Model.OraAdat.OsztalyCsoportNev = new OsztalyCsoportHelper(ConnectionType).GetOsztalyCsoportNevById(Model.OraAdat.OsztalyCsoportId.Value);
 | 
			
		||||
            }
 | 
			
		||||
            else if (foglalkozas != null)
 | 
			
		||||
            {
 | 
			
		||||
                Model.OraAdat.OsztalyCsoportNev = foglalkozas.OsztalyCsoportNev;
 | 
			
		||||
                Model.OraAdat.OsztalyCsoportId = foglalkozas.OsztalyCsoportId;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                throw new Exception(ErrorResource.NincsSemOsztalycsoportSemFoglalkozas);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (Model.OraAdat.TantargyId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                var tantargy = new TantargyHelper(ConnectionType).GetTantargyById(Model.OraAdat.TantargyId.Value);
 | 
			
		||||
                Model.OraAdat.TantargyNev = tantargy.TantargyNev;
 | 
			
		||||
            }
 | 
			
		||||
            else if (foglalkozas != null)
 | 
			
		||||
            {
 | 
			
		||||
                Model.OraAdat.TantargyId = foglalkozas.TantargyId;
 | 
			
		||||
                Model.OraAdat.TantargyNev = foglalkozas.TantargyNev;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                throw new Exception(ErrorResource.NincsSemTantargySemFoglalkozas);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetEgyediOraTema(TanoraHelper tanoraHelper)
 | 
			
		||||
        {
 | 
			
		||||
            Model.OraAdat.Tema = tanoraHelper.GetTemaEvesOraSorszamhoz(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, ConnectionType.FelhasznaloId, Model.OraAdat.EvesOraSorszam.Value);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetEgyediOraEvesOraszam(TanoraHelper tanoraHelper, bool sorszamozando)
 | 
			
		||||
        {
 | 
			
		||||
            var evesOraszam = tanoraHelper.GetOraEvesSorszamaSP(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.OraKezdete, Model.OraAdat.TanarId.Value);
 | 
			
		||||
            if (Model.OraAdat.IsElmaradt)
 | 
			
		||||
            {
 | 
			
		||||
                Model.OraAdat.EvesOraSorszam = null;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                Model.OraAdat.EvesOraSorszam = sorszamozando ? evesOraszam + 1 : evesOraszam;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void SetHazifeladat()
 | 
			
		||||
        {
 | 
			
		||||
            Enum.TryParse(new OsztalyCsoportHelper(ConnectionType).GetOsztalyCsoportFeladatKategoria(Model.OraAdat.OsztalyCsoportId.Value).ToString(), out OktNevelesiKategoriaEnum kategoria);
 | 
			
		||||
 | 
			
		||||
            var helper = new DktFeladatHelper(ConnectionType);
 | 
			
		||||
 | 
			
		||||
            var hazi = Model.IsTanora ?
 | 
			
		||||
                helper.GetTanitasiOraHaziFeladatDetail(Model.OraAdat.TanitasiOraId, kategoria, isTanuloOrGondviselo: false) :
 | 
			
		||||
                helper.GetOrarendiOraHaziFeladatDetail(Model.OraAdat.OrarendiOraId, Model.OraAdat.OraKezdete, isTanuloOrGondviselo: false, oraszam: null, kategoria);
 | 
			
		||||
 | 
			
		||||
            if (hazi.Id.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                Model.Hazifeladat.Id = hazi.Id;
 | 
			
		||||
                Model.Hazifeladat.Szoveg = hazi.Szoveg;
 | 
			
		||||
                Model.Hazifeladat.Hatarido = hazi.Hatarido;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool TeremUtkozesEllenorzes()
 | 
			
		||||
        {
 | 
			
		||||
            return Validator.TeremUtkozesEllenorzes(Model);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public string GetOsztalyEsTanarOraiUtkozes()
 | 
			
		||||
        {
 | 
			
		||||
            return Validator.GetOsztalyEsTanarOraiUtkozes(Model);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,294 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
 | 
			
		||||
{
 | 
			
		||||
    public class NaplozasElokeszitesModel
 | 
			
		||||
    {
 | 
			
		||||
        public bool IsEgyediNaplozas { get; set; }
 | 
			
		||||
 | 
			
		||||
        public int UserId { get; set; }
 | 
			
		||||
 | 
			
		||||
        public bool IsHelyettesites
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return Helyettesites.TanarId.HasValue;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool HasOrarendiOra
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return OraAdat.OrarendiOraId.HasValue;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool IsTanora
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return OraAdat.TanitasiOraId.HasValue;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool IsElmaradtOra
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return OraAdat.IsElmaradt;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool IsOraTulajdonosa
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (IsEgyediNaplozas)
 | 
			
		||||
                {
 | 
			
		||||
                    return true;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (IsHelyettesites)
 | 
			
		||||
                {
 | 
			
		||||
                    return Helyettesites.TanarId == UserId;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                return OraAdat.TanarId == UserId;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool NaplozhatoDatum
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return OraAdat.OraKezdete < DateTime.Now.Date.AddDays(1);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool Ertekelhet
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (!NaplozhatoDatum)
 | 
			
		||||
                {
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (IsHelyettesites && (Helyettesites.Tipus == (int)HelyettesitesTipusEnum.oraosszevonas || Helyettesites.Tipus == (int)HelyettesitesTipusEnum.szakszeru_helyettesites))
 | 
			
		||||
                {
 | 
			
		||||
                    return Helyettesites.TanarId == UserId;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                return OraAdat.TanarId == UserId;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public bool Naplozhat
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return IsTanora ? IsOraTulajdonosa : (OraAdat.IsOraOsszevonas || IsOraTulajdonosa) && NaplozhatoDatum;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public string OraTartamText
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return $"{OraAdat.OraKezdete.ToShortDateString()} {OraAdat.OraKezdete.ToShortTimeString()}-{OraAdat.OraVege.ToShortTimeString()}";
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool KellElozoOraTema
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return !IsTanora || IsEgyediNaplozas;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public int MaxKeses
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                var span = OraAdat.OraVege.Subtract(OraAdat.OraKezdete);
 | 
			
		||||
                return (span.Hours * 60) + span.Minutes - 1;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal NaplozasElokeszitesModel(int userId, int? szervezetTipusId = null)
 | 
			
		||||
        {
 | 
			
		||||
            UserId = userId;
 | 
			
		||||
            OraAdat = new OraAdatModel();
 | 
			
		||||
            Helyettesites = new HelyettesitesModel();
 | 
			
		||||
            OraTulajdonsag = new OraTulajdonsagModel();
 | 
			
		||||
            Hazifeladat = new HazifeladatModel();
 | 
			
		||||
            Mulasztas = new MulasztasModel();
 | 
			
		||||
            DigitalisOktatas = new DigitalisOktatasAdatok();
 | 
			
		||||
            SzervezetTipusId = szervezetTipusId;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public OraAdatModel OraAdat { get; set; }
 | 
			
		||||
 | 
			
		||||
        public HelyettesitesModel Helyettesites { get; set; }
 | 
			
		||||
 | 
			
		||||
        public OraTulajdonsagModel OraTulajdonsag { get; set; }
 | 
			
		||||
 | 
			
		||||
        public HazifeladatModel Hazifeladat { get; set; }
 | 
			
		||||
 | 
			
		||||
        public MulasztasModel Mulasztas { get; set; }
 | 
			
		||||
 | 
			
		||||
        public DigitalisOktatasAdatok DigitalisOktatas { get; set; }
 | 
			
		||||
 | 
			
		||||
        public int? SzervezetTipusId { get; set; }
 | 
			
		||||
 | 
			
		||||
        public bool IsMentorOra { get; set; }
 | 
			
		||||
 | 
			
		||||
        public void ConvertTo(TanoraCO co)
 | 
			
		||||
        {
 | 
			
		||||
            co.IsTanoranKivuli = OraAdat.IsTanorankivuli;
 | 
			
		||||
            co.ID = OraAdat.TanitasiOraId;
 | 
			
		||||
            co.Datum = OraAdat.OraKezdete.Date;
 | 
			
		||||
            co.BejegyIdo = OraAdat.RogzitesDatuma;
 | 
			
		||||
            co.HetNapja = OraAdat.HetNapja;
 | 
			
		||||
            co.Hetirend = OraAdat.Hetirend;
 | 
			
		||||
            co.Megjegyzes = OraAdat.Megjegyzes;
 | 
			
		||||
            co.Megtartott = !IsElmaradtOra;
 | 
			
		||||
            co.MobilNaplozott = OraAdat.IsMobilNaplozott;
 | 
			
		||||
            co.AdminAltalKiirt = OraAdat.IsAdminAltalKiirt;
 | 
			
		||||
            co.OraKezd = OraAdat.OraKezdete;
 | 
			
		||||
            co.OraVeg = OraAdat.OraVege;
 | 
			
		||||
            co.EvesOraSorszam = OraAdat.EvesOraSorszam;
 | 
			
		||||
            co.Oraszam = OraAdat.Oraszam ?? -1;
 | 
			
		||||
            co.Sorszamozando = OraAdat.IsSorszamozando;
 | 
			
		||||
            co.TemaTanmenetId = OraAdat.TemaTanmenetId;
 | 
			
		||||
            co.TanulasiEgysegId = OraAdat.TanulasiEgysegId;
 | 
			
		||||
            co.Tema = OraAdat.Tema;
 | 
			
		||||
            co.Targy = OraAdat.TantargyId;
 | 
			
		||||
            co.OrarendiOra = OraAdat.OrarendiOraId;
 | 
			
		||||
            co.Fogl = OraAdat.FoglakozasId;
 | 
			
		||||
            co.Tulaj = UserId;
 | 
			
		||||
            co.OrarendiOraGroupId = OraAdat.GroupId;
 | 
			
		||||
            co.Tanar = OraAdat.TanarId;
 | 
			
		||||
            co.Terem = OraAdat.TeremId;
 | 
			
		||||
            co.OsztCsop = OraAdat.OsztalyCsoportId;
 | 
			
		||||
            co.CsengetesiRendOraId = OraAdat.CsengetesirendOraId;
 | 
			
		||||
            co.CsengetesiRendID = OraAdat.CsengetesirendId;
 | 
			
		||||
 | 
			
		||||
            co.IktTanora = OraTulajdonsag.IktTanora;
 | 
			
		||||
            co.Bontott = OraTulajdonsag.Bontott;
 | 
			
		||||
            co.IsFelnottoktatasiSzerzodes = OraTulajdonsag.IsFelnottoktatasiSzerzodes;
 | 
			
		||||
            co.OnlineOra = OraTulajdonsag.OnlineOra;
 | 
			
		||||
            co.NemzetisegiOra = OraTulajdonsag.NemzetisegiOra;
 | 
			
		||||
            co.MindennaposTestneveles = OraTulajdonsag.MindennaposTestneveles;
 | 
			
		||||
            co.IPRTanora = OraTulajdonsag.IPRTanora;
 | 
			
		||||
            co.Differencialt = OraTulajdonsag.Differencialt;
 | 
			
		||||
            co.Kooperativ = OraTulajdonsag.Kooperativ;
 | 
			
		||||
            co.Meres = OraTulajdonsag.Meres;
 | 
			
		||||
            co.Drama = OraTulajdonsag.Drama;
 | 
			
		||||
            co.Tiop = OraTulajdonsag.Tiop;
 | 
			
		||||
            co.ParhuzamosOra = OraTulajdonsag.ParhuzamosOra;
 | 
			
		||||
            co.NemSzakrendszeru = OraTulajdonsag.NemSzakrendszeru;
 | 
			
		||||
            co.TAMOP = OraTulajdonsag.TAMOP;
 | 
			
		||||
            co.KIPOra = OraTulajdonsag.KIPOra;
 | 
			
		||||
            co.VEKOP73317 = OraTulajdonsag.VEKOP73317;
 | 
			
		||||
            co.KAPOra = OraTulajdonsag.KAPOra;
 | 
			
		||||
            co.Tulora = OraTulajdonsag.Tulora;
 | 
			
		||||
            co.Multikulturalis = OraTulajdonsag.Multikulturalis;
 | 
			
		||||
            co.EFOP32317 = OraTulajdonsag.EFOP32317;
 | 
			
		||||
            co.KomplexOra = OraTulajdonsag.KomplexOra;
 | 
			
		||||
            co.GINOP623 = OraTulajdonsag.GINOP623;
 | 
			
		||||
            co.EFOP31716EselyteremtesAKoznevelesben = OraTulajdonsag.EFOP31716EselyteremtesAKoznevelesben;
 | 
			
		||||
            co.EFOP33717 = OraTulajdonsag.EFOP33717;
 | 
			
		||||
            co.TIOP11112120120001 = OraTulajdonsag.TIOP11112120120001;
 | 
			
		||||
            co.DFHT = OraTulajdonsag.DFHT;
 | 
			
		||||
            co.Rahangolodas = OraTulajdonsag.Rahangolodas;
 | 
			
		||||
            co.Testmozgas = OraTulajdonsag.Testmozgas;
 | 
			
		||||
            co.Muveszet = OraTulajdonsag.Muveszet;
 | 
			
		||||
            co.Eletgyakorlat = OraTulajdonsag.Eletgyakorlat;
 | 
			
		||||
            co.Logika = OraTulajdonsag.Logika;
 | 
			
		||||
            co.TeOrad = OraTulajdonsag.TeOrad;
 | 
			
		||||
            co.DigitalisAlapProgram = OraTulajdonsag.DigitalisAlapProgram;
 | 
			
		||||
            co.EFOP23517201700038Miapalya = OraTulajdonsag.EFOP23517201700038Miapalya;
 | 
			
		||||
            co.TanevTananyaganakIsmetlese = OraTulajdonsag.TanevTananyaganakIsmetlese;
 | 
			
		||||
            co.TanevTananyaganakKiegeszitese = OraTulajdonsag.TanevTananyaganakKiegeszitese;
 | 
			
		||||
            co.TanulokDigitalisKeszsegfejlesztese = OraTulajdonsag.TanulokDigitalisKeszsegfejlesztese;
 | 
			
		||||
            co.Projektmunka = OraTulajdonsag.Projektmunka;
 | 
			
		||||
            co.TanulokKompenzaciosIraskeszsegFejlesztese = OraTulajdonsag.TanulokKompenzaciosIraskeszsegFejlesztese;
 | 
			
		||||
            co.TanulokKompenzaciosOlvasasiKepessegFejlesztese = OraTulajdonsag.TanulokKompenzaciosOlvasasiKepessegFejlesztese;
 | 
			
		||||
            co.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese = OraTulajdonsag.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese;
 | 
			
		||||
            co.TanulokNyelviKepessegenekKompenzaciosFejlesztese = OraTulajdonsag.TanulokNyelviKepessegenekKompenzaciosFejlesztese;
 | 
			
		||||
            co.TanulokOnmegismeresenekSegitese = OraTulajdonsag.TanulokOnmegismeresenekSegitese;
 | 
			
		||||
            co.TanulokOnallosagraNevelese = OraTulajdonsag.TanulokOnallosagraNevelese;
 | 
			
		||||
            co.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese = OraTulajdonsag.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese;
 | 
			
		||||
            co.TanulokOrientaciosTamogatasa = OraTulajdonsag.TanulokOrientaciosTamogatasa;
 | 
			
		||||
            co.TanulokSzocialitasanakFejlesztese = OraTulajdonsag.TanulokSzocialitasanakFejlesztese;
 | 
			
		||||
            co.TanulokTovabbhaladasatElokeszitoTevekenysegek = OraTulajdonsag.TanulokTovabbhaladasatElokeszitoTevekenysegek;
 | 
			
		||||
            co.PedagogusAltalJelzettEgyeniEsetkezeles = OraTulajdonsag.PedagogusAltalJelzettEgyeniEsetkezeles;
 | 
			
		||||
            co.ProjektmunkaTamogatasa = OraTulajdonsag.ProjektmunkaTamogatasa;
 | 
			
		||||
            co.DigitalisKeszsegfejlesztes = OraTulajdonsag.DigitalisKeszsegfejlesztes;
 | 
			
		||||
            co.KozossegiMunkaTamogatasa = OraTulajdonsag.KozossegiMunkaTamogatasa;
 | 
			
		||||
            co.TanoraElokeszitesenekTamogatasa = OraTulajdonsag.TanoraElokeszitesenekTamogatasa;
 | 
			
		||||
            co.TanoraLebonyolitasanakTamogatasa = OraTulajdonsag.TanoraLebonyolitasanakTamogatasa;
 | 
			
		||||
            co.NapkozisTevekenysegKeretebenEgyeniFejlesztes = OraTulajdonsag.NapkozisTevekenysegKeretebenEgyeniFejlesztes;
 | 
			
		||||
 | 
			
		||||
            co.HaziFeladat = Hazifeladat.Szoveg;
 | 
			
		||||
            co.HaziHatarideje = Hazifeladat.Hatarido;
 | 
			
		||||
            co.HaziFeladatId = Hazifeladat.Id;
 | 
			
		||||
            co.CheckedOpenBoardFileIdList = OraAdat.CheckedOpenBoardFileIdList;
 | 
			
		||||
            co.HaziFeladatCsatolmanyId = Hazifeladat.CsatolmanyId;
 | 
			
		||||
 | 
			
		||||
            co.HelyettesitesId = Helyettesites.Id ?? 0;
 | 
			
		||||
            co.Helyettesito = Helyettesites.TanarId;
 | 
			
		||||
            co.HelyettesitesOka = Helyettesites.Oka;
 | 
			
		||||
            co.HelyettesitesTipus = Helyettesites.Tipus;
 | 
			
		||||
            co.DigEszkozTipusId = OraAdat.DigEszkozTipusId ?? (int)DigEszkozTipusEnum.na;
 | 
			
		||||
            co.DigPlatformTipusId = OraAdat.DigPlatformTipusId ?? (int)DigPlatformTipusEnum.na;
 | 
			
		||||
            co.DigTamEszkozTipusIdList = OraAdat.DigTamEszkozTipusIdList != null && OraAdat.DigTamEszkozTipusIdList.Count > 0 ? OraAdat.DigTamEszkozTipusIdList : new List<int>() { (int)DigTamEszkozTipusEnum.na };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void ConvertTo(List<MulasztasokCo> coList)
 | 
			
		||||
        {
 | 
			
		||||
            foreach (var row in Mulasztas.MulasztasList)
 | 
			
		||||
            {
 | 
			
		||||
                var co = new MulasztasokCo();
 | 
			
		||||
 | 
			
		||||
                if (row.Keses.HasValue && row.Keses.Value > 0 && row.MulasztasTipus != (int)MulasztasTipusEnum.potlas)
 | 
			
		||||
                {
 | 
			
		||||
                    row.MulasztasTipus = (int)MulasztasTipusEnum.keses;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (!row.MulasztasTipus.HasValue)
 | 
			
		||||
                {
 | 
			
		||||
                    row.MulasztasTipus = (int)MulasztasTipusEnum.ures;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                co.ID = row.MulasztasId;
 | 
			
		||||
                co.TanuloId = row.TanuloId;
 | 
			
		||||
                co.MulTip = row.MulasztasTipus;
 | 
			
		||||
 | 
			
		||||
                if (row.MulasztasTipus == (int)MulasztasTipusEnum.keses || row.MulasztasTipus == (int)MulasztasTipusEnum.potlas)
 | 
			
		||||
                {
 | 
			
		||||
                    co.KesIdo = row.Keses ?? 0;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                co.HazifeladatHiany = row.HazifeladatHiany;
 | 
			
		||||
                co.FelszerelesHiany = row.FelszerelesHiany;
 | 
			
		||||
                co.Felmentes = row.Felmentes;
 | 
			
		||||
                co.TanoraiDicseret = row.TanoraiDicseret;
 | 
			
		||||
 | 
			
		||||
                co.HazifeladatHianyId = row.HazifeladatHianyId;
 | 
			
		||||
                co.FelszerelesHianyId = row.FelszerelesHianyId;
 | 
			
		||||
                co.FelmentesId = row.FelmentesId;
 | 
			
		||||
                co.TanoraiDicseretId = row.TanoraiDicseretId;
 | 
			
		||||
 | 
			
		||||
                coList.Add(co);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										243
									
								
								Kreta.BusinessLogic/Logic/Naplozas/Elokeszites/OraAdatModel.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										243
									
								
								Kreta.BusinessLogic/Logic/Naplozas/Elokeszites/OraAdatModel.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,243 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers;
 | 
			
		||||
using Kreta.BusinessLogic.Utils;
 | 
			
		||||
using Kreta.Core.ConnectionType;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
using Kreta.Resources;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
 | 
			
		||||
{
 | 
			
		||||
    public class OraAdatModel
 | 
			
		||||
    {
 | 
			
		||||
        internal OraAdatModel()
 | 
			
		||||
        {
 | 
			
		||||
            Hetirend = (int)HetiRendTipusEnum.MindegyikHet;
 | 
			
		||||
            TemaLista = new Dictionary<string, string>();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public DateTime OraKezdete { get; set; }
 | 
			
		||||
        public DateTime OraVege { get; set; }
 | 
			
		||||
        public DateTime RogzitesDatuma { get; set; }
 | 
			
		||||
 | 
			
		||||
        public int? OrarendiOraId { get; set; }
 | 
			
		||||
        public int? TanitasiOraId { get; set; }
 | 
			
		||||
        public int? CsengetesirendOraId { get; set; }
 | 
			
		||||
        public int? CsengetesirendId { get; set; }
 | 
			
		||||
        public int? Hanyadikora { get; set; }
 | 
			
		||||
        public int? TanarId { get; set; }
 | 
			
		||||
        public string TanarNev { get; set; }
 | 
			
		||||
        public int? OsztalyfonokId { get; set; }
 | 
			
		||||
        public string Tema { get; set; }
 | 
			
		||||
        public int? TemaTanmenetId { get; set; }
 | 
			
		||||
        public int? TanulasiEgysegId { get; set; }
 | 
			
		||||
        public int? FoglakozasId { get; set; }
 | 
			
		||||
        public int? OsztalyCsoportId { get; set; }
 | 
			
		||||
        public string OsztalyCsoportNev { get; set; }
 | 
			
		||||
        public int? TantargyId { get; set; }
 | 
			
		||||
        public string TantargyNev { get; set; }
 | 
			
		||||
        public int? TeremId { get; set; }
 | 
			
		||||
        public bool IsOraOsszevonas { get; set; }
 | 
			
		||||
        public bool IsElmaradt { get; set; }
 | 
			
		||||
        public bool IsSorszamozando { get; set; }
 | 
			
		||||
        public bool IsTanorankivuli { get; set; }
 | 
			
		||||
        public int? EvesOraSorszam { get; set; }
 | 
			
		||||
        public string Megjegyzes { get; set; }
 | 
			
		||||
        public int? Oraszam { get; set; }
 | 
			
		||||
        public string ElozoOraAdat { get; set; }
 | 
			
		||||
        public string ElozoOraTema { get; set; }
 | 
			
		||||
        public int? SzamonkeresModId { get; set; }
 | 
			
		||||
        public string SzamonkeresModja { get; set; }
 | 
			
		||||
        public string SzamonkeresMegnevezes { get; set; }
 | 
			
		||||
 | 
			
		||||
        public string SzamonkeresAdatai
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (string.IsNullOrWhiteSpace(SzamonkeresModja))
 | 
			
		||||
                {
 | 
			
		||||
                    return string.Empty;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                return string.Format(OrarendResource.SzamonkeresElorejelzesModjaTemajaStr, SzamonkeresModja, string.IsNullOrWhiteSpace(SzamonkeresMegnevezes) ? "-" : SzamonkeresMegnevezes);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public string Hetesek { get; set; }
 | 
			
		||||
        public int Hetirend { get; set; }
 | 
			
		||||
        public IDictionary<string, string> TemaLista { get; internal set; }
 | 
			
		||||
        public bool IsMobilNaplozott { get; set; }
 | 
			
		||||
        public bool IsAdminAltalKiirt { get; set; }
 | 
			
		||||
        public int GroupId { get; set; }
 | 
			
		||||
        public int? HetNapja { get; set; }
 | 
			
		||||
        public bool VanOralatogatasa { get; set; }
 | 
			
		||||
        public List<int> CheckedOpenBoardFileIdList { get; internal set; }
 | 
			
		||||
 | 
			
		||||
        public int? DigEszkozTipusId { get; set; }
 | 
			
		||||
        public int? DigPlatformTipusId { get; set; }
 | 
			
		||||
        public List<int> DigTamEszkozTipusIdList { get; set; }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(TanoraCO co, bool helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando)
 | 
			
		||||
        {
 | 
			
		||||
            OrarendiOraId = co.OrarendiOra;
 | 
			
		||||
            TanitasiOraId = co.ID;
 | 
			
		||||
            OraKezdete = co.OraKezd;
 | 
			
		||||
            OraVege = co.OraVeg;
 | 
			
		||||
            CsengetesirendOraId = co.CsengetesiRendOraId;
 | 
			
		||||
            CsengetesirendId = co.CsengetesiRendID;
 | 
			
		||||
            TanarId = co.Tanar;
 | 
			
		||||
            FoglakozasId = co.Fogl;
 | 
			
		||||
            OsztalyCsoportId = co.OsztCsop;
 | 
			
		||||
            TantargyId = co.Targy;
 | 
			
		||||
            TeremId = co.Terem;
 | 
			
		||||
            TanarNev = co.TanarNev;
 | 
			
		||||
            OsztalyCsoportNev = co.OsztalyCsoportNev;
 | 
			
		||||
            TantargyNev = co.TantargyNev;
 | 
			
		||||
            EvesOraSorszam = co.EvesOraSorszam;
 | 
			
		||||
            TemaTanmenetId = co.TemaTanmenetId;
 | 
			
		||||
            Tema = co.Tema;
 | 
			
		||||
            TanulasiEgysegId = co.TanulasiEgysegId;
 | 
			
		||||
            IsSorszamozando = GetSorszamozandoBaseValue(co.Sorszamozando, co.HelyettesitesTipus, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
 | 
			
		||||
            Megjegyzes = co.Megjegyzes;
 | 
			
		||||
            Oraszam = co.Oraszam;
 | 
			
		||||
            IsTanorankivuli = co.IsTanoranKivuli;
 | 
			
		||||
            Hetirend = co.Hetirend ?? (int)HetiRendTipusEnum.MindegyikHet;
 | 
			
		||||
            IsMobilNaplozott = co.MobilNaplozott ?? false;
 | 
			
		||||
            IsAdminAltalKiirt = co.AdminAltalKiirt;
 | 
			
		||||
            GroupId = co.OrarendiOraGroupId;
 | 
			
		||||
            HetNapja = co.HetNapja;
 | 
			
		||||
            RogzitesDatuma = co.BejegyIdo;
 | 
			
		||||
            IsElmaradt = !co.Megtartott ?? false;
 | 
			
		||||
            VanOralatogatasa = co.OraLatogatok != null && co.OraLatogatok.Count > 0;
 | 
			
		||||
            CheckedOpenBoardFileIdList = co.CheckedOpenBoardFileIdList;
 | 
			
		||||
            DigEszkozTipusId = co.DigEszkozTipusId;
 | 
			
		||||
            DigPlatformTipusId = co.DigPlatformTipusId;
 | 
			
		||||
            DigTamEszkozTipusIdList = co.DigTamEszkozTipusIdList;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(IConnectionType connectionType, EgyediNaplozasElokeszitesCo input, bool helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando)
 | 
			
		||||
        {
 | 
			
		||||
            OraKezdete = input.Start;
 | 
			
		||||
            OraVege = input.End;
 | 
			
		||||
            OrarendiOraId = input.OrarendiOraId;
 | 
			
		||||
            TanitasiOraId = input.TanitasiOraId;
 | 
			
		||||
            CsengetesirendOraId = input.CsengetesirendOraId;
 | 
			
		||||
            CsengetesirendId = input.CsengetesirendId;
 | 
			
		||||
            IsTanorankivuli = !(input.CsengetesirendOraId.HasValue && input.CsengetesirendOraId > 0);
 | 
			
		||||
 | 
			
		||||
            if (!IsTanorankivuli && !CsengetesirendId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                var cshelper = new CsengetesiRendHelper(connectionType);
 | 
			
		||||
                CsengetesirendId = cshelper.GetCsengetesiRendId(CsengetesirendOraId.Value);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            TanarId = input.TanarId;
 | 
			
		||||
            FoglakozasId = input.FoglakozasId;
 | 
			
		||||
            OsztalyCsoportId = input.OsztalyCsoportId;
 | 
			
		||||
            TantargyId = input.TantargyId;
 | 
			
		||||
            TeremId = input.TeremId;
 | 
			
		||||
            IsOraOsszevonas = input.IsOraOsszevonas;
 | 
			
		||||
            IsSorszamozando = GetSorszamozandoBaseValue(baseValue: true, input.HelyettesitesTipus, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
 | 
			
		||||
            HetNapja = CommonUtils.GetHetNapja(OraKezdete);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(NaplozasCo input)
 | 
			
		||||
        {
 | 
			
		||||
            OraKezdete = input.OraAdat.OraKezdete;
 | 
			
		||||
            OraVege = input.OraAdat.OraVege;
 | 
			
		||||
 | 
			
		||||
            if (input.OraAdat.OrarendiOraId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                OrarendiOraId = input.OraAdat.OrarendiOraId;
 | 
			
		||||
            }
 | 
			
		||||
            if (input.OraAdat.TanitasiOraId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                TanitasiOraId = input.OraAdat.TanitasiOraId;
 | 
			
		||||
            }
 | 
			
		||||
            if (input.OraAdat.CsengetesirendOraId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                CsengetesirendOraId = input.OraAdat.CsengetesirendOraId;
 | 
			
		||||
            }
 | 
			
		||||
            if (input.OraAdat.CsengetesirendId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                CsengetesirendId = input.OraAdat.CsengetesirendId;
 | 
			
		||||
            }
 | 
			
		||||
            if (input.OraAdat.TanarId.HasValue && !TanarId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                TanarId = input.OraAdat.TanarId;
 | 
			
		||||
            }
 | 
			
		||||
            if (input.OraAdat.TemaTanmenetId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                TemaTanmenetId = input.OraAdat.TemaTanmenetId;
 | 
			
		||||
            }
 | 
			
		||||
            if (input.OraAdat.TanulasiEgysegId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                TanulasiEgysegId = input.OraAdat.TanulasiEgysegId;
 | 
			
		||||
            }
 | 
			
		||||
            if (input.OraAdat.FoglakozasId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                FoglakozasId = input.OraAdat.FoglakozasId;
 | 
			
		||||
            }
 | 
			
		||||
            if (input.OraAdat.OsztalyCsoportId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                OsztalyCsoportId = input.OraAdat.OsztalyCsoportId;
 | 
			
		||||
            }
 | 
			
		||||
            if (input.OraAdat.TantargyId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                TantargyId = input.OraAdat.TantargyId;
 | 
			
		||||
            }
 | 
			
		||||
            if (input.OraAdat.TeremId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                TeremId = input.OraAdat.TeremId;
 | 
			
		||||
            }
 | 
			
		||||
            if (input.OraAdat.Oraszam.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                Oraszam = input.OraAdat.Oraszam;
 | 
			
		||||
            }
 | 
			
		||||
            if (!input.IsEgyediNaplozas)
 | 
			
		||||
            {
 | 
			
		||||
                CheckedOpenBoardFileIdList = input.OraAdat.CheckedOpenBoardFileIdList;
 | 
			
		||||
            }
 | 
			
		||||
            Tema = input.OraAdat.Tema;
 | 
			
		||||
            IsSorszamozando = input.OraAdat.IsSorszamozando;
 | 
			
		||||
            IsTanorankivuli = input.OraAdat.IsTanorankivuli;
 | 
			
		||||
            Megjegyzes = input.OraAdat.Megjegyzes;
 | 
			
		||||
 | 
			
		||||
            if (RogzitesDatuma == default)
 | 
			
		||||
            {
 | 
			
		||||
                RogzitesDatuma = DateTime.Now;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!HetNapja.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                HetNapja = CommonUtils.GetHetNapja(OraKezdete);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            IsMobilNaplozott = false;
 | 
			
		||||
            DigPlatformTipusId = input.OraAdat.DigPlatformTipusId;
 | 
			
		||||
            DigEszkozTipusId = input.OraAdat.DigEszkozTipusId;
 | 
			
		||||
            DigTamEszkozTipusIdList = input.OraAdat.DigTamEszkozTipusIdList;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(NaplozasMobilCo input)
 | 
			
		||||
        {
 | 
			
		||||
            OrarendiOraId = input.OraAdat.OrarendiOraId;
 | 
			
		||||
            TanitasiOraId = input.OraAdat.TanitasiOraId;
 | 
			
		||||
            Tema = input.OraAdat.Tema;
 | 
			
		||||
            IsElmaradt = input.OraAdat.IsElmaradt;
 | 
			
		||||
            RogzitesDatuma = input.OraAdat.RogzitesDatuma == default ? DateTime.Now : input.OraAdat.RogzitesDatuma;
 | 
			
		||||
            IsMobilNaplozott = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool GetSorszamozandoBaseValue(bool baseValue, int? helyettesitesTipus, bool helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando)
 | 
			
		||||
        {
 | 
			
		||||
            if (!TanitasiOraId.HasValue && (helyettesitesTipus == (int)HelyettesitesTipusEnum.nem_szakszeru_helyettesites_felugyelet_ || helyettesitesTipus == (int)HelyettesitesTipusEnum.osszevont_felugyelet))
 | 
			
		||||
            {
 | 
			
		||||
                return helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return baseValue;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,187 @@
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
 | 
			
		||||
{
 | 
			
		||||
    public class OraTulajdonsagModel
 | 
			
		||||
    {
 | 
			
		||||
        public bool Bontott { get; set; }
 | 
			
		||||
        public bool NemzetisegiOra { get; set; }
 | 
			
		||||
        public bool IsFelnottoktatasiSzerzodes { get; set; }
 | 
			
		||||
        public bool OnlineOra { get; set; }
 | 
			
		||||
        public bool MindennaposTestneveles { get; set; }
 | 
			
		||||
        public bool IPRTanora { get; set; }
 | 
			
		||||
        public bool Differencialt { get; set; }
 | 
			
		||||
        public bool Kooperativ { get; set; }
 | 
			
		||||
        public bool Meres { get; set; }
 | 
			
		||||
        public bool Drama { get; set; }
 | 
			
		||||
        public bool Tiop { get; set; }
 | 
			
		||||
        public bool ParhuzamosOra { get; set; }
 | 
			
		||||
        public bool IktTanora { get; set; }
 | 
			
		||||
        public bool TAMOP { get; set; }
 | 
			
		||||
        public bool NemSzakrendszeru { get; set; }
 | 
			
		||||
        public bool Tulora { get; set; }
 | 
			
		||||
        public bool Multikulturalis { get; set; }
 | 
			
		||||
        public bool EFOP32317 { get; set; }
 | 
			
		||||
        public bool KomplexOra { get; set; }
 | 
			
		||||
        public bool KIPOra { get; set; }
 | 
			
		||||
        public bool VEKOP73317 { get; set; }
 | 
			
		||||
        public bool KAPOra { get; set; }
 | 
			
		||||
        public bool GINOP623 { get; set; }
 | 
			
		||||
        public bool EFOP31716EselyteremtesAKoznevelesben { get; set; }
 | 
			
		||||
        public bool EFOP33717 { get; set; }
 | 
			
		||||
        public bool TIOP11112120120001 { get; set; }
 | 
			
		||||
        public bool DFHT { get; set; }
 | 
			
		||||
        public bool Rahangolodas { get; set; }
 | 
			
		||||
        public bool Testmozgas { get; set; }
 | 
			
		||||
        public bool Muveszet { get; set; }
 | 
			
		||||
        public bool Eletgyakorlat { get; set; }
 | 
			
		||||
        public bool Logika { get; set; }
 | 
			
		||||
        public bool TeOrad { get; set; }
 | 
			
		||||
        public bool DigitalisAlapProgram { get; set; }
 | 
			
		||||
 | 
			
		||||
        public bool EFOP23517201700038Miapalya { get; set; }
 | 
			
		||||
        public bool TanevTananyaganakIsmetlese { get; set; }
 | 
			
		||||
        public bool TanevTananyaganakKiegeszitese { get; set; }
 | 
			
		||||
        public bool TanulokDigitalisKeszsegfejlesztese { get; set; }
 | 
			
		||||
        public bool Projektmunka { get; set; }
 | 
			
		||||
        public bool TanulokKompenzaciosIraskeszsegFejlesztese { get; set; }
 | 
			
		||||
        public bool TanulokKompenzaciosOlvasasiKepessegFejlesztese { get; set; }
 | 
			
		||||
        public bool TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese { get; set; }
 | 
			
		||||
        public bool TanulokNyelviKepessegenekKompenzaciosFejlesztese { get; set; }
 | 
			
		||||
        public bool TanulokOnmegismeresenekSegitese { get; set; }
 | 
			
		||||
        public bool TanulokOnallosagraNevelese { get; set; }
 | 
			
		||||
        public bool TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese { get; set; }
 | 
			
		||||
        public bool TanulokOrientaciosTamogatasa { get; set; }
 | 
			
		||||
        public bool TanulokSzocialitasanakFejlesztese { get; set; }
 | 
			
		||||
        public bool TanulokTovabbhaladasatElokeszitoTevekenysegek { get; set; }
 | 
			
		||||
        public bool PedagogusAltalJelzettEgyeniEsetkezeles { get; set; }
 | 
			
		||||
        public bool ProjektmunkaTamogatasa { get; set; }
 | 
			
		||||
        public bool DigitalisKeszsegfejlesztes { get; set; }
 | 
			
		||||
        public bool KozossegiMunkaTamogatasa { get; set; }
 | 
			
		||||
        public bool TanoraElokeszitesenekTamogatasa { get; set; }
 | 
			
		||||
        public bool TanoraLebonyolitasanakTamogatasa { get; set; }
 | 
			
		||||
        public bool NapkozisTevekenysegKeretebenEgyeniFejlesztes { get; set; }
 | 
			
		||||
        public bool IsEgybefuggoGyakorlat { get; set; }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(TanoraCO co)
 | 
			
		||||
        {
 | 
			
		||||
            Bontott = co.Bontott;
 | 
			
		||||
            NemzetisegiOra = co.NemzetisegiOra;
 | 
			
		||||
            IsFelnottoktatasiSzerzodes = co.IsFelnottoktatasiSzerzodes;
 | 
			
		||||
            OnlineOra = co.OnlineOra;
 | 
			
		||||
            MindennaposTestneveles = co.MindennaposTestneveles;
 | 
			
		||||
            IPRTanora = co.IPRTanora;
 | 
			
		||||
            Differencialt = co.Differencialt;
 | 
			
		||||
            Kooperativ = co.Kooperativ;
 | 
			
		||||
            Meres = co.Meres;
 | 
			
		||||
            Drama = co.Drama;
 | 
			
		||||
            Tiop = co.Tiop;
 | 
			
		||||
            ParhuzamosOra = co.ParhuzamosOra;
 | 
			
		||||
            IktTanora = co.IktTanora;
 | 
			
		||||
            TAMOP = co.TAMOP;
 | 
			
		||||
            KIPOra = co.KIPOra;
 | 
			
		||||
            VEKOP73317 = co.VEKOP73317;
 | 
			
		||||
            KAPOra = co.KAPOra;
 | 
			
		||||
            NemSzakrendszeru = co.NemSzakrendszeru;
 | 
			
		||||
            Tulora = co.Tulora;
 | 
			
		||||
            Multikulturalis = co.Multikulturalis;
 | 
			
		||||
            EFOP32317 = co.EFOP32317;
 | 
			
		||||
            KomplexOra = co.KomplexOra;
 | 
			
		||||
            GINOP623 = co.GINOP623;
 | 
			
		||||
            EFOP31716EselyteremtesAKoznevelesben = co.EFOP31716EselyteremtesAKoznevelesben;
 | 
			
		||||
            EFOP33717 = co.EFOP33717;
 | 
			
		||||
            TIOP11112120120001 = co.TIOP11112120120001;
 | 
			
		||||
            DFHT = co.DFHT;
 | 
			
		||||
            Rahangolodas = co.Rahangolodas;
 | 
			
		||||
            Testmozgas = co.Testmozgas;
 | 
			
		||||
            Muveszet = co.Muveszet;
 | 
			
		||||
            Eletgyakorlat = co.Eletgyakorlat;
 | 
			
		||||
            Logika = co.Logika;
 | 
			
		||||
            TeOrad = co.TeOrad;
 | 
			
		||||
            DigitalisAlapProgram = co.DigitalisAlapProgram;
 | 
			
		||||
            EFOP23517201700038Miapalya = co.EFOP23517201700038Miapalya;
 | 
			
		||||
            TanevTananyaganakIsmetlese = co.TanevTananyaganakIsmetlese;
 | 
			
		||||
            TanevTananyaganakKiegeszitese = co.TanevTananyaganakKiegeszitese;
 | 
			
		||||
            TanulokDigitalisKeszsegfejlesztese = co.TanulokDigitalisKeszsegfejlesztese;
 | 
			
		||||
            Projektmunka = co.Projektmunka;
 | 
			
		||||
            TanulokKompenzaciosIraskeszsegFejlesztese = co.TanulokKompenzaciosIraskeszsegFejlesztese;
 | 
			
		||||
            TanulokKompenzaciosOlvasasiKepessegFejlesztese = co.TanulokKompenzaciosOlvasasiKepessegFejlesztese;
 | 
			
		||||
            TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese = co.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese;
 | 
			
		||||
            TanulokNyelviKepessegenekKompenzaciosFejlesztese = co.TanulokNyelviKepessegenekKompenzaciosFejlesztese;
 | 
			
		||||
            TanulokOnmegismeresenekSegitese = co.TanulokOnmegismeresenekSegitese;
 | 
			
		||||
            TanulokOnallosagraNevelese = co.TanulokOnallosagraNevelese;
 | 
			
		||||
            TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese = co.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese;
 | 
			
		||||
            TanulokOrientaciosTamogatasa = co.TanulokOrientaciosTamogatasa;
 | 
			
		||||
            TanulokSzocialitasanakFejlesztese = co.TanulokSzocialitasanakFejlesztese;
 | 
			
		||||
            TanulokTovabbhaladasatElokeszitoTevekenysegek = co.TanulokTovabbhaladasatElokeszitoTevekenysegek;
 | 
			
		||||
            PedagogusAltalJelzettEgyeniEsetkezeles = co.PedagogusAltalJelzettEgyeniEsetkezeles;
 | 
			
		||||
            ProjektmunkaTamogatasa = co.ProjektmunkaTamogatasa;
 | 
			
		||||
            DigitalisKeszsegfejlesztes = co.DigitalisKeszsegfejlesztes;
 | 
			
		||||
            KozossegiMunkaTamogatasa = co.KozossegiMunkaTamogatasa;
 | 
			
		||||
            TanoraElokeszitesenekTamogatasa = co.TanoraElokeszitesenekTamogatasa;
 | 
			
		||||
            TanoraLebonyolitasanakTamogatasa = co.TanoraLebonyolitasanakTamogatasa;
 | 
			
		||||
            NapkozisTevekenysegKeretebenEgyeniFejlesztes = co.NapkozisTevekenysegKeretebenEgyeniFejlesztes;
 | 
			
		||||
            IsEgybefuggoGyakorlat = co.IsEgybefuggoGyakorlat;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal void Fill(NaplozasCo co)
 | 
			
		||||
        {
 | 
			
		||||
            Bontott = co.OraTulajdosag.Bontott;
 | 
			
		||||
            NemzetisegiOra = co.OraTulajdosag.NemzetisegiOra;
 | 
			
		||||
            IsFelnottoktatasiSzerzodes = co.OraTulajdosag.IsFelnottoktatasiSzerzodes;
 | 
			
		||||
            OnlineOra = co.OraTulajdosag.OnlineOra;
 | 
			
		||||
            MindennaposTestneveles = co.OraTulajdosag.MindennaposTestneveles;
 | 
			
		||||
            IPRTanora = co.OraTulajdosag.IPRTanora;
 | 
			
		||||
            Differencialt = co.OraTulajdosag.Differencialt;
 | 
			
		||||
            Kooperativ = co.OraTulajdosag.Kooperativ;
 | 
			
		||||
            Meres = co.OraTulajdosag.Meres;
 | 
			
		||||
            Drama = co.OraTulajdosag.Drama;
 | 
			
		||||
            Tiop = co.OraTulajdosag.Tiop;
 | 
			
		||||
            ParhuzamosOra = co.OraTulajdosag.ParhuzamosOra;
 | 
			
		||||
            IktTanora = co.OraTulajdosag.IktTanora;
 | 
			
		||||
            TAMOP = co.OraTulajdosag.TAMOP;
 | 
			
		||||
            KIPOra = co.OraTulajdosag.KIPOra;
 | 
			
		||||
            VEKOP73317 = co.OraTulajdosag.VEKOP73317;
 | 
			
		||||
            KAPOra = co.OraTulajdosag.KAPOra;
 | 
			
		||||
            NemSzakrendszeru = co.OraTulajdosag.NemSzakrendszeru;
 | 
			
		||||
            Tulora = co.OraTulajdosag.Tulora;
 | 
			
		||||
            Multikulturalis = co.OraTulajdosag.Multikulturalis;
 | 
			
		||||
            EFOP32317 = co.OraTulajdosag.EFOP32317;
 | 
			
		||||
            KomplexOra = co.OraTulajdosag.KomplexOra;
 | 
			
		||||
            GINOP623 = co.OraTulajdosag.GINOP623;
 | 
			
		||||
            EFOP31716EselyteremtesAKoznevelesben = co.OraTulajdosag.EFOP31716EselyteremtesAKoznevelesben;
 | 
			
		||||
            EFOP33717 = co.OraTulajdosag.EFOP33717;
 | 
			
		||||
            TIOP11112120120001 = co.OraTulajdosag.TIOP11112120120001;
 | 
			
		||||
            DFHT = co.OraTulajdosag.DFHT;
 | 
			
		||||
            Rahangolodas = co.OraTulajdosag.Rahangolodas;
 | 
			
		||||
            Testmozgas = co.OraTulajdosag.Testmozgas;
 | 
			
		||||
            Muveszet = co.OraTulajdosag.Muveszet;
 | 
			
		||||
            Eletgyakorlat = co.OraTulajdosag.Eletgyakorlat;
 | 
			
		||||
            Logika = co.OraTulajdosag.Logika;
 | 
			
		||||
            TeOrad = co.OraTulajdosag.TeOrad;
 | 
			
		||||
            DigitalisAlapProgram = co.OraTulajdosag.DigitalisAlapProgram;
 | 
			
		||||
            EFOP23517201700038Miapalya = co.OraTulajdosag.EFOP23517201700038Miapalya;
 | 
			
		||||
            TanevTananyaganakIsmetlese = co.OraTulajdosag.TanevTananyaganakIsmetlese;
 | 
			
		||||
            TanevTananyaganakKiegeszitese = co.OraTulajdosag.TanevTananyaganakKiegeszitese;
 | 
			
		||||
            TanulokDigitalisKeszsegfejlesztese = co.OraTulajdosag.TanulokDigitalisKeszsegfejlesztese;
 | 
			
		||||
            Projektmunka = co.OraTulajdosag.Projektmunka;
 | 
			
		||||
            TanulokKompenzaciosIraskeszsegFejlesztese = co.OraTulajdosag.TanulokKompenzaciosIraskeszsegFejlesztese;
 | 
			
		||||
            TanulokKompenzaciosOlvasasiKepessegFejlesztese = co.OraTulajdosag.TanulokKompenzaciosOlvasasiKepessegFejlesztese;
 | 
			
		||||
            TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese = co.OraTulajdosag.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese;
 | 
			
		||||
            TanulokNyelviKepessegenekKompenzaciosFejlesztese = co.OraTulajdosag.TanulokNyelviKepessegenekKompenzaciosFejlesztese;
 | 
			
		||||
            TanulokOnmegismeresenekSegitese = co.OraTulajdosag.TanulokOnmegismeresenekSegitese;
 | 
			
		||||
            TanulokOnallosagraNevelese = co.OraTulajdosag.TanulokOnallosagraNevelese;
 | 
			
		||||
            TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese = co.OraTulajdosag.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese;
 | 
			
		||||
            TanulokOrientaciosTamogatasa = co.OraTulajdosag.TanulokOrientaciosTamogatasa;
 | 
			
		||||
            TanulokSzocialitasanakFejlesztese = co.OraTulajdosag.TanulokSzocialitasanakFejlesztese;
 | 
			
		||||
            TanulokTovabbhaladasatElokeszitoTevekenysegek = co.OraTulajdosag.TanulokTovabbhaladasatElokeszitoTevekenysegek;
 | 
			
		||||
            PedagogusAltalJelzettEgyeniEsetkezeles = co.OraTulajdosag.PedagogusAltalJelzettEgyeniEsetkezeles;
 | 
			
		||||
            ProjektmunkaTamogatasa = co.OraTulajdosag.ProjektmunkaTamogatasa;
 | 
			
		||||
            DigitalisKeszsegfejlesztes = co.OraTulajdosag.DigitalisKeszsegfejlesztes;
 | 
			
		||||
            KozossegiMunkaTamogatasa = co.OraTulajdosag.KozossegiMunkaTamogatasa;
 | 
			
		||||
            TanoraElokeszitesenekTamogatasa = co.OraTulajdosag.TanoraElokeszitesenekTamogatasa;
 | 
			
		||||
            TanoraLebonyolitasanakTamogatasa = co.OraTulajdosag.TanoraLebonyolitasanakTamogatasa;
 | 
			
		||||
            NapkozisTevekenysegKeretebenEgyeniFejlesztes = co.OraTulajdosag.NapkozisTevekenysegKeretebenEgyeniFejlesztes;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,47 @@
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas
 | 
			
		||||
{
 | 
			
		||||
    internal class MulasztasBulkUpdateModel
 | 
			
		||||
    {
 | 
			
		||||
        public MulasztasBulkUpdateModel(MulasztasokCo co)
 | 
			
		||||
        {
 | 
			
		||||
            ID = co.ID;
 | 
			
		||||
            Igazolt = co.Igazolt.HasValue ? co.Igazolt.Value ? "T" : "F" : null;
 | 
			
		||||
            Megjegyzes = co.Megjegyzes;
 | 
			
		||||
            Tipus = co.MulTip;
 | 
			
		||||
            IgazolasTipusa = co.IgazolasTipus;
 | 
			
		||||
            OraTanuloId = co.TanuloId;
 | 
			
		||||
            TanitasiOrakId = co.OraId;
 | 
			
		||||
 | 
			
		||||
            if (co.KesIdo.HasValue && co.KesIdo > 0)
 | 
			
		||||
            {
 | 
			
		||||
                KesesPercben = co.KesIdo.Value;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                KesesPercben = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public DbMuvelet Op { get; set; }
 | 
			
		||||
        public int? ID { get; set; }
 | 
			
		||||
        public string Igazolt { get; set; }
 | 
			
		||||
        public int? KesesPercben { get; set; }
 | 
			
		||||
        public string Megjegyzes { get; set; }
 | 
			
		||||
        public int? Tipus { get; set; }
 | 
			
		||||
        public int? IgazolasTipusa { get; set; }
 | 
			
		||||
        public int? OraTanuloId { get; set; }
 | 
			
		||||
        public int? TanitasiOrakId { get; set; }
 | 
			
		||||
 | 
			
		||||
        public enum DbMuvelet
 | 
			
		||||
        {
 | 
			
		||||
            Insert = 0,
 | 
			
		||||
 | 
			
		||||
            Update = 1,
 | 
			
		||||
 | 
			
		||||
            Delete = 2,
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										158
									
								
								Kreta.BusinessLogic/Logic/Naplozas/NaplozasCo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								Kreta.BusinessLogic/Logic/Naplozas/NaplozasCo.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,158 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas
 | 
			
		||||
{
 | 
			
		||||
    public class NaplozasCo
 | 
			
		||||
    {
 | 
			
		||||
        public NaplozasCo(int? szervezetTipusId = null)
 | 
			
		||||
        {
 | 
			
		||||
            OraAdat = new OraAdatModel();
 | 
			
		||||
            Helyettesites = new HelyettesitesModel();
 | 
			
		||||
            OraTulajdosag = new OraTulajdonsagModel();
 | 
			
		||||
            Hazifeladat = new HazifeladatModel();
 | 
			
		||||
            SzamonkeresElorejelzes = new SzamonkeresElorejelzesModel();
 | 
			
		||||
            MulasztasList = new List<MulasztasModel>();
 | 
			
		||||
            SzervezetTipusId = szervezetTipusId;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool IsEgyediNaplozas { get { return !OraAdat.OrarendiOraId.HasValue && !OraAdat.TanitasiOraId.HasValue; } }
 | 
			
		||||
        public OraAdatModel OraAdat { get; set; }
 | 
			
		||||
        public HelyettesitesModel Helyettesites { get; set; }
 | 
			
		||||
        public OraTulajdonsagModel OraTulajdosag { get; set; }
 | 
			
		||||
        public HazifeladatModel Hazifeladat { get; set; }
 | 
			
		||||
        public SzamonkeresElorejelzesModel SzamonkeresElorejelzes { get; set; }
 | 
			
		||||
        public List<MulasztasModel> MulasztasList { get; set; }
 | 
			
		||||
        public int? SzervezetTipusId { get; set; }
 | 
			
		||||
 | 
			
		||||
        public class OraAdatModel
 | 
			
		||||
        {
 | 
			
		||||
            public DateTime OraKezdete { get; set; }
 | 
			
		||||
            public DateTime OraVege { get; set; }
 | 
			
		||||
 | 
			
		||||
            public int? OrarendiOraId { get; set; }
 | 
			
		||||
            public int? TanitasiOraId { get; set; }
 | 
			
		||||
            public int? CsengetesirendOraId { get; set; }
 | 
			
		||||
            public int? CsengetesirendId { get; set; }
 | 
			
		||||
            public int? TanarId { get; set; }
 | 
			
		||||
 | 
			
		||||
            public string Tema { get; set; }
 | 
			
		||||
            public int? TemaTanmenetId { get; set; }
 | 
			
		||||
            public int? TanulasiEgysegId { get; set; }
 | 
			
		||||
            public int? FoglakozasId { get; set; }
 | 
			
		||||
            public int? OsztalyCsoportId { get; set; }
 | 
			
		||||
            public int? TantargyId { get; set; }
 | 
			
		||||
            public int? TeremId { get; set; }
 | 
			
		||||
            public bool IsSorszamozando { get; set; }
 | 
			
		||||
            public bool IsTanorankivuli { get; set; }
 | 
			
		||||
            public string Megjegyzes { get; set; }
 | 
			
		||||
            public int? Oraszam { get; set; }
 | 
			
		||||
            public List<int> CheckedOpenBoardFileIdList { get; set; }
 | 
			
		||||
 | 
			
		||||
            public int? DigEszkozTipusId { get; set; }
 | 
			
		||||
            public int? DigPlatformTipusId { get; set; }
 | 
			
		||||
            public List<int> DigTamEszkozTipusIdList { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public class HelyettesitesModel
 | 
			
		||||
        {
 | 
			
		||||
            public int? Id { get; set; }
 | 
			
		||||
            public int? TanarId { get; set; }
 | 
			
		||||
            public string Oka { get; set; }
 | 
			
		||||
            public int? Tipus { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public class MulasztasModel
 | 
			
		||||
        {
 | 
			
		||||
            public int? MulasztasId { get; set; }
 | 
			
		||||
            public int TanuloId { get; set; }
 | 
			
		||||
            public int? MulasztasTipus { get; set; }
 | 
			
		||||
            public int? Keses { get; set; }
 | 
			
		||||
 | 
			
		||||
            public bool HazifeladatHiany { get; set; }
 | 
			
		||||
            public bool FelszerelesHiany { get; set; }
 | 
			
		||||
            public bool Felmentes { get; set; }
 | 
			
		||||
            public bool TanoraiDicseret { get; set; }
 | 
			
		||||
 | 
			
		||||
            public int? HazifeladatHianyId { get; set; }
 | 
			
		||||
            public int? FelszerelesHianyId { get; set; }
 | 
			
		||||
            public int? FelmentesId { get; set; }
 | 
			
		||||
            public int? TanoraiDicseretId { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public class HazifeladatModel
 | 
			
		||||
        {
 | 
			
		||||
            public int? Id { get; set; }
 | 
			
		||||
            public string Szoveg { get; set; }
 | 
			
		||||
            public DateTime? Hatarido { get; set; }
 | 
			
		||||
            public int? CsatolmanyId { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public class SzamonkeresElorejelzesModel
 | 
			
		||||
        {
 | 
			
		||||
            public int? Id { get; set; }
 | 
			
		||||
            public string Megnevezes { get; set; }
 | 
			
		||||
            public int? ErtekelesModId { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public class OraTulajdonsagModel
 | 
			
		||||
        {
 | 
			
		||||
            public bool Bontott { get; set; }
 | 
			
		||||
            public bool NemzetisegiOra { get; set; }
 | 
			
		||||
            public bool IsFelnottoktatasiSzerzodes { get; set; }
 | 
			
		||||
            public bool OnlineOra { get; set; }
 | 
			
		||||
            public bool MindennaposTestneveles { get; set; }
 | 
			
		||||
            public bool IPRTanora { get; set; }
 | 
			
		||||
            public bool Differencialt { get; set; }
 | 
			
		||||
            public bool Kooperativ { get; set; }
 | 
			
		||||
            public bool Meres { get; set; }
 | 
			
		||||
            public bool Drama { get; set; }
 | 
			
		||||
            public bool Tiop { get; set; }
 | 
			
		||||
            public bool ParhuzamosOra { get; set; }
 | 
			
		||||
            public bool IktTanora { get; set; }
 | 
			
		||||
            public bool TAMOP { get; set; }
 | 
			
		||||
            public bool NemSzakrendszeru { get; set; }
 | 
			
		||||
            public bool Tulora { get; set; }
 | 
			
		||||
            public bool Multikulturalis { get; set; }
 | 
			
		||||
            public bool EFOP32317 { get; set; }
 | 
			
		||||
            public bool KomplexOra { get; set; }
 | 
			
		||||
            public bool KIPOra { get; set; }
 | 
			
		||||
            public bool VEKOP73317 { get; set; }
 | 
			
		||||
            public bool KAPOra { get; set; }
 | 
			
		||||
            public bool GINOP623 { get; set; }
 | 
			
		||||
            public bool EFOP31716EselyteremtesAKoznevelesben { get; set; }
 | 
			
		||||
            public bool EFOP33717 { get; set; }
 | 
			
		||||
            public bool TIOP11112120120001 { get; set; }
 | 
			
		||||
            public bool DFHT { get; set; }
 | 
			
		||||
            public bool Rahangolodas { get; set; }
 | 
			
		||||
            public bool Testmozgas { get; set; }
 | 
			
		||||
            public bool Muveszet { get; set; }
 | 
			
		||||
            public bool Eletgyakorlat { get; set; }
 | 
			
		||||
            public bool Logika { get; set; }
 | 
			
		||||
            public bool TeOrad { get; set; }
 | 
			
		||||
            public bool DigitalisAlapProgram { get; set; }
 | 
			
		||||
            public bool EFOP23517201700038Miapalya { get; set; }
 | 
			
		||||
            public bool TanevTananyaganakIsmetlese { get; set; }
 | 
			
		||||
            public bool TanevTananyaganakKiegeszitese { get; set; }
 | 
			
		||||
            public bool TanulokDigitalisKeszsegfejlesztese { get; set; }
 | 
			
		||||
            public bool Projektmunka { get; set; }
 | 
			
		||||
            public bool TanulokKompenzaciosIraskeszsegFejlesztese { get; set; }
 | 
			
		||||
            public bool TanulokKompenzaciosOlvasasiKepessegFejlesztese { get; set; }
 | 
			
		||||
            public bool TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese { get; set; }
 | 
			
		||||
            public bool TanulokNyelviKepessegenekKompenzaciosFejlesztese { get; set; }
 | 
			
		||||
            public bool TanulokOnmegismeresenekSegitese { get; set; }
 | 
			
		||||
            public bool TanulokOnallosagraNevelese { get; set; }
 | 
			
		||||
            public bool TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese { get; set; }
 | 
			
		||||
            public bool TanulokOrientaciosTamogatasa { get; set; }
 | 
			
		||||
            public bool TanulokSzocialitasanakFejlesztese { get; set; }
 | 
			
		||||
            public bool TanulokTovabbhaladasatElokeszitoTevekenysegek { get; set; }
 | 
			
		||||
            public bool PedagogusAltalJelzettEgyeniEsetkezeles { get; set; }
 | 
			
		||||
            public bool ProjektmunkaTamogatasa { get; set; }
 | 
			
		||||
            public bool DigitalisKeszsegfejlesztes { get; set; }
 | 
			
		||||
            public bool KozossegiMunkaTamogatasa { get; set; }
 | 
			
		||||
            public bool TanoraElokeszitesenekTamogatasa { get; set; }
 | 
			
		||||
            public bool TanoraLebonyolitasanakTamogatasa { get; set; }
 | 
			
		||||
            public bool NapkozisTevekenysegKeretebenEgyeniFejlesztes { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										148
									
								
								Kreta.BusinessLogic/Logic/Naplozas/NaplozasLogic.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								Kreta.BusinessLogic/Logic/Naplozas/NaplozasLogic.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,148 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
 | 
			
		||||
using Kreta.BusinessLogic.Interfaces;
 | 
			
		||||
using Kreta.BusinessLogic.Logic.Naplozas.Elokeszites;
 | 
			
		||||
using Kreta.BusinessLogic.Logic.Naplozas.Validacio;
 | 
			
		||||
using Kreta.Client.CoreApi;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas
 | 
			
		||||
{
 | 
			
		||||
    public class NaplozasLogic : NaplozasElokeszitesLogic
 | 
			
		||||
    {
 | 
			
		||||
        public NaplozasLogic(NaploValidacio validator, NaplozasCo input) : base(validator)
 | 
			
		||||
        {
 | 
			
		||||
            FillInnerModel(input);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public NaplozasLogic(NaploValidacio validator, NaplozasMobilCo input) : base(validator)
 | 
			
		||||
        {
 | 
			
		||||
            FillInnerModel(input);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void FillInnerModel(NaplozasCo input)
 | 
			
		||||
        {
 | 
			
		||||
            Model = new NaplozasElokeszitesModel(ConnectionType.FelhasznaloId, input.SzervezetTipusId)
 | 
			
		||||
            {
 | 
			
		||||
                IsEgyediNaplozas = input.IsEgyediNaplozas
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            var osztalyHelper = new OsztalyHelper(ConnectionType);
 | 
			
		||||
            var orarendiOraHelper = new OrarendiOraHelper(ConnectionType);
 | 
			
		||||
            var orarendHelper = new OrarendHelper(ConnectionType);
 | 
			
		||||
 | 
			
		||||
            if (!Model.IsEgyediNaplozas)
 | 
			
		||||
            {
 | 
			
		||||
                var thelper = new TanoraHelper(ConnectionType);
 | 
			
		||||
 | 
			
		||||
                var oraCo = thelper.GetTanoraByOrarendiId(input.OraAdat.TanitasiOraId ?? input.OraAdat.OrarendiOraId.Value, input.OraAdat.OraKezdete.Date, input.OraAdat.TanitasiOraId.HasValue, isTanuloOrGondviselo: false);
 | 
			
		||||
 | 
			
		||||
                var systemSettingsHelper = new SystemSettingsHelper(ConnectionType);
 | 
			
		||||
                var helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Helyettesites_eseten_felugyelet_alapertelmezetten_sorszamozando);
 | 
			
		||||
 | 
			
		||||
                Model.OraAdat.Fill(oraCo, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
 | 
			
		||||
                Model.OraAdat.Fill(input);
 | 
			
		||||
 | 
			
		||||
                SetTantargyOsztalycsoport();
 | 
			
		||||
                SetOsztalyfonok(osztalyHelper);
 | 
			
		||||
                SetElozoOraAdatai(orarendiOraHelper);
 | 
			
		||||
                SetTemaLista(thelper);
 | 
			
		||||
                SetMentessegList(orarendHelper);
 | 
			
		||||
 | 
			
		||||
                Model.OraTulajdonsag.Fill(input);
 | 
			
		||||
 | 
			
		||||
                Model.Helyettesites.Fill(oraCo);
 | 
			
		||||
                Model.Helyettesites.Fill(input, Model.IsEgyediNaplozas);
 | 
			
		||||
 | 
			
		||||
                Model.Hazifeladat.Fill(input);
 | 
			
		||||
                Model.Mulasztas.Fill(input, Model.MaxKeses);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                Model.OraAdat.Fill(input);
 | 
			
		||||
                Model.OraTulajdonsag.Fill(input);
 | 
			
		||||
                Model.Helyettesites.Fill(input, Model.IsEgyediNaplozas);
 | 
			
		||||
                SetTantargyOsztalycsoport();
 | 
			
		||||
                SetOsztalyfonok(osztalyHelper);
 | 
			
		||||
                SetElozoOraAdatai(orarendiOraHelper);
 | 
			
		||||
                SetMentessegList(orarendHelper);
 | 
			
		||||
 | 
			
		||||
                Model.Hazifeladat.Fill(input);
 | 
			
		||||
                Model.Mulasztas.Fill(input, Model.MaxKeses);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void FillInnerModel(NaplozasMobilCo input)
 | 
			
		||||
        {
 | 
			
		||||
            var thelper = new TanoraHelper(ConnectionType);
 | 
			
		||||
 | 
			
		||||
            var oraCo = thelper.GetTanoraByOrarendiId(input.OraAdat.TanitasiOraId ?? input.OraAdat.OrarendiOraId.Value, input.OraAdat.Datum, input.OraAdat.TanitasiOraId.HasValue, isTanuloOrGondviselo: false);
 | 
			
		||||
 | 
			
		||||
            Model = new NaplozasElokeszitesModel(ConnectionType.FelhasznaloId);
 | 
			
		||||
 | 
			
		||||
            var systemSettingsHelper = new SystemSettingsHelper(ConnectionType);
 | 
			
		||||
            var helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Helyettesites_eseten_felugyelet_alapertelmezetten_sorszamozando);
 | 
			
		||||
 | 
			
		||||
            Model.OraAdat.Fill(oraCo, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
 | 
			
		||||
            Model.OraAdat.Fill(input);
 | 
			
		||||
 | 
			
		||||
            SetOsztalyfonok(new OsztalyHelper(ConnectionType));
 | 
			
		||||
            SetElozoOraAdatai(new OrarendiOraHelper(ConnectionType));
 | 
			
		||||
            SetTemaLista(thelper);
 | 
			
		||||
            SetMentessegList(new OrarendHelper(ConnectionType));
 | 
			
		||||
 | 
			
		||||
            Model.OraTulajdonsag.Fill(oraCo);
 | 
			
		||||
            Model.Helyettesites.Fill(oraCo);
 | 
			
		||||
 | 
			
		||||
            Model.Hazifeladat.Fill(input);
 | 
			
		||||
            Model.Mulasztas.Fill(ConnectionType, input, Model.MaxKeses, Model.OraAdat.TanitasiOraId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// INFO @DevKornel: Mobil használja
 | 
			
		||||
        public NaplozasResultCo SaveNaplozas(IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
 | 
			
		||||
        {
 | 
			
		||||
            if (Model.OraAdat.IsMobilNaplozott)
 | 
			
		||||
            {
 | 
			
		||||
                Validator.MobilValidateModel(Model);
 | 
			
		||||
            }
 | 
			
		||||
            else if (!Model.IsElmaradtOra)
 | 
			
		||||
            {
 | 
			
		||||
                Validator.ValidateModel(Model);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var tanoraCo = new TanoraCO();
 | 
			
		||||
            Model.ConvertTo(tanoraCo);
 | 
			
		||||
 | 
			
		||||
            //Ha van órarendióra akkor nem számít mi jön a felületről az óra kezdete és vége az órarendiórában lévő érték lesz
 | 
			
		||||
            if (Model.OraAdat.OrarendiOraId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                var oo = new OrarendiOraHelper(ConnectionType).GetOrarendiOraById(Model.OraAdat.OrarendiOraId.Value);
 | 
			
		||||
 | 
			
		||||
                var tsKezd = new TimeSpan(oo.OraKezdete.Hour, oo.OraKezdete.Minute, 0);
 | 
			
		||||
                var tsVeg = new TimeSpan(oo.OraVege.Hour, oo.OraVege.Minute, 0);
 | 
			
		||||
                tanoraCo.OraKezd = tanoraCo.OraKezd.Date + tsKezd;
 | 
			
		||||
                tanoraCo.OraVeg = tanoraCo.OraVeg.Date + tsVeg;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var mulasztasCoList = new List<MulasztasokCo>();
 | 
			
		||||
            Model.ConvertTo(mulasztasCoList);
 | 
			
		||||
 | 
			
		||||
            return new TanoraHelper(ConnectionType).TanoraNaplozas(tanoraCo, mulasztasCoList, fileServiceHelper, coreApiClient);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SaveNemMegtartottNaplozas(IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
 | 
			
		||||
        {
 | 
			
		||||
            Model.OraAdat.IsElmaradt = true;
 | 
			
		||||
            SaveNaplozas(fileServiceHelper, coreApiClient);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void NaplozasValidacio()
 | 
			
		||||
        {
 | 
			
		||||
            Validator.NaplozasDatumValidacio(Model);
 | 
			
		||||
            Validator.LezartNaploValidacio(Model);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										58
									
								
								Kreta.BusinessLogic/Logic/Naplozas/NaplozasMobilCo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								Kreta.BusinessLogic/Logic/Naplozas/NaplozasMobilCo.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas
 | 
			
		||||
{
 | 
			
		||||
    public class NaplozasMobilCo
 | 
			
		||||
    {
 | 
			
		||||
        public NaplozasMobilCo()
 | 
			
		||||
        {
 | 
			
		||||
            OraAdat = new OraAdatModel();
 | 
			
		||||
            Hazifeladat = new HazifeladatModel();
 | 
			
		||||
            SzamonkeresElorejelzes = new SzamonkeresElorejelzesModel();
 | 
			
		||||
            MulasztasList = new List<MulasztasModel>();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public OraAdatModel OraAdat { get; set; }
 | 
			
		||||
        public HazifeladatModel Hazifeladat { get; set; }
 | 
			
		||||
        public SzamonkeresElorejelzesModel SzamonkeresElorejelzes { get; set; }
 | 
			
		||||
        public List<MulasztasModel> MulasztasList { get; set; }
 | 
			
		||||
 | 
			
		||||
        public class OraAdatModel
 | 
			
		||||
        {
 | 
			
		||||
            public int? OrarendiOraId { get; set; }
 | 
			
		||||
            public int? TanitasiOraId { get; set; }
 | 
			
		||||
            public string Tema { get; set; }
 | 
			
		||||
            public DateTime Datum { get; set; }
 | 
			
		||||
            public bool IsElmaradt { get; set; }
 | 
			
		||||
            public DateTime RogzitesDatuma { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public class MulasztasModel
 | 
			
		||||
        {
 | 
			
		||||
            public int TanuloId { get; set; }
 | 
			
		||||
            public int? MulasztasTipus { get; set; }
 | 
			
		||||
            public int? Keses { get; set; }
 | 
			
		||||
 | 
			
		||||
            public bool HazifeladatHiany { get; set; }
 | 
			
		||||
            public bool FelszerelesHiany { get; set; }
 | 
			
		||||
            public bool Felmentes { get; set; }
 | 
			
		||||
            public bool TanoraiDicseret { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public class HazifeladatModel
 | 
			
		||||
        {
 | 
			
		||||
            public int? Id { get; set; }
 | 
			
		||||
            public string Szoveg { get; set; }
 | 
			
		||||
            public DateTime? Hatarido { get; set; }
 | 
			
		||||
            public int? CsatolmanyId { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public class SzamonkeresElorejelzesModel
 | 
			
		||||
        {
 | 
			
		||||
            public int? Id { get; set; }
 | 
			
		||||
            public string Megnevezes { get; set; }
 | 
			
		||||
            public int? ErtekelesModId { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										447
									
								
								Kreta.BusinessLogic/Logic/Naplozas/Validacio/NaploValidacio.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										447
									
								
								Kreta.BusinessLogic/Logic/Naplozas/Validacio/NaploValidacio.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,447 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Kreta.BusinessLogic.Classes;
 | 
			
		||||
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.Common;
 | 
			
		||||
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Logic;
 | 
			
		||||
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
 | 
			
		||||
using Kreta.BusinessLogic.Logic.Naplozas.Elokeszites;
 | 
			
		||||
using Kreta.Core.ConnectionType;
 | 
			
		||||
using Kreta.Core.Validation.Exceptions;
 | 
			
		||||
using Kreta.Core.Validation.Exceptions.Enum;
 | 
			
		||||
using Kreta.DataAccessManual;
 | 
			
		||||
using Kreta.DataAccessManual.Interfaces;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
using Kreta.Enums.ManualEnums;
 | 
			
		||||
using Kreta.Resources;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Validacio
 | 
			
		||||
{
 | 
			
		||||
    public class NaploValidacio
 | 
			
		||||
    {
 | 
			
		||||
        private List<OrarendCO.ExtendedEvent> OrarendLista
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                var helper = new OrarendHelper(ConnectionType);
 | 
			
		||||
 | 
			
		||||
                return helper.GetOrarendiOrakEsVagyNapirendekEsTanorak(_parameters.FelhasznaloSzerepkor, _parameters.From, _parameters.To, ConnectionType.FelhasznaloId, osztalyCsoportId: null, tanuloId: null, csakOrarend: false, OrarendTipusEnum.Minden, isTanuloOrGondviselo: false, EventColorEnum.Kek);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private readonly NaploValidacioParameters _parameters;
 | 
			
		||||
 | 
			
		||||
        public IConnectionType ConnectionType
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return _parameters.ConnectionType;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public NaploValidacio(NaploValidacioParameters parameters)
 | 
			
		||||
        {
 | 
			
		||||
            _parameters = parameters;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// INFO @D.Kornél: Mobil használja
 | 
			
		||||
        public void MobilValidateModel(NaplozasElokeszitesModel model)
 | 
			
		||||
        {
 | 
			
		||||
            OrarendCO.ExtendedEvent ora;
 | 
			
		||||
            LezartNaploValidacio(model);
 | 
			
		||||
            if (!model.IsTanora)
 | 
			
		||||
            {
 | 
			
		||||
                ora = GetOra(model);
 | 
			
		||||
                CheckIsOraExists(ora);
 | 
			
		||||
                HelyettesitettOra(ora);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                ora = GetTanora(model);
 | 
			
		||||
                CheckIsOraExists(ora);
 | 
			
		||||
                //TODO: ha nem az övé vagy helyettese
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            KorabbanNaplozottOra(model, ora);
 | 
			
		||||
            CheckElmaradtraNaplozas(model, ora);
 | 
			
		||||
            if (!model.IsElmaradtOra)
 | 
			
		||||
            {
 | 
			
		||||
                ValidateMulasztasRekords(model);
 | 
			
		||||
                TemaValidacio(model);
 | 
			
		||||
            }
 | 
			
		||||
            NaplozasDatumValidacio(model);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void ValidateModel(NaplozasElokeszitesModel model)
 | 
			
		||||
        {
 | 
			
		||||
            if (!model.IsEgyediNaplozas)
 | 
			
		||||
            {
 | 
			
		||||
                if (model.IsTanora)
 | 
			
		||||
                {
 | 
			
		||||
                    var ora = GetTanora(model);
 | 
			
		||||
                    CheckIsOraExists(ora);
 | 
			
		||||
                    //TODO: ha nem az övé vagy helyettese
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    OrarendCO.ExtendedEvent ora;
 | 
			
		||||
                    if (model.Helyettesites.IsKeresoAltalTalaltOra)
 | 
			
		||||
                    {
 | 
			
		||||
                        ora = GetHelyettesOra(model);
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        ora = GetOra(model);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    CheckIsOraExists(ora);
 | 
			
		||||
                    KorabbanNaplozottOra(model, ora);
 | 
			
		||||
                    HelyettesitettOra(ora);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            ValidateMulasztasRekords(model);
 | 
			
		||||
            NaplozasDatumValidacio(model);
 | 
			
		||||
            TemaValidacio(model);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool TeremUtkozesEllenorzes(NaplozasElokeszitesModel model)
 | 
			
		||||
        {
 | 
			
		||||
            bool teremutkozes;
 | 
			
		||||
            int tanoraID, orarendiOraID, hetirend;
 | 
			
		||||
            var helper = new TanoraHelper(ConnectionType);
 | 
			
		||||
 | 
			
		||||
            if (!model.OraAdat.TeremId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.MenteshezATeremMegadasaKotelezo);
 | 
			
		||||
            }
 | 
			
		||||
            if (model.IsEgyediNaplozas)
 | 
			
		||||
            {
 | 
			
		||||
                tanoraID = 0;
 | 
			
		||||
                orarendiOraID = 0;
 | 
			
		||||
                hetirend = (int)HetiRendTipusEnum.MindegyikHet;
 | 
			
		||||
            }
 | 
			
		||||
            else if (model.IsTanora)
 | 
			
		||||
            {
 | 
			
		||||
                tanoraID = model.OraAdat.TanitasiOraId.Value;
 | 
			
		||||
 | 
			
		||||
                (var oraId, var hRend) = helper.GetOrarendIdAndHetirend(tanoraID);
 | 
			
		||||
 | 
			
		||||
                if (oraId.HasValue)
 | 
			
		||||
                {
 | 
			
		||||
                    orarendiOraID = oraId.Value;
 | 
			
		||||
                    if (hRend.HasValue)
 | 
			
		||||
                    {
 | 
			
		||||
                        hetirend = hRend.Value;
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        hetirend = (int)HetiRendTipusEnum.MindegyikHet;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    orarendiOraID = 0;
 | 
			
		||||
                    hetirend = (int)HetiRendTipusEnum.MindegyikHet;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                tanoraID = 0;
 | 
			
		||||
                orarendiOraID = model.OraAdat.OrarendiOraId.Value;
 | 
			
		||||
                var orarendiOraHelper = new OrarendiOraHelper(ConnectionType);
 | 
			
		||||
                hetirend = orarendiOraHelper.GetHetirend(orarendiOraID);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            teremutkozes = helper.TanitasiOraTeremUtkozesEllenorzes(tanoraID, orarendiOraID, model.OraAdat.TeremId.Value, (int)model.OraAdat.HetNapja, hetirend, model.OraAdat.OraKezdete, model.OraAdat.OraVege);
 | 
			
		||||
 | 
			
		||||
            return teremutkozes;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public string GetOsztalyEsTanarOraiUtkozes(NaplozasElokeszitesModel model)
 | 
			
		||||
        {
 | 
			
		||||
            int osztalyCsoportId;
 | 
			
		||||
            if (!model.OraAdat.OsztalyCsoportId.HasValue && model.OraAdat.FoglakozasId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                var helper = new TantargyFelosztasHelper(ConnectionType);
 | 
			
		||||
                var data = helper.GetTantargyFelosztas(model.OraAdat.FoglakozasId.Value);
 | 
			
		||||
                osztalyCsoportId = data.OsztalyCsoportID;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                osztalyCsoportId = model.OraAdat.OsztalyCsoportId.Value;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var tanorahelper = new TanoraHelper(ConnectionType);
 | 
			
		||||
            var errorMsg = tanorahelper.GetOsztalyEsTanarOrai(model.OraAdat.TanarId.Value, osztalyCsoportId, model.OraAdat.OraKezdete, model.OraAdat.OraVege, model.OraAdat.TanitasiOraId, model.OraAdat.OrarendiOraId);
 | 
			
		||||
 | 
			
		||||
            return errorMsg;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public OrarendCO.ExtendedEvent GetTanora(NaplozasElokeszitesModel model)
 | 
			
		||||
        {
 | 
			
		||||
            return OrarendLista.Find(x => x.id == model.OraAdat.TanitasiOraId && x.datum.Value.Date == model.OraAdat.OraKezdete.Date);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void CheckElmaradtraNaplozas(NaplozasElokeszitesModel model, OrarendCO.ExtendedEvent ora)
 | 
			
		||||
        {
 | 
			
		||||
            if (ora.OraAllapota == TanoraAllapotaEnum.Elmaradt && !model.IsElmaradtOra)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.ResourceAlreadyExists, ErrorResource.NaplozasSikertelenKorabbanMarElmaradtOrakentNaplozasraKerult);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (ora.OraAllapota == TanoraAllapotaEnum.Naplozott && model.IsElmaradtOra)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.ResourceAlreadyExists, ErrorResource.NaplozasSikertelenAzOraMarKorabbanNaplozasraKerult);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void CheckIsOraExists(OrarendCO.ExtendedEvent ora)
 | 
			
		||||
        {
 | 
			
		||||
            if (ora == null)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.ResourceNotFound, ErrorResource.NaplozasSikertelenAzOraMarNemLetezikAKivalasztottNapon);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private OrarendCO.ExtendedEvent GetHelyettesOra(NaplozasElokeszitesModel model)
 | 
			
		||||
        {
 | 
			
		||||
            var helper = new OrarendHelper(ConnectionType);
 | 
			
		||||
 | 
			
		||||
            var date = model.OraAdat.OraKezdete.Date;
 | 
			
		||||
            var helyettesOralista = helper.GetOrarendiOrakEsVagyNapirendekEsTanorak(_parameters.FelhasznaloSzerepkor, date, date.AddDays(1), model.OraAdat.TanarId, osztalyCsoportId: null, tanuloId: null, csakOrarend: false, OrarendTipusEnum.Minden, isTanuloOrGondviselo: false, EventColorEnum.Kek);
 | 
			
		||||
            return helyettesOralista.Find(x => x.OrarendiOraId == model.OraAdat.OrarendiOraId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private OrarendCO.ExtendedEvent GetOra(NaplozasElokeszitesModel model)
 | 
			
		||||
        {
 | 
			
		||||
            return OrarendLista.Find(x => x.OrarendiOraId == model.OraAdat.OrarendiOraId && x.datum.Value.Date == model.OraAdat.OraKezdete.Date);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void HelyettesitettOra(OrarendCO.ExtendedEvent ora)
 | 
			
		||||
        {
 | 
			
		||||
            if (ora.OraAllapota == TanoraAllapotaEnum.Nem_naplozott && ora.helyettesitoId.HasValue && ora.helyettesitoId != ConnectionType.FelhasznaloId)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.ResourceNotFound, ErrorResource.NaplozasSikertelenAzOraraHelyettesitesLettKiivaAzAdminAltal);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void KorabbanNaplozottOra(NaplozasElokeszitesModel model, OrarendCO.ExtendedEvent ora)
 | 
			
		||||
        {
 | 
			
		||||
            if (model.OraAdat.TanitasiOraId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (ora.OraAllapota == TanoraAllapotaEnum.Nem_naplozott)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (ora.OraAllapota == TanoraAllapotaEnum.Elmaradt)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.ResourceAlreadyExists, ErrorResource.NaplozasSikertelenKorabbanMarElmaradtOrakentNaplozasraKerult);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (ora.OraAllapota == TanoraAllapotaEnum.Naplozott)
 | 
			
		||||
            {
 | 
			
		||||
                if (ora.helyettesitoId.HasValue && ora.helyettesitoId != ConnectionType.FelhasznaloId)
 | 
			
		||||
                {
 | 
			
		||||
                    throw new ValidationException(ValidationErrorType.ResourceAlreadyExists, ErrorResource.NaplozasSikertelenAzOratKorabbanMarHelyettesitettkentNaploztaEgyMasikTanar);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.ResourceAlreadyExists, ErrorResource.NaplozasSikertelenAzOraMarKorabbanNaplozasraKerult);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void TemaValidacio(NaplozasElokeszitesModel model)
 | 
			
		||||
        {
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(model.OraAdat.Tema))
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.NaplozasSikertelenTemaMegadasaKotelezo);
 | 
			
		||||
            }
 | 
			
		||||
            if (model.OraAdat.Tema.Length > 1000) /*db ben ez a max char jelenleg*/
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.TemaTulHosszu);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// INFO @D.Kornél: használja a mobil
 | 
			
		||||
        public void NaplozasDatumValidacio(NaplozasElokeszitesModel model)
 | 
			
		||||
        {
 | 
			
		||||
            if (!model.NaplozhatoDatum)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.NaplozasSikertelenJovobeliDatumraNemLehetNaplozni);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (model.OraAdat.OraKezdete >= model.OraAdat.OraVege)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.OraKezdeteNagyobbMintAVege);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var isNaplozhatZarastolFuggetlenul = new NaplozarasLogic(ConnectionType).IsNaplozhatZarastolFuggetlenul(model.OraAdat.OraKezdete, model.OraAdat.OsztalyCsoportId);
 | 
			
		||||
            if (!isNaplozhatZarastolFuggetlenul && new OrarendHelper(ConnectionType).GetNaplozarasDate(null) >= model.OraAdat.OraKezdete)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.NaplozasSikertelenNemNaplozhatoNaplozarasMiatt);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (model.OraAdat.OraVege.Date != model.OraAdat.OraKezdete.Date)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.Undefined, OrarendResource.AtiveloNaplozasNemEngedelyezett);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var orarendHelper = new OrarendHelper(ConnectionType);
 | 
			
		||||
 | 
			
		||||
            if (orarendHelper.GetIsMunkaszunetiNap(model.OraAdat.OraKezdete.Date, model.OraAdat.OsztalyCsoportId.Value))
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.MunkaszunetiNapraTanoraNemVehetoFel);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var sysSettingsHelper = new SystemSettingsHelper(ConnectionType);
 | 
			
		||||
            DateTime? szakGyakKezdDatum, szakGyakVegDatum, utolsoTanitasiNap;
 | 
			
		||||
            var tanevRendHelper = new TanevrendHelper(ConnectionType);
 | 
			
		||||
            var tanevHelper = new TanevHelper(ConnectionType);
 | 
			
		||||
            szakGyakKezdDatum = sysSettingsHelper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum);
 | 
			
		||||
            szakGyakVegDatum = sysSettingsHelper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum);
 | 
			
		||||
            utolsoTanitasiNap = tanevHelper.GetTanevInfo().UtolsoTanitasiNap;
 | 
			
		||||
            var isRendkivuliNap = tanevRendHelper.IsRendkivuliTanitasiNap(model.OraAdat.OraKezdete);
 | 
			
		||||
 | 
			
		||||
            if (model.OraAdat.OraKezdete.Date > utolsoTanitasiNap)
 | 
			
		||||
            {
 | 
			
		||||
                if ((model.OraAdat.OraKezdete.Date < szakGyakKezdDatum || model.OraAdat.OraKezdete.Date > szakGyakVegDatum) && !isRendkivuliNap)
 | 
			
		||||
                {
 | 
			
		||||
                    throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.NaplozasSikertelenNyariNaplozasMiatt);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (!isRendkivuliNap && !new CsoportHelper(ConnectionType).IsNyariSzakmaiGyakorlatos(model.OraAdat.OsztalyCsoportId.Value) && !model.SzervezetTipusId.HasValue)
 | 
			
		||||
                {
 | 
			
		||||
                    throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.EbbenAzIdoszakbanCsakOsszefuggoSzakmaiGyakorlatiCsoportotLehetNaplozni);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void LezartNaploValidacio(NaplozasElokeszitesModel model)
 | 
			
		||||
        {
 | 
			
		||||
            if (model.OraAdat.OsztalyCsoportId.HasValue && new NaplozarasLogic(ConnectionType).GetLezartOsztalyokEsBontottCsoportjaik().Contains(model.OraAdat.OsztalyCsoportId.Value))
 | 
			
		||||
            {
 | 
			
		||||
                throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.AzElektronikusNaploLezarva);
 | 
			
		||||
            }        
 | 
			
		||||
        }
 | 
			
		||||
        private void ValidateMulasztasRekords(NaplozasElokeszitesModel model)
 | 
			
		||||
        {
 | 
			
		||||
            if (model.IsElmaradtOra)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Dal.CustomConnection.Run(ConnectionType, h =>
 | 
			
		||||
            {
 | 
			
		||||
                var jelenletList = model.IsEgyediNaplozas ? GetEgyediOraJavasoltJelenlet(model, h)
 | 
			
		||||
                : model.IsTanora ?
 | 
			
		||||
                GetTanitasiOraJavasoltJelenlet(model, h, oktatasNevelesKategoriaEnum: null) : GetOrarendiOraJavasoltJelenlet(model, h);
 | 
			
		||||
 | 
			
		||||
                SetMulastasValuesToValid(model, jelenletList);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
        private void SetMulastasValuesToValid(NaplozasElokeszitesModel model, IEnumerable<IJavasoltJelenletTanuloGetResponseCo> javasoltJelenlet)
 | 
			
		||||
        {
 | 
			
		||||
            var invalidRecords = new List<MulasztasItem>();
 | 
			
		||||
            var template = model.IsTanora ? new JavasoltJelenletTemplateLogic(TanoraAllapotaEnum.Naplozott) : new JavasoltJelenletTemplateLogic(TanoraAllapotaEnum.Nem_naplozott);
 | 
			
		||||
 | 
			
		||||
            foreach (var item in model.Mulasztas.MulasztasList)
 | 
			
		||||
            {
 | 
			
		||||
                var tanuloMulasztas = javasoltJelenlet.SingleOrDefault(t => t.TanuloId == item.TanuloId);
 | 
			
		||||
                if (tanuloMulasztas != null)
 | 
			
		||||
                {
 | 
			
		||||
                    var tanuloMulasztasTemplate = template.GetCalculatedJelenletJavaslatConsideringSzuro(tanuloMulasztas.JavasoltJelenletTemplateTipusSzuroLista);
 | 
			
		||||
 | 
			
		||||
                    MulasztasTipusEnum mulasztasTypus;
 | 
			
		||||
                    if (item.Keses.HasValue && item.Keses > 0 && !item.MulasztasTipus.HasValue)
 | 
			
		||||
                    {
 | 
			
		||||
                        mulasztasTypus = MulasztasTipusEnum.keses;
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        if (item.MulasztasTipus.HasValue)
 | 
			
		||||
                        {
 | 
			
		||||
                            mulasztasTypus = (MulasztasTipusEnum)item.MulasztasTipus.Value;
 | 
			
		||||
                        }
 | 
			
		||||
                        else
 | 
			
		||||
                        {
 | 
			
		||||
                            mulasztasTypus = MulasztasTipusEnum.ures;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    var mulasztasTemplate = tanuloMulasztasTemplate.SzuroElemLista.First(t => t.MulasztasTipusAdatszotar == mulasztasTypus);
 | 
			
		||||
                    if (!mulasztasTemplate.IsEnabled)
 | 
			
		||||
                    {
 | 
			
		||||
                        invalidRecords.Add(item);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    invalidRecords.Add(item);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            foreach (var item in invalidRecords)
 | 
			
		||||
            {
 | 
			
		||||
                model.Mulasztas.MulasztasList.Remove(item);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private IEnumerable<IJavasoltJelenletTanuloGetResponseCo> GetOrarendiOraJavasoltJelenlet(NaplozasElokeszitesModel model, IDalHandler h, OktNevelesiKategoriaEnum? oktatasNevelesKategoriaEnum = null)
 | 
			
		||||
        {
 | 
			
		||||
            var jelenletList = OrarendiOraSubqueries.ListJavasoltJelenlet(model.UserId, ConnectionType.IntezmenyId, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId, h, new Classes.MobileApi.Naplo.V2.Co.Get.Ora.OrarendiOra.JavasoltJelenlet.JavasoltJelenletGetRequestCo()
 | 
			
		||||
            {
 | 
			
		||||
                Key = new Classes.MobileApi.Naplo.V2.Co.Get.Ora.OrarendiOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo[]
 | 
			
		||||
                    {
 | 
			
		||||
                        new Classes.MobileApi.Naplo.V2.Co.Get.Ora.OrarendiOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo(){
 | 
			
		||||
                            OrarendiOraId = model.OraAdat.OrarendiOraId.Value,
 | 
			
		||||
                            OraKezdetDatuma = model.OraAdat.OraKezdete,
 | 
			
		||||
                            OraVegDatuma = model.OraAdat.OraVege,
 | 
			
		||||
                            IsHelyettesitesKeresoAltalTalaltOra = model.Helyettesites.IsKeresoAltalTalaltOra
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
            }, oktatasNevelesKategoriaEnum);
 | 
			
		||||
 | 
			
		||||
            return jelenletList[0].TanuloLista;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private IEnumerable<IJavasoltJelenletTanuloGetResponseCo> GetEgyediOraJavasoltJelenlet(NaplozasElokeszitesModel model, IDalHandler h, OktNevelesiKategoriaEnum? oktatasNevelesKategoriaEnum = OktNevelesiKategoriaEnum.NevelesOktatas)
 | 
			
		||||
        {
 | 
			
		||||
            var jelenletList = EgyediOraSubqueries.ListJavasoltJelenlet(model.UserId, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId, h, new Classes.MobileApi.Naplo.V2.Co.Get.Ora.EgyediOra.JavasoltJelenlet.JavasoltJelenletGetRequestCo()
 | 
			
		||||
            {
 | 
			
		||||
                Key = new Classes.MobileApi.Naplo.V2.Co.Get.Ora.EgyediOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo[]
 | 
			
		||||
                    {
 | 
			
		||||
                        new Classes.MobileApi.Naplo.V2.Co.Get.Ora.EgyediOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo()
 | 
			
		||||
                        {
 | 
			
		||||
                            OsztalyCsoportId = model.OraAdat.OsztalyCsoportId.Value,
 | 
			
		||||
                            TantargyId = model.OraAdat.TantargyId.Value,
 | 
			
		||||
                            OraKezdetDatuma = model.OraAdat.OraKezdete,
 | 
			
		||||
                            OraVegDatuma = model.OraAdat.OraVege
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
            }, oktatasNevelesKategoriaEnum, ConnectionType.IntezmenyId);
 | 
			
		||||
 | 
			
		||||
            return jelenletList[0].TanuloLista;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private IEnumerable<IJavasoltJelenletTanuloGetResponseCo> GetTanitasiOraJavasoltJelenlet(NaplozasElokeszitesModel model, IDalHandler h, OktNevelesiKategoriaEnum? oktatasNevelesKategoriaEnum = null)
 | 
			
		||||
        {
 | 
			
		||||
            var jelenletList = TanitasiOraSubqueries.ListJavasoltJelenlet(model.UserId, ConnectionType.IntezmenyId, ConnectionType.IntezmenyAzonosito, ConnectionType.TanevId, h, new Classes.MobileApi.Naplo.V2.Co.Get.Ora.TanitasiOra.JavasoltJelenlet.JavasoltJelenletGetRequestCo()
 | 
			
		||||
            {
 | 
			
		||||
                Key = new Classes.MobileApi.Naplo.V2.Co.Get.Ora.TanitasiOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo[]
 | 
			
		||||
                    {
 | 
			
		||||
                        new Classes.MobileApi.Naplo.V2.Co.Get.Ora.TanitasiOra.JavasoltJelenlet.JavasoltJelenletKeyGetRequestCo(){
 | 
			
		||||
                            TanitasiOraId = model.OraAdat.TanitasiOraId.Value
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
            }, oktatasNevelesKategoriaEnum);
 | 
			
		||||
 | 
			
		||||
            return jelenletList[0].TanuloLista;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,29 @@
 | 
			
		||||
using System;
 | 
			
		||||
using Kreta.Core.ConnectionType;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.Naplozas.Validacio
 | 
			
		||||
{
 | 
			
		||||
    public class NaploValidacioParameters
 | 
			
		||||
    {
 | 
			
		||||
        private NaploValidacioParameters() { }
 | 
			
		||||
 | 
			
		||||
        public NaploValidacioParameters(DateTime date, IConnectionType connectionType, SzerepkorTipusEnum? felhasznaloSzerepkor) : this(date.ToLocalTime(), date.ToLocalTime().AddDays(1), connectionType, felhasznaloSzerepkor) { }
 | 
			
		||||
 | 
			
		||||
        public NaploValidacioParameters(DateTime from, DateTime to, IConnectionType connectionType, SzerepkorTipusEnum? felhasznaloSzerepkor)
 | 
			
		||||
        {
 | 
			
		||||
            From = from;
 | 
			
		||||
            To = to;
 | 
			
		||||
            ConnectionType = connectionType;
 | 
			
		||||
            FelhasznaloSzerepkor = felhasznaloSzerepkor;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public DateTime From { get; private set; }
 | 
			
		||||
 | 
			
		||||
        public DateTime To { get; private set; }
 | 
			
		||||
 | 
			
		||||
        public IConnectionType ConnectionType { get; private set; }
 | 
			
		||||
 | 
			
		||||
        public SzerepkorTipusEnum? FelhasznaloSzerepkor { get; private set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										231
									
								
								Kreta.BusinessLogic/Logic/RichTextLogic.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										231
									
								
								Kreta.BusinessLogic/Logic/RichTextLogic.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,231 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Net;
 | 
			
		||||
using System.Text.RegularExpressions;
 | 
			
		||||
using System.Web;
 | 
			
		||||
using HtmlAgilityPack;
 | 
			
		||||
using Kreta.BusinessLogic.Utils;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic
 | 
			
		||||
{
 | 
			
		||||
    public static class RichTextLogic
 | 
			
		||||
    {
 | 
			
		||||
        public static List<string> LegalFastReportHtmlTagList = new List<string> { "br", "b", "i", "u", "sub", "sup" };
 | 
			
		||||
 | 
			
		||||
        public static string[] RemovableHtmlTags = new string[] { "img" };
 | 
			
		||||
 | 
			
		||||
        public static string CutHtmlTagsAndDecode(string input)
 | 
			
		||||
        {
 | 
			
		||||
            string result = HttpUtility.HtmlDecode(input);
 | 
			
		||||
            result = Regex.Replace(result, "<.*?>", string.Empty);
 | 
			
		||||
            return result;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static string CutHtmlTagsAndDecodeAndBR2Space(string input)
 | 
			
		||||
        {
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(input))
 | 
			
		||||
            {
 | 
			
		||||
                string result = HttpUtility.HtmlDecode(input.Replace("<br>", " ").Replace("</br>", " "));
 | 
			
		||||
                result = Regex.Replace(result, "<.*?>", string.Empty);
 | 
			
		||||
                return result;
 | 
			
		||||
            }
 | 
			
		||||
            return input;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static string RemoveSpecificHtmlTags(string input, string[] htmlTags)
 | 
			
		||||
        {
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(input))
 | 
			
		||||
            {
 | 
			
		||||
                return input;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var inputHtml = HttpUtility.HtmlDecode(input);
 | 
			
		||||
 | 
			
		||||
            foreach (var htmlTag in htmlTags)
 | 
			
		||||
            {
 | 
			
		||||
                inputHtml = Regex.Replace(inputHtml, $"<{htmlTag}" + @"([\w\W]+?)>", string.Empty);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return inputHtml;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static string ConvertRawHtmlToRichTextHtml(string html)
 | 
			
		||||
        {
 | 
			
		||||
            var actions = new List<Action>();
 | 
			
		||||
 | 
			
		||||
            void AddEscapeElementAction(HtmlNode node)
 | 
			
		||||
            {
 | 
			
		||||
                actions.Add(() => node.ParentNode.ReplaceChild(HtmlNode.CreateNode(WebUtility.HtmlEncode(node.OuterHtml)), node));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            void AddRemovePropertyAction(HtmlNode node, HtmlAttribute attr)
 | 
			
		||||
            {
 | 
			
		||||
                actions.Add(() => node.Attributes.Remove(attr));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            void CollectIllegalProperty(HtmlNode node)
 | 
			
		||||
            {
 | 
			
		||||
                var legalAttributes = new List<string> { "style", "href", "target" };
 | 
			
		||||
                foreach (var item in node.Attributes)
 | 
			
		||||
                {
 | 
			
		||||
                    if (!legalAttributes.Contains(item.Name))
 | 
			
		||||
                    {
 | 
			
		||||
                        AddRemovePropertyAction(node, item);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            bool IsLegalItem(HtmlNode node)
 | 
			
		||||
            {
 | 
			
		||||
                var legalItems = new List<string> { "p", "span", "ul", "li", "strong", "del", "ol", "em", "#text", "div", "table", "colgroup", "tr", "td", "th", "tbody", "tfoot", "a", "form", "col", "thead", "head", "br", "strike", "h1", "h2", "h3", "h4", "h5", "h6" };
 | 
			
		||||
                if (legalItems.Contains(node.Name))
 | 
			
		||||
                {
 | 
			
		||||
                    CollectIllegalProperty(node);
 | 
			
		||||
                    return true;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                AddEscapeElementAction(node);
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            void CheckChild(HtmlNode node)
 | 
			
		||||
            {
 | 
			
		||||
                if (node.HasChildNodes)
 | 
			
		||||
                {
 | 
			
		||||
                    foreach (var childItem in node.ChildNodes)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (IsLegalItem(childItem))
 | 
			
		||||
                        {
 | 
			
		||||
                            CheckChild(childItem);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var doc = new HtmlDocument();
 | 
			
		||||
            doc.LoadHtml(WebUtility.HtmlDecode(html));
 | 
			
		||||
            CheckChild(doc.DocumentNode);
 | 
			
		||||
 | 
			
		||||
            foreach (var action in actions)
 | 
			
		||||
            {
 | 
			
		||||
                action.Invoke();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return doc.DocumentNode.InnerHtml;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static string GetLegalHtmlString(string text, List<string> legalHtmlTagList, bool mustFastReportCompatible = false, bool enableHtmlTagProperties = false)
 | 
			
		||||
        {
 | 
			
		||||
            while (text.Contains("&"))
 | 
			
		||||
            {
 | 
			
		||||
                text = text.Replace("&", "&");  //NOTE: Replace-elni kell az "&"-okat rekurzívan.
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var result = text
 | 
			
		||||
                .Replace("<", "<")               //NOTE: Replace-elni kell az "<"-ket, ha valamiért a "<" encode-olva lenne.
 | 
			
		||||
                .Replace(">", ">")               //NOTE: Replace-elni kell az ">"-ket, ha valamiért a ">" encode-olva lenne.
 | 
			
		||||
                .Replace(" ", "\u0020")        //NOTE: Replace-elni kell az " "-ket.
 | 
			
		||||
                .Replace("\u00A0", "\u0020");       //NOTE: Replace-elni kell a NO-BREAK SPACE-eket, mert a SPACE-el nem ekvivalens és jöhet be ilyen adat és okozhat problémát.
 | 
			
		||||
 | 
			
		||||
            if (mustFastReportCompatible)
 | 
			
		||||
            {
 | 
			
		||||
                result = result
 | 
			
		||||
                    .Replace("<div><br></div>", "<br>") //NOTE: A külső div-be írt enter-et ezt generálják ki, ezt replace-eljük <br>-re.
 | 
			
		||||
                    .Replace("<p> </p>", "<br>")        //NOTE: A kendo editor-ba írt enter-et ezt generálják ki, ezt replace-eljük <br>-re.
 | 
			
		||||
                    .Replace("<br />", "<br>")          //NOTE: Az összes sortörést egységessé tesszük.
 | 
			
		||||
                    .Replace("<br/>", "<br>")           //NOTE: Az összes sortörést egységessé tesszük.
 | 
			
		||||
                    .Replace("<div>", string.Empty)     //NOTE: Az összes sortörést egységessé tesszük.
 | 
			
		||||
                    .Replace("</div>", "<br>")          //NOTE: Az összes sortörést egységessé tesszük.
 | 
			
		||||
                    .Replace("<p>", string.Empty)       //NOTE: Az összes sortörést egységessé tesszük.
 | 
			
		||||
                    .Replace("</p>", "<br>")            //NOTE: Az összes sortörést egységessé tesszük.
 | 
			
		||||
                    .Replace("<strong>", "<b>")         //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
 | 
			
		||||
                    .Replace("</strong>", "</b>")       //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
 | 
			
		||||
                    .Replace("<em>", "<i>")             //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
 | 
			
		||||
                    .Replace("</em>", "</i>")           //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
 | 
			
		||||
                    .Replace("<span style=\"text-decoration:underline;\">", "<u>") //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
 | 
			
		||||
                    .Replace("</span>", "</u>");        //NOTE: Egységes és FastReport kompatibilis tag-ekre replace-elünk.
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //NOTE: --- Start: Replace-eljük az összes nem legális html tag-et.
 | 
			
		||||
            Random random = new Random();
 | 
			
		||||
            //NOTE: Erre a bonyolult random-ozós replace-es logikára azért van szükség, hogy ne tudják hack-elni véletlenül sem a bejövő adatokat!
 | 
			
		||||
            const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
 | 
			
		||||
            string closeTagTempString = $"¤{new string(Enumerable.Repeat(chars, 5).Select(s => s[random.Next(s.Length)]).ToArray())}¤";
 | 
			
		||||
            string openTagTempString = $"÷{new string(Enumerable.Repeat(chars, 5).Select(s => s[random.Next(s.Length)]).ToArray())}÷";
 | 
			
		||||
            //NOTE: Replace-eljük a legális html tag-eket, hogy azokat a RemoveAllHtmlTags, ne szedje ki!
 | 
			
		||||
            foreach (var legalHtmlTag in legalHtmlTagList)
 | 
			
		||||
            {
 | 
			
		||||
                result = result.Replace($"</{legalHtmlTag}>", $"{closeTagTempString}{legalHtmlTag}{closeTagTempString}")
 | 
			
		||||
                               .Replace($"<{legalHtmlTag}>", $"{openTagTempString}{legalHtmlTag}{openTagTempString}");
 | 
			
		||||
 | 
			
		||||
                //NOTE: Ha stílust tartalmaz a legalHtmlTag akkor azt nem szabad leszedni róla (pl szinezés miatt)
 | 
			
		||||
                if (enableHtmlTagProperties)
 | 
			
		||||
                {
 | 
			
		||||
                    result = result.Replace($"<{legalHtmlTag}", $"{openTagTempString}{legalHtmlTag}");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //NOTE: Replace-eljük az összes html tag-et, ami bennemaradt a szövegben.
 | 
			
		||||
            result = CommonUtils.RemoveAllHtmlTags(result);
 | 
			
		||||
            //NOTE: Vissza Replace-eljük a legális html tag-eket, hogy azok normális formában mentődjenek el!
 | 
			
		||||
            foreach (var legalHtmlTag in legalHtmlTagList)
 | 
			
		||||
            {
 | 
			
		||||
                result = result.Replace($"{closeTagTempString}{legalHtmlTag}{closeTagTempString}", $"</{legalHtmlTag}>")
 | 
			
		||||
                               .Replace($"{openTagTempString}{legalHtmlTag}{openTagTempString}", $"<{legalHtmlTag}>");
 | 
			
		||||
                //NOTE: Ha stílust tartalmaz a legalHtmlTag akkor azt nem szabad leszedni róla (pl szinezés miatt)
 | 
			
		||||
                if (enableHtmlTagProperties)
 | 
			
		||||
                {
 | 
			
		||||
                    result = result.Replace($"{openTagTempString}{legalHtmlTag}", $"<{legalHtmlTag}");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            //NOTE: --- End: Replace-eljük az összes nem legális html tag-et.
 | 
			
		||||
 | 
			
		||||
            //NOTE: Remove-oljuk a rossz lezáró tag-eket, amikhez nem tartozik nyitó tag!
 | 
			
		||||
            HtmlDocument htmlDocument = new HtmlDocument();
 | 
			
		||||
            htmlDocument.LoadHtml(result);
 | 
			
		||||
            List<HtmlParseError> htmlParseErrorList = htmlDocument.ParseErrors.Where(x => x.Code == HtmlParseErrorCode.TagNotOpened).OrderByDescending(x => x.StreamPosition).ToList();
 | 
			
		||||
            foreach (HtmlParseError htmlParseError in htmlParseErrorList)
 | 
			
		||||
            {
 | 
			
		||||
                result = result.Remove(htmlParseError.StreamPosition, htmlParseError.SourceText.Length);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return result;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// INFO: Mobil használja
 | 
			
		||||
        public static string RemoveHtmlForMobile(string text)
 | 
			
		||||
        {
 | 
			
		||||
            while (text.Contains("&"))
 | 
			
		||||
            {
 | 
			
		||||
                text = text.Replace("&", "&");  //NOTE: Replace-elni kell az "&"-okat rekurzívan.
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var result = text
 | 
			
		||||
                .Replace("<", "<")               //NOTE: Replace-elni kell az "<"-ket, ha valamiért a "<" encode-olva lenne.
 | 
			
		||||
                .Replace(">", ">")               //NOTE: Replace-elni kell az ">"-ket, ha valamiért a ">" encode-olva lenne.
 | 
			
		||||
                .Replace(" ", "\u0020")        //NOTE: Replace-elni kell az " "-ket.
 | 
			
		||||
                .Replace("\u00A0", "\u0020")        //NOTE: Replace-elni kell a NO-BREAK SPACE-eket, mert a SPACE-el nem ekvivalens és jöhet be ilyen adat és okozhat problémát.
 | 
			
		||||
                .Replace("<div><br></div>", " ")    //NOTE: A külső div-be írt enter-et ezt generálják ki, ezt replace-eljük szóközre.
 | 
			
		||||
                .Replace("<p> </p>", " ")           //NOTE: A kendo editor-ba írt enter-et ezt generálják ki, ezt replace-eljük szóközre.
 | 
			
		||||
                .Replace("<br />", " ")             //NOTE: Az összes sortörést szóközre cseréljük.
 | 
			
		||||
                .Replace("<br/>", " ")              //NOTE: Az összes sortörést szóközre cseréljük.
 | 
			
		||||
                .Replace("<br>", " ")               //NOTE: Az összes sortörést szóközre cseréljük.
 | 
			
		||||
                .Replace("</div>", " ")             //NOTE: Az összes sortörést szóközre cseréljük.
 | 
			
		||||
                .Replace("</p>", " ")               //NOTE: Az összes sortörést szóközre cseréljük.
 | 
			
		||||
                .Replace("<div>", string.Empty)     //NOTE: Az összes sortörést szóközre cseréljük.
 | 
			
		||||
                .Replace("<p>", string.Empty)       //NOTE: Az összes sortörést szóközre cseréljük.
 | 
			
		||||
                .Replace("</li>", " ")               //NOTE: A felsorolás elemeit is elválasztjuk.
 | 
			
		||||
                .Replace("<strong>", string.Empty)         //NOTE: A formázás tageket töröljük.
 | 
			
		||||
                .Replace("</strong>", string.Empty)        //NOTE: A formázás tageket töröljük.
 | 
			
		||||
                .Replace("<em>", string.Empty)             //NOTE: A formázás tageket töröljük.
 | 
			
		||||
                .Replace("</em>", string.Empty)            //NOTE: A formázás tageket töröljük.
 | 
			
		||||
                .Replace("<span style=\"text-decoration:underline;\">", string.Empty) //NOTE: A formázás tageket töröljük.
 | 
			
		||||
                .Replace("</span>", string.Empty);         //NOTE: A formázás tageket töröljük.
 | 
			
		||||
 | 
			
		||||
            result = CommonUtils.RemoveAllHtmlTags(result);
 | 
			
		||||
            return HttpUtility.HtmlDecode(result);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										582
									
								
								Kreta.BusinessLogic/Logic/SimpleExportLogic.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										582
									
								
								Kreta.BusinessLogic/Logic/SimpleExportLogic.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,582 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using Aspose.Cells;
 | 
			
		||||
using Kreta.BusinessLogic.Classes;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
using Kreta.BusinessLogic.Utils;
 | 
			
		||||
using Kreta.Core;
 | 
			
		||||
using Kreta.Core.CustomAttributes;
 | 
			
		||||
using Kreta.Enums.ManualEnums;
 | 
			
		||||
using Kreta.Resources;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic
 | 
			
		||||
{
 | 
			
		||||
    public static class SimpleExportLogic
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// A sablon MemoryStream összeállítása adatok nélkül.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="worksheetName">A generálandó worksheet neve.</param>
 | 
			
		||||
        /// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján kigeneráljuk az excel-t.</param>
 | 
			
		||||
        public static MemoryStream GetTemplate(string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos)
 | 
			
		||||
        {
 | 
			
		||||
            using (var workbook = new Workbook())
 | 
			
		||||
            {
 | 
			
		||||
                Worksheet worksheet = GetWorksheet(workbook, worksheetName, simpleExportColumnCos);
 | 
			
		||||
                SetColumnsStyle(worksheet, simpleExportColumnCos);
 | 
			
		||||
 | 
			
		||||
                MemoryStream memoryStream = GetWorkbookMemoryStream(workbook);
 | 
			
		||||
                return memoryStream;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Az export MemoryStream összeállítása feltöltve adatokkal.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static MemoryStream GetExport<T>(string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos, List<T> itemList, int tanevId)
 | 
			
		||||
        {
 | 
			
		||||
            return GetExport<T>(worksheetName, simpleExportColumnCos, itemList, null, null, tanevId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Az export MemoryStream összeállítása feltöltve adatokkal.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static MemoryStream GetExport<T>(string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos, List<T> itemList, Action<Worksheet> worksheetAction, int tanevId)
 | 
			
		||||
        {
 | 
			
		||||
            return GetExport<T>(worksheetName, simpleExportColumnCos, itemList, worksheetAction, null, tanevId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Az export MemoryStream összeállítása feltöltve adatokkal.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static MemoryStream GetExport<T>(string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos, List<T> itemList, Action<Worksheet, List<T>> worksheetWithItemListAction, int tanevId)
 | 
			
		||||
        {
 | 
			
		||||
            return GetExport<T>(worksheetName, simpleExportColumnCos, itemList, null, worksheetWithItemListAction, tanevId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Az export MemoryStream összeállítása feltöltve adatokkal.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <typeparam name="T">A co vagy model típusa, aminek a property-jein lévő SimpleExportColumnAttribute alapján generáljuk az excel-t.</typeparam>
 | 
			
		||||
        /// <param name="worksheetName">A generálandó worksheet neve.</param>
 | 
			
		||||
        /// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján kigeneráljuk az excel-t.</param>
 | 
			
		||||
        /// <param name="itemList">Az adatok, amikkel feltöltjük az excel-t. Ide már rendezve kerlüjenek, mert olyan sorrendben kerülnek be az excel-be!</param>
 | 
			
		||||
        /// <param name="worksheetAction">Egyedi logika a worksheeten.</param>
 | 
			
		||||
        /// <param name="worksheetWithItemListAction">Egyedi logika a worksheeten a listával.</param>
 | 
			
		||||
        private static MemoryStream GetExport<T>(string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos, List<T> itemList, Action<Worksheet> worksheetAction, Action<Worksheet, List<T>> worksheetWithItemListAction, int tanevId)
 | 
			
		||||
        {
 | 
			
		||||
            using (var workbook = new Workbook())
 | 
			
		||||
            {
 | 
			
		||||
                Worksheet worksheet = GetWorksheet(workbook, worksheetName, simpleExportColumnCos);
 | 
			
		||||
                worksheet.FillWithData(itemList, simpleExportColumnCos, tanevId);
 | 
			
		||||
 | 
			
		||||
                worksheetAction?.Invoke(worksheet);
 | 
			
		||||
 | 
			
		||||
                worksheetWithItemListAction?.Invoke(worksheet, itemList);
 | 
			
		||||
 | 
			
		||||
                MemoryStream memoryStream = GetWorkbookMemoryStream(workbook);
 | 
			
		||||
                return memoryStream;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sorba rendezve visszaadja a generikus objektumból a SimpleExportColumnCo-ket.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <typeparam name="T">A co vagy model típusa, aminek a property-jein lévő SimpleExportColumnAttribute alapján generáljuk az excel-t.</typeparam>
 | 
			
		||||
        /// <param name="attributeId">A property-ken lévő SimpleExportColumnAttribute-nak átadott azonsító, ami meghatározza, hogy mely oszlopkat kell generálni.</param>
 | 
			
		||||
        /// <param name="dropDownColumnSourceDictionary">Az oszlopohoz tartozó adatforrások, amiket külön sheet-ekbe generálunk bele.</param>
 | 
			
		||||
        public static List<SimpleExportColumnCo> GetSimpleExportColumnCos<T>(string attributeId, Dictionary<string, IList<string>> dropDownColumnSourceDictionary = null)
 | 
			
		||||
        {
 | 
			
		||||
            var simpleExportColumnCos = new List<SimpleExportColumnCo>();
 | 
			
		||||
 | 
			
		||||
            if (dropDownColumnSourceDictionary == null)
 | 
			
		||||
            {
 | 
			
		||||
                dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            List<PropertyInfo> propertyInfos = typeof(T)
 | 
			
		||||
                .GetProperties()
 | 
			
		||||
                .Where(p =>
 | 
			
		||||
                    Attribute.IsDefined(p, typeof(SimpleExportColumnAttribute)) &&
 | 
			
		||||
                    p.GetCustomAttributes(typeof(SimpleExportColumnAttribute), false)
 | 
			
		||||
                        .Any(a => ((SimpleExportColumnAttribute)a).AttributeId == attributeId))
 | 
			
		||||
                .ToList();
 | 
			
		||||
 | 
			
		||||
            foreach (PropertyInfo propertyInfo in propertyInfos)
 | 
			
		||||
            {
 | 
			
		||||
                var attribute = (SimpleExportColumnAttribute)propertyInfo
 | 
			
		||||
                    .GetCustomAttributes(typeof(SimpleExportColumnAttribute), false)
 | 
			
		||||
                    .SingleOrDefault(p => ((SimpleExportColumnAttribute)p).AttributeId == attributeId);
 | 
			
		||||
                if (attribute == null)
 | 
			
		||||
                {
 | 
			
		||||
                    throw new NullReferenceException(string.Format(ErrorResource.Az0ValtozoErtekeNemLehetNull, nameof(attribute)));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                //NOTE: Azért kell kiemelni ezeket külön változóba, mert a reflection miatt, minden hivatkozánál belassul.
 | 
			
		||||
                //      Viszont ha változókba vannak kiemelve ezek, akkor nem jön elő lassulás.
 | 
			
		||||
                Type propertyType = propertyInfo.PropertyType;
 | 
			
		||||
                string propertyName = propertyInfo.Name;
 | 
			
		||||
                Type forcedType = attribute.ForcedType;
 | 
			
		||||
                BooleanDisplayFormatEnum booleanDisplayFormat = attribute.BooleanDisplayFormat;
 | 
			
		||||
                int columnIndex = attribute.Index;
 | 
			
		||||
                string columnHeaderName = attribute.HeaderName;
 | 
			
		||||
                string dropDownColumnSourceSheetGroupName = attribute.DropDownColumnSourceSheetGroupName;
 | 
			
		||||
                ExcelAggregateFunctionEnum aggregateFunction = attribute.AggregateFunction;
 | 
			
		||||
                string dateTimeToStringPattern = attribute.DateTimeToStringPattern;
 | 
			
		||||
                int decimalDigitCount = attribute.DecimalDigitCount;
 | 
			
		||||
                bool asHtml = attribute.AsHtml;
 | 
			
		||||
 | 
			
		||||
                Type columnType = forcedType ?? propertyType;
 | 
			
		||||
                //NOTE: Ha van bool mező, akkor létrehozunk egy source-t, ami alapján majd lenyíló listát csinálunk.
 | 
			
		||||
                if (columnType == typeof(bool) && !dropDownColumnSourceDictionary.ContainsKey(CommonResource.Logikai))
 | 
			
		||||
                {
 | 
			
		||||
                    dropDownColumnSourceDictionary.Add(CommonResource.Logikai, CommonUtils.GetIgenNemList(booleanDisplayFormat));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                var dropDownColumnSource = dropDownColumnSourceDictionary.SingleOrDefault(x => columnType == typeof(bool) && x.Key == CommonResource.Logikai || x.Key == columnHeaderName);
 | 
			
		||||
                simpleExportColumnCos.Add(new SimpleExportColumnCo(
 | 
			
		||||
                    columnIndex,
 | 
			
		||||
                    columnHeaderName,
 | 
			
		||||
                    columnType,
 | 
			
		||||
                    dropDownColumnSource.Value,
 | 
			
		||||
                    dropDownColumnSourceSheetGroupName ?? dropDownColumnSource.Key,
 | 
			
		||||
                    aggregateFunction,
 | 
			
		||||
                    booleanDisplayFormat,
 | 
			
		||||
                    dateTimeToStringPattern,
 | 
			
		||||
                    decimalDigitCount,
 | 
			
		||||
                    asHtml,
 | 
			
		||||
                    propertyName));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //NOTE: Validáljuk, hogy csak egy fajta logikai oszlop megjelenítés lehessen!
 | 
			
		||||
            List<BooleanDisplayFormatEnum> booleanDisplayFormatList = simpleExportColumnCos
 | 
			
		||||
                .Where(x => x.Type == typeof(bool))
 | 
			
		||||
                .GroupBy(x => x.BooleanDisplayFormat)
 | 
			
		||||
                .Select(x => x.Key)
 | 
			
		||||
                .ToList();
 | 
			
		||||
            if (booleanDisplayFormatList.Count > 1)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ApplicationException(ErrorResource.EgyExportbanCsakEgyfeleLogikaiOszlopMegjelenitesLehetseges);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return simpleExportColumnCos.OrderBy(o => o.Index).ToList();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sorba rendezve visszaadja egy header dictionary alapján a a SimpleExportColumnCo-ket.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="headerNameDictionary">A header nevek dictionary-ja, ami az oszlop index-ét és a header nevét tartalmazza.</param>
 | 
			
		||||
        /// <param name="dropDownColumnSourceDictionary">Az oszlopohoz tartozó adatforrások, amiket külön sheet-ekbe generálunk bele.</param>
 | 
			
		||||
        public static List<SimpleExportColumnCo> GetSimpleExportColumnCos(Dictionary<int, string> headerNameDictionary, Dictionary<string, IList<string>> dropDownColumnSourceDictionary = null)
 | 
			
		||||
        {
 | 
			
		||||
            var simpleExportColumnCos = new List<SimpleExportColumnCo>();
 | 
			
		||||
 | 
			
		||||
            if (dropDownColumnSourceDictionary == null)
 | 
			
		||||
            {
 | 
			
		||||
                dropDownColumnSourceDictionary = new Dictionary<string, IList<string>>();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            foreach (KeyValuePair<int, string> item in headerNameDictionary)
 | 
			
		||||
            {
 | 
			
		||||
                var dropDownColumnSource = dropDownColumnSourceDictionary.SingleOrDefault(x => x.Key == item.Value);
 | 
			
		||||
                simpleExportColumnCos.Add(new SimpleExportColumnCo(
 | 
			
		||||
                    item.Key,
 | 
			
		||||
                    item.Value,
 | 
			
		||||
                    null,
 | 
			
		||||
                    dropDownColumnSource.Value,
 | 
			
		||||
                    dropDownColumnSource.Key)
 | 
			
		||||
                );
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return simpleExportColumnCos.OrderBy(o => o.Index).ToList();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// A worksheet összeállítása a törzsadatlista sheet-ekkel együtt.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="workbook">A workbook, amiben létrehozzuk a worksheet-et és a törzsadatlista sheet-eket.</param>
 | 
			
		||||
        /// <param name="worksheetName">A worksheet neve.</param>
 | 
			
		||||
        /// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján a header-öket és törzsadatlistákat beállítjuk.</param>
 | 
			
		||||
        /// <param name="worksheetIndex">a worksheet indexe.</param>
 | 
			
		||||
        public static Worksheet GetWorksheet(Workbook workbook, string worksheetName, List<SimpleExportColumnCo> simpleExportColumnCos, int worksheetIndex = 0)
 | 
			
		||||
        {
 | 
			
		||||
            string safeWorksheetName = CellsHelper.CreateSafeSheetName(worksheetName);
 | 
			
		||||
            Worksheet worksheet = workbook.Worksheets.ElementAtOrDefault(worksheetIndex) != null ?
 | 
			
		||||
                workbook.Worksheets[worksheetIndex] :
 | 
			
		||||
                workbook.Worksheets.Add(safeWorksheetName);
 | 
			
		||||
            worksheet.Name = safeWorksheetName;
 | 
			
		||||
 | 
			
		||||
            worksheet.CreateWorksheetHeaders(simpleExportColumnCos);
 | 
			
		||||
            CreateDropDownColumnSourceSheets(workbook, simpleExportColumnCos, worksheet.Validations);
 | 
			
		||||
 | 
			
		||||
            return worksheet;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Adatsorok feltöltése a worksheet-en.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <typeparam name="T">Az objektum típusa, amiből feltöltjük az adatokat.</typeparam>
 | 
			
		||||
        /// <param name="worksheet">A worksheet, aminek a sorait feltöltjük a SimpleExportColumnCo lista alapján.</param>
 | 
			
		||||
        /// <param name="rows">A sorok listája, amikkel feltöltjük a worksheet sorait a SimpleExportColumnCo alapján.</param>
 | 
			
		||||
        /// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján a worksheetbe feltöltjük a sorokat.</param>
 | 
			
		||||
        public static void FillWithData<T>(this Worksheet worksheet, List<T> rows, List<SimpleExportColumnCo> simpleExportColumnCos, int tanevId)
 | 
			
		||||
        {
 | 
			
		||||
            int rowNumber = 1;
 | 
			
		||||
            Type type = typeof(T);
 | 
			
		||||
            var simpleExportColumnCosToAggregate = new List<SimpleExportColumnCo>();
 | 
			
		||||
            //NOTE: Feltöltjük adatokkal az excel-t!
 | 
			
		||||
            foreach (T row in rows)
 | 
			
		||||
            {
 | 
			
		||||
                foreach (SimpleExportColumnCo simpleExportColumnCo in simpleExportColumnCos)
 | 
			
		||||
                {
 | 
			
		||||
                    PropertyInfo propertyInfo = type.GetProperty(simpleExportColumnCo.PropertyName);
 | 
			
		||||
                    if (propertyInfo == null)
 | 
			
		||||
                    {
 | 
			
		||||
                        throw new NullReferenceException(string.Format(ErrorResource.Az0ValtozoErtekeNemLehetNull, nameof(propertyInfo)));
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    object cellValue = propertyInfo.GetValue(row);
 | 
			
		||||
                    worksheet.Cells[rowNumber, simpleExportColumnCo.Index].SetCellValue(cellValue, simpleExportColumnCo.BooleanDisplayFormat, simpleExportColumnCo.AsHtml, tanevId);
 | 
			
		||||
                    //NOTE: Kiemeljük azokat az oszlopokat, ahol szeretnénk(azaz megadtuk SimpleExportColumnAttribute-ban az AggregateFunction-t) az utolsó adatsor után valamilyen összegzést csinálni.
 | 
			
		||||
                    if (simpleExportColumnCo.AggregateFunction != ExcelAggregateFunctionEnum.NONE)
 | 
			
		||||
                    {
 | 
			
		||||
                        simpleExportColumnCosToAggregate.Add(simpleExportColumnCo);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                rowNumber++;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            foreach (var simpleExportColumnCo in simpleExportColumnCosToAggregate)
 | 
			
		||||
            {
 | 
			
		||||
                string columnName = CellsHelper.ColumnIndexToName(simpleExportColumnCo.Index);
 | 
			
		||||
                //NOTE: Itt állítjuk be a megjelölt oszlopokra a kiválasztott aggregációs függvényt az excel-es AGGREGATE függvénnyel.
 | 
			
		||||
                //      =AGGREGATE(function_num, options, array)
 | 
			
		||||
                //      - A function_num paraméter az ExcelAggregateFunctionEnum-ból jön.
 | 
			
		||||
                //      - Az options = 3 - Ignorálja a rejtett sorokat, hibás értékeket, beágyazott SUBTOTAL és AGGREGATE függvényeket.
 | 
			
		||||
                //      - Az array paraméter pedig beállítja az aggregálandó adatokat - Pl: H2:H54
 | 
			
		||||
                //      Azért 2-től, mert az első sorban a fejléc van, ami nem aggregálandó, a rowNumber pedig az utolsó adatsor utánra mutat.
 | 
			
		||||
                //      FONTOS: AGGREGATE function is designed vertical ranges, not horizontal ranges.
 | 
			
		||||
                //      https://support.microsoft.com/en-us/office/aggregate-function-43b9278e-6aa7-4f17-92b6-e19993fa26df
 | 
			
		||||
                worksheet.Cells[rowNumber, simpleExportColumnCo.Index].Formula = $"=AGGREGATE({(int)simpleExportColumnCo.AggregateFunction}, 3, {columnName}2:{columnName}{rowNumber})";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //NOTE: Beállítjuk az oszlopok stílusát!
 | 
			
		||||
            SetColumnsStyle(worksheet, simpleExportColumnCos);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// A már elkészült workbook MemoryStream összeállítása és a sheet-eken lévő oszlopok/sorok szélességének/magasságának beállítása.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="workbook">A már elkészült workbook, amiből MemoryStrem-et készítünk.</param>
 | 
			
		||||
        /// <param name="sheetCodeNameAndColumnsToWrapIndexDictionary">Az adott kódú sheet-eken lévő adott index-ű oszlopok sortöréseinek beállításához kell. Pl.: Amikor több sorba kell törni egy adott cella értékét.</param>
 | 
			
		||||
        public static MemoryStream GetWorkbookMemoryStream(Workbook workbook, Dictionary<string, List<int>> sheetCodeNameAndColumnsToWrapIndexDictionary = null)
 | 
			
		||||
        {
 | 
			
		||||
            //NOTE: Beállítjuk a default style-t. Ez van alapból az excel-ben.
 | 
			
		||||
            Style style = InitializeDefaultStyle(workbook.CreateStyle());
 | 
			
		||||
            workbook.DefaultStyle = style;
 | 
			
		||||
 | 
			
		||||
            foreach (Worksheet worksheet in workbook.Worksheets)
 | 
			
		||||
            {
 | 
			
		||||
                //NOTE: Beállítjuk a cella magasságokat és szélességeket.
 | 
			
		||||
                //FONTOS: Hogy ebben a sorrendben történjen, az esetleges text wrap-ok miatt, amikor sortörések vannak a cellákban.
 | 
			
		||||
                worksheet.AutoFitRows();
 | 
			
		||||
                worksheet.AutoFitColumns();
 | 
			
		||||
 | 
			
		||||
                foreach (Column column in worksheet.Cells.Columns)
 | 
			
		||||
                {
 | 
			
		||||
                    List<int> columnsToWrapIndexList = sheetCodeNameAndColumnsToWrapIndexDictionary?.SingleOrDefault(x => x.Key == worksheet.CodeName).Value;
 | 
			
		||||
                    if (columnsToWrapIndexList != null && columnsToWrapIndexList.Any() && columnsToWrapIndexList.Contains(column.Index))
 | 
			
		||||
                    {
 | 
			
		||||
                        //NOTE: Erre azért van szükség, hogy ha a cellákban van Environment.NewLine és be van állítva IsTextWrapped = true, akkor AutoFitColumns szavanként fogja törni a szöveget.
 | 
			
		||||
                        //      Viszont, ha kiszélesítjük, majd úgy hívjuk meg az AutoFitColumn-ot, akkor a sortörésekig állítja be a szélességet.
 | 
			
		||||
                        worksheet.Cells.SetColumnWidth(column.Index, 254.86);
 | 
			
		||||
                        worksheet.AutoFitColumn(column.Index);
 | 
			
		||||
                        //NOTE: Miután beállítottuk a szélességet, az Aspose valamiért rövidebbre vágja a wrap-olt sorokat és emiatt plusz sortörések jelenhetnek meg hibásan.
 | 
			
		||||
                        //      Ezért hozzáadunk 5-öt a már beállított szélességhez és így jól fog megjelenni. Extrém széles/hosszú szövegnél jöhet csak elő a probléma,
 | 
			
		||||
                        //      mivel az excel, a sortöréseket, valamiért arányosan hosszabbított szélességgel tudja csak rendesen megjeleníteni. De max 150 széles legyen.
 | 
			
		||||
                        double columnWidth = worksheet.Cells.GetColumnWidth(column.Index);
 | 
			
		||||
                        worksheet.Cells.SetColumnWidth(column.Index, columnWidth + 5 > 150 ? 150 : columnWidth + 5);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    //Note: Erre azért van szükség, hogyha túl szélesek lennék az oszlopok, akkor max 150 széles lehessen, hogy ne tolja nagyon szét az excel-t. 
 | 
			
		||||
                    if (column.Width > 150)
 | 
			
		||||
                    {
 | 
			
		||||
                        column.Width = 150;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var memorystream = new MemoryStream();
 | 
			
		||||
            workbook.Save(memorystream, SaveFormat.Xlsx);
 | 
			
		||||
            memorystream.Position = 0;
 | 
			
		||||
            return memorystream;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Törzsadatlista beszúrása az excelbe külön sheet-eken.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="workbook">A workbook, amiben létrehozzuk a törzsadatlista sheet-eket.</param>
 | 
			
		||||
        /// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján a törzsadatlistákat beállítjuk.</param>
 | 
			
		||||
        /// <param name="validationCollection">Az adott worksheet-hez tartozó ValidationCollection, a lenyílólista beállításához.</param>
 | 
			
		||||
        private static void CreateDropDownColumnSourceSheets(Workbook workbook, List<SimpleExportColumnCo> simpleExportColumnCos, ValidationCollection validationCollection)
 | 
			
		||||
        {
 | 
			
		||||
            foreach (var simpleExportColumnCo in simpleExportColumnCos)
 | 
			
		||||
            {
 | 
			
		||||
                if (simpleExportColumnCo.IsDropDownColumn)
 | 
			
		||||
                {
 | 
			
		||||
                    string safeWorksheetName = CellsHelper.CreateSafeSheetName(simpleExportColumnCo.DropDownColumnSourceSheetGroupName);
 | 
			
		||||
                    IList<string> dropDownColumnSource = simpleExportColumnCo.DropDownColumnSource;
 | 
			
		||||
                    CreateDropDownColumnSourceSheet(workbook, safeWorksheetName, dropDownColumnSource);
 | 
			
		||||
 | 
			
		||||
                    var cellArea = new CellArea();
 | 
			
		||||
                    cellArea.StartColumn = cellArea.EndColumn = simpleExportColumnCo.Index;
 | 
			
		||||
                    cellArea.StartRow = 1;
 | 
			
		||||
                    cellArea.EndRow = Constants.General.MaxRowNumberXlsx - 1;
 | 
			
		||||
                    Aspose.Cells.Validation validation = validationCollection[validationCollection.Add(cellArea)];
 | 
			
		||||
                    validation.Type = ValidationType.List;
 | 
			
		||||
                    validation.Operator = OperatorType.None;
 | 
			
		||||
                    validation.InCellDropDown = true;
 | 
			
		||||
                    validation.Formula1 = $"={safeWorksheetName.RemoveSpecialCharacters()}";
 | 
			
		||||
                    validation.ShowError = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Fejléc sor feltöltése és a stílusának beállítása.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="worksheet">A worksheet, aminek a worksheet, aminek a fejléc sorát beállítjuk.</param>
 | 
			
		||||
        /// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján a fejléceket beállítjuk.</param>
 | 
			
		||||
        private static void CreateWorksheetHeaders(this Worksheet worksheet, List<SimpleExportColumnCo> simpleExportColumnCos)
 | 
			
		||||
        {
 | 
			
		||||
            Style style = InitializeDefaultHeaderStyle();
 | 
			
		||||
 | 
			
		||||
            foreach (SimpleExportColumnCo simpleExportColumnCo in simpleExportColumnCos)
 | 
			
		||||
            {
 | 
			
		||||
                int columnIndex = simpleExportColumnCo.Index;
 | 
			
		||||
                worksheet.Cells[0, columnIndex].Value = simpleExportColumnCo.HeaderName;
 | 
			
		||||
                worksheet.Cells[0, columnIndex].SetStyle(style);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Törzsadatlista beszúrása az excelbe külön sheet-en.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="workbook">A workbook, amiben létrehozzuk a törzsadatlista sheet-et.</param>
 | 
			
		||||
        /// <param name="worksheetName">A sheet neve, amibe beszúrjuk a törzsadatlistát.</param>
 | 
			
		||||
        /// <param name="dropDownColumnSource">A törzsadatlista, amit beszúrúnk a külön sheet-be.</param>
 | 
			
		||||
        private static void CreateDropDownColumnSourceSheet(Workbook workbook, string worksheetName, IList<string> dropDownColumnSource)
 | 
			
		||||
        {
 | 
			
		||||
            if (workbook.Worksheets[worksheetName] != null)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Worksheet validationWorksheet = workbook.Worksheets.Add(worksheetName);
 | 
			
		||||
            Range range = validationWorksheet.Cells.CreateRange(0, 0, Math.Max(dropDownColumnSource.Count, 1), 1);
 | 
			
		||||
            range.Name = worksheetName.RemoveSpecialCharacters();
 | 
			
		||||
 | 
			
		||||
            for (int index = 0; index < dropDownColumnSource.Count; index++)
 | 
			
		||||
            {
 | 
			
		||||
                string item = dropDownColumnSource[index];
 | 
			
		||||
                range[index, 0].PutValue(item);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Beállítjuk a cella értékét a bejövő stílus alapján.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <typeparam name="T">Az érték típusa, ami alapján formázva beállítjuk a cella értékét.</typeparam>
 | 
			
		||||
        /// <param name="cell">A cella, aminek beállítjuk az értékét.</param>
 | 
			
		||||
        /// <param name="value">Az érték, amit beállítunk a cellának, típus szerint formázva.</param>
 | 
			
		||||
        /// <param name="booleanDisplayFormatEnum">Ha az oszlop bool típusú, akkor annak a megjelenítéséhez használható paraméter.</param>
 | 
			
		||||
        private static void SetCellValue<T>(this Cell cell, T value, BooleanDisplayFormatEnum booleanDisplayFormatEnum, bool asHtml, int tanevId)
 | 
			
		||||
        {
 | 
			
		||||
            switch (value)
 | 
			
		||||
            {
 | 
			
		||||
                case string nullableStringValue:
 | 
			
		||||
                    var stringValue = !string.IsNullOrWhiteSpace(nullableStringValue) ? nullableStringValue : string.Empty;
 | 
			
		||||
                    if (asHtml)
 | 
			
		||||
                    {
 | 
			
		||||
                        cell.HtmlString = stringValue;
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        cell.Value = stringValue;
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                case int intValue:
 | 
			
		||||
                    cell.Value = intValue;
 | 
			
		||||
                    break;
 | 
			
		||||
                case decimal decimalValue:
 | 
			
		||||
                    cell.Value = decimalValue;
 | 
			
		||||
                    break;
 | 
			
		||||
                case double doubleValue:
 | 
			
		||||
                    cell.Value = doubleValue;
 | 
			
		||||
                    break;
 | 
			
		||||
                case DateTime dateValue:
 | 
			
		||||
                    cell.Value = dateValue;
 | 
			
		||||
                    break;
 | 
			
		||||
                case bool boolvalue:
 | 
			
		||||
                    cell.Value = boolvalue.GetDisplayName(booleanDisplayFormatEnum);
 | 
			
		||||
                    break;
 | 
			
		||||
                case Enum enumValue:
 | 
			
		||||
                    cell.Value = enumValue.GetDisplayName(tanevId);
 | 
			
		||||
                    break;
 | 
			
		||||
                default:
 | 
			
		||||
                    cell.Value = value != null ? value.ToString() : string.Empty;
 | 
			
		||||
                    break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Beállítjuk a worksheet oszlopainak a stílusait.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="worksheet">A worksheet, aminek a worksheet, aminek az oszlopainak a stílusait állítjuk.</param>
 | 
			
		||||
        /// <param name="simpleExportColumnCos">A Co lista, ami leírja az oszlopok tulajdonságait/viselkedéseit, amik alapján a stílusokat állítjuk.</param>
 | 
			
		||||
        private static void SetColumnsStyle(Worksheet worksheet, List<SimpleExportColumnCo> simpleExportColumnCos)
 | 
			
		||||
        {
 | 
			
		||||
            //NOTE: Beállítjuk az oszlopok stílusát!
 | 
			
		||||
            foreach (SimpleExportColumnCo simpleExportColumnCo in simpleExportColumnCos)
 | 
			
		||||
            {
 | 
			
		||||
                Style columnStyle = InitializeDefaultStyle();
 | 
			
		||||
                Type columnType = simpleExportColumnCo.Type;
 | 
			
		||||
                if (columnType == typeof(string))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Number = 49; //NOTE: Text (https://docs.aspose.com/display/cellsnet/Data+Formatting)
 | 
			
		||||
                }
 | 
			
		||||
                else if (columnType == typeof(int))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Number = 1; //NOTE: Decimal 0 (https://docs.aspose.com/display/cellsnet/Data+Formatting)
 | 
			
		||||
                }
 | 
			
		||||
                else if (columnType == typeof(int?))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Number = 1; //NOTE: Decimal 0 (https://docs.aspose.com/display/cellsnet/Data+Formatting)
 | 
			
		||||
                }
 | 
			
		||||
                else if (columnType == typeof(decimal))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Custom = GetDecimalCustom(simpleExportColumnCo.DecimalDigitCount);
 | 
			
		||||
                }
 | 
			
		||||
                else if (columnType == typeof(decimal?))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Custom = GetDecimalCustom(simpleExportColumnCo.DecimalDigitCount);
 | 
			
		||||
                }
 | 
			
		||||
                else if (columnType == typeof(double))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Custom = GetDecimalCustom(simpleExportColumnCo.DecimalDigitCount);
 | 
			
		||||
                }
 | 
			
		||||
                else if (columnType == typeof(double?))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Custom = GetDecimalCustom(simpleExportColumnCo.DecimalDigitCount);
 | 
			
		||||
                }
 | 
			
		||||
                else if (columnType == typeof(DateTime))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Custom = string.IsNullOrWhiteSpace(simpleExportColumnCo.DateTimeToStringPattern) ? Constants.ToStringPattern.HungarianDate : simpleExportColumnCo.DateTimeToStringPattern;
 | 
			
		||||
                }
 | 
			
		||||
                else if (columnType == typeof(DateTime?))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Custom = string.IsNullOrWhiteSpace(simpleExportColumnCo.DateTimeToStringPattern) ? Constants.ToStringPattern.HungarianDate : simpleExportColumnCo.DateTimeToStringPattern;
 | 
			
		||||
                }
 | 
			
		||||
                else if (columnType == typeof(bool))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Number = 0; //NOTE: General (https://docs.aspose.com/display/cellsnet/Data+Formatting)
 | 
			
		||||
                }
 | 
			
		||||
                else if (columnType == typeof(bool?))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Number = 0; //NOTE: General (https://docs.aspose.com/display/cellsnet/Data+Formatting)
 | 
			
		||||
                }
 | 
			
		||||
                else if (columnType == typeof(Enum))
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Number = 0; //NOTE: General (https://docs.aspose.com/display/cellsnet/Data+Formatting)
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    columnStyle.Number = 0; //NOTE: General (https://docs.aspose.com/display/cellsnet/Data+Formatting)
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                worksheet.Cells.Columns[simpleExportColumnCo.Index].ApplyStyle(columnStyle, new StyleFlag { All = true });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Style defaultHeaderStyle = InitializeDefaultHeaderStyle();
 | 
			
		||||
            //NOTE: Beállítjuk a header-ök(azaz az első sor) stílusát, mivel ezek eltérnek az adott osztloptól!
 | 
			
		||||
            foreach (SimpleExportColumnCo simpleExportColumnCo in simpleExportColumnCos)
 | 
			
		||||
            {
 | 
			
		||||
                worksheet.Cells[0, simpleExportColumnCo.Index].SetStyle(defaultHeaderStyle);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Visszaadjuk a stílusnak decimalDigitCount által tizedesjegyekkel formázott custom-ot.
 | 
			
		||||
        /// https://docs.aspose.com/display/cellsnet/Data+Formatting
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="decimalDigitCount">Az excel-ben megjelenő tizedes jegyek számát határozza meg.</param>
 | 
			
		||||
        private static string GetDecimalCustom(int? decimalDigitCount)
 | 
			
		||||
        {
 | 
			
		||||
            var custom = "# ##0";
 | 
			
		||||
            if (decimalDigitCount.IsNotNullAndPositive())
 | 
			
		||||
            {
 | 
			
		||||
                //NOTE: Az IsNotNullAndPositive vizsgálat miatt a decimalDigitCount nem lehet soha null!
 | 
			
		||||
                //      ReSharper disable once PossibleInvalidOperationException
 | 
			
		||||
                custom += $".{new string('0', decimalDigitCount.Value)}";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return custom;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// A cellák default stílusának inicializálása.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="style">A stílus, aminek bizonyos property-jeit módosítjuk a default értékekre. Ha null, akkor új stílust hozunk létre.</param>
 | 
			
		||||
        private static Style InitializeDefaultStyle(Style style = null)
 | 
			
		||||
        {
 | 
			
		||||
            if (style == null)
 | 
			
		||||
            {
 | 
			
		||||
                var cellFactory = new CellsFactory();
 | 
			
		||||
                style = cellFactory.CreateStyle();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            style.Font.Name = "Calibri";
 | 
			
		||||
            style.Font.Size = 11;
 | 
			
		||||
 | 
			
		||||
            return style;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// A header cellák default stílusának inicializálása.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="style">A stílus, aminek bizonyos property-jeit módosítjuk a default értékekre. Ha null, akkor új stílust hozunk létre.</param>
 | 
			
		||||
        private static Style InitializeDefaultHeaderStyle(Style style = null)
 | 
			
		||||
        {
 | 
			
		||||
            if (style == null)
 | 
			
		||||
            {
 | 
			
		||||
                var cellFactory = new CellsFactory();
 | 
			
		||||
                style = cellFactory.CreateStyle();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            style = InitializeDefaultStyle(style);
 | 
			
		||||
            style.Number = 0; //NOTE: General (https://docs.aspose.com/display/cellsnet/Data+Formatting)
 | 
			
		||||
            style.VerticalAlignment = TextAlignmentType.Center;
 | 
			
		||||
            style.HorizontalAlignment = TextAlignmentType.Center;
 | 
			
		||||
            style.Font.IsBold = Constants.Export.HeaderIsBold;
 | 
			
		||||
            style.ForegroundColor = Constants.Export.HeaderColor;
 | 
			
		||||
            style.Pattern = BackgroundType.Solid;
 | 
			
		||||
 | 
			
		||||
            return style;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static void EgyediSzovegesOszlopFormazas(this Worksheet worksheet, int column)
 | 
			
		||||
        {
 | 
			
		||||
            Style columnStyle = SimpleExportLogic.InitializeDefaultStyle();
 | 
			
		||||
            columnStyle.Number = 49; //NOTE: Text (https://docs.aspose.com/display/cellsnet/Data+Formatting)
 | 
			
		||||
            worksheet.Cells.Columns[column].ApplyStyle(columnStyle, new StyleFlag { FontName = true, FontSize = true });
 | 
			
		||||
 | 
			
		||||
            Style defaultHeaderStyle = SimpleExportLogic.InitializeDefaultHeaderStyle();
 | 
			
		||||
            worksheet.Cells[0, column].SetStyle(defaultHeaderStyle);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,61 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using Kreta.Enums.ManualEnums.SystemSettings;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.SystemSettings
 | 
			
		||||
{
 | 
			
		||||
    public static class SystemSettingsLogic
 | 
			
		||||
    {
 | 
			
		||||
        public static long MaxFileSizeMB { get; } = 4;
 | 
			
		||||
        public static long AllowedMaxHeight { get; } = 140;
 | 
			
		||||
        public static long AllowedMaxWidth { get; } = 980;
 | 
			
		||||
 | 
			
		||||
        private static Dictionary<string, string> allowedFileTypes =
 | 
			
		||||
        new Dictionary<string, string>() {
 | 
			
		||||
            { ".bmp", "image/bmp" },
 | 
			
		||||
            { ".jpg", "image/jpeg" },
 | 
			
		||||
            { ".jpeg", "image/jpeg" },
 | 
			
		||||
            { ".png", "image/png" },
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        public static SystemSettingsFejlecLablecSzerkesztoHibakEnum ImageValidate(string content)
 | 
			
		||||
        {
 | 
			
		||||
            var sumLength = 0;
 | 
			
		||||
            var sumWidth = 0;
 | 
			
		||||
            var maxHeight = 0;
 | 
			
		||||
            var imgTags = System.Text.RegularExpressions.Regex.Matches(content, "<img(.*?)src=\"(?<src>(.*?))\"(.*?)/>");
 | 
			
		||||
            foreach (System.Text.RegularExpressions.Match imgTag in imgTags)
 | 
			
		||||
            {
 | 
			
		||||
                var group = imgTag.Groups["src"];
 | 
			
		||||
                if (group.Success)
 | 
			
		||||
                {
 | 
			
		||||
                    string[] parts = group.Value.Split(new string[] { ";", ":", "," }, StringSplitOptions.None);
 | 
			
		||||
                    if (!allowedFileTypes.ContainsValue(parts[1]))
 | 
			
		||||
                    {
 | 
			
		||||
                        return SystemSettingsFejlecLablecSzerkesztoHibakEnum.AFajlKiterjeszteseVagyTipusaNemMegfelelo;
 | 
			
		||||
                    }
 | 
			
		||||
                    var bytes = Convert.FromBase64String(parts[3]);
 | 
			
		||||
                    sumLength += bytes.Length;
 | 
			
		||||
                    using (System.Drawing.Image image = System.Drawing.Image.FromStream(new System.IO.MemoryStream(bytes)))
 | 
			
		||||
                    {
 | 
			
		||||
                        maxHeight = Math.Max(maxHeight, image.Height);
 | 
			
		||||
                        sumWidth += image.Width;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (sumLength > (MaxFileSizeMB * 1024 * 1024))
 | 
			
		||||
            {
 | 
			
		||||
                return SystemSettingsFejlecLablecSzerkesztoHibakEnum.HibaTortentXMBNalNemLehetNagyobbAFajlMerete;
 | 
			
		||||
            }
 | 
			
		||||
            if (maxHeight > AllowedMaxHeight)
 | 
			
		||||
            {
 | 
			
		||||
                return SystemSettingsFejlecLablecSzerkesztoHibakEnum.AKepMagassagaMeghaladjaAMegengedettMeretet;
 | 
			
		||||
            }
 | 
			
		||||
            if (sumWidth > AllowedMaxWidth)
 | 
			
		||||
            {
 | 
			
		||||
                return SystemSettingsFejlecLablecSzerkesztoHibakEnum.AzOsszesKepSzelessegeMeghaladjaAMegengedettMeretet;
 | 
			
		||||
            }
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,225 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
using Kreta.Core;
 | 
			
		||||
using Kreta.DataAccess.Interfaces;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
using Kreta.Resources;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.TanuloErtekeles
 | 
			
		||||
{
 | 
			
		||||
    public class TanuloErtekelesLogicBase
 | 
			
		||||
    {
 | 
			
		||||
        #region Fields
 | 
			
		||||
 | 
			
		||||
        public static List<int> NyelviesithetoTanuloErtekelesTipusIdList => new List<int>
 | 
			
		||||
        {
 | 
			
		||||
            //NOTE: Egyelőre ez azért egy elemű lista, mert a jövőben bővülni fog és így csak itt kell kiegészíteni nem sok helyen átírni.
 | 
			
		||||
            //      Ha 1-nél több eleme van, akkor törölni ezt a NOTE-ot!
 | 
			
		||||
            (int) ErtekelesTipusEnum.evvegi_jegy_ertekeles
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        public static List<int> HaviAtlagbaNemSzamitoErtekelesTipusIdList => new List<int>
 | 
			
		||||
        {
 | 
			
		||||
            (int) ErtekelesTipusEnum.muveszeti_alapvizsga,
 | 
			
		||||
            (int) ErtekelesTipusEnum.muveszeti_zarovizsga
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        #endregion Fields
 | 
			
		||||
 | 
			
		||||
        /// INFO @DevKornel: Mobil használja
 | 
			
		||||
        public static string GetOsztalyzatTextShort(int? osztalyzat, List<int> egyszerAdhatoErtekelesTipusIds, bool isDefaultReturnValueNull = false, int? tipusId = null, string tema = null)
 | 
			
		||||
        {
 | 
			
		||||
            switch (osztalyzat)
 | 
			
		||||
            {
 | 
			
		||||
                case (int)OsztalyzatTipusEnum.elegtelen_1_:
 | 
			
		||||
                    return "1";
 | 
			
		||||
 | 
			
		||||
                case (int)OsztalyzatTipusEnum.elegseges_2_:
 | 
			
		||||
                    return "2";
 | 
			
		||||
 | 
			
		||||
                case (int)OsztalyzatTipusEnum.kozepes_3_:
 | 
			
		||||
                    return "3";
 | 
			
		||||
 | 
			
		||||
                case (int)OsztalyzatTipusEnum.jo_4_:
 | 
			
		||||
                    return "4";
 | 
			
		||||
 | 
			
		||||
                case (int)OsztalyzatTipusEnum.jeles_5_:
 | 
			
		||||
                    var jeles = "5";
 | 
			
		||||
                    if (tipusId.IsEntityId() && egyszerAdhatoErtekelesTipusIds.Contains(tipusId.Value))
 | 
			
		||||
                    {
 | 
			
		||||
                        if (tema.ReplaceMultipleSpacesAndTrim(string.Empty).ToLower() == TanuloErtekelesResource.Dicseret.ReplaceMultipleSpacesAndTrim()?.ToLower())
 | 
			
		||||
                        {
 | 
			
		||||
                            jeles = TanuloErtekelesResource.DicseretRovidNev;
 | 
			
		||||
                        }
 | 
			
		||||
                        else if (tema.ReplaceMultipleSpacesAndTrim(string.Empty).ToLower() == TanuloErtekelesResource.Kituno.ReplaceMultipleSpacesAndTrim()?.ToLower())
 | 
			
		||||
                        {
 | 
			
		||||
                            jeles = TanuloErtekelesResource.KitunoRovidNev;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    return jeles;
 | 
			
		||||
 | 
			
		||||
                default:
 | 
			
		||||
                    return isDefaultReturnValueNull ? null : "-";
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static void SetDefaultTanuloErtekelesProperties(ITanuloErtekeles entity, TanuloErtekelesCo tanuloErtekelesCo, DateTime datum, bool isMagatartasSzorgalom, bool isNew)
 | 
			
		||||
        {
 | 
			
		||||
            int tipusId = tanuloErtekelesCo.TipusId;
 | 
			
		||||
            entity.TipusId = tipusId;
 | 
			
		||||
            entity.Datum = datum;
 | 
			
		||||
            entity.IsFromMobil = tanuloErtekelesCo.IsFromMobil;
 | 
			
		||||
            if (!isMagatartasSzorgalom)
 | 
			
		||||
            {
 | 
			
		||||
                SetErtekelesProperties(entity, tanuloErtekelesCo, isNew, tipusId);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                SetMagatartasSzorgalomProperties(entity, tanuloErtekelesCo);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (tanuloErtekelesCo.IntezmenyId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                entity.IntezmenyId = tanuloErtekelesCo.IntezmenyId.Value;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private static void SetErtekelesProperties(ITanuloErtekeles entity, TanuloErtekelesCo tanuloErtekelesCo, bool isNew, int tipusId)
 | 
			
		||||
        {
 | 
			
		||||
            if (isNew)
 | 
			
		||||
            {
 | 
			
		||||
                entity.TantargyId = tanuloErtekelesCo.TantargyId.Value;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (tanuloErtekelesCo.ErtekelesOsztalyzatId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                entity.ErtekelesOsztalyzatId = tanuloErtekelesCo.ErtekelesOsztalyzatId.Value;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                entity.ErtekelesOsztalyzatId = null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(tanuloErtekelesCo.ErtekelesSzoveg))
 | 
			
		||||
            {
 | 
			
		||||
                entity.ErtekelesSzoveg = tanuloErtekelesCo.ErtekelesSzoveg;
 | 
			
		||||
                entity.ErtekelesSzovegFormazott = tanuloErtekelesCo.ErtekelesSzovegFormazott;
 | 
			
		||||
                string ertekelesSzovegRovidNev = tanuloErtekelesCo.ErtekelesSzovegRovidNev;
 | 
			
		||||
                entity.ErtekelesSzovegRovidNev = !string.IsNullOrWhiteSpace(ertekelesSzovegRovidNev) ? ertekelesSzovegRovidNev : null;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                entity.ErtekelesSzoveg = null;
 | 
			
		||||
                entity.ErtekelesSzovegFormazott = null;
 | 
			
		||||
                entity.ErtekelesSzovegRovidNev = null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (tanuloErtekelesCo.ErtekelesSzazalek.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                entity.ErtekelesSzazalek = tanuloErtekelesCo.ErtekelesSzazalek.Value;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                entity.ErtekelesSzazalek = null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (tipusId == (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles && tanuloErtekelesCo.ErtekelesModId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                entity.ErtekelesModId = tanuloErtekelesCo.ErtekelesModId.Value;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                entity.ErtekelesModId = null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            entity.ErtekelesTema = !string.IsNullOrWhiteSpace(tanuloErtekelesCo.ErtekelesTema) ? tanuloErtekelesCo.ErtekelesTema : null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private static void SetMagatartasSzorgalomProperties(ITanuloErtekeles entity, TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            if (tanuloErtekelesCo.MagatartasOsztalyzatId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                entity.MagatartasOsztalyzatId = tanuloErtekelesCo.MagatartasOsztalyzatId.Value;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                entity.MagatartasOsztalyzatId = null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(tanuloErtekelesCo.MagatartasSzoveg))
 | 
			
		||||
            {
 | 
			
		||||
                entity.MagatartasSzoveg = tanuloErtekelesCo.MagatartasSzoveg;
 | 
			
		||||
                entity.MagatartasSzovegFormazott = tanuloErtekelesCo.MagatartasSzovegFormazott;
 | 
			
		||||
                string magatartasSzovegRovidNev = tanuloErtekelesCo.MagatartasSzovegRovidNev;
 | 
			
		||||
                entity.MagatartasSzovegRovidNev = !string.IsNullOrWhiteSpace(magatartasSzovegRovidNev) ? magatartasSzovegRovidNev : null;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                entity.MagatartasSzoveg = null;
 | 
			
		||||
                entity.MagatartasSzovegFormazott = null;
 | 
			
		||||
                entity.MagatartasSzovegRovidNev = null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (tanuloErtekelesCo.MagatartasErtekId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                entity.MagatartasErtekId = tanuloErtekelesCo.MagatartasErtekId.Value;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                entity.MagatartasErtekId = null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (tanuloErtekelesCo.SzorgalomOsztalyzatId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                entity.SzorgalomOsztalyzatId = tanuloErtekelesCo.SzorgalomOsztalyzatId.Value;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                entity.SzorgalomOsztalyzatId = null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(tanuloErtekelesCo.SzorgalomSzoveg))
 | 
			
		||||
            {
 | 
			
		||||
                entity.SzorgalomSzoveg = tanuloErtekelesCo.SzorgalomSzoveg;
 | 
			
		||||
                entity.SzorgalomSzovegFormazott = tanuloErtekelesCo.SzorgalomSzovegFormazott;
 | 
			
		||||
                string szorgalomSzovegRovidNev = tanuloErtekelesCo.SzorgalomSzovegRovidNev;
 | 
			
		||||
                entity.SzorgalomSzovegRovidNev = !string.IsNullOrWhiteSpace(szorgalomSzovegRovidNev) ? szorgalomSzovegRovidNev : null;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                entity.SzorgalomSzoveg = null;
 | 
			
		||||
                entity.SzorgalomSzovegFormazott = null;
 | 
			
		||||
                entity.SzorgalomSzovegRovidNev = null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (tanuloErtekelesCo.SzorgalomErtekId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                entity.SzorgalomErtekId = tanuloErtekelesCo.SzorgalomErtekId.Value;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                entity.SzorgalomErtekId = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static void SetNewTanuloErtekelesProperties(ITanuloErtekeles entity, TanuloErtekelesCo tanuloErtekelesCo, int felhasznaloId, bool isMagatartasSzorgalom, int? rogziteskoriTanuloOsztalyId)
 | 
			
		||||
        {
 | 
			
		||||
            entity.TanuloId = tanuloErtekelesCo.TanuloId;
 | 
			
		||||
            entity.ErtekeloId = tanuloErtekelesCo.ErtekeloId ?? felhasznaloId;
 | 
			
		||||
            entity.RogzitesDatum = DateTime.Now;
 | 
			
		||||
            entity.OsztalyCsoportId = tanuloErtekelesCo.OsztalyCsoportId.Value;
 | 
			
		||||
            entity.IsMagatartasSzorgalom = isMagatartasSzorgalom;
 | 
			
		||||
            if (tanuloErtekelesCo.OsszefuggoSzakGyakId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                entity.OsszefuggoSzakGyakId = tanuloErtekelesCo.OsszefuggoSzakGyakId.Value;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (rogziteskoriTanuloOsztalyId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                entity.RogziteskoriTanuloOsztalyId = rogziteskoriTanuloOsztalyId.Value;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,97 @@
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Post.Ertekeles;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
using Kreta.BusinessLogic.Utils;
 | 
			
		||||
using Kreta.Core.Validation.Exceptions;
 | 
			
		||||
using Kreta.Core.Validation.Exceptions.Enum;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
using Kreta.Resources;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.TanuloErtekeles
 | 
			
		||||
{
 | 
			
		||||
    public class TanuloErtekelesLogicMobil : TanuloErtekelesLogicBase
 | 
			
		||||
    {
 | 
			
		||||
        /// INFO @DevKornel: Mobil használja
 | 
			
		||||
        public static List<TanuloErtekelesCo> GetTanuloErtekelesCoListV2(int intezmenyId, int felhasznaloId, OsztalyCsoportErtekelesRequestCo osztalyCsoportErtekelesRequestCo)
 | 
			
		||||
        {
 | 
			
		||||
            var tanuloErtekelesCoList = new List<TanuloErtekelesCo>();
 | 
			
		||||
 | 
			
		||||
            foreach (var item in osztalyCsoportErtekelesRequestCo.TanuloLista)
 | 
			
		||||
            {
 | 
			
		||||
                var tanuloErtekelesCo = new TanuloErtekelesCo
 | 
			
		||||
                {
 | 
			
		||||
                    MobilId = item.MobilId,
 | 
			
		||||
                    TanuloId = item.TanuloId,
 | 
			
		||||
                    ErtekelesModId = osztalyCsoportErtekelesRequestCo.Mod?.Id,
 | 
			
		||||
                    TipusId = osztalyCsoportErtekelesRequestCo.Tipus.Id,
 | 
			
		||||
                    ErtekeloId = felhasznaloId,
 | 
			
		||||
                    IntezmenyId = intezmenyId,
 | 
			
		||||
                    OsztalyCsoportId = osztalyCsoportErtekelesRequestCo.OsztalyCsoportId,
 | 
			
		||||
                    TantargyId = osztalyCsoportErtekelesRequestCo.TantargyId,
 | 
			
		||||
                    ErtekelesOsztalyzatId = item.Ertekeles.OsztalyzatTipus?.Id,
 | 
			
		||||
                    ErtekelesSzazalek = item.Ertekeles.Szazalek,
 | 
			
		||||
                    ErtekelesTema = osztalyCsoportErtekelesRequestCo.Tema,
 | 
			
		||||
                    Datum = osztalyCsoportErtekelesRequestCo.Datum,
 | 
			
		||||
                    IsFromMobil = true
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                if (!string.IsNullOrWhiteSpace(item.Ertekeles.Szoveg))
 | 
			
		||||
                {
 | 
			
		||||
                    string ertekelesSzovegFormazott = RichTextLogic.GetLegalHtmlString(item.Ertekeles.Szoveg, RichTextLogic.LegalFastReportHtmlTagList, true);
 | 
			
		||||
                    tanuloErtekelesCo.ErtekelesSzovegFormazott = ertekelesSzovegFormazott;
 | 
			
		||||
                    tanuloErtekelesCo.ErtekelesSzoveg = CommonUtils.RemoveAllHtmlTags(ertekelesSzovegFormazott);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                tanuloErtekelesCoList.Add(tanuloErtekelesCo);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return tanuloErtekelesCoList;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static List<TanuloErtekelesCo> GetTanuloErtekelesCoList(int intezmenyId, int felhasznaloId, Classes.MobileApi.Naplo.V3.Co.Ertekeles.OsztalyCsoportErtekelesRequestCo osztalyCsoportErtekelesRequestCo)
 | 
			
		||||
        {
 | 
			
		||||
            var tanuloErtekelesCoList = new List<TanuloErtekelesCo>();
 | 
			
		||||
 | 
			
		||||
            foreach (var item in osztalyCsoportErtekelesRequestCo.TanuloLista)
 | 
			
		||||
            {
 | 
			
		||||
                var tanuloErtekelesCo = new TanuloErtekelesCo
 | 
			
		||||
                {
 | 
			
		||||
                    TanuloId = item.TanuloId,
 | 
			
		||||
                    ErtekelesModId = osztalyCsoportErtekelesRequestCo.Mod?.Id,
 | 
			
		||||
                    TipusId = (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles, // Direkt van beégetve, mobilról csak évközi jegy értékelés lehet
 | 
			
		||||
                    ErtekeloId = felhasznaloId,
 | 
			
		||||
                    IntezmenyId = intezmenyId,
 | 
			
		||||
                    OsztalyCsoportId = osztalyCsoportErtekelesRequestCo.OsztalyCsoportId,
 | 
			
		||||
                    TantargyId = osztalyCsoportErtekelesRequestCo.TantargyId,
 | 
			
		||||
                    ErtekelesOsztalyzatId = item.Ertekeles.OsztalyzatTipus?.Id,
 | 
			
		||||
                    ErtekelesSzazalek = int.TryParse(item.Ertekeles.Szazalek, out var szam) ? (int?)szam : null,
 | 
			
		||||
                    ErtekelesTema = osztalyCsoportErtekelesRequestCo.Tema,
 | 
			
		||||
                    Datum = osztalyCsoportErtekelesRequestCo.Datum,
 | 
			
		||||
                    IsFromMobil = true
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                if (!string.IsNullOrWhiteSpace(item.Ertekeles.Szoveg))
 | 
			
		||||
                {
 | 
			
		||||
                    var ertekelesSzovegFormazott = RichTextLogic.GetLegalHtmlString(item.Ertekeles.Szoveg, RichTextLogic.LegalFastReportHtmlTagList, true);
 | 
			
		||||
                    tanuloErtekelesCo.ErtekelesSzovegFormazott = ertekelesSzovegFormazott;
 | 
			
		||||
                    tanuloErtekelesCo.ErtekelesSzoveg = CommonUtils.RemoveAllHtmlTags(ertekelesSzovegFormazott);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                tanuloErtekelesCoList.Add(tanuloErtekelesCo);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return tanuloErtekelesCoList;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static ValidationException GetValidationException(List<ValidationExceptionItem> errors)
 | 
			
		||||
        {
 | 
			
		||||
            var validationException = new ValidationException(ValidationErrorType.Undefined, TanuloErtekelesResource.HibasErtekeles);
 | 
			
		||||
            foreach (var item in errors)
 | 
			
		||||
            {
 | 
			
		||||
                validationException.AddValidationItem(item);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return validationException;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1287
									
								
								Kreta.BusinessLogic/Logic/TanuloErtekeles/TanuloErtekelesLogicWeb.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1287
									
								
								Kreta.BusinessLogic/Logic/TanuloErtekeles/TanuloErtekelesLogicWeb.cs
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -0,0 +1,580 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Data;
 | 
			
		||||
using System.Data.SqlTypes;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Kreta.BusinessLogic.Classes;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers.DokumentumHelpers;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
 | 
			
		||||
using Kreta.BusinessLogic.Utils;
 | 
			
		||||
using Kreta.Core;
 | 
			
		||||
using Kreta.Core.ConnectionType;
 | 
			
		||||
using Kreta.DataAccess.Interfaces;
 | 
			
		||||
using Kreta.DataAccessManual.Interfaces;
 | 
			
		||||
using Kreta.Enums;
 | 
			
		||||
using Kreta.Enums.ManualEnums;
 | 
			
		||||
using Kreta.Resources;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.TanuloErtekeles
 | 
			
		||||
{
 | 
			
		||||
    public abstract class TanuloErtekelesValidacioBase
 | 
			
		||||
    {
 | 
			
		||||
        #region Fields
 | 
			
		||||
 | 
			
		||||
        public readonly List<string> ErrorMessageList = new List<string>();
 | 
			
		||||
 | 
			
		||||
        protected bool IsValid = true;
 | 
			
		||||
 | 
			
		||||
        private const int ErtekelesTemaMaxLength = 2000;
 | 
			
		||||
 | 
			
		||||
        protected IConnectionType ConnectionType;
 | 
			
		||||
 | 
			
		||||
        #endregion Fields
 | 
			
		||||
 | 
			
		||||
        #region Constructors
 | 
			
		||||
 | 
			
		||||
        protected TanuloErtekelesValidacioBase(IConnectionType connectionType)
 | 
			
		||||
        {
 | 
			
		||||
            ConnectionType = connectionType;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion Constructors
 | 
			
		||||
 | 
			
		||||
        protected void IsExists(TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            if (tanuloErtekelesCo == null)
 | 
			
		||||
            {
 | 
			
		||||
                ErrorMessageList.Add(TanuloErtekelesResource.NincsKitoltveEgyetlenErtekelesSem);
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidOsztalyCsoportId(TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            if (!tanuloErtekelesCo.OsztalyCsoportId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                ErrorMessageList.Add(TanuloErtekelesResource.OsztalyCsoportKivalasztasaKotelezo);
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                if (new NaplozarasLogic(ConnectionType).GetLezartOsztalyokEsBontottCsoportjaik().Contains(tanuloErtekelesCo.OsztalyCsoportId.Value))
 | 
			
		||||
                {
 | 
			
		||||
                    ErrorMessageList.Add(tanuloErtekelesCo.Id.HasValue ? TanuloErtekelesResource.AKivalasztottOsztalyNaplojaLezartNemModosithatoErtekelesAzOsztalyTanuloinaknak : TanuloErtekelesResource.AKivalasztottOsztalyNaplojaLezartNemAdhatoErtekelesAzOsztalyTanuloinaknak);
 | 
			
		||||
                    IsValid = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidTanoraiCeluOsztalyCsoport(TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            if (tanuloErtekelesCo.OsztalyCsoportId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                bool nemTanoraiCeluCsoportokErtekelesiLehetosege = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.nem_tanorai_celu_csoportok_ertekelesi_lehetosege);
 | 
			
		||||
                bool isOsztalyCsoportNemTanoraiCeluCsoport = new OsztalyCsoportHelper(ConnectionType).IsOsztalyCsoportNemTanoraiCeluCsoport(tanuloErtekelesCo.OsztalyCsoportId.Value);
 | 
			
		||||
 | 
			
		||||
                if (!nemTanoraiCeluCsoportokErtekelesiLehetosege && isOsztalyCsoportNemTanoraiCeluCsoport)
 | 
			
		||||
                {
 | 
			
		||||
                    ErrorMessageList.Add(TanuloErtekelesResource.NemTanoraiCeluCsoporthozNemLehetErtekelestRogziteni);
 | 
			
		||||
                    IsValid = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidTipusId(TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            if (!tanuloErtekelesCo.TipusId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTipusanakMegadasaKotelezo);
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidDatum(TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            DateTime datum = tanuloErtekelesCo.Datum;
 | 
			
		||||
            if (datum == default)
 | 
			
		||||
            {
 | 
			
		||||
                ErrorMessageList.Add(string.Format(CommonResource.Required, $"\"{TanuloErtekelesResource.BejegyzesDatuma}\""));
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                if (datum > DateTime.Today)
 | 
			
		||||
                {
 | 
			
		||||
                    ErrorMessageList.Add(TanuloErtekelesResource.BejegyzesDatumaNemlehetKesobbiMintAMaiNap);
 | 
			
		||||
                    IsValid = false;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                var isCsakNaplozasZarasa = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<NaplozarasErvenyessegiKoreEnum>(RendszerBeallitasTipusEnum.elektronikus_naplo_zarasanak_datuma_beallitas_ervenyesegi_kore) == NaplozarasErvenyessegiKoreEnum.CsakNaplozasZarasa;
 | 
			
		||||
 | 
			
		||||
                if (!isCsakNaplozasZarasa && datum < new OrarendHelper(ConnectionType).GetNaplozarasDate(startDate: null))
 | 
			
		||||
                {
 | 
			
		||||
                    ErrorMessageList.Add(TanuloErtekelesResource.BejegyzesDatumaNemLehetKorabbiMintAMegengedett);
 | 
			
		||||
                    IsValid = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidSpecialisErtekelesOsztalyzatId(List<TanuloErtekelesCo> model, List<int> egyszerAdhatoErtekelesTipusIds, int tipusId)
 | 
			
		||||
        {
 | 
			
		||||
            foreach (TanuloErtekelesCo item in model)
 | 
			
		||||
            {
 | 
			
		||||
                if (item.SpecialisErtekelesOsztalyzatId.IsEntityId())
 | 
			
		||||
                {
 | 
			
		||||
                    if (item.SpecialisErtekelesOsztalyzatId.Value == (int)SpecialisErtekelesOsztalyzatEnum.NemIrt &&
 | 
			
		||||
                        egyszerAdhatoErtekelesTipusIds.Contains(tipusId))
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(string.Format(
 | 
			
		||||
                            TanuloErtekelesResource.NemKaphatTipusuErtekelesOsztalyzatotAKovetkezoTanulonal,
 | 
			
		||||
                            tipusId.GetDisplayName<ErtekelesTipusEnum>(ConnectionType.TanevId),
 | 
			
		||||
                            item.SpecialisErtekelesOsztalyzatId.Value.GetDisplayName<SpecialisErtekelesOsztalyzatEnum>(ConnectionType.TanevId),
 | 
			
		||||
                            item.TanuloSzuletesiNev));
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
                    }
 | 
			
		||||
                    else if ((item.SpecialisErtekelesOsztalyzatId.Value == (int)SpecialisErtekelesOsztalyzatEnum.Dicseret ||
 | 
			
		||||
                             item.SpecialisErtekelesOsztalyzatId.Value == (int)SpecialisErtekelesOsztalyzatEnum.Kituno ||
 | 
			
		||||
                             item.SpecialisErtekelesOsztalyzatId.Value == (int)SpecialisErtekelesOsztalyzatEnum.Mentesitve) &&
 | 
			
		||||
                             !egyszerAdhatoErtekelesTipusIds.Contains(tipusId))
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(string.Format(
 | 
			
		||||
                            TanuloErtekelesResource.NemKaphatTipusuErtekelesOsztalyzatotAKovetkezoTanulonal,
 | 
			
		||||
                            tipusId.GetDisplayName<ErtekelesTipusEnum>(ConnectionType.TanevId),
 | 
			
		||||
                            item.SpecialisErtekelesOsztalyzatId.Value.GetDisplayName<SpecialisErtekelesOsztalyzatEnum>(ConnectionType.TanevId),
 | 
			
		||||
                            item.TanuloSzuletesiNev));
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidErtekelesFajta(List<TanuloErtekelesCo> model)
 | 
			
		||||
        {
 | 
			
		||||
            bool isOsztalyzattalErtekelheto = false;
 | 
			
		||||
            bool isSzovegesenErtekelheto = false;
 | 
			
		||||
            bool isSzazalekosanErtekelheto = false;
 | 
			
		||||
 | 
			
		||||
            if (model != null && model.Count > 0 && model[0].TantargyId.HasValue)
 | 
			
		||||
            {
 | 
			
		||||
                (isOsztalyzattalErtekelheto, isSzovegesenErtekelheto, isSzazalekosanErtekelheto) = new TantargyHelper(ConnectionType).GetErtekelesKorlatozasok(model[0].TantargyId.Value);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            foreach (TanuloErtekelesCo item in model)
 | 
			
		||||
            {
 | 
			
		||||
                bool hasErtekelesOsztalyzat = false;
 | 
			
		||||
                bool hasErtekelesSzoveges = false;
 | 
			
		||||
                bool hasErtekelesSzazalekos = false;
 | 
			
		||||
 | 
			
		||||
                int? specialisErtekelesOsztalyzatId = item.SpecialisErtekelesOsztalyzatId;
 | 
			
		||||
                if (item.ErtekelesOsztalyzatId.IsEntityId() || specialisErtekelesOsztalyzatId.IsEntityId())
 | 
			
		||||
                {
 | 
			
		||||
                    if (!isOsztalyzattalErtekelheto)
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesFajtajaNemLehetOsztalyzat);
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    hasErtekelesOsztalyzat = true;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // NOTE: A Mentesitve és a NemIrt speciális osztályzat esetén szöveges értékelés jön létre osztályzat helyett, viszont az osztályzatok tabfülről jön,
 | 
			
		||||
                //       így ezt nem vesszük szöveges értékelésnek validációkor. Emiatt nem is dobunk validációs hibát, mert olyan mintha osztályzat lenne.
 | 
			
		||||
                //       Ezt az ErtekelesListSaveModel.cs-ben állítjuk ToCoList függvényben.
 | 
			
		||||
                if (!string.IsNullOrWhiteSpace(item.ErtekelesSzoveg) &&
 | 
			
		||||
                    (!specialisErtekelesOsztalyzatId.IsEntityId() ||
 | 
			
		||||
                     (specialisErtekelesOsztalyzatId.IsEntityId() &&
 | 
			
		||||
                      specialisErtekelesOsztalyzatId != (int)SpecialisErtekelesOsztalyzatEnum.Mentesitve &&
 | 
			
		||||
                      specialisErtekelesOsztalyzatId != (int)SpecialisErtekelesOsztalyzatEnum.NemIrt)))
 | 
			
		||||
                {
 | 
			
		||||
                    if (!isSzovegesenErtekelheto)
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesFajtajaNemLehetSzoveges);
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    hasErtekelesSzoveges = true;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (item.ErtekelesSzazalek.HasValue)
 | 
			
		||||
                {
 | 
			
		||||
                    if (!isSzazalekosanErtekelheto)
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesFajtajaNemLehetSzazalek);
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    hasErtekelesSzazalekos = true;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (!hasErtekelesOsztalyzat &&
 | 
			
		||||
                    !hasErtekelesSzoveges &&
 | 
			
		||||
                    !hasErtekelesSzazalekos)
 | 
			
		||||
                {
 | 
			
		||||
                    ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesFajtajaNemLehetNull);
 | 
			
		||||
                    IsValid = false;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    if (!CommonUtils.TernaryXor(
 | 
			
		||||
                            hasErtekelesOsztalyzat,
 | 
			
		||||
                            hasErtekelesSzoveges,
 | 
			
		||||
                            hasErtekelesSzazalekos))
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesFajtajaNemLehetKulonbozo);
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidTantargyId(TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            if (!tanuloErtekelesCo.TantargyId.IsEntityId())
 | 
			
		||||
            {
 | 
			
		||||
                ErrorMessageList.Add(TanuloErtekelesResource.TantargyKivalasztasaKotelezo);
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidErtekelesTema(TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            string ertekelesTema = tanuloErtekelesCo.ErtekelesTema;
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(ertekelesTema))
 | 
			
		||||
            {
 | 
			
		||||
                if (ertekelesTema.Length > ErtekelesTemaMaxLength)
 | 
			
		||||
                {
 | 
			
		||||
                    ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTemaTulHosszu);
 | 
			
		||||
                    IsValid = false;
 | 
			
		||||
                }
 | 
			
		||||
                List<int> nemzetiDokumentumNyelvek = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek);
 | 
			
		||||
                if (nemzetiDokumentumNyelvek.Any() && TanuloErtekelesLogicBase.NyelviesithetoTanuloErtekelesTipusIdList.Contains(tanuloErtekelesCo.TipusId))
 | 
			
		||||
                {
 | 
			
		||||
                    if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.nemet))
 | 
			
		||||
                    {
 | 
			
		||||
                        string ertekelesTemaNemet = tanuloErtekelesCo.ErtekelesTemaNemet;
 | 
			
		||||
                        if (!string.IsNullOrWhiteSpace(ertekelesTemaNemet) && ertekelesTemaNemet.Length > ErtekelesTemaMaxLength)
 | 
			
		||||
                        {
 | 
			
		||||
                            ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTemaNemetTulHosszu);
 | 
			
		||||
                            IsValid = false;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.horvat))
 | 
			
		||||
                    {
 | 
			
		||||
                        string ertekelesTemaHorvat = tanuloErtekelesCo.ErtekelesTemaHorvat;
 | 
			
		||||
                        if (!string.IsNullOrWhiteSpace(ertekelesTemaHorvat) && ertekelesTemaHorvat.Length > ErtekelesTemaMaxLength)
 | 
			
		||||
                        {
 | 
			
		||||
                            ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTemaHorvatTulHosszu);
 | 
			
		||||
                            IsValid = false;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.roman))
 | 
			
		||||
                    {
 | 
			
		||||
                        string ertekelesTemaRoman = tanuloErtekelesCo.ErtekelesTemaRoman;
 | 
			
		||||
                        if (!string.IsNullOrWhiteSpace(ertekelesTemaRoman) && ertekelesTemaRoman.Length > ErtekelesTemaMaxLength)
 | 
			
		||||
                        {
 | 
			
		||||
                            ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTemaRomanTulHosszu);
 | 
			
		||||
                            IsValid = false;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.szerb))
 | 
			
		||||
                    {
 | 
			
		||||
                        string ertekelesTemaSzerb = tanuloErtekelesCo.ErtekelesTemaSzerb;
 | 
			
		||||
                        if (!string.IsNullOrWhiteSpace(ertekelesTemaSzerb) && ertekelesTemaSzerb.Length > ErtekelesTemaMaxLength)
 | 
			
		||||
                        {
 | 
			
		||||
                            ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesTemaSzerbTulHosszu);
 | 
			
		||||
                            IsValid = false;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidMagatartasSzorgalomFajta(List<TanuloErtekelesCo> model)
 | 
			
		||||
        {
 | 
			
		||||
            bool hasMagatartasSzorgalomOsztalyzat = false;
 | 
			
		||||
            bool hasMagatartasSzorgalomSzoveges = false;
 | 
			
		||||
            bool hasMagatartasSzorgalomErtek = false;
 | 
			
		||||
 | 
			
		||||
            foreach (TanuloErtekelesCo item in model)
 | 
			
		||||
            {
 | 
			
		||||
                if (item.MagatartasOsztalyzatId.IsEntityId() || item.SzorgalomOsztalyzatId.IsEntityId())
 | 
			
		||||
                {
 | 
			
		||||
                    hasMagatartasSzorgalomOsztalyzat = true;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (!string.IsNullOrWhiteSpace(item.MagatartasSzoveg) || !string.IsNullOrWhiteSpace(item.SzorgalomSzoveg))
 | 
			
		||||
                {
 | 
			
		||||
                    hasMagatartasSzorgalomSzoveges = true;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (item.MagatartasErtekId.IsEntityId() || item.SzorgalomErtekId.IsEntityId())
 | 
			
		||||
                {
 | 
			
		||||
                    hasMagatartasSzorgalomErtek = true;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!hasMagatartasSzorgalomOsztalyzat && !hasMagatartasSzorgalomSzoveges && !hasMagatartasSzorgalomErtek)
 | 
			
		||||
            {
 | 
			
		||||
                ErrorMessageList.Add(TanuloErtekelesResource.MagatartasSzorgalomFajtajaNemLehetNull);
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                if (!CommonUtils.TernaryXor(
 | 
			
		||||
                    hasMagatartasSzorgalomOsztalyzat,
 | 
			
		||||
                    hasMagatartasSzorgalomSzoveges,
 | 
			
		||||
                    hasMagatartasSzorgalomErtek))
 | 
			
		||||
                {
 | 
			
		||||
                    ErrorMessageList.Add(TanuloErtekelesResource.MagatartasSzorgalomFajtajaNemLehetKulonbozo);
 | 
			
		||||
                    IsValid = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidDatumIsTanitasiNap(TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            DateTime datum = tanuloErtekelesCo.Datum;
 | 
			
		||||
            int? osztalyCsoportId = tanuloErtekelesCo.OsztalyCsoportId;
 | 
			
		||||
 | 
			
		||||
            if (!IsTanitasiNap(datum, osztalyCsoportId))
 | 
			
		||||
            {
 | 
			
		||||
                ErrorMessageList.Add(TanuloErtekelesResource.CsakTanitasiNapraVehetoFelErtekeles);
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidEgyszerAdhatoTanuloErtekeles(TanuloErtekelesCo tanuloErtekelesCo, List<TanuloErtekelesCo> tanuloErtekelesCoList, List<int> egyszerAdhatoErtekelesTipusIds)
 | 
			
		||||
        {
 | 
			
		||||
            int tipusId = tanuloErtekelesCo.TipusId;
 | 
			
		||||
            int? tantargyId = tanuloErtekelesCo.TantargyId;
 | 
			
		||||
            DateTime datum = tanuloErtekelesCo.Datum;
 | 
			
		||||
            int feladatKategoriaId = new OsztalyCsoportHelper(ConnectionType).GetOsztalyCsoportFeladatKategoria(tanuloErtekelesCo.OsztalyCsoportId.Value);
 | 
			
		||||
 | 
			
		||||
            if (egyszerAdhatoErtekelesTipusIds.Contains(tipusId))
 | 
			
		||||
            {
 | 
			
		||||
                var helper = new TanuloErtekelesHelper(ConnectionType);
 | 
			
		||||
                Dictionary<int, int?> tanuloErtekelesDictionary = tanuloErtekelesCoList.Select(x => new { x.TanuloId, x.Id }).ToDictionary(x => x.TanuloId, x => x.Id);
 | 
			
		||||
                if (helper.CheckTanuloListEgyszerAdhatoTanuloErtekelesValidation(tanuloErtekelesDictionary, tipusId, tantargyId, datum, feladatKategoriaId))
 | 
			
		||||
                {
 | 
			
		||||
                    var message = string.Format(TanuloErtekelesResource.AzErtekelesTipusbolNemLehetTobbATanevben, tipusId.GetDisplayName<ErtekelesTipusEnum>(ConnectionType.TanevId));
 | 
			
		||||
                    if (!ErrorMessageList.Contains(message))
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(message);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    IsValid = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidErtekelesModId(TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            int tipusId = tanuloErtekelesCo.TipusId;
 | 
			
		||||
            int? ertekelesModId = tanuloErtekelesCo.ErtekelesModId;
 | 
			
		||||
 | 
			
		||||
            if (tipusId == (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles)
 | 
			
		||||
            {
 | 
			
		||||
                if (!ertekelesModId.IsEntityId())
 | 
			
		||||
                {
 | 
			
		||||
                    ErrorMessageList.Add(string.Format(CommonResource.Required, $"\"{TanuloErtekelesResource.ErtekelesModja}\""));
 | 
			
		||||
                    IsValid = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                if (ertekelesModId.IsEntityId())
 | 
			
		||||
                {
 | 
			
		||||
                    ErrorMessageList.Add(TanuloErtekelesResource.ErtekelesModjaCsakEvkozinélTolthetoKi);
 | 
			
		||||
                    IsValid = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidUtolsoTanitasiNapUtanErtekeles(TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            var tanevCo = new TanevHelper(ConnectionType).GetTanevInfo();
 | 
			
		||||
            DateTime datum = tanuloErtekelesCo.Datum;
 | 
			
		||||
            int tipusId = tanuloErtekelesCo.TipusId;
 | 
			
		||||
            int? osztalyCsoportId = tanuloErtekelesCo.OsztalyCsoportId;
 | 
			
		||||
 | 
			
		||||
            if (tanevCo.UtolsoTanitasiNap < datum)
 | 
			
		||||
            {
 | 
			
		||||
                List<TanevrendOsztalycsoportCO> osztalyTanevrendjei = new TanevrendHelper(ConnectionType).GetOsztalycsoportTanevrendje(datum, osztalyCsoportId ?? 0);
 | 
			
		||||
                if (osztalyTanevrendjei.All(x => x.Naptipus != (int)NapTipusEnum.RendkivuliTanitasiNap))
 | 
			
		||||
                {
 | 
			
		||||
                    if (tipusId == (int)ErtekelesTipusEnum.na || tipusId == (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles)
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(string.Format(
 | 
			
		||||
                            TanuloErtekelesResource.ErtekelesUtolsoTanitasiNapUtanValidacio,
 | 
			
		||||
                            tanevCo.UtolsoTanitasiNap.ToString(Constants.ToStringPattern.HungarianDate),
 | 
			
		||||
                            tipusId.GetDisplayName<ErtekelesTipusEnum>(ConnectionType.TanevId)));
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        if (osztalyTanevrendjei.All(x => x.Naptipus != (int)NapTipusEnum.vizsganap))
 | 
			
		||||
                        {
 | 
			
		||||
                            ErrorMessageList.Add(string.Format(TanuloErtekelesResource.ErtekelesUtolsoTanitasiNapUtanValidacioEgyszerAdhato,
 | 
			
		||||
                            tanevCo.UtolsoTanitasiNap.ToString(Constants.ToStringPattern.HungarianDate),
 | 
			
		||||
                            tipusId.GetDisplayName<ErtekelesTipusEnum>(ConnectionType.TanevId),
 | 
			
		||||
                            NapTipusEnum.RendkivuliTanitasiNap.GetDisplayName(ConnectionType.TanevId),
 | 
			
		||||
                            NapTipusEnum.vizsganap.GetDisplayName(ConnectionType.TanevId)));
 | 
			
		||||
                            IsValid = false;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidTanuloMentesseg(TanuloErtekelesCo tanuloErtekelesCo, DataSet tanuloMentessegValidationDataSet)
 | 
			
		||||
        {
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(tanuloErtekelesCo.ErtekelesSzoveg))
 | 
			
		||||
            {
 | 
			
		||||
                if (tanuloErtekelesCo.ErtekelesSzoveg.ReplaceMultipleSpacesAndTrim()?.ToLower() != TanuloErtekelesResource.Mentesitve.ToLower() ||
 | 
			
		||||
                    tanuloErtekelesCo.ErtekelesSzovegRovidNev.ReplaceMultipleSpacesAndTrim()?.ToLower() != TanuloErtekelesResource.MentesitveRovidNev.ToLower())
 | 
			
		||||
                {
 | 
			
		||||
                    foreach (var tanuloMentessegValidationDataRow in tanuloMentessegValidationDataSet.Tables[0].AsEnumerable())
 | 
			
		||||
                    {
 | 
			
		||||
                        if (SDAConvert.ToInt32(tanuloMentessegValidationDataRow["ID"]) == tanuloErtekelesCo.TanuloId &&
 | 
			
		||||
                            SDAConvert.ToBoolean(tanuloMentessegValidationDataRow["ErtkelesMentesseg_BOOL"]) &&
 | 
			
		||||
                            !SDAConvert.ToBoolean(tanuloMentessegValidationDataRow["SzovegesenErtekelheto_BOOL"]))
 | 
			
		||||
                        {
 | 
			
		||||
                            ErrorMessageList.Add(string.Format(TanuloErtekelesResource.ValidateErtekelesSzovegesFelmentes, tanuloMentessegValidationDataRow["Nev"], tanuloErtekelesCo.Datum.ToShortDateString()));
 | 
			
		||||
                            IsValid = false;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                foreach (var tanuloMentessegValidationDataRow in tanuloMentessegValidationDataSet.Tables[0].AsEnumerable())
 | 
			
		||||
                {
 | 
			
		||||
                    if (SDAConvert.ToInt32(tanuloMentessegValidationDataRow["ID"]) == tanuloErtekelesCo.TanuloId &&
 | 
			
		||||
                        SDAConvert.ToBoolean(tanuloMentessegValidationDataRow["ErtkelesMentesseg_BOOL"]))
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(string.Format(TanuloErtekelesResource.ValidateErtekelesFelmentes, tanuloMentessegValidationDataRow["Nev"], tanuloErtekelesCo.Datum.ToShortDateString()));
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected bool IsValidTanuloOsztalyCsoportTagja(IDalHandler dalHandler, TanuloErtekelesCo tanuloErtekelesCo, OsztalyCsoportHelper osztalyCsoportHelper)
 | 
			
		||||
        {
 | 
			
		||||
            var isTanuloOsztalyCsoportTagja = osztalyCsoportHelper.IsTanuloOsztalyCsoportTagja(tanuloErtekelesCo.TanuloId, tanuloErtekelesCo.OsztalyCsoportId.Value, tanuloErtekelesCo.Datum);
 | 
			
		||||
            if (!isTanuloOsztalyCsoportTagja)
 | 
			
		||||
            {
 | 
			
		||||
                ITanulo tanulo = dalHandler.Tanulo().Get(tanuloErtekelesCo.TanuloId);
 | 
			
		||||
                ErrorMessageList.Add(string.Format(TanuloErtekelesResource.AdottNaponATanuloNemTagjaAzOsztalyCsoportnak, tanulo.SzuletesiNev));
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return isTanuloOsztalyCsoportTagja;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidErtekelesSzazalek(TanuloErtekelesCo model)
 | 
			
		||||
        {
 | 
			
		||||
            if (model.ErtekelesSzazalek.HasValue && (model.ErtekelesSzazalek < 0 || model.ErtekelesSzazalek > 100))
 | 
			
		||||
            {
 | 
			
		||||
                ErrorMessageList.Add(TanuloErtekelesResource.SzazalekosErtekNincsAMegengedettTartomanyban);
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidSzorgalomTargykategoriaErtekeles(TanuloErtekelesCo model, List<TantargyItemCo> tantargyCoList)
 | 
			
		||||
        {
 | 
			
		||||
            var tantargyCo = tantargyCoList.SingleOrDefault(x => x.Id == model.TantargyId);
 | 
			
		||||
            if (tantargyCo != null &&
 | 
			
		||||
                tantargyCo.TargykategoriaTipusId == (int)TargyKategoriaTipusEnum.Szorgalom &&
 | 
			
		||||
                model.ErtekelesOsztalyzatId == (int)OsztalyzatTipusEnum.elegtelen_1_)
 | 
			
		||||
            {
 | 
			
		||||
                ErrorMessageList.Add(string.IsNullOrWhiteSpace(model.TanuloSzuletesiNev) ?
 | 
			
		||||
                    TanuloErtekelesResource.SzorgalomTargykategoriabaTartozoTantargybolNemAhatoElegtelenOsztalyzat :
 | 
			
		||||
                    string.Format(TanuloErtekelesResource.TanulonakElegelenOsztalyzatotAdtakSzorgalomTargykategoriabaTartozoTantargybolNemAhatoElegtelenOsztalyzat, model.TanuloSzuletesiNev));
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void IsValidErtekelesSzoveg(TanuloErtekelesCo model)
 | 
			
		||||
        {
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(model.ErtekelesSzoveg) && (model.ErtekelesSzoveg.Length > Constants.MinMaxValues.MaxSzovegesErtekelesHossz))
 | 
			
		||||
            {
 | 
			
		||||
                ErrorMessageList.Add(string.Format(ErrorResource.ASzovegNemLehetHosszabbMint0Karakter, Constants.MinMaxValues.MaxSzovegesErtekelesHossz));
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
            List<int> nemzetiDokumentumNyelvek = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek);
 | 
			
		||||
            if (nemzetiDokumentumNyelvek.Any() && TanuloErtekelesLogicBase.NyelviesithetoTanuloErtekelesTipusIdList.Contains(model.TipusId))
 | 
			
		||||
            {
 | 
			
		||||
                if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.nemet))
 | 
			
		||||
                {
 | 
			
		||||
                    string ertekelesSzovegNemet = model.ErtekelesSzovegNemet;
 | 
			
		||||
                    if (!string.IsNullOrWhiteSpace(ertekelesSzovegNemet) && ertekelesSzovegNemet.Length > Constants.MinMaxValues.MaxSzovegesErtekelesHossz)
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(string.Format(ErrorResource.ASzovegNemetNemLehetHosszabbMint0Karakter, Constants.MinMaxValues.MaxSzovegesErtekelesHossz));
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.horvat))
 | 
			
		||||
                {
 | 
			
		||||
                    string ertekelesSzovegHorvat = model.ErtekelesSzovegHorvat;
 | 
			
		||||
                    if (!string.IsNullOrWhiteSpace(ertekelesSzovegHorvat) && ertekelesSzovegHorvat.Length > Constants.MinMaxValues.MaxSzovegesErtekelesHossz)
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(string.Format(ErrorResource.ASzovegHorvatNemLehetHosszabbMint0Karakter, Constants.MinMaxValues.MaxSzovegesErtekelesHossz));
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.roman))
 | 
			
		||||
                {
 | 
			
		||||
                    string ertekelesSzovegRoman = model.ErtekelesSzovegRoman;
 | 
			
		||||
                    if (!string.IsNullOrWhiteSpace(ertekelesSzovegRoman) && ertekelesSzovegRoman.Length > Constants.MinMaxValues.MaxSzovegesErtekelesHossz)
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(string.Format(ErrorResource.ASzovegRomanNemLehetHosszabbMint0Karakter, Constants.MinMaxValues.MaxSzovegesErtekelesHossz));
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.szerb))
 | 
			
		||||
                {
 | 
			
		||||
                    string ertekelesSzovegSzerb = model.ErtekelesSzovegSzerb;
 | 
			
		||||
                    if (!string.IsNullOrWhiteSpace(ertekelesSzovegSzerb) && ertekelesSzovegSzerb.Length > Constants.MinMaxValues.MaxSzovegesErtekelesHossz)
 | 
			
		||||
                    {
 | 
			
		||||
                        ErrorMessageList.Add(string.Format(ErrorResource.ASzovegSzerbNemLehetHosszabbMint0Karakter, Constants.MinMaxValues.MaxSzovegesErtekelesHossz));
 | 
			
		||||
                        IsValid = false;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool IsTanitasiNap(DateTime date, int? osztalycsoportId)
 | 
			
		||||
        {
 | 
			
		||||
            var sqlMinDate = SqlDateTime.MinValue.Value.Date;
 | 
			
		||||
            var sqlMaxDate = SqlDateTime.MaxValue.Value.Date;
 | 
			
		||||
            if (date < sqlMinDate || date > sqlMaxDate)
 | 
			
		||||
            {
 | 
			
		||||
                throw new OverflowException(string.Format(ErrorResource.ADatumNemLehetKisebbMintVagyNagyobbMint, sqlMinDate.ToShortDateString(), sqlMaxDate.ToShortDateString()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var osztalyTanevrendjei = new TanevrendHelper(ConnectionType).GetOsztalycsoportTanevrendje(date, osztalycsoportId ?? 0);
 | 
			
		||||
            if (osztalyTanevrendjei.Any(x => x.Naptipus == (int)NapTipusEnum.vizsganap))
 | 
			
		||||
            {
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            bool result = new TanevrendHelper(ConnectionType).IsTanitasiNap(date, osztalycsoportId);
 | 
			
		||||
            return result;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,140 @@
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Data;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Kreta.BusinessLogic.Classes;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers;
 | 
			
		||||
using Kreta.Core;
 | 
			
		||||
using Kreta.Core.ConnectionType;
 | 
			
		||||
using Kreta.Core.Validation.Exceptions;
 | 
			
		||||
using Kreta.Core.Validation.Exceptions.Enum;
 | 
			
		||||
using Kreta.DataAccessManual.Interfaces;
 | 
			
		||||
using Kreta.Resources;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.TanuloErtekeles
 | 
			
		||||
{
 | 
			
		||||
    public class TanuloErtekelesValidacioMobil : TanuloErtekelesValidacioBase
 | 
			
		||||
    {
 | 
			
		||||
        #region Constructors
 | 
			
		||||
 | 
			
		||||
        public TanuloErtekelesValidacioMobil(IConnectionType connectionType) : base(connectionType)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion Constructors
 | 
			
		||||
 | 
			
		||||
        public List<TanuloErtekelesCo> Validate(IDalHandler dalHandler, List<TanuloErtekelesCo> tanuloErtekelesCoList, out List<ValidationExceptionItem> validationExceptionItemList)
 | 
			
		||||
        {
 | 
			
		||||
            //NOTE: A validációhoz szükséges közös adatok, minden egyes item-nél benne vannak és ezek megegyeznek, ezért elég ha csak a firstItem-et vizsgáljuk
 | 
			
		||||
            TanuloErtekelesCo firstItem = tanuloErtekelesCoList.FirstOrDefault();
 | 
			
		||||
            var tanuloIdList = tanuloErtekelesCoList.Select(x => x.TanuloId).ToList();
 | 
			
		||||
            //NOTE: Levalidáljuk, hogy van-e egyáltalán menteni való elem!
 | 
			
		||||
            IsExists(firstItem);
 | 
			
		||||
            if (!IsValid)
 | 
			
		||||
            {
 | 
			
		||||
                ThrowExeption(tanuloErtekelesCoList);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //NOTE: Levalidáljuk a közös, alap adatokat!
 | 
			
		||||
            IsValidOsztalyCsoportId(firstItem);
 | 
			
		||||
            IsValidTanoraiCeluOsztalyCsoport(firstItem);
 | 
			
		||||
            IsValidTipusId(firstItem);
 | 
			
		||||
            IsValidDatum(firstItem);
 | 
			
		||||
 | 
			
		||||
            List<int> egyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(ConnectionType.TanevId, true).Select(x => x.Id).ToList();
 | 
			
		||||
            if (!firstItem.IsMagatartasSzorgalom)
 | 
			
		||||
            {
 | 
			
		||||
                IsValidSpecialisErtekelesOsztalyzatId(tanuloErtekelesCoList, egyszerAdhatoErtekelesTipusIds, firstItem.TipusId);
 | 
			
		||||
                IsValidErtekelesFajta(tanuloErtekelesCoList);
 | 
			
		||||
                IsValidTantargyId(firstItem);
 | 
			
		||||
                IsValidErtekelesTema(firstItem);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                IsValidMagatartasSzorgalomFajta(tanuloErtekelesCoList);
 | 
			
		||||
            }
 | 
			
		||||
            if (!IsValid)
 | 
			
		||||
            {
 | 
			
		||||
                ThrowExeption(tanuloErtekelesCoList);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //NOTE: Levalidáljuk a közös, alap adatokra épülő dolgokat!
 | 
			
		||||
            IsValidDatumIsTanitasiNap(firstItem);
 | 
			
		||||
            IsValidUtolsoTanitasiNapUtanErtekeles(firstItem);
 | 
			
		||||
            if (!firstItem.IsMagatartasSzorgalom)
 | 
			
		||||
            {
 | 
			
		||||
                IsValidErtekelesModId(firstItem);
 | 
			
		||||
            }
 | 
			
		||||
            if (!IsValid)
 | 
			
		||||
            {
 | 
			
		||||
                ThrowExeption(tanuloErtekelesCoList);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            validationExceptionItemList = new List<ValidationExceptionItem>();
 | 
			
		||||
            var result = new List<TanuloErtekelesCo>();
 | 
			
		||||
 | 
			
		||||
            DataSet tanuloMentessegValidationDataSet = null;
 | 
			
		||||
            if (!firstItem.IsMagatartasSzorgalom)
 | 
			
		||||
            {
 | 
			
		||||
                var helper = new TanuloErtekelesHelper(ConnectionType);
 | 
			
		||||
                tanuloMentessegValidationDataSet = helper.ValidateTanuloListTanuloMentesseg(tanuloIdList, firstItem.TantargyId.Value, firstItem.Datum);
 | 
			
		||||
            }
 | 
			
		||||
            var osztalyCsoportHelper = new OsztalyCsoportHelper(ConnectionType);
 | 
			
		||||
            List<TantargyItemCo> tantargyCoList = new TantargyHelper(ConnectionType).GetTantargyCoList();
 | 
			
		||||
            //NOTE: Levalidáljuk az összes bejövő tanuló értékelést!
 | 
			
		||||
            foreach (TanuloErtekelesCo tanuloErtekelesCo in tanuloErtekelesCoList)
 | 
			
		||||
            {
 | 
			
		||||
                IsValid = true;
 | 
			
		||||
                //IsValidDuplikaltErtekeles(dalHandler, tanuloErtekelesCo); // web-en nincs ilyen vizsgálat és enged teljesen ugyan olyan értékelést menteni
 | 
			
		||||
                //NOTE: Az egyszer adható tanuló értékelés validációra csak akkor van szükség, ha a tanuló az osztály/csoport tagja.
 | 
			
		||||
                var isTanuloOsztalyCsoportTagja = IsValidTanuloOsztalyCsoportTagja(dalHandler, tanuloErtekelesCo, osztalyCsoportHelper);
 | 
			
		||||
                if (isTanuloOsztalyCsoportTagja)
 | 
			
		||||
                {
 | 
			
		||||
                    IsValidEgyszerAdhatoTanuloErtekeles(firstItem, new List<TanuloErtekelesCo> { tanuloErtekelesCo }, egyszerAdhatoErtekelesTipusIds);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (!firstItem.IsMagatartasSzorgalom)
 | 
			
		||||
                {
 | 
			
		||||
                    IsValidTanuloMentesseg(tanuloErtekelesCo, tanuloMentessegValidationDataSet);
 | 
			
		||||
                    IsValidErtekelesSzazalek(tanuloErtekelesCo);
 | 
			
		||||
                    IsValidSzorgalomTargykategoriaErtekeles(tanuloErtekelesCo, tantargyCoList);
 | 
			
		||||
                    IsValidErtekelesSzoveg(tanuloErtekelesCo);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (IsValid)
 | 
			
		||||
                {
 | 
			
		||||
                    result.Add(tanuloErtekelesCo);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    validationExceptionItemList.Add(new ValidationExceptionItem(tanuloErtekelesCo.TanuloId.ToString(), string.Join("; ", ErrorMessageList)));
 | 
			
		||||
                    ErrorMessageList.Clear();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return result;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThrowExeption(List<TanuloErtekelesCo> tanuloErtekelesCoList)
 | 
			
		||||
        {
 | 
			
		||||
            var validationItems = new List<ValidationExceptionItem>();
 | 
			
		||||
            foreach (TanuloErtekelesCo tanuloErtekelesCo in tanuloErtekelesCoList)
 | 
			
		||||
            {
 | 
			
		||||
                validationItems.Add(new ValidationExceptionItem(tanuloErtekelesCo.TanuloId.ToString(), string.Join("; ", ErrorMessageList)));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            throw new ValidationException(ValidationErrorType.Undefined, TanuloErtekelesResource.HibasErtekelesElem, validationItems.DistinctBy(v => v.Id));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void IsValidDuplikaltErtekeles(IDalHandler dalHandler, TanuloErtekelesCo tanuloErtekelesCo)
 | 
			
		||||
        {
 | 
			
		||||
            bool isTanuloErtekelt = dalHandler.TanuloErtekelesDal().IsTanuloErtekelt(ConnectionType.IntezmenyId, ConnectionType.TanevId, tanuloErtekelesCo.Datum, tanuloErtekelesCo.ErtekelesModId, tanuloErtekelesCo.TipusId, tanuloErtekelesCo.TantargyId.Value, tanuloErtekelesCo.ErtekelesTema, tanuloErtekelesCo.TanuloId, tanuloErtekelesCo.ErtekelesOsztalyzatId, tanuloErtekelesCo.ErtekelesSzazalek, tanuloErtekelesCo.ErtekelesSzoveg);
 | 
			
		||||
 | 
			
		||||
            if (isTanuloErtekelt)
 | 
			
		||||
            {
 | 
			
		||||
                ErrorMessageList.Add(TanuloErtekelesResource.ATanulonakEzAzErtekelesMarRogzitesreKerultKorabban);
 | 
			
		||||
                IsValid = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,97 @@
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Data;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Kreta.BusinessLogic.Classes;
 | 
			
		||||
using Kreta.BusinessLogic.HelperClasses;
 | 
			
		||||
using Kreta.BusinessLogic.Helpers;
 | 
			
		||||
using Kreta.Core.ConnectionType;
 | 
			
		||||
using Kreta.DataAccessManual;
 | 
			
		||||
 | 
			
		||||
namespace Kreta.BusinessLogic.Logic.TanuloErtekeles
 | 
			
		||||
{
 | 
			
		||||
    public class TanuloErtekelesValidacioWeb : TanuloErtekelesValidacioBase
 | 
			
		||||
    {
 | 
			
		||||
        public TanuloErtekelesValidacioWeb(IConnectionType connectionType) : base(connectionType)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Validate(List<TanuloErtekelesCo> tanuloErtekelesCoList)
 | 
			
		||||
        {
 | 
			
		||||
            //NOTE: A validációhoz szükséges közös adatok, minden egyes item-nél benne vannak és ezek megegyeznek, ezért elég ha csak a firstItem-et vizsgáljuk
 | 
			
		||||
            TanuloErtekelesCo firstItem = tanuloErtekelesCoList.FirstOrDefault();
 | 
			
		||||
            var tanuloIdList = tanuloErtekelesCoList.Select(x => x.TanuloId).ToList();
 | 
			
		||||
            //NOTE: Levalidáljuk, hogy van-e egyáltalán menteni való elem!
 | 
			
		||||
            IsExists(firstItem);
 | 
			
		||||
            if (!IsValid)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //NOTE: Levalidáljuk a közös, alap adatokat!
 | 
			
		||||
            IsValidOsztalyCsoportId(firstItem);
 | 
			
		||||
            IsValidTipusId(firstItem);
 | 
			
		||||
            IsValidDatum(firstItem);
 | 
			
		||||
 | 
			
		||||
            List<int> egyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(ConnectionType.TanevId, true).Select(x => x.Id).ToList();
 | 
			
		||||
            if (!firstItem.IsMagatartasSzorgalom)
 | 
			
		||||
            {
 | 
			
		||||
                IsValidSpecialisErtekelesOsztalyzatId(tanuloErtekelesCoList, egyszerAdhatoErtekelesTipusIds, firstItem.TipusId);
 | 
			
		||||
                IsValidErtekelesFajta(tanuloErtekelesCoList);
 | 
			
		||||
                IsValidTantargyId(firstItem);
 | 
			
		||||
                IsValidErtekelesTema(firstItem);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                IsValidMagatartasSzorgalomFajta(tanuloErtekelesCoList);
 | 
			
		||||
            }
 | 
			
		||||
            if (!IsValid)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //NOTE: Levalidáljuk a közös, alap adatokra épülő dolgokat!
 | 
			
		||||
            IsValidDatumIsTanitasiNap(firstItem);
 | 
			
		||||
            IsValidUtolsoTanitasiNapUtanErtekeles(firstItem);
 | 
			
		||||
            if (!firstItem.IsMagatartasSzorgalom)
 | 
			
		||||
            {
 | 
			
		||||
                IsValidErtekelesModId(firstItem);
 | 
			
		||||
            }
 | 
			
		||||
            if (!IsValid)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            DataSet tanuloMentessegValidationDataSet = null;
 | 
			
		||||
            if (!firstItem.IsMagatartasSzorgalom)
 | 
			
		||||
            {
 | 
			
		||||
                var helper = new TanuloErtekelesHelper(ConnectionType);
 | 
			
		||||
                tanuloMentessegValidationDataSet = helper.ValidateTanuloListTanuloMentesseg(tanuloIdList, firstItem.TantargyId.Value, firstItem.Datum);
 | 
			
		||||
            }
 | 
			
		||||
            var osztalyCsoportHelper = new OsztalyCsoportHelper(ConnectionType);
 | 
			
		||||
            List<TantargyItemCo> tantargyCoList = new TantargyHelper(ConnectionType).GetTantargyCoList();
 | 
			
		||||
            //NOTE: Levalidáljuk az összes bejövő tanuló értékelést!
 | 
			
		||||
 | 
			
		||||
            foreach (TanuloErtekelesCo tanuloErtekelesCo in tanuloErtekelesCoList)
 | 
			
		||||
            {
 | 
			
		||||
                //NOTE: Az egyszer adható tanuló értékelés validációra csak akkor van szükség, ha a tanuló az osztály/csoport tagja.
 | 
			
		||||
                var isTanuloOsztalyCsoportTagja = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
 | 
			
		||||
                {
 | 
			
		||||
                    return IsValidTanuloOsztalyCsoportTagja(dalHandler, tanuloErtekelesCo, osztalyCsoportHelper);
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                if (isTanuloOsztalyCsoportTagja)
 | 
			
		||||
                {
 | 
			
		||||
                    IsValidEgyszerAdhatoTanuloErtekeles(firstItem, new List<TanuloErtekelesCo> { tanuloErtekelesCo }, egyszerAdhatoErtekelesTipusIds);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (!firstItem.IsMagatartasSzorgalom)
 | 
			
		||||
                {
 | 
			
		||||
                    IsValidTanuloMentesseg(tanuloErtekelesCo, tanuloMentessegValidationDataSet);
 | 
			
		||||
                    IsValidErtekelesSzazalek(tanuloErtekelesCo);
 | 
			
		||||
                    IsValidSzorgalomTargykategoriaErtekeles(tanuloErtekelesCo, tantargyCoList);
 | 
			
		||||
                    IsValidErtekelesSzoveg(tanuloErtekelesCo);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user