kreta/Kreta.BusinessLogic/Helpers/SzervezetHelper.cs
2024-03-13 00:33:46 +01:00

243 lines
10 KiB
C#

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<string>();
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<DualisKepzohelyCo> 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<int>() : h.SzervezetDal().GetLathatoSzervezetek(IntezmenyId, TanevId, felhasznaloSzervezetId, (int)SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek);
var intezmenyiAdminIds = felhasznaloSzervezetId.IsEntityId() ? new List<int>() : h.Felhasznalo().GetAllIntezmenyiAdmin(TanevId);
return dataSet.Tables[0].AsEnumerable().Select(dataRow =>
{
var szervezetId = dataRow.Field<int?>("SzervezetId");
var isSzerkesztheto = (felhasznaloSzervezetId.IsEntityId() && szervezetId.IsEntityId() && szervezetIds.Contains(szervezetId.Value)) ||
(!felhasznaloSzervezetId.IsEntityId() && intezmenyiAdminIds.Contains(FelhasznaloId) && intezmenyiAdminIds.Contains(dataRow.Field<int?>("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<DualisEntityCo> 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<DualisEntityCo>();
result.AddRange(dataSet.Tables[0].AsEnumerable().Select(x => new DualisEntityCo(x)));
return result;
});
}
#endregion
#region Common Functions
/// <summary>
/// Visszaadjuk a látható szervezet id-k listáját.
/// </summary>
/// <param name="szervezetId">A szervezetId alapján adjuk vissza a látható szervezet id-k listáját.</param>
/// <param name="szervezetAdatokHalmaza">A szervezetAdatokHalmaza dönti el, hogy milyen szervezeti szinten adjuk vissza a szervezet id-k listáját.</param>
/// <param name="isDefaultValueNull">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.</param>
public List<int> 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
}
}