using System.Collections.Generic; using System.Data; using System.Linq; using Kreta.BusinessLogic.Exceptions; using Kreta.BusinessLogic.HelperClasses; using Kreta.Core; using Kreta.Core.ConnectionType; using Kreta.DataAccessManual; using Kreta.Enums.ManualEnums; using Kreta.Resources; namespace Kreta.BusinessLogic.Helpers { public class SzervezetHelper : LogicBase { public SzervezetHelper(IConnectionType connectionType) : base(connectionType) { } #region DualisKepzohely Functions public DualisKepzohelyCo GetDualisKepzohelyById(int pId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.SzervezetDal(); var dualisKepzohely = dal.Get(pId); var co = new DualisKepzohelyCo { ID = dualisKepzohely.ID, KepzohelyAdoszama = dualisKepzohely.Azonosito, KepzohelyNeve = dualisKepzohely.Nev, KepzohelyCime = dualisKepzohely.Szervezetcim, HelyszinTipusId = dualisKepzohely.DualishelyszintipusId, ParentSzervezetId = dualisKepzohely.ParentSzervezetId, }; return co; }); } public int InsertOrUpdateDualisKepzohely(DualisKepzohelyCo co) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.SzervezetDal(); var entity = DualisKepzohelyCo.CoToSzervezetEntity(dal.Get(co.ID), co); entity.TanevId = TanevId; if (co.ID.IsEntityId()) { dal.Update(entity); UpdateAlszervezetAdoszam(entity.ID, co.KepzohelyAdoszama); } else { dal.Insert(entity); } return entity.ID; }); } public void DeleteDualisKepzohely(int id) { Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.SzervezetDal(); var entity = dal.Get(id); var nemToroltTanulok = entity.TanuloTanugyiAdatok.Where(x => x.Torolt == false).ToList(); var nemToroltCsoportok = entity.Csoport.Where(x => x.Torolt == false).ToList(); var nemToroltMunkaugyiAdatok = entity.MunkaugyiAdatok.Where(x => x.Torolt == false).ToList(); var nemToroltTerem = entity.Terem.Where(x => x.Torolt == false).ToList(); var nemToroltTantargy = entity.Tantargy.Where(x => x.Torolt == false).ToList(); var errorMsg = new List(); if (nemToroltTanulok.Any()) { errorMsg.Add($"{nemToroltTanulok.Count} db tanulóval"); } if (nemToroltCsoportok.Any()) { errorMsg.Add($"{nemToroltCsoportok.Count} db csoporttal"); } if (nemToroltMunkaugyiAdatok.Any()) { errorMsg.Add($"{nemToroltMunkaugyiAdatok.Count} db oktatóval"); } if (nemToroltTerem.Any()) { errorMsg.Add($"{nemToroltTerem.Count} db helyszinnel"); } if (nemToroltTantargy.Any()) { errorMsg.Add($"{nemToroltTantargy.Count} db tantárggyal"); } if (errorMsg.Count > 0) { throw new CannotBeDeletedException(string.Format(DualisResource.ATorolniKivantDKRendelkezikXDarabKapcsolatokkalBiztosFolytatja, entity.Nev, string.Join(", ", errorMsg))); } dal.Delete(entity); }); } public List GetDualisKepzohelyekListajaCoList(DualisKepzohelySearchCo searchCo, int adatokHalmaza, int? felhasznaloSzervezetId) { var result = Dal.CustomConnection.Run(ConnectionType, h => { var dataSet = GetDualisKepzohelyek(searchCo, adatokHalmaza); var szervezetIds = !felhasznaloSzervezetId.IsEntityId() ? new List() : h.SzervezetDal().GetLathatoSzervezetek(IntezmenyId, TanevId, felhasznaloSzervezetId, (int)SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek); var intezmenyiAdminIds = felhasznaloSzervezetId.IsEntityId() ? new List() : h.Felhasznalo().GetAllIntezmenyiAdmin(TanevId); return dataSet.Tables[0].AsEnumerable().Select(dataRow => { var szervezetId = dataRow.Field("SzervezetId"); var isSzerkesztheto = (felhasznaloSzervezetId.IsEntityId() && szervezetId.IsEntityId() && szervezetIds.Contains(szervezetId.Value)) || (!felhasznaloSzervezetId.IsEntityId() && intezmenyiAdminIds.Contains(FelhasznaloId) && intezmenyiAdminIds.Contains(dataRow.Field("RogzitoId") ?? FelhasznaloId)); return new DualisKepzohelyCo(dataRow, isSzerkesztheto); }).ToList(); }); return result; } private DataSet GetDualisKepzohelyek(DualisKepzohelySearchCo searchCo, int adatokHalmaza) { var result = Dal.CustomConnection.Run(ConnectionType, h => h.SzervezetDal(GridParameters).GetSzervezetAdatok(searchCo.ConvertToPCO(), IntezmenyId, TanevId, adatokHalmaza)); return result; } public DataSet GetDualisKepzohelyCsoportjai(int szervezetId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.SzervezetDal(GridParameters); return dal.GetSzervezetCsoportjai(TanevId, szervezetId); }); } public DataSet GetDualisKepzohelyHelyszinjei(int szervezetId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.SzervezetDal(GridParameters); return dal.GetSzervezetHelyszinei(TanevId, szervezetId); }); } public DataSet GetDualisKepzohelyOktatoi(int szervezetId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.SzervezetDal(GridParameters); return dal.GetSzervezetOktatoi(TanevId, szervezetId); }); } public DataSet GetDualisKepzohelyTanuloi(int szervezetId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.SzervezetDal(GridParameters); return dal.GetSzervezetTanuloi(TanevId, szervezetId); }); } public DataSet GetDualisKepzohelyTantargyai(int szervezetId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.SzervezetDal(GridParameters); return dal.GetSzervezetTantargyai(TanevId, szervezetId); }); } public List GetEntitySzervezetList(int entityId, string entityName) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.SzervezetDal(); var dataSet = dal.GetEntitySzervezetList(entityId, entityName); var result = new List(); result.AddRange(dataSet.Tables[0].AsEnumerable().Select(x => new DualisEntityCo(x))); return result; }); } #endregion #region Common Functions /// /// Visszaadjuk a látható szervezet id-k listáját. /// /// A szervezetId alapján adjuk vissza a látható szervezet id-k listáját. /// A szervezetAdatokHalmaza dönti el, hogy milyen szervezeti szinten adjuk vissza a szervezet id-k listáját. /// A isDefaultValueNull határozza meg, hogyha a szervezetId értéke null, akkor a visszatérési érték null legyen vagy amit a GetLathatoSzervezetek függvény visszaad. public List GetLathatoSzervezetIdList( int? szervezetId, SzervezetAdatokHalmazaEnum szervezetAdatokHalmaza, bool isDefaultValueNull = false) { if (!szervezetId.IsEntityId() && isDefaultValueNull) { return null; } var result = Dal.CustomConnection.Run(ConnectionType, h => h.SzervezetDal(GridParameters).GetLathatoSzervezetek(IntezmenyId, TanevId, szervezetId, (int)szervezetAdatokHalmaza)); return result; } public bool IsAlkalmazottSzervezeti(int felhasznaloId) { var szervezetId = GetAlkalmazottSzervezetId(felhasznaloId); var result = szervezetId.IsEntityId(); return result; } public int? GetAlkalmazottSzervezetId(int felhasznaloId) { var result = Dal.CustomConnection.Run(ConnectionType, h => h.Alkalmazott(GridParameters).GetSzervezetId(TanevId, felhasznaloId)); return result; } public void UpdateAlszervezetAdoszam(int szervezetId, string adoszam) { var alszervezetek = GetDualisKepzohelyekListajaCoList(new DualisKepzohelySearchCo() { SzervezetId = szervezetId }, (int)SzervezetAdatokHalmazaEnum.Alszervezetek, null); if (alszervezetek.Any(x => x.KepzohelyAdoszama != adoszam)) { Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.SzervezetDal(); foreach (var alszervezet in alszervezetek) { alszervezet.KepzohelyAdoszama = adoszam; var entity = DualisKepzohelyCo.CoToSzervezetEntity(dal.Get(alszervezet.ID), alszervezet); if (alszervezet.ID.IsEntityId()) { dal.Update(entity); } } }); } } #endregion Common Functions } }