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

409 lines
19 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.DokumentumHelpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Logic.TanuloErtekeles;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.Helpers
{
public class TanuloErtekelesMondatbankHelper : LogicBase
{
#region Fields
public const int MagatartasTantargyId = -2;
public const int SzorgalomTantargyId = -1;
#endregion
#region Constructors
public TanuloErtekelesMondatbankHelper(IConnectionType connectionType) : base(connectionType) { }
#endregion Constructors
public DataSet GetTanuloErtekelesMondatbankGrid(TanuloErtekelesMondatbankSearchCO tanuloErtekelesMondatbankSearchCO)
{
var evfolyamTipusIds = tanuloErtekelesMondatbankSearchCO.EvfolyamTipusIdList.Count > 0 ? string.Join(",", tanuloErtekelesMondatbankSearchCO.EvfolyamTipusIdList) : null;
var tanuloErtekelesTipusIds = tanuloErtekelesMondatbankSearchCO.TanuloErtekelesTipusIdList.Count > 0 ? string.Join(",", tanuloErtekelesMondatbankSearchCO.TanuloErtekelesTipusIdList) : null;
var tantargyTipusIdJSON = tanuloErtekelesMondatbankSearchCO.TantargyIdList.Count > 0 ? JsonConvert.SerializeObject(tanuloErtekelesMondatbankSearchCO.TantargyIdList) : null;
return Dal.CustomConnection.Run(ConnectionType, h =>
{
DataSet dataSet = h.TanuloErtekelesMondatbankDal(GridParameters).GetTanuloErtekelesMondatbankSzuresData(TanevId, evfolyamTipusIds, tanuloErtekelesTipusIds, tantargyTipusIdJSON, tanuloErtekelesMondatbankSearchCO.RovidNev, tanuloErtekelesMondatbankSearchCO.Szoveg);
foreach (DataRow dataRow in dataSet.Tables[0].Rows.Cast<DataRow>().ToList())
{
dataRow["Szoveg"] = RichTextLogic.CutHtmlTagsAndDecodeAndBR2Space(dataRow["Szoveg"].ToString());
}
return dataSet;
});
}
public DataSet GetMondatbankSelectListData(int tanuloErtekelesTipusId, int tipusId, int? tantargyId, int? evfolyamTipusId)
{
DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("MondatbankSelectPopupId", typeof(int)));
dataTable.Columns.Add(new DataColumn("MondatbankSelectPopupRovidNev", typeof(string)));
dataTable.Columns.Add(new DataColumn("MondatbankSelectPopupSzoveg", typeof(string)));
dataTable.Columns.Add(new DataColumn("MondatbankSelectPopupSzovegNemet", typeof(string)));
dataTable.Columns.Add(new DataColumn("MondatbankSelectPopupSzovegHorvat", typeof(string)));
dataTable.Columns.Add(new DataColumn("MondatbankSelectPopupSzovegRoman", typeof(string)));
dataTable.Columns.Add(new DataColumn("MondatbankSelectPopupSzovegSzerb", typeof(string)));
List<TanuloErtekelesMondatbankItemCo> tanuloErtekelesMondatbankItemCos = GetTanuloErtekelesMondatbankCoList(tanuloErtekelesTipusId, tipusId, tantargyId, evfolyamTipusId);
foreach (TanuloErtekelesMondatbankItemCo item in tanuloErtekelesMondatbankItemCos)
{
DataRow dataRow = dataTable.NewRow();
dataRow["MondatbankSelectPopupId"] = item.Id;
dataRow["MondatbankSelectPopupRovidNev"] = item.RovidNev;
dataRow["MondatbankSelectPopupSzoveg"] = item.Szoveg;
dataRow["MondatbankSelectPopupSzovegNemet"] = item.SzovegNemet;
dataRow["MondatbankSelectPopupSzovegHorvat"] = item.SzovegHorvat;
dataRow["MondatbankSelectPopupSzovegRoman"] = item.SzovegRoman;
dataRow["MondatbankSelectPopupSzovegSzerb"] = item.SzovegSzerb;
dataTable.Rows.Add(dataRow);
}
dataSet.Tables.Add(dataTable);
return dataSet;
}
public List<TanuloErtekelesMondatbankItemCo> GetTanuloErtekelesMondatbankCoList(int? tanuloErtekelesTipusId = null, int? tipusId = null, int? tantargyId = null, int? evfolyamTipusId = null)
{
DataSet dataSet = null;
List<int> nemzetiDokumentumNyelvek = null;
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
dataSet = dalHandler.TanuloErtekelesMondatbankDal(GridParameters).GetTanuloErtekelesMondatbankData(TanevId, tanuloErtekelesTipusId, tipusId, tantargyId, evfolyamTipusId);
nemzetiDokumentumNyelvek = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek);
});
var result = new List<TanuloErtekelesMondatbankItemCo>();
foreach (DataRow row in dataSet.Tables[0].Rows)
{
int id = SDAConvert.ToInt32(row["Id"]);
int? nyelvId = SDAConvert.ToNullableInt32(row["NyelvId"]);
string szovegNyelv = SDAConvert.ToString(row["SzovegNyelv"]).ReplaceMultipleSpacesAndTrim();
TanuloErtekelesMondatbankItemCo item = result.SingleOrDefault(x => x.Id == id);
if (item == null)
{
string rovidNev = SDAConvert.ToString(row["RovidNev"]).ReplaceMultipleSpacesAndTrim();
string szoveg = SDAConvert.ToString(row["Szoveg"]).ReplaceMultipleSpacesAndTrim();
string tanuloErtekelesTipusNev = !string.IsNullOrWhiteSpace(SDAConvert.ToString(row["TanuloErtekelesTipusId_DNAME"])) ? SDAConvert.ToString(row["TanuloErtekelesTipusId_DNAME"]) : CommonResource.Mind;
string tantargyNev = !string.IsNullOrWhiteSpace(SDAConvert.ToString(row["TantargyNev"]).ReplaceMultipleSpacesAndTrim()) ? SDAConvert.ToString(row["TantargyNev"]).ReplaceMultipleSpacesAndTrim() : CommonResource.Mind;
string evfolyamTipusNev = !string.IsNullOrWhiteSpace(SDAConvert.ToString(row["EvfolyamTipusId_DNAME"])) ? SDAConvert.ToString(row["EvfolyamTipusId_DNAME"]) : CommonResource.Mind;
item = new TanuloErtekelesMondatbankItemCo
{
Id = id,
RovidNev = rovidNev,
RovidNevComparableString = rovidNev?.ToComparableString(),
Szoveg = szoveg,
SzovegComparableString = szoveg?.ToComparableString(),
TanuloErtekelesTipusId = SDAConvert.ToNullableInt32(row["TanuloErtekelesTipusId"]) ?? 0,
TanuloErtekelesTipusNev = tanuloErtekelesTipusNev,
TanuloErtekelesTipusNevComparableString = tanuloErtekelesTipusNev?.ToComparableString(),
TipusId = SDAConvert.ToInt32(row["TipusId"]),
TipusNev = SDAConvert.ToString(row["TipusId_DNAME"]),
TantargyId = SDAConvert.ToNullableInt32(row["TantargyId"]) ?? 0,
TantargyNev = tantargyNev,
TantargyNevComparableString = tantargyNev?.ToComparableString(),
EvfolyamTipusId = SDAConvert.ToNullableInt32(row["EvfolyamTipusId"]) ?? 0,
EvfolyamTipusNev = evfolyamTipusNev,
EvfolyamTipusNevComparableString = evfolyamTipusNev?.ToComparableString(),
Importalt = SDAConvert.ToBooleanFromTF(row["Importalt"])
};
result.Add(item);
}
if (nemzetiDokumentumNyelvek.Any())
{
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.nemet) && nyelvId.IsEntityId() && nyelvId == (int)AnyanyelvEnum.nemet)
{
item.SzovegNemet = szovegNyelv;
}
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.horvat) && nyelvId.IsEntityId() && nyelvId == (int)AnyanyelvEnum.horvat)
{
item.SzovegHorvat = szovegNyelv;
}
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.roman) && nyelvId.IsEntityId() && nyelvId == (int)AnyanyelvEnum.roman)
{
item.SzovegRoman = szovegNyelv;
}
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.szerb) && nyelvId.IsEntityId() && nyelvId == (int)AnyanyelvEnum.szerb)
{
item.SzovegSzerb = szovegNyelv;
}
}
}
return result;
}
public TanuloErtekelesMondatbankItemCo GetTanuloErtekelesMondatbankItemById(int id)
{
IErtekelesMondatbank ertekelesMondatbank = null;
TanuloErtekelesMondatbankItemCo result = null;
List<int> nemzetiDokumentumNyelvek = null;
Dal.CustomConnection.Run(ConnectionType, dalHandler =>
{
ertekelesMondatbank = dalHandler.TanuloErtekelesMondatbankDal().Get(id);
nemzetiDokumentumNyelvek = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek);
result = new TanuloErtekelesMondatbankItemCo(ertekelesMondatbank, nemzetiDokumentumNyelvek, TanevId);
});
return result;
}
public void SaveTanuloErtekelesMondatbankItem(TanuloErtekelesMondatbankItemCo co)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
ITanuloErtekelesMondatbankDal dal = h.TanuloErtekelesMondatbankDal();
bool isNew = !co.Id.IsEntityId();
var entity = isNew ? dal.Get() : dal.Get(co.Id.Value);
entity.RovidNev = co.RovidNev.ReplaceMultipleSpacesAndTrim();
string ertekelesSzovegFormazott = RichTextLogic.GetLegalHtmlString(co.Szoveg.Trim(), RichTextLogic.LegalFastReportHtmlTagList, true);
entity.Szoveg = ertekelesSzovegFormazott;
entity.ErtekelesTipusa = co.TanuloErtekelesTipusId;
entity.EvfolyamTipusa = co.EvfolyamTipusId;
if (co.TantargyId.IsEntityId())
{
entity.TantargyId = co.TantargyId.Value;
}
else if (entity.Tantargy != null)
{
entity.Tantargy = null;
}
entity.TipusId = co.TipusId;
if (isNew)
{
dal.Insert(entity);
}
else
{
dal.FullUpdate(entity);
}
List<int> nemzetiDokumentumNyelvek = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek);
if (nemzetiDokumentumNyelvek.Any() && entity.ErtekelesTipusa.IsEntityId() && TanuloErtekelesLogicBase.NyelviesithetoTanuloErtekelesTipusIdList.Contains(entity.ErtekelesTipusa.Value))
{
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.nemet))
{
InsertOrUpdateMondatbankNyelv(dal, entity, AnyanyelvEnum.nemet, co.SzovegNemet);
}
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.horvat))
{
InsertOrUpdateMondatbankNyelv(dal, entity, AnyanyelvEnum.horvat, co.SzovegHorvat);
}
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.roman))
{
InsertOrUpdateMondatbankNyelv(dal, entity, AnyanyelvEnum.roman, co.SzovegRoman);
}
if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.szerb))
{
InsertOrUpdateMondatbankNyelv(dal, entity, AnyanyelvEnum.szerb, co.SzovegSzerb);
}
}
});
}
private void InsertOrUpdateMondatbankNyelv(ITanuloErtekelesMondatbankDal dal, IErtekelesMondatbank entity, AnyanyelvEnum nyelvEnum, string szoveg)
{
IErtekelesMondatbankNyelv nyelvEntity = entity.ErtekelesMondatbankNyelv.FirstOrDefault(x => x.NyelvId == (int)nyelvEnum);
if (nyelvEntity != null)
{
nyelvEntity.Szoveg = szoveg;
if (string.IsNullOrWhiteSpace(nyelvEntity.Szoveg) && string.IsNullOrWhiteSpace(nyelvEntity.RovidNev))
{
dal.DeleteNyelv(nyelvEntity);
}
else
{
dal.FullUpdateNyelv(nyelvEntity);
}
}
else
{
if (!string.IsNullOrWhiteSpace(szoveg))
{
nyelvEntity = dal.GetNyelv();
nyelvEntity.Szoveg = szoveg;
nyelvEntity.NyelvId = (int)nyelvEnum;
nyelvEntity.ErtekelesMondatbankId = entity.ID;
nyelvEntity.TanevId = entity.TanevId;
nyelvEntity.IntezmenyId = entity.IntezmenyId;
dal.InsertNyelv(nyelvEntity);
}
}
}
public (int count, string errorMessage) ModifyTanuloErtekelesMondatbankItems(TanuloErtekelesMondatbankTobbesItemCo tanuloErtekelesMondatbankTobbesItemCo)
{
string errorMsg = string.Empty;
var counter = 0;
return Dal.CustomConnection.Run(ConnectionType, h =>
{
ITanuloErtekelesMondatbankDal dal = h.TanuloErtekelesMondatbankDal();
foreach (var id in tanuloErtekelesMondatbankTobbesItemCo.SelectedIdList)
{
try
{
ModifyTanuloErtekelesMondatbankTobbesItem(dal, id, tanuloErtekelesMondatbankTobbesItemCo);
counter++;
}
catch (Exception ex)
{
errorMsg += $"{ex.Message}{Environment.NewLine}";
continue;
}
}
if (string.IsNullOrWhiteSpace(errorMsg))
return (counter, string.Format(ErrorResource.NSorModositasSikeres, counter));
if (counter > 0)
{
errorMsg += Environment.NewLine + string.Format(ErrorResource.NSorModositasSikeres, counter);
}
return (counter, errorMsg);
});
}
private void ModifyTanuloErtekelesMondatbankTobbesItem(ITanuloErtekelesMondatbankDal dal, int id, TanuloErtekelesMondatbankTobbesItemCo co)
{
bool needUpdate = false;
var entity = dal.Get(id);
if (co.RovidNev != null)
{
entity.RovidNev = co.RovidNev.ReplaceMultipleSpacesAndTrim();
needUpdate = true;
}
if (co.Szoveg != null)
{
entity.Szoveg = co.Szoveg.Trim();
needUpdate = true;
}
if (co.TanuloErtekelesTipusId != null)
{
entity.ErtekelesTipusa = co.TanuloErtekelesTipusId != 0 ? co.TanuloErtekelesTipusId : null;
needUpdate = true;
}
if (co.EvfolyamTipusId != null)
{
entity.EvfolyamTipusa = co.EvfolyamTipusId != 0 ? co.EvfolyamTipusId : null;
needUpdate = true;
}
if (co.TantargyId != null)
{
if (co.TantargyId.IsEntityId())
{
entity.TantargyId = co.TantargyId.Value;
needUpdate = true;
}
else if (entity.Tantargy != null)
{
entity.Tantargy = null;
needUpdate = true;
}
}
if (entity.TipusId != co.TipusId)
{
entity.TipusId = co.TipusId;
needUpdate = true;
}
if (needUpdate)
{
dal.FullUpdate(entity);
}
}
private void DeleteTanuloErtekelesMondatbankItem(ITanuloErtekelesMondatbankDal dal, int id)
{
dal.Delete(id);
}
public (int count, string errorMessage) DeleteTanuloErtekelesMondatbankItems(List<int> idList)
{
string errorMsg = string.Empty;
var counter = 0;
return Dal.CustomConnection.Run(ConnectionType, h =>
{
ITanuloErtekelesMondatbankDal dal = h.TanuloErtekelesMondatbankDal();
foreach (var id in idList)
{
try
{
DeleteTanuloErtekelesMondatbankItem(dal, id);
counter++;
}
catch (Exception ex)
{
errorMsg += $"{ex.Message}{Environment.NewLine}";
}
}
if (string.IsNullOrWhiteSpace(errorMsg))
return (counter, string.Format(ErrorResource.NSorTorlesSikeres, counter));
if (counter > 0)
{
errorMsg += Environment.NewLine + string.Format(ErrorResource.NSorTorlesSikeres, counter);
}
return (counter, errorMsg);
});
}
public static int GetTanuloErtekelesMondatbankTipusIdByTantargyId(int? tantargyId)
{
switch (tantargyId)
{
case MagatartasTantargyId:
return (int)ErtMondatbankTipusEnum.Magatartas;
case SzorgalomTantargyId:
return (int)ErtMondatbankTipusEnum.Szorgalom;
default:
return (int)ErtMondatbankTipusEnum.Tantargy;
}
}
}
}