243 lines
10 KiB
C#
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
|
|
}
|
|
}
|