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().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 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 GetTanuloErtekelesMondatbankCoList(int? tanuloErtekelesTipusId = null, int? tipusId = null, int? tantargyId = null, int? evfolyamTipusId = null) { DataSet dataSet = null; List 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>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek); }); var result = new List(); 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 nemzetiDokumentumNyelvek = null; Dal.CustomConnection.Run(ConnectionType, dalHandler => { ertekelesMondatbank = dalHandler.TanuloErtekelesMondatbankDal().Get(id); nemzetiDokumentumNyelvek = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetSystemSettingValue>(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 nemzetiDokumentumNyelvek = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue>(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 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; } } } }