using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Classes.ComboBox; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Logic; using Kreta.BusinessLogic.Utils; using Kreta.Core; using Kreta.Core.ConnectionType; using Kreta.Core.Exceptions; using Kreta.DataAccessManual; using Kreta.DataAccessManual.Util; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Resources; using OfficeOpenXml; namespace Kreta.BusinessLogic.Helpers { public class FeladatEllatasiHelyHelper : LogicBase { public FeladatEllatasiHelyHelper(IConnectionType connectionType) : base(connectionType) { } public List GetFeladatKategoriakForLogin(int aktTanevId, int? kovTanevId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.FeladatEllatasiHelyDal(); return dal.GetFeladatKategoriakForLogin(aktTanevId, kovTanevId, IntezmenyId); }); } public FeladatEllatasiHelyCO GetFeladatEllatasiHelyAdatok(int ID) { return Dal.CustomConnection.Run(ConnectionType, h => { var feladathely = h.FeladatEllatasiHelyDal().Get(ID); if (feladathely != null) { return new FeladatEllatasiHelyCO { ID = feladathely.ID, OktatasiNevelesiFeladat = feladathely.OktatasiNevelesiFeladatTipus, MukodesiHelyID = feladathely.MukodesiHelyId, OktatasiNevelesiFeladatNev = feladathely.OktatasiNevelesiFeladatTipus.GetDisplayName(TanevId).ReplaceMultipleSpacesAndTrim(), MukodesiHelyNev = feladathely.MukodesiHely.Nev.ReplaceMultipleSpacesAndTrim(), KIRFeladatellatasiHelySorszama = feladathely.FeladatellatasiHelyKod }; } return null; }); } public void SaveFeladatEllatasiHelyAdatok(FeladatEllatasiHelyCO model) { Dal.CustomConnection.Run(ConnectionType, h => { if (!model.OktatasiNevelesiFeladat.IsEntityId()) { throw new ArgumentNullException(nameof(model.OktatasiNevelesiFeladat)); } var dal = h.FeladatEllatasiHelyDal(GridParameters); var ellatottFeladatDal = h.OktatasNevelesiFeladatDal(); var entity = h.FeladatEllatasiHelyDal().Get(); if (model.ID.HasValue) { entity = dal.Get(model.ID.Value); if (!ellatottFeladatDal.IsAzonosKategoria(entity.OktatasiNevelesiFeladatTipus, model.OktatasiNevelesiFeladat.Value)) { if (dal.IsMukodesiHelyNemModosithato(entity.TanevId, entity.ID)) { throw new BlException(ErrorResource.KoznevelesiFeladatNemModosithato); } } } entity.OktatasiNevelesiFeladatTipus = model.OktatasiNevelesiFeladat.Value; entity.MukodesiHelyId = model.MukodesiHelyID; entity.FeladatellatasiHelyKod = model.KIRFeladatellatasiHelySorszama; entity.TanevId = model.TanevId; if (model.ID.HasValue == false) { dal.Insert(entity); } else { dal.Update(entity); } }); } public void FeladatEllatasiHelyTorles(int ID) { Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.FeladatEllatasiHelyDal(GridParameters); dal.Delete(ID); }); } public DataSet GetFeladatEllatasiHelyByMukodesiHelyID(int mukodesiHelyID) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.FeladatEllatasiHelyDal(GridParameters); var ds = dal.GetFeladatEllatasiHelyByMukodesiHelyID(mukodesiHelyID, TanevId); return ds; }); } public DataSet GetFeladatellatasiHelyByFeladatellatasiHelyNev(string feladatellatasiHelyNev) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.FeladatEllatasiHelyDal(GridParameters); var ds = dal.GetFeladatellatasiHelyByFeladatellatasiHelyNev(feladatellatasiHelyNev, TanevId); return ds; }); } public List GetGetFeladatEllatasiHelyIdListByMukodesiHelyID(int mukodesiHelyId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.FeladatEllatasiHelyDal(GridParameters); var ds = dal.GetFeladatEllatasiHelyByMukodesiHelyID(mukodesiHelyId, TanevId); var ret = new List(); foreach (DataRow row in ds.Tables[0].Rows) { ret.Add(Convert.ToInt32(row["OktatasiNevelesiFeladatTipus"])); } return ret; }); } public DataSet GetFeladatellatasiHelyOsztalycsoportjai(int feladellHelyID) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.FeladatEllatasiHelyDal(GridParameters); return dal.GetFeladatellatasiHelyOsztalycsoportjai(feladellHelyID, TanevId); }); } public DataSet GetFeladatellatasiHelyAlkalmazottjai(int feladellHelyID) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.FeladatEllatasiHelyDal(GridParameters); return dal.GetFeladatellatasiHelyAlkalmazottjai(feladellHelyID, TanevId); }); } public DataSet GetFeladatellatasiHelyhezTartozoEvfolyamtipusokSzama(int feladHelyID) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.FeladatEllatasiHelyDal(); return dal.GetFeladatellatasiHelyhezTartozoEvfolyamtipusok(feladHelyID); }); } public IDictionary GetFeladatEllatasiHelyDDl(string baseText = null, int? feladatKategoriaId = null, bool? hasKovTanev = null, int? customTanevId = null, bool forSzirStatTanulo = false) { return Dal.CustomConnection.Run(ConnectionType, h => { var tanevId = customTanevId.HasValue ? customTanevId.Value : TanevId; return LogicUtil.CreateDropdownContent(h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyekForkDropDown(tanevId, feladatKategoriaId: feladatKategoriaId, hasKovTanev: hasKovTanev, forSzirStatTanulo: forSzirStatTanulo), "ID", "Nev", baseText); }); } public List GetFeladatEllatasiHelyDdlForEsl(string baseText = null) { return Dal.CustomConnection.Run(ConnectionType, h => { var dictionary = LogicUtil.CreateDropdownContent(h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyekForkDropDown(TanevId, true), "ID", "Nev", baseText); var dropdownListItems = new List(); foreach (var item in dictionary) { var comboBoxListItem = new ComboBoxListItem { Text = item.Value, Value = item.Key }; dropdownListItems.Add(comboBoxListItem); } return dropdownListItems; }); } public Dictionary GetFeladatellatasiHelyIsSzakkepzesesDictionary() { return Dal.CustomConnection.Run(ConnectionType, h => { var dictionary = new Dictionary(); var ds = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyekForkDropDown(TanevId); if (ds.Tables[0].Rows.Count > 0) { var rows = ds.Tables[0].Rows; foreach (DataRow row in rows) { var id = (int)row["ID"]; var isSzakkepzeses = IsSzakkepzesesOktNevFel((int)row["OktNevFel"]); dictionary.Add(id, isSzakkepzeses); } } return dictionary; }); } public Dictionary GetFeladatellatasiHelyIsNkt() { return Dal.CustomConnection.Run(ConnectionType, h => { var dictionary = new Dictionary(); var ds = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyekForkDropDown(TanevId); if (ds.Tables[0].Rows.Count > 0) { var rows = ds.Tables[0].Rows; foreach (DataRow row in rows) { var id = (int)row["ID"]; var isNkt = IsNKTSzakkepzesesOktNevFel((int)row["OktNevFel"]); dictionary.Add(id, isNkt); } } return dictionary; }); } public List GetIdsBySelectedOktatasiNevelesiFeladat(int oktatasiNevelesiFeladatId) { return Dal.CustomConnection.Run(ConnectionType, h => { return h.FeladatEllatasiHelyDal(GridParameters).GetFeladatellatasiHelyIdsBySelectedOktatasiNevelesiFeladat(TanevId, oktatasiNevelesiFeladatId); }); } private bool IsSzakkepzesesOktNevFel(int oktNevFel) { return oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakkozepiskola || oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakiskola || oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakgimnazium || oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakgimnazium_muveszeti_pedagogiai_kozmuvelodesi_ || oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakgimnazium_nemzetisegi_ || oktNevFel == (int)OktatasiNevelesiFeladatEnum.felnottkepzes || oktNevFel == (int)OktatasiNevelesiFeladatEnum.felnottoktatas || oktNevFel == (int)OktatasiNevelesiFeladatEnum.szakkepzo_iskola || oktNevFel == (int)OktatasiNevelesiFeladatEnum.technikum ; } private bool IsNKTSzakkepzesesOktNevFel(int oktNevFel) { return IsSzakkepzesesOktNevFel(oktNevFel) || oktNevFel == (int)OktatasiNevelesiFeladatEnum.MuveszetiSzakgimnazium ; } public Dictionary GetOsztalyJellemzoi(int? osztalyId = null, int? tanulocsoportId = null) { return Dal.CustomConnection.Run(ConnectionType, h => { var osztalycsoportId = osztalyId.HasValue ? osztalyId.Value : default; if (!osztalycsoportId.IsEntityId() && tanulocsoportId.IsEntityId()) { osztalycsoportId = h.TanuloCsoport().Get(tanulocsoportId.Value).OsztalyCsoportId; } var result = new Dictionary(); var ds = new DataSet(); if (osztalycsoportId.IsEntityId()) { var feladHelyId = new OsztalyCsoportHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatEllatasiHelyByOsztalyId(osztalycsoportId); ds = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyOktatasiNevelesiFeladatok(feladHelyId); } else { ds = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyekForkDropDown(TanevId); } result.Add(OsztalyJellemzoEnum.IsSzakkepzeses, IsSzakkepzesesDS(ds)); result.Add(OsztalyJellemzoEnum.IsNKTSzakkepzeses, IsNKTSzakkepzesesDS(ds)); return result; }); } public bool IsGimnazium(int osztalyId, int oktatasiNevelesiFeladatId) { return Dal.CustomConnection.Run(ConnectionType, h => { var feladatEllatasiHelyId = new OsztalyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetClassById(osztalyId).FeladatEllatasiHelyId; var gimnaziumFeladHelyId = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatellatasiHelyIdsBySelectedOktatasiNevelesiFeladat(TanevId, oktatasiNevelesiFeladatId); return gimnaziumFeladHelyId.Contains(feladatEllatasiHelyId); }); } public bool IsSzakkepzeses(int id) { return Dal.CustomConnection.Run(ConnectionType, h => { var ds = h.FeladatEllatasiHelyDal(GridParameters).GetFeladatEllatasiHelyOktatasiNevelesiFeladatok(id); return IsSzakkepzesesDS(ds); }); } private bool IsSzakkepzesesDS(DataSet ds) { if (ds.Tables[0].Rows.Count > 0) { var rows = ds.Tables[0].Rows; foreach (DataRow row in rows) { if (IsSzakkepzesesOktNevFel((int)row["OktNevFel"])) { return true; } } } return false; } private bool IsNKTSzakkepzesesDS(DataSet ds) { if (ds.Tables[0].Rows.Count > 0) { var rows = ds.Tables[0].Rows; foreach (DataRow row in rows) { if (IsNKTSzakkepzesesOktNevFel((int)row["OktNevFel"])) { return true; } } } return false; } #region Export public byte[] GetMukodesiHelyekAdataiExcelExport() { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.FeladatEllatasiHelyDal(); var dataTable = dal.GetMukodesiHelyekAdataiExcelExport(TanevId).Tables[0]; using (var stream = new MemoryStream()) { using (var excel = new ExcelPackage(stream)) { var workSheet = excel.Workbook.Worksheets.Add(IntezmenyResource.MukodesiHelyekAdatai); workSheet.Cells[1, 1].LoadFromDataTable(dataTable, true); ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, dataTable.Columns.Count]); workSheet.Cells.AutoFitColumns(); excel.Save(); } stream.Position = 0; return stream.ToArray(); } }); } #endregion public int GetMukodesiHelyIdByFeladatellatasiHelyId(int feladatellatasiHelyId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var feladatellatasiHely = h.FeladatEllatasiHelyDal().Get(feladatellatasiHelyId); var result = feladatellatasiHely.MukodesiHelyId; return result; }); } public int GetFeladatKategoriaId(int feladatEllatasiHelyId) { return Dal.CustomConnection.Run(ConnectionType, h => { return h.FeladatEllatasiHelyDal().GetFeladatKategoriaId(feladatEllatasiHelyId); }); } public bool IsAzonosKategoria(int oldFeladhelyId, int newFeladhelyId) { return Dal.CustomConnection.Run(ConnectionType, h => { return h.FeladatEllatasiHelyDal().IsAzonosKategoria(oldFeladhelyId, newFeladhelyId); }); } public List GetFeladatKategoriak() { return Dal.CustomConnection.Run(ConnectionType, h => { return h.FeladatEllatasiHelyDal().GetFeladatKategoriak(TanevId, IntezmenyId).Cast().ToList(); }); } public int GetKovTanevIdByAktTanevId(int id) { return Dal.CustomConnection.Run(ConnectionType, h => { var fDal = h.FeladatEllatasiHelyDal(); return fDal.GetKovTanevIdByAktTanevId(id); }); } } }