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

250 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
namespace Kreta.BusinessLogic.Helpers
{
public class UjSzktSzakmajegyzekOsszerendelesHelper : LogicBase
{
#region Fields
private readonly IFileServiceHelper _fileServiceHelper;
#endregion Fields
public UjSzktSzakmajegyzekOsszerendelesHelper(IConnectionType connectionType) : base(connectionType) { }
public UjSzktSzakmajegyzekOsszerendelesHelper(IConnectionType connectionType, IFileServiceHelper fileServiceHelper) : base(connectionType)
{
_fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
}
public UjSzktSzakmajegyzekOsszerendelesItemCo GetUjSzktSzakmajegyzekOsszerendelesCo(int id)
{
var result = GetUjSzktSzakmajegyzekOsszerendelesCoList(new List<int> { id })?.Single();
return result;
}
public List<UjSzktSzakmajegyzekOsszerendelesItemCo> GetUjSzktSzakmajegyzekOsszerendelesCoList(List<int> ids)
{
var idsJson = CommonUtils.GetEntitasIdJson(ids);
var result = GetUjSzktSzakmajegyzekOsszerendelesCoList(idsJson);
return result;
}
public List<UjSzktSzakmajegyzekOsszerendelesItemCo> GetUjSzktSzakmajegyzekOsszerendelesCoList(UjSzktSzakmajegyzekOsszerendelesSearchCo searchCo)
{
var coList = GetUjSzktSzakmajegyzekOsszerendelesCoList();
var result = FilterCoList(coList, searchCo);
return result;
}
public void SaveUjSzktSzakmajegyzekOsszerendelesCo(UjSzktSzakmajegyzekOsszerendelesItemCo co, bool isClearDataWhenPropertyNull = true, bool isFileModify = false)
{
SaveUjSzktSzakmajegyzekOsszerendelesCoList(new List<UjSzktSzakmajegyzekOsszerendelesItemCo> { co }, isClearDataWhenPropertyNull, isFileModify);
}
public void SaveUjSzktSzakmajegyzekOsszerendelesCoList(List<UjSzktSzakmajegyzekOsszerendelesItemCo> coList, bool isClearDataWhenPropertyNull = true, bool isFileModify = false)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
foreach (var co in coList)
{
var dal = h.UjSzktSzakmajegyzekOsszerendelesDal(GridParameters);
var entity = dal.Get(co.Id.Value);
if (co.KepzesreFogadhatoTanulokSzama.HasValue)
{
entity.KepzesreFogadhatoTanulokSzama = co.KepzesreFogadhatoTanulokSzama.Value;
}
else
{
if (isClearDataWhenPropertyNull)
{
entity.KepzesreFogadhatoTanulokSzama = 0;
}
}
if (!string.IsNullOrWhiteSpace(co.EszkozallomanyAvultsaga))
{
entity.EszkozallomanyAvultsaga = co.EszkozallomanyAvultsaga;
}
else
{
if (isClearDataWhenPropertyNull)
{
entity.EszkozallomanyAvultsaga = null;
}
}
if (!string.IsNullOrWhiteSpace(co.EszkozokDarabszama))
{
entity.EszkozokDarabszama = co.EszkozokDarabszama;
}
else
{
if (isClearDataWhenPropertyNull)
{
entity.EszkozokDarabszama = null;
}
}
if (!string.IsNullOrWhiteSpace(co.EgyebEszkozallomanyInformacio))
{
entity.EgyebEszkozallomanyInformacio = co.EgyebEszkozallomanyInformacio;
}
else
{
if (isClearDataWhenPropertyNull)
{
entity.EgyebEszkozallomanyInformacio = null;
}
}
if (!string.IsNullOrWhiteSpace(co.TanmuhelyekSzama))
{
entity.TanmuhelyekSzama = co.TanmuhelyekSzama;
}
else
{
if (isClearDataWhenPropertyNull)
{
entity.TanmuhelyekSzama = null;
}
}
if (isFileModify)
{
var fileHelper = new FileHelper(new DalHandlerConnectionType(ConnectionType, h), _fileServiceHelper);
var fileId = entity.FileId;
if ((entity.FileId.IsEntityId() && co.File != null) || (entity.FileId.IsEntityId() && !co.FileId.IsEntityId()))
{
fileHelper.DeleteFile(entity.FileId, true);
fileId = -1;
}
if (co.File != null)
{
var index = co.File.ContentAsBase64EncodedString.IndexOf(',');
var rawContentAsBase64EncodedString = co.File.ContentAsBase64EncodedString.Substring(index + 1);
var path = $"UjSzktSzakmajegyzekOsszerendelesFile/{IntezmenyAzonosito}/{TanevId}/{entity.ID}";
fileId = fileHelper.UploadFile(co.File.Name, Convert.FromBase64String(rawContentAsBase64EncodedString), co.File.Type, path) ?? -1;
}
if (entity.FileId != fileId)
{
entity.FileId = fileId;
}
}
dal.FullUpdate(entity);
}
});
}
public List<OktatottSzakmaTanuloItemCo> GetOktatottSzakmaTanuloCoList(UjSzktSzakmajegyzekOsszerendelesItemCo co)
{
var searchPco = new OktatottSzakmaTanulokSearchPco
{
OktatasiNevelesiFeladatId = co.OktatasiNevelesiFeladatId.Value,
AgazatUjSzktTipusId = co.AgazatUjSzktTipusId.Value,
SzakmaTipusId = co.SzakmaTipusId,
SzakmaIranyTipusId = co.SzakmaIranyTipusId
};
var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.UjSzktSzakmajegyzekOsszerendelesDal().GetOktatottSzakmaTanuloDataSet(TanevId, searchPco));
var result = new List<OktatottSzakmaTanuloItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new OktatottSzakmaTanuloItemCo(dataRow);
result.Add(item);
}
return result;
}
public static string GetSzakkepesitesMegnevezese(int? szakmaIranyTipusId, string szakmaIranyTipusNev, string szakmaTipusNev)
{
// NOTE: A SzakkepesitesMegnevezese property-nek csak a szakma irány típus vagy szakma típus nevét kell átadni
// mindenféle évszám vagy azonosító nélkül, ezért, ha van ilyen, akkor levágjuk azokat.
if (!string.IsNullOrWhiteSpace(szakmaIranyTipusNev) && szakmaIranyTipusId != (int)SzakmairanyTipusEnum.na)
{
return szakmaIranyTipusNev.EndsWith("(2020)") ?
szakmaIranyTipusNev.Substring(0, szakmaIranyTipusNev.Length - 7) : // NOTE: Pl.: Vegyipar (2020)
szakmaIranyTipusNev;
}
if (szakmaTipusNev.EndsWith(")"))
{
return szakmaTipusNev.EndsWith("(2020)") ?
szakmaTipusNev.Substring(0, szakmaTipusNev.Length - 22) : // NOTE: Pl.: Műanyag-feldolgozó - 4 0722 24 04 (2020)
szakmaTipusNev.Substring(0, szakmaTipusNev.Length - 15); // NOTE: Pl.: Csecsemő- és gyermekápoló (5 0913 03 04)
}
return szakmaTipusNev;
}
private List<UjSzktSzakmajegyzekOsszerendelesItemCo> GetUjSzktSzakmajegyzekOsszerendelesCoList(string idsJson = null)
{
var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler =>
dalHandler.UjSzktSzakmajegyzekOsszerendelesDal().GetUjSzktSzakmajegyzekOsszerendelesDataSet(TanevId, idsJson));
var result = new List<UjSzktSzakmajegyzekOsszerendelesItemCo>();
result.AddRange(dataSet.Tables[0].AsEnumerable().Select(x => new UjSzktSzakmajegyzekOsszerendelesItemCo(x)));
return result;
}
private static List<UjSzktSzakmajegyzekOsszerendelesItemCo> FilterCoList(List<UjSzktSzakmajegyzekOsszerendelesItemCo> coList, UjSzktSzakmajegyzekOsszerendelesSearchCo searchCo)
{
if (searchCo == null)
{
return coList;
}
IEnumerable<UjSzktSzakmajegyzekOsszerendelesItemCo> result = coList;
if (!string.IsNullOrWhiteSpace(searchCo.SzakkepesitesMegnevezese))
{
result = result.Where(x => x.SzakkepesitesMegnevezese.ToUpper().Contains(searchCo.SzakkepesitesMegnevezese.ToUpper()));
}
if (searchCo.AgazatiBesorolas.HasValue)
{
result = result.Where(x => x.AgazatiBesorolas == searchCo.AgazatiBesorolas);
}
if (!string.IsNullOrWhiteSpace(searchCo.SzakkepesitesAzonositoszam))
{
result = result.Where(x => x.SzakkepesitesAzonositoszam.ToUpper().Contains(searchCo.SzakkepesitesAzonositoszam.ToUpper()));
}
if (searchCo.JelenlegZajloKepzes.HasValue)
{
result = result.Where(x => x.JelenlegZajloKepzes == searchCo.JelenlegZajloKepzes);
}
if (searchCo.KepzesreFogadhatoTanulokSzama.HasValue)
{
result = result.Where(x => x.KepzesreFogadhatoTanulokSzama == searchCo.KepzesreFogadhatoTanulokSzama);
}
if (searchCo.JelenlegKepzettTanulokSzama.HasValue)
{
result = result.Where(x => x.JelenlegKepzettTanulokSzama == searchCo.JelenlegKepzettTanulokSzama);
}
return result.ToList();
}
}
}