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

1574 lines
74 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Classes.ExcelHelpers;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Logic.Feljegyzes;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.KretaServer.Exceptions;
using Kreta.Resources;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers
{
public class FeljegyzesHelper : LogicBase
{
public FeljegyzesHelper(IConnectionType connectionType) : base(connectionType) { }
public static int FirstMonth = 1;
public static int LastMonth = 12;
public DataSet GetBeirasokGrid(int osztalyCsoportId, DateTime startDate, int? szervezetTipusEnumId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Feljegyzes(GridParameters);
var ds = dal.GetFeljegyzesBeirasokData(IntezmenyId, TanevId, osztalyCsoportId, startDate, FelhasznaloId);
FilterFeljegyzesNaploNezetBySzervezetTipusEnumId(h, ref ds, szervezetTipusEnumId);
var result = GetNaploNezetGrid(h, ds, false);
return result;
});
}
public DataSet GetElektronikusUzenetekNaploNezetGrid(int osztalyCsoportId, DateTime startDate, int? szervezetTipusEnumId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Feljegyzes(GridParameters);
var ds = dal.GetFeljegyzesElektronikusUzenetekNaploNezetData(IntezmenyId, TanevId, osztalyCsoportId, startDate, FelhasznaloId);
FilterFeljegyzesNaploNezetBySzervezetTipusEnumId(h, ref ds, szervezetTipusEnumId);
var result = GetNaploNezetGrid(h, ds, true);
return result;
});
}
private DataSet GetNaploNezetGrid(IDalHandler h, DataSet ds, bool isElektronikusUzenetek)
{
var beirasokGridDataSet = new DataSet();
var dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(int)));
dt.Columns.Add(new DataColumn("TanuloId", typeof(int)));
dt.Columns.Add(new DataColumn("TanuloNev", typeof(string)));
dt.Columns.Add(new DataColumn("OsztalyNev", typeof(string)));
dt.Columns.Add(new DataColumn("AnyjaNeve", typeof(string)));
dt.Columns.Add(new DataColumn("SzuletesiIdo", typeof(DateTime)));
dt.Columns.Add(new DataColumn("EsemenyDatuma", typeof(DateTime)));
dt.Columns.Add(new DataColumn("Tipus", typeof(string)));
dt.Columns.Add(new DataColumn("FeljegyzoNeve", typeof(string)));
dt.Columns.Add(new DataColumn("Targy", typeof(string)));
dt.Columns.Add(new DataColumn("Tartalom", typeof(string)));
dt.Columns.Add(new DataColumn("JanuarI", typeof(string)));
dt.Columns.Add(new DataColumn("JanuarII", typeof(string)));
dt.Columns.Add(new DataColumn("Februar", typeof(string)));
dt.Columns.Add(new DataColumn("Marcius", typeof(string)));
dt.Columns.Add(new DataColumn("Aprilis", typeof(string)));
dt.Columns.Add(new DataColumn("Majus", typeof(string)));
dt.Columns.Add(new DataColumn("Junius", typeof(string)));
dt.Columns.Add(new DataColumn("Julius", typeof(string)));
dt.Columns.Add(new DataColumn("Augusztus", typeof(string)));
dt.Columns.Add(new DataColumn("Szeptember", typeof(string)));
dt.Columns.Add(new DataColumn("Oktober", typeof(string)));
dt.Columns.Add(new DataColumn("November", typeof(string)));
dt.Columns.Add(new DataColumn("December", typeof(string)));
foreach (DataColumn column in dt.Columns)
{
column.AllowDBNull = true;
}
beirasokGridDataSet.Tables.Add(dt);
var tanevRendjeDal = h.TanevRendjeDal();
var felevVege = tanevRendjeDal.GetElsoFelevVege(IntezmenyId, TanevId);
var view = new DataView(ds.Tables[0]);
var tanuloIdList = view.ToTable(true, "TanuloId").AsEnumerable().Select(p => SDAConvert.ToInt32(p["TanuloId"])).ToList();
foreach (var tanuloId in tanuloIdList)
{
var dr = beirasokGridDataSet.Tables[0].NewRow();
var rows = ds
.Tables[0]
.AsEnumerable()
.Where(r => SDAConvert.ToInt32(r["TanuloId"]) == tanuloId)
.ToList();
if (rows.Count > 0)
{
var firstRow = rows[0];
dr.SetField("ID", tanuloId);
dr.SetField("TanuloId", tanuloId);
dr.SetField("TanuloNev", SDAConvert.ToString(firstRow["TanuloNev"]));
dr.SetField("OsztalyNev", SDAConvert.ToString(firstRow["OsztalyNev"]));
dr.SetField("AnyjaNeve", SDAConvert.ToString(firstRow["AnyjaNeve"]));
dr.SetField("SzuletesiIdo", SDAConvert.ToDateTime(firstRow["SzuletesiIdo"]));
}
var beirasRows = ds
.Tables[0]
.AsEnumerable()
.Where(r => SDAConvert.ToInt32(r["TanuloId"]) == tanuloId && SDAConvert.ToDateTime(r["EsemenyDatuma"]) != null)
.OrderBy(r => SDAConvert.ToDateTime(r["EsemenyDatuma"]))
.ToList();
for (var i = FirstMonth; i <= LastMonth; i++)
{
//NOTE: A korábbi vizsgálat miatt nem lehet null a EsemenyDatuma.Value
var honapBeirasRows = beirasRows.Where(x => SDAConvert.ToDateTime(x["EsemenyDatuma"]).Value.Month == i).ToList();
var fieldValue = AddBeirasSpanToData(honapBeirasRows, isElektronikusUzenetek);
switch (i)
{
case 1:
//NOTE: A korábbi vizsgálat miatt nem lehet null a EsemenyDatuma.Value
var januarIBeirasRows = honapBeirasRows.Where(x => SDAConvert.ToDateTime(x["EsemenyDatuma"]).Value <= felevVege).ToList();
dr.SetField("JanuarI", AddBeirasSpanToData(januarIBeirasRows, isElektronikusUzenetek));
//NOTE: A korábbi vizsgálat miatt nem lehet null a EsemenyDatuma.Value
var januarIiBeirasRows = honapBeirasRows.Where(x => SDAConvert.ToDateTime(x["EsemenyDatuma"]).Value > felevVege).ToList();
dr.SetField("JanuarII", AddBeirasSpanToData(januarIiBeirasRows, isElektronikusUzenetek));
break;
case 2:
dr.SetField("Februar", fieldValue);
break;
case 3:
dr.SetField("Marcius", fieldValue);
break;
case 4:
dr.SetField("Aprilis", fieldValue);
break;
case 5:
dr.SetField("Majus", fieldValue);
break;
case 6:
dr.SetField("Junius", fieldValue);
break;
case 7:
dr.SetField("Julius", fieldValue);
break;
case 8:
dr.SetField("Augusztus", fieldValue);
break;
case 9:
dr.SetField("Szeptember", fieldValue);
break;
case 10:
dr.SetField("Oktober", fieldValue);
break;
case 11:
dr.SetField("November", fieldValue);
break;
case 12:
dr.SetField("December", fieldValue);
break;
}
}
beirasokGridDataSet.Tables[0].Rows.Add(dr);
}
AddSzuletesiIdoFormattedColumnToDataSet(beirasokGridDataSet);
return beirasokGridDataSet;
}
public Dictionary<int, List<string>> ValidateElektronikusUzenetTanuloListOsztalybaTartozikDatumAlapjan(List<int> tanuloIdList, int osztalyCsoportId, DateTime esemenyDatuma, DateTime? vege, bool? isFaliujsagMegjelenes)
{
var errorMessageDictionary = new Dictionary<int, List<string>>();
var tanuloListDataSet = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.OsztalyCsoport();
return dal.GetTanuloBesorolasaiKisorolasaiDatumDataByTanuloIdList(tanuloIdList, osztalyCsoportId);
});
foreach (var tanuloId in tanuloIdList)
{
var errorMessageList = new List<string>();
var tanuloDataRows = tanuloListDataSet.Tables[0].AsEnumerable().Where(row => SDAConvert.ToInt32(row["C_TANULOID"].ToString()).Equals(tanuloId)).ToList();
var belepesDatumList = tanuloDataRows.Select(row => SDAConvert.ToDateTime(row["C_BELEPESDATUM"])).OfType<DateTime>().ToList();
var kilepesDatumList = tanuloDataRows.Select(row => SDAConvert.ToDateTime(row["C_KILEPESDATUM"])).OfType<DateTime>().ToList();
var tanuloNeve = tanuloDataRows.Select(row => SDAConvert.ToString(row["C_NYOMTATASINEV"])).First();
var esemenyDatumatMegelozoBesorolasDatum = GetTanuloEsemenyDatumatMegelozoBesorolasDatum(belepesDatumList, esemenyDatuma);
if (isFaliujsagMegjelenes.HasValue && isFaliujsagMegjelenes.Value && vege.HasValue)
{
var vegeValue = vege.Value;
if (esemenyDatumatMegelozoBesorolasDatum.HasValue)
{
var aktualisBesorolasKisorolasDatum = GetBesorolasDatumatKovetoKisorolasDatum(kilepesDatumList, esemenyDatumatMegelozoBesorolasDatum.Value);
if (aktualisBesorolasKisorolasDatum.HasValue && aktualisBesorolasKisorolasDatum < vegeValue)
{
errorMessageList.Add(string.Format(
FeljegyzesekResource.KivalasztottIdointervallumban01ATanulo2NemTagjaAzOsztalynakMivelKorabbanKisorolasraKerult2,
esemenyDatuma.ToString(Constants.ToStringPattern.HungarianDateWithSuffix),
vegeValue.ToString(Constants.ToStringPattern.HungarianDate),
tanuloNeve,
aktualisBesorolasKisorolasDatum.Value.ToString(Constants.ToStringPattern.HungarianDate)));
}
}
else
{
var elsoOsztalybasorolasDatum = belepesDatumList.OrderBy(x => x).FirstOrDefault();
if (esemenyDatuma < elsoOsztalybasorolasDatum)
{
errorMessageList.Add(string.Format(
FeljegyzesekResource.KivalasztottIdointervallumban01ATanulo2NemTagjaVegigAzOsztalynakMivelEgyKesobbiIdoponttolKezdveKerultBesorolasra3,
esemenyDatuma.ToString(Constants.ToStringPattern.HungarianDateWithSuffix),
vegeValue.ToString(Constants.ToStringPattern.HungarianDate),
tanuloNeve,
elsoOsztalybasorolasDatum.ToString(Constants.ToStringPattern.HungarianDate)));
}
}
}
else
{
if (esemenyDatumatMegelozoBesorolasDatum.HasValue)
{
var aktualisBesorolasKisorolasDatum = GetBesorolasDatumatKovetoKisorolasDatum(kilepesDatumList, esemenyDatumatMegelozoBesorolasDatum.Value);
if (aktualisBesorolasKisorolasDatum.HasValue && aktualisBesorolasKisorolasDatum < esemenyDatuma)
{
errorMessageList.Add(string.Format(
FeljegyzesekResource.KivalasztottIdopontban0ATanulo1MarNemTagjaAzOsztalynakMivelKorabbanKisorolasraKerult2,
esemenyDatuma.ToString(Constants.ToStringPattern.HungarianDate),
tanuloNeve,
aktualisBesorolasKisorolasDatum.Value.ToString(Constants.ToStringPattern.HungarianDate)));
}
}
else
{
var elsoOsztalybasorolasDatum = belepesDatumList.OrderBy(x => x).FirstOrDefault();
if (esemenyDatuma < elsoOsztalybasorolasDatum)
{
errorMessageList.Add(string.Format(
FeljegyzesekResource.KivalasztottIdopontban0ATanulo1MegNemTagjaAzOsztalynakMivelEgyKesobbiIdoponttolKezdveKerultBesorolasra2,
esemenyDatuma.ToString(Constants.ToStringPattern.HungarianDate),
tanuloNeve,
elsoOsztalybasorolasDatum.ToString(Constants.ToStringPattern.HungarianDate)));
}
}
}
if (errorMessageList.Count > 0)
{
errorMessageDictionary.Add(tanuloId, errorMessageList);
}
}
return errorMessageDictionary;
}
private DateTime? GetTanuloEsemenyDatumatMegelozoBesorolasDatum(List<DateTime> belepesDatumList, DateTime esemenyDatuma)
{
var legkozelebbiKorabbiBesorolasDatum = belepesDatumList.OrderByDescending(x => x).Cast<DateTime?>().FirstOrDefault(x => x <= esemenyDatuma);
return legkozelebbiKorabbiBesorolasDatum;
}
public DateTime? GetBesorolasDatumatKovetoKisorolasDatum(List<DateTime> kilepesDatumList, DateTime esemenyDatuma)
{
var legkozelebbiKesobbiKisorolasDatum = kilepesDatumList.OrderByDescending(x => x).Cast<DateTime?>().FirstOrDefault(x => x > esemenyDatuma);
return legkozelebbiKesobbiKisorolasDatum;
}
private static void AddSzuletesiIdoFormattedColumnToDataSet(DataSet ds)
{
var dt = ds.Tables[0];
dt.Columns.Add("SzuletesiIdoFormatted");
var rows = dt.Rows.Cast<DataRow>().ToList();
foreach (var row in rows)
{
row["SzuletesiIdoFormatted"] = SDAConvert.ToDateTime(row["SzuletesiIdo"]).ToShortDateString();
}
}
private object AddBeirasSpanToData(List<DataRow> honapBeirasRows, bool isElektronikusUzenetek)
{
var result = "";
foreach (var row in honapBeirasRows)
{
string beirasText;
var datum = SDAConvert.ToDateTime(row["EsemenyDatuma"]);
if (datum.HasValue)
{
beirasText = datum.Value.Day.ToString("00");
}
else
{
var ex = new KretaException(StringResourcesUtil.GetString(288));
SDAServer.Instance.Logger.ExceptionThrown(ex);
throw ex;
}
var feljegyzesId = SDAConvert.ToInt32(row["ID"]);
var datumText = DateTime.Parse(row["EsemenyDatuma"].ToString()).ToShortDateString();
if (string.IsNullOrWhiteSpace(datumText))
{
datumText += "-";
}
var tipusId = SDAConvert.ToInt32(row["Tipus"]);
var tipusText = HttpUtility.HtmlEncode(tipusId.GetDisplayName<EsemenyTipusEnum>(TanevId));
if (string.IsNullOrWhiteSpace(tipusText))
{
tipusText += "-";
}
var feljegyzoNeveText = HttpUtility.HtmlEncode(row["FeljegyzoNeve"].ToString());
if (string.IsNullOrWhiteSpace(feljegyzoNeveText))
{
feljegyzoNeveText += "-";
}
var targyText = HttpUtility.HtmlEncode(row["Targy"].ToString());
if (string.IsNullOrWhiteSpace(targyText))
{
targyText += "-";
}
var tartalomText = HttpUtility.HtmlEncode(row["Tartalom"].ToString());
if (string.IsNullOrWhiteSpace(tartalomText))
{
tartalomText += "-";
}
if (!string.IsNullOrWhiteSpace(result))
{
result += " ";
}
var modosithato = SDAConvert.ToBoolean(row["Modosithato_BOOL"]) &&
(isElektronikusUzenetek && tipusId == (int)EsemenyTipusEnum.ElektronikusUzenet ||
!isElektronikusUzenetek && tipusId != (int)EsemenyTipusEnum.ElektronikusUzenet && tipusId != (int)EsemenyTipusEnum.FaliujsagBejegyzes);
var clickableText = modosithato ? " clickable" : "";
var szinezesToolTipStyle = GetSzinezesStyle(tipusId, false);
var szinezesBeirasStyle = GetSzinezesStyle(tipusId, true);
var tanuloId = row["TanuloId"].ToString();
var tanuloNev = HttpUtility.HtmlEncode(row["TanuloNev"].ToString());
result += $"<span class='kendoTooltip feljegyzesKendoTooltip feljegyzesPadding{clickableText}' style='{szinezesBeirasStyle}' data-feljegyzesid='{feljegyzesId}' data-tanuloid='{tanuloId}' data-tanulonev='{tanuloNev}' data-datum='{datumText}' data-tipus='{tipusText}' data-tipusId='{tipusId}' data-feljegyzoneve='{feljegyzoNeveText}' data-targy='{targyText} 'data-tartalom='{tartalomText}' data-szinezes='{szinezesToolTipStyle}' data-modosithato='{modosithato}'>{beirasText}</span>";
}
return result;
}
public DataSet GetBeirasokReszletekForGrid(int tanuloId, int? szervezetTipusEnumId, bool toroltElemek = false)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Feljegyzes(GridParameters);
var ds = dal.GetFeljegyzesBeirasokReszletek(IntezmenyId, TanevId, tanuloId, FelhasznaloId, toroltElemek);
foreach (DataRow row in ds.Tables[0].Rows)
{
var tipusId = SDAConvert.ToInt32(row["Tipus"]);
var modosithato = SDAConvert.ToBoolean(row["Modosithato_BOOL"]) && tipusId != (int)EsemenyTipusEnum.ElektronikusUzenet && tipusId != (int)EsemenyTipusEnum.FaliujsagBejegyzes;
row.SetField("Modosithato", modosithato ? 'T' : 'F');
row.SetField("Modosithato_BOOL", modosithato);
}
FilterFeljegyzesBySzervezetTipusEnumId(h, ref ds, szervezetTipusEnumId);
return ds;
});
}
public DataSet GetElektronikusUzenetekNaploNezetReszletekGrid(int tanuloId, int? szervezetTipusEnumId, bool toroltElemek = false)
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Feljegyzes(GridParameters);
var ds = dal.GetFeljegyzesElektronikusUzenetekNaploNezetReszletek(IntezmenyId, TanevId, tanuloId, FelhasznaloId, toroltElemek);
FilterFeljegyzesBySzervezetTipusEnumId(h, ref ds, szervezetTipusEnumId);
return ds;
});
return result;
}
public DataSet GetElektronikusUzenetekListaNezetGrid(int osztalyCsoportId, int? szervezetTipusEnumId)
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Feljegyzes(GridParameters);
var ds = dal.GetFeljegyzesElektronikusUzenetekListaNezetData(IntezmenyId, TanevId, osztalyCsoportId, FelhasznaloId);
FilterFeljegyzesBySzervezetTipusEnumId(h, ref ds, szervezetTipusEnumId);
return ds;
});
return result;
}
public DataSet GetElektronikusUzenetekModifyPopupGrid(int osztalyCsoportId)
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Feljegyzes(GridParameters);
var ds = dal.GetFeljegyzesElektronikusUzenetekModifyPopupData(osztalyCsoportId);
return ds;
});
AddSzuletesiIdoFormattedColumnToDataSet(result);
return result;
}
public DataSet GetFaliujsagBejegyzesekGrid()
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Feljegyzes(GridParameters);
var ds = dal.GetFeljegyzesFaliujsagBejegyzesekData(FelhasznaloId, (int)EsemenyTipusEnum.FaliujsagBejegyzes);
return ds;
});
return result;
}
public DataSet GetFaliujsagBejegyzesekPopupGrid()
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Feljegyzes(GridParameters);
var ds = dal.GetFeljegyzesFaliujsagBejegyzesekPopupData();
return ds;
});
return result;
}
public FeljegyzesCo GetFeljegyzesById(int id)
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Feljegyzes();
var entity = dal.Get(id);
var feljegyzesCo = new FeljegyzesCo(entity);
return feljegyzesCo;
});
return result;
}
public static string GetSzinezesStyle(int tipus, bool isBackgrouded)
{
const string fekete = "000000";
const string sotetPiros = "BF0000";
const string vilagosPiros = "FF0000";
const string zold = "70AD47";
const string sotetKek = "247E98";
const string vilagosKek = "30A8CB";
const string narancs = "DB6A00";
const string sargas = "CC9900";
string result;
switch (tipus)
{
case (int)EsemenyTipusEnum.Na:
case (int)EsemenyTipusEnum.Tajekoztatas:
result = GetBeirasStyle(fekete);
break;
case (int)EsemenyTipusEnum.AKozossegiSzolgalatTeljesitesevelKapcsolatosAdatok:
result = GetBeirasStyle(sotetKek, isBackgrouded);
break;
case (int)EsemenyTipusEnum.SzakmaiGyakorlatonVeszResztHatarozat:
case (int)EsemenyTipusEnum.Hatarozat:
case (int)EsemenyTipusEnum.Baleset:
case (int)EsemenyTipusEnum.Egeszsegugyi:
result = GetBeirasStyle(narancs, isBackgrouded);
break;
case (int)EsemenyTipusEnum.Kimaradas:
case (int)EsemenyTipusEnum.Javitovizsga:
case (int)EsemenyTipusEnum.Evismetles:
result = GetBeirasStyle(sotetPiros, isBackgrouded);
break;
case (int)EsemenyTipusEnum.SzakmaiMentessegNemHivatalos:
result = GetBeirasStyle(sargas, isBackgrouded);
break;
case (int)EsemenyTipusEnum.TorzslaponMegjelenoEgyebFeljegyzesVagyHatarozat:
case (int)EsemenyTipusEnum.FeleviBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb:
case (int)EsemenyTipusEnum.EvVegiBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb:
case (int)EsemenyTipusEnum.INegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb:
case (int)EsemenyTipusEnum.IINegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb:
case (int)EsemenyTipusEnum.IIINegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb:
case (int)EsemenyTipusEnum.IVNegyedevesBizonyitvanybanMegjelenoTantestuletiFeljegyzesHatarozatDicseretFelmentesStb:
case (int)EsemenyTipusEnum.FeljegyzesekASzemelyiAdatokValtozasahozTorzslaponMegjelenik:
result = GetBeirasStyle(vilagosKek, isBackgrouded);
break;
case (int)EsemenyTipusEnum.SzaktanariFigyelmeztetes:
case (int)EsemenyTipusEnum.SzaktanariIntes:
case (int)EsemenyTipusEnum.SzaktanariMegrovas:
case (int)EsemenyTipusEnum.OsztalyfonokiFigyelmeztetes:
case (int)EsemenyTipusEnum.OsztalyfonokiIntes:
case (int)EsemenyTipusEnum.OsztalyfonokiMegrovas:
case (int)EsemenyTipusEnum.IgazgatoiFigyelmeztetes:
case (int)EsemenyTipusEnum.IgazgatoiIntes:
case (int)EsemenyTipusEnum.IgazgatoiMegrovas:
case (int)EsemenyTipusEnum.NapkozisNeveloiFigyelmeztetes:
case (int)EsemenyTipusEnum.GyakorlatiOktatoiFigyelmeztetes:
case (int)EsemenyTipusEnum.NevelotanariFigyelmeztetes:
case (int)EsemenyTipusEnum.NevelotanariIntes:
case (int)EsemenyTipusEnum.NevelotanariMegrovas:
case (int)EsemenyTipusEnum.CsoportneveloiFigyelmeztetes:
case (int)EsemenyTipusEnum.CsoportneveloiIntes:
case (int)EsemenyTipusEnum.CsoportneveloiMegrovas:
case (int)EsemenyTipusEnum.IgazgatohelyettesiFigyelmeztetes:
case (int)EsemenyTipusEnum.IgazgatohelyettesiIntes:
case (int)EsemenyTipusEnum.IgazgatohelyettesiMegrovas:
case (int)EsemenyTipusEnum.NevelotestuletiFigyelmeztetes:
case (int)EsemenyTipusEnum.NevelotestuletiIntes:
case (int)EsemenyTipusEnum.NevelotestuletiMegrovas:
case (int)EsemenyTipusEnum.IgazgatoiSzigoruMegrovas:
case (int)EsemenyTipusEnum.FigyelmeztetesKozossegiProgramrolValoTavolmaradasMiatt:
case (int)EsemenyTipusEnum.SzaktanariTanulmanyiFigyelmeztetes:
case (int)EsemenyTipusEnum.IntezmenyvezetoiFigyelmeztetes:
case (int)EsemenyTipusEnum.IntezmenyvezetoiIntes:
case (int)EsemenyTipusEnum.TagozatvezetoiFigyelmeztetes:
case (int)EsemenyTipusEnum.TagozatvezetoiIntes:
case (int)EsemenyTipusEnum.KollegiumvezetoiFigyelmeztetes:
case (int)EsemenyTipusEnum.KollegiumvezetoiIntes:
case (int)EsemenyTipusEnum.SzakoktatoiFigyelmeztetes:
result = GetBeirasStyle(sotetPiros);
break;
case (int)EsemenyTipusEnum.Fegyelmi:
case (int)EsemenyTipusEnum.FigyelmeztetesBukasraAllasrol:
case (int)EsemenyTipusEnum.FigyelmeztetesGyengeTanulmanyiTeljesitmenyrol:
case (int)EsemenyTipusEnum.MegrovasFegyelmiBuntetes:
case (int)EsemenyTipusEnum.SzigoruMegrovasFegyelmiBuntetes:
case (int)EsemenyTipusEnum.MeghatarozottKedvezmenyekJuttatasokCsokkenteseMegvonasaFegyelmiBuntetes:
case (int)EsemenyTipusEnum.AthelyezesMasikOsztalybaTanulocsoportbaVagyIskolabaFegyelmiBuntetes:
case (int)EsemenyTipusEnum.AthelyezesMasikSzobabaTanulocsoportbaFegyelmiBuntetes:
case (int)EsemenyTipusEnum.EltiltasAzAdottIskolabanATanevFolytatasatolFegyelmiBuntetes:
case (int)EsemenyTipusEnum.KizarasAzIskolabolFegyelmiBuntetes:
case (int)EsemenyTipusEnum.KizarasFegyelmiBuntetes:
case (int)EsemenyTipusEnum.IntezmenyvezetoiMegrovas:
result = GetBeirasStyle(vilagosPiros);
break;
case (int)EsemenyTipusEnum.Dicseret:
case (int)EsemenyTipusEnum.SzaktanariDicseret:
case (int)EsemenyTipusEnum.OsztalyfonokiDicseret:
case (int)EsemenyTipusEnum.IgazgatoiDicseret:
case (int)EsemenyTipusEnum.SzakoktatoiDicseret:
case (int)EsemenyTipusEnum.SzaktargyiDicseret:
case (int)EsemenyTipusEnum.AltalanosTanulmanyiDicseret:
case (int)EsemenyTipusEnum.DiakonkormanyzatVezetoiDicseret:
case (int)EsemenyTipusEnum.NevelotanariDicseret:
case (int)EsemenyTipusEnum.CsoportneveloiDicseret:
case (int)EsemenyTipusEnum.IgazgatohelyettesiDicseret:
case (int)EsemenyTipusEnum.IntezmenyvezetoiDicseret:
case (int)EsemenyTipusEnum.NevelotestuletiDicseret:
case (int)EsemenyTipusEnum.KollegiumvezetoiDicseret:
result = GetBeirasStyle(zold);
break;
case (int)EsemenyTipusEnum.Felszereleshiany:
case (int)EsemenyTipusEnum.HaziFeladatHiany:
case (int)EsemenyTipusEnum.ElsoFigyelmeztetesKesesekMiatt:
result = GetBeirasStyle(narancs);
break;
case (int)EsemenyTipusEnum.ElektronikusUzenet:
case (int)EsemenyTipusEnum.FaliujsagBejegyzes:
result = GetBeirasStyle(vilagosKek);
break;
default:
result = GetBeirasStyle(fekete);
break;
}
return result;
}
private static string GetBeirasStyle(string colorCode, bool isBackgrouded = false)
{
var style = isBackgrouded ?
$"color: #FFFFFF; background-color: #{colorCode}; " :
$"color: #{colorCode}; ";
return style;
}
public void DeleteFeljegyzes(int id)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var feljegyzes = h.Feljegyzes().Get(id);
if (feljegyzes.Tipus == (int)EsemenyTipusEnum.ElektronikusUzenet || feljegyzes.Tipus == (int)EsemenyTipusEnum.FaliujsagBejegyzes)
{
DeleteElektronikusUzenetOrFaliujsagBejegyzes(h, id);
}
else
{
var tanulo = feljegyzes.Tanulo.Single();
DeleteBeiras(h, id, tanulo.ID);
}
});
}
public void DeleteOsztalyCsoport(List<FeljegyzesDeleteOsztalyCsoportCO> feljegyzesDeleteOsztalyCsoportCOList)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Feljegyzes();
foreach (var deleteItem in feljegyzesDeleteOsztalyCsoportCOList)
{
var entity = dal.Get(deleteItem.FeljegyzesId);
dal.RemoveOsztalyCsoport(entity, deleteItem.OsztalyCsoportId);
dal.FullUpdate(entity);
if (!entity.OsztalyCsoport.Any())
{
dal.DeleteFeljegyzes(deleteItem.FeljegyzesId);
}
}
});
}
private void DeleteBeiras(IDalHandler h, int id, int tanuloId)
{
h.Feljegyzes().DeleteBeiras(id, tanuloId);
}
public void DeleteBeiras(int id, int tanuloId)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
DeleteBeiras(h, id, tanuloId);
});
}
private void DeleteElektronikusUzenetOrFaliujsagBejegyzes(IDalHandler h, int id)
{
h.Feljegyzes().DeleteFeljegyzes(id);
}
public void DeleteElektronikusUzenetOrFaliujsagBejegyzes(int id)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
DeleteElektronikusUzenetOrFaliujsagBejegyzes(h, id);
});
}
public void DeleteElektronikusUzenetForTanulo(int id, int tanuloId)
{
Dal.CustomConnection.Run(ConnectionType, h => h.Feljegyzes().DeleteElektronikusUzenetForTanulo(id, tanuloId));
}
/// INFO @DevKornel: Mobil használja
internal List<CreatedTanuloFeljegyzesCo> SaveAutomatikusFeljegyzesek(IDalHandler h, MulasztasokCo mulasztasokCo, int tantargyId, ITanitasiOra tanitasiOra)
{
var createdFeljegyzesList = new List<CreatedTanuloFeljegyzesCo>();
var tanuloId = mulasztasokCo.TanuloId.Value;
if (mulasztasokCo.HazifeladatHianyId.HasValue)
{
if (!mulasztasokCo.HazifeladatHiany)
{
DeleteBeiras(h, mulasztasokCo.HazifeladatHianyId.Value, tanuloId);
}
}
else if (mulasztasokCo.HazifeladatHiany)
{
createdFeljegyzesList.AddRange(SaveFeljegyzes(GetAutomatikusFeljegyzesCo(h, (int)EsemenyTipusEnum.HaziFeladatHiany, tanuloId, tantargyId, tanitasiOra, OrarendResource.HazifeladatHiany, OrarendResource.HazifeladatHianyEsemenyTartalom), tanitasiOra.IntezmenyId));
}
if (mulasztasokCo.FelszerelesHianyId.HasValue)
{
if (!mulasztasokCo.FelszerelesHiany)
{
DeleteBeiras(h, mulasztasokCo.FelszerelesHianyId.Value, tanuloId);
}
}
else if (mulasztasokCo.FelszerelesHiany)
{
createdFeljegyzesList.AddRange(SaveFeljegyzes(GetAutomatikusFeljegyzesCo(h, (int)EsemenyTipusEnum.Felszereleshiany, tanuloId, tantargyId, tanitasiOra, OrarendResource.FelszerelesHiany, OrarendResource.FelszerelesHianyEsemenyTartalom), tanitasiOra.IntezmenyId));
}
if (mulasztasokCo.FelmentesId.HasValue)
{
if (!mulasztasokCo.Felmentes)
{
DeleteBeiras(h, mulasztasokCo.FelmentesId.Value, tanuloId);
}
}
else if (mulasztasokCo.Felmentes)
{
createdFeljegyzesList.AddRange(SaveFeljegyzes(GetAutomatikusFeljegyzesCo(h, (int)EsemenyTipusEnum.SzakmaiMentessegNemHivatalos, tanuloId, tantargyId, tanitasiOra, OrarendResource.Felmentes, OrarendResource.FelmentesEsemenyTartalom), tanitasiOra.IntezmenyId));
}
if (mulasztasokCo.TanoraiDicseretId.HasValue)
{
if (!mulasztasokCo.TanoraiDicseret)
{
DeleteBeiras(h, mulasztasokCo.TanoraiDicseretId.Value, tanuloId);
}
}
else if (mulasztasokCo.TanoraiDicseret)
{
createdFeljegyzesList.AddRange(SaveFeljegyzes(GetAutomatikusFeljegyzesCo(h, (int)EsemenyTipusEnum.Dicseret, tanuloId, tantargyId, tanitasiOra, OrarendResource.TanoraiDicseret, OrarendResource.TanoraiDicseretEsemenyTartalom), tanitasiOra.IntezmenyId));
}
return createdFeljegyzesList;
}
/// INFO @DevKornel: Mobil használja
private FeljegyzesCo GetAutomatikusFeljegyzesCo(IDalHandler h, int esemenytipus, int tanuloId, int tantargyId, ITanitasiOra tanitasiOra, string targy, string tartalom)
{
var tantargy = h.Tantargy().GetTantargy(tantargyId);
var feljegyzesCo = new FeljegyzesCo
{
Id = null,
FeljegyzoId = tanitasiOra.OraTulajdonosId,
FeljegyzoNev = null,
Kezdete = null,
IsFaliujsagMegjelenes = false,
IsMindenkinek = false,
Megjegyzes = null,
OsztalyCsoportIdList = new List<int>(),
EsemenyDatuma = tanitasiOra.Datum,
TanitasiOraId = tanitasiOra.ID,
TantargyId = tantargyId,
TanuloIdList = new List<int> { tanuloId },
Targy = targy,
Tartalom = string.Format(tartalom, char.ToUpper(tantargy.Nev[0]) + tantargy.Nev.Substring(1)),
Tipus = esemenytipus,
Vege = null
};
return feljegyzesCo;
}
/// TODO @devKornel: Ha elkészül, hogy osztály/csoport helyett tanulóhoz legyen rögzítve egy faliújság entitás, akkor meg kell vizsgálni a T_TANULOESEMENY.C_ISERTESITESELKULDVE mezőt a db-ben
/// INFO @DevKornel: Mobil használja
public List<CreatedTanuloFeljegyzesCo> SaveFeljegyzes(FeljegyzesCo co, int? intezmenyId = null, bool isBeiras = false)
{
var createdFeljegyzesList = new List<CreatedTanuloFeljegyzesCo>();
if (co.TanuloIdList.Count == 0 && co.OsztalyCsoportIdList.Count == 0) /// TODO devKornel: Szerintem xnor kellene, vagy tanulóhoz vagy oszt/csop-hoz rögzítjük
{
var exception = new KretaException(FeljegyzesekResource.ERRORHianyzoTanuloEsVagyOsztaly);
SDAServer.Instance.Logger.ExceptionThrown(exception);
throw exception;
}
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.Feljegyzes();
var isNew = !co.Id.IsEntityId();
//NOTE: Az IsEntityId vizsgálat miatt nem lehet az Id null!
var entity = isNew ? dal.Get() : dal.Get(co.Id.Value);
int? oldTipusId = null;
if (co.Id.IsEntityId())
{
oldTipusId = entity.Tipus;
}
entity.FaliujsagMegjelenes = co.IsFaliujsagMegjelenes;
entity.Mindenkinek = co.IsMindenkinek;
entity.Megjegyzes = co.Megjegyzes;
//NOTE: A EsemenyDatuma nem lehet null, ha mégis, akkor ott hibás a működés!
entity.EsemenyDatuma = co.EsemenyDatuma.Value;
if (co.TanitasiOraId != null)
{
entity.TanitasiOraId = co.TanitasiOraId.Value;
if (co.TantargyId != null)
{
entity.TantargyId = co.TantargyId.Value;
}
else if (entity.Tantargy != null)
{
entity.Tantargy = null;
}
}
else if (entity.TanitasiOra != null)
{
entity.TanitasiOra = null;
}
entity.Targy = co.Targy;
entity.Tartalom = co.Tartalom.ReplaceMultipleSpacesAndTrim();
if (entity.FaliujsagMegjelenes ?? false)
{
entity.Tartalom = CommonUtils.CreateLinksInText(entity.Tartalom);
}
//NOTE: A Tipus nem lehet null, ha mégis, akkor ott hibás a működés!
entity.Tipus = co.Tipus.Value;
entity.Kezdete = co.Kezdete;
entity.Vege = co.Vege;
if (entity.IntezmenyId == -1 && intezmenyId.HasValue)
{ entity.IntezmenyId = intezmenyId.Value; }
entity.BeirasTanuloId = co.TanuloIdList?.Count == 1 ? co.TanuloIdList.Single() : -1;
entity.BeirasOsztalycsoportId = co.BeirasOsztalyCsoportId ?? -1;
var coTanuloIdList = co.TanuloIdList;
var coOsztalyCsoportIdList = co.OsztalyCsoportIdList;
if (isNew)
{
entity.FeljegyzoId = co.FeljegyzoId ?? FelhasznaloId;
if (isBeiras)
{
//NOTE: Beírások esetén a rögzítés kori osztály id nem lehet null, ha mégis, akkor ott hibás a működés!
entity.RogziteskoriOsztalyId = GetRogziteskoriOsztalyId(co, h);
}
dal.Insert(entity);
foreach (var id in coTanuloIdList)
{
dal.AddTanulo(entity, id);
createdFeljegyzesList.Add(new CreatedTanuloFeljegyzesCo(id, entity));
}
foreach (var id in coOsztalyCsoportIdList)
{
dal.AddOsztalyCsoport(entity, id);
}
}
else
{
var entityTanuloIdList = entity.Tanulo.Select(x => x.ID).ToList();
var addedTanuloIdList = coTanuloIdList.Except(entityTanuloIdList).ToList();
var removedTanuloIdList = entityTanuloIdList.Except(coTanuloIdList).ToList();
foreach (var id in addedTanuloIdList)
{
dal.AddTanulo(entity, id);
createdFeljegyzesList.Add(new CreatedTanuloFeljegyzesCo(id, entity));
}
foreach (var id in removedTanuloIdList)
{
dal.RemoveTanulo(entity, id);
}
var entityOsztalyCsoportIdList = entity.OsztalyCsoport.Select(x => x.ID).ToList();
var addedOsztalyCsoportIdList = coOsztalyCsoportIdList.Except(entityOsztalyCsoportIdList).ToList();
var removedOsztalyCsoportIdList = entityOsztalyCsoportIdList.Except(coOsztalyCsoportIdList).ToList();
foreach (var id in addedOsztalyCsoportIdList)
{
dal.AddOsztalyCsoport(entity, id);
}
foreach (var id in removedOsztalyCsoportIdList)
{
dal.RemoveOsztalyCsoport(entity, id);
}
dal.FullUpdate(entity);
}
if (Constants.NyelvesitendoEsemenyTipuslist.Contains(co.Tipus.Value))
{
UpdateBeirasNyelvLogic(h, entity, co.TartalomNemet, co.TartalomHorvat, co.TartalomRoman, co.TartalomSzerb);
}
if (oldTipusId.HasValue && Constants.NyelvesitendoEsemenyTipuslist.Contains(oldTipusId.Value) && !Constants.NyelvesitendoEsemenyTipuslist.Contains(co.Tipus.Value))
{
dal.DeleteBeirasNyelv(entity.ID);
}
});
return createdFeljegyzesList;
}
private static void UpdateBeirasNyelvLogic(IDalHandler h, ITanuloEsemeny entity, string tartalomNemet, string tartalomHorvat, string tartalomRoman, string tartalomSzerb)
{
if (!string.IsNullOrWhiteSpace(tartalomNemet))
{
UpdateBeirasNyelv(h, entity, AnyanyelvEnum.nemet, tartalomNemet);
}
if (!string.IsNullOrWhiteSpace(tartalomHorvat))
{
UpdateBeirasNyelv(h, entity, AnyanyelvEnum.horvat, tartalomHorvat);
}
if (!string.IsNullOrWhiteSpace(tartalomRoman))
{
UpdateBeirasNyelv(h, entity, AnyanyelvEnum.roman, tartalomRoman);
}
if (!string.IsNullOrWhiteSpace(tartalomSzerb))
{
UpdateBeirasNyelv(h, entity, AnyanyelvEnum.szerb, tartalomSzerb);
}
}
private static void UpdateBeirasNyelv(IDalHandler h, ITanuloEsemeny entity, AnyanyelvEnum nyelvEnum, string tartalom)
{
var nyelvEntity = entity.TanuloEsemenyNyelv.FirstOrDefault(x => x.NyelvId == (int)nyelvEnum && !x.Torolt);
if (nyelvEntity != null)
{
var handler = h.Feljegyzes();
nyelvEntity.Tartalom = tartalom;
nyelvEntity.NyelvId = (int)nyelvEnum;
handler.UpdateBeirasNyelv(nyelvEntity);
}
else
{
InsertBeirasNyelv(h, entity, nyelvEnum, tartalom);
}
}
private static void InsertBeirasNyelv(IDalHandler h, ITanuloEsemeny entity, AnyanyelvEnum nyelvEnum, string tartalom)
{
var handler = h.Feljegyzes();
var nyelvEntity = handler.GetBeirasNyelv();
nyelvEntity.NyelvId = (int)nyelvEnum;
nyelvEntity.Tartalom = tartalom;
nyelvEntity.TanuloEsemenyId = entity.ID;
nyelvEntity.IntezmenyId = entity.IntezmenyId;
nyelvEntity.TanevId = entity.TanevId;
handler.InsertBeirasNyelv(nyelvEntity);
}
public FeljegyzesHelperCo GetFeljegyzesHelperCo()
{
TanevCO tanevCo;
var helper = new TanevHelper(ConnectionType);
tanevCo = helper.GetTanevInfo();
var elsoTanitasiNap = tanevCo.OraFelvetelKezdete.Date;
var utolsoNap = tanevCo.UtolsoNap.Date;
var feljegyzesHelperCo = new FeljegyzesHelperCo
{
ElsoTanitasiNap = elsoTanitasiNap,
MinimumErvenyessegKezdete = elsoTanitasiNap,
MaximumErvenyessegVege = utolsoNap
};
var today = DateTime.Today;
if (today < elsoTanitasiNap)
{
feljegyzesHelperCo.DefaultEsemenyDatuma = elsoTanitasiNap;
}
else if (utolsoNap < today)
{
feljegyzesHelperCo.DefaultEsemenyDatuma = utolsoNap;
}
else
{
feljegyzesHelperCo.DefaultEsemenyDatuma = today;
}
if (utolsoNap < today)
{
feljegyzesHelperCo.MaximumErvenyessegKezdete = utolsoNap;
}
else if (today < elsoTanitasiNap)
{
feljegyzesHelperCo.MaximumErvenyessegKezdete = elsoTanitasiNap;
}
else
{
feljegyzesHelperCo.MaximumErvenyessegKezdete = today;
}
if (utolsoNap < today)
{
feljegyzesHelperCo.MinimumErvenyessegVege = utolsoNap;
}
else if (today < elsoTanitasiNap)
{
feljegyzesHelperCo.MinimumErvenyessegVege = elsoTanitasiNap;
}
else
{
feljegyzesHelperCo.MinimumErvenyessegVege = today;
}
return feljegyzesHelperCo;
}
public DataSet GetKozossegiSzolgalatokGrid(KozossegiSzolgalatokSearchCo co)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
h.TanuloKozossegiSzolgalat(GridParameters).GetKozossegiSzolgalatokData(IntezmenyId, KozossegiSzolgalatokSearchCoToPco(co)));
AddSzuletesiIdoFormattedColumnToDataSet(ds);
return ds;
}
public DataSet GetKozossegiSzolgalatokReszletekForGrid(int tanuloId, bool toroltElemek, bool hasTeljesTorlesJog)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
h.TanuloKozossegiSzolgalat(GridParameters).GetKozossegiSzolgalatokReszletek(IntezmenyId, TanevId, tanuloId, FelhasznaloId, toroltElemek, new KozossegiSzolgalatokSearchPco()));
var dt = ds.Tables[0];
dt.Columns.Add("Torolheto_BOOL");
foreach (DataRow row in dt.Rows)
{
var modosithato = SDAConvert.ToBoolean(row["Modosithato_BOOL"]);
row.SetField("Modosithato", modosithato ? 'T' : 'F');
row.SetField("Modosithato_BOOL", modosithato);
row.SetField("Torolheto_BOOL", modosithato || hasTeljesTorlesJog);
}
return ds;
}
public DataSet GetKozossegiSzolgalatokReszletekForGrid(int tanuloId, KozossegiSzolgalatokSearchCo kozossegiSzolgalatKereso, int felhasznalo, bool toroltElemek, bool hasTeljesTorlesJog)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
h.TanuloKozossegiSzolgalat(GridParameters).GetKozossegiSzolgalatokReszletek(IntezmenyId, TanevId, tanuloId, felhasznalo, toroltElemek, KozossegiSzolgalatokSearchCoToPco(kozossegiSzolgalatKereso)));
return ds;
}
public MemoryStream GetTanulokKozossegiSzolgalatExcelExport(KozossegiSzolgalatokSearchCo seachModel, bool toroltElemek)
{
return Dal.CustomConnection.Run(ConnectionType,
h =>
{
var dal = h.TanuloKozossegiSzolgalat();
var dataSet = dal.GetKozossegiSzolgalatokReszletek(IntezmenyId, TanevId, -1, -1, toroltElemek, KozossegiSzolgalatokSearchCoToPco(seachModel));
var dtCloned = dataSet.Clone();
dtCloned.Tables[0].Columns[1].DataType = typeof(string);
dtCloned.Tables[0].Columns[2].DataType = typeof(string);
dtCloned.Tables[0].Columns[3].DataType = typeof(string);
foreach (DataRow row in dataSet.Tables[0].Rows)
{
dtCloned.Tables[0].ImportRow(row);
}
foreach (DataRow row in dtCloned.Tables[0].Rows)
{
row["IntervallumKezdete"] = DateTime.Parse(row["IntervallumKezdete"].ToString()).ToShortDateString();
row["IntervallumVege"] = DateTime.Parse(row["IntervallumVege"].ToString()).ToShortDateString();
row["RogzitesDatuma"] = DateTime.Parse(row["RogzitesDatuma"].ToString()).ToShortDateString();
}
ExportLogic.TryCreateHeaderIfNotExist(dtCloned.Tables[0]);
var stream = new MemoryStream();
using (var excel = new ExcelPackage(stream))
{
var workSheet = excel.Workbook.Worksheets.Add(FeljegyzesekResource.KozossegiSzolgalat);
(string nameFrom, string nameTo, Type type)[] map = new[]
{
("TanuloNev", FeljegyzesekResource.TanuloNeve, typeof(string)),
("OsztalyNev", FeljegyzesekResource.OsztalyNev, typeof(string)),
("IntervallumKezdete", FeljegyzesekResource.IntervallumKezdete, typeof(string)),
("IntervallumVege", FeljegyzesekResource.IntervallumVege, typeof(string)),
("TeljesitesiHelye", FeljegyzesekResource.IntezmenyNeve, typeof(string)),
("Oraszam", FeljegyzesekResource.Oraszam, typeof(string)),
("KozossegiSzolgalatTipusa_DNAME", FeljegyzesekResource.Tevekenyseg, typeof(string)),
("Megjegyzes", FeljegyzesekResource.Megjegyzes, typeof(string)),
("RogzitesDatuma", FeljegyzesekResource.RogzitesDatuma, typeof(string))
};
workSheet.Cells[1, 1].LoadFromDataTable(ExportLogic.MapDataTable(dtCloned.Tables[0], map), true);
ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, map.Length]);
workSheet.Cells.AutoFitColumns();
excel.Save();
}
stream.Position = 0;
return stream;
});
}
public KozossegiSzolgalatCo GetKozossegiSzolgalatById(int id)
{
var result = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.TanuloKozossegiSzolgalat();
var entity = dal.Get(id);
var kozossegiSzolgalatCo = new KozossegiSzolgalatCo(entity);
return kozossegiSzolgalatCo;
});
return result;
}
public void DeleteKozossegiSzolgalat(int id)
{
Dal.CustomConnection.Run(ConnectionType, h => h.TanuloKozossegiSzolgalat().Delete(id));
}
public void SaveKozossegiSzolgalat(KozossegiSzolgalatCo co)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.TanuloKozossegiSzolgalat();
var isNew = !co.Id.IsEntityId();
var entity = isNew ? dal.Get() : dal.Get(co.Id.Value);
entity.IntervallumKezdete = co.IntervallumKezdete;
entity.IntervallumVege = co.IntervallumVege;
entity.Megjegyzes = co.Megjegyzes;
entity.Oraszam = co.Oraszam;
entity.TeljesitesiHelye = co.TeljesitesiHelye;
entity.KozossegiSzolgalatTipusa = co.KozossegiSzolgalatTipusa;
entity.RogzitesDatum = co.RogzitesDatuma;
if (isNew)
{
entity.TanuloId = co.TanuloId;
entity.FeljegyzoId = FelhasznaloId;
dal.Insert(entity);
}
else
{
dal.FullUpdate(entity);
}
UpdateKozosossegiSzolgalatNyelvLogic(h, entity, co.MegjegyzesNemet, co.MegjegyzesHorvat, co.MegjegyzesRoman, co.MegjegyzesSzerb, co.TeljesitesiHelyeNemet, co.TeljesitesiHelyeHorvat, co.TeljesitesiHelyeRoman, co.TeljesitesiHelyeSzerb);
});
}
private static void UpdateKozosossegiSzolgalatNyelvLogic(IDalHandler h, ITanuloKozossegiSzolgalat entity, string megjegyzesNemet, string megjegyzesHorvat, string megjegyzesRoman, string megjegyzesSzerb, string teljesitesHelyeNemet, string teljesitesHelyeHorvat, string teljesitesHelyeRoman, string teljesitesHelyeSzerb)
{
if (!string.IsNullOrWhiteSpace(megjegyzesNemet) || !string.IsNullOrWhiteSpace(teljesitesHelyeNemet))
{
UpdateKozosossegiSzolgalatNyelv(h, entity, AnyanyelvEnum.nemet, megjegyzesNemet, teljesitesHelyeNemet);
}
if (!string.IsNullOrWhiteSpace(megjegyzesHorvat) || !string.IsNullOrWhiteSpace(teljesitesHelyeHorvat))
{
UpdateKozosossegiSzolgalatNyelv(h, entity, AnyanyelvEnum.horvat, megjegyzesHorvat, teljesitesHelyeHorvat);
}
if (!string.IsNullOrWhiteSpace(megjegyzesRoman) || !string.IsNullOrWhiteSpace(teljesitesHelyeRoman))
{
UpdateKozosossegiSzolgalatNyelv(h, entity, AnyanyelvEnum.roman, megjegyzesRoman, teljesitesHelyeRoman);
}
if (!string.IsNullOrWhiteSpace(megjegyzesSzerb) || !string.IsNullOrWhiteSpace(teljesitesHelyeSzerb))
{
UpdateKozosossegiSzolgalatNyelv(h, entity, AnyanyelvEnum.szerb, megjegyzesSzerb, teljesitesHelyeSzerb);
}
}
private static void UpdateKozosossegiSzolgalatNyelv(IDalHandler h, ITanuloKozossegiSzolgalat entity, AnyanyelvEnum nyelvEnum, string megjegyzes, string teljesitesHelye)
{
var nyelvEntity = entity.TanuloKozossegiSzolgalatNyelv.FirstOrDefault(x => x.NyelvId == (int)nyelvEnum && !x.Torolt);
if (nyelvEntity != null)
{
var handler = h.TanuloKozossegiSzolgalat();
nyelvEntity.Megjegyzes = megjegyzes;
nyelvEntity.TeljesitesiHelye = teljesitesHelye;
nyelvEntity.NyelvId = (int)nyelvEnum;
handler.UpdateKozossegiSzolgalatNyelv(nyelvEntity);
}
else
{
InsertKozosossegiSzolgalatNyelv(h, entity, nyelvEnum, megjegyzes, teljesitesHelye);
}
}
private static void InsertKozosossegiSzolgalatNyelv(IDalHandler h, ITanuloKozossegiSzolgalat entity, AnyanyelvEnum nyelvEnum, string megjegyzes, string teljesitesHelye)
{
var handler = h.TanuloKozossegiSzolgalat();
var nyelvEntity = handler.GetKozossegiSzolgalatNyelv();
nyelvEntity.NyelvId = (int)nyelvEnum;
nyelvEntity.Megjegyzes = megjegyzes;
nyelvEntity.TeljesitesiHelye = teljesitesHelye;
nyelvEntity.TanuloKozossegiSzolgalatId = entity.ID;
nyelvEntity.IntezmenyId = entity.IntezmenyId;
nyelvEntity.TanevId = entity.TanevId;
handler.InsertKozossegiSzolgalatNyelv(nyelvEntity);
}
public double GetKozossegiSzolgalatOsszesOraszam(int tanuloId)
{
var result = Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.Tanulo();
return dal.GetKozossegiSzolgalatOsszesOraszam(IntezmenyId, tanuloId);
});
return result;
}
private DataSet GetTanuloFeljegyzesei(IDalHandler h, int tanuloId, OktNevelesiKategoriaEnum? feladatKategoria = null)
{
var dal = h.Feljegyzes(GridParameters);
var dataSet = dal.GetTanuloFeljegyzesei(tanuloId, feladatKategoria: feladatKategoria);
return dataSet;
}
public DataSet GetTanuloFelhasznaloFeljegyzesei(int tanuloId)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dataTable = GetTanuloFeljegyzesei(h, tanuloId).Tables[0];
new FeljegyzesLogic(new DalHandlerConnectionType(ConnectionType, h)).RemoveHiddenRowsFromFeljegyzesDataSet(dataTable, "Tipus", tanuloId);
var dataSet = new DataSet();
dataSet.Tables.Add(dataTable.DefaultView.ToTable());
return dataSet;
});
}
public List<TanuloiFeljegyzesekItemCo> GetTanuloiFeljegyzesekItemList(int tanuloId)
{
var dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => GetTanuloFeljegyzesei(dalHandler, tanuloId));
var result = new List<TanuloiFeljegyzesekItemCo>();
if (dataSet?.Tables[0].Rows.Count > 0)
{
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new TanuloiFeljegyzesekItemCo(dataRow);
result.Add(item);
}
}
return result;
}
public KozossegiSzolgalatokSearchPco KozossegiSzolgalatokSearchCoToPco(KozossegiSzolgalatokSearchCo co)
{
var pco = new KozossegiSzolgalatokSearchPco
{
IntervallumKezdete = co.IntervallumKezdete,
IntervallumVege = co.IntervallumVege,
TeljesitesiHelye = co.TeljesitesiHelye,
Oraszam = co.Oraszam,
TanuloNev = co.TanuloNev,
OsztalyNev = co.OsztalyNev,
KozossegiSzolgalatTipusa = co.KozossegiSzolgalatTipusa,
AnyjaNeve = co.AnyjaNeve,
OsszesOraszamKezdete = co.OsszesOraszamKezdete,
OsszesOraszamVege = co.OsszesOraszamVege,
OsztalyCsoportIdList = co.OsztalyCsoportIdList,
TanuloIdList = new List<int>()
};
if (co.TanuloIdList != null && co.TanuloIdList.Count > 0)
pco.TanuloIdList.AddRange(co.TanuloIdList);
return pco;
}
public static List<ExcelExportItem> GetExcelData(DataSet ds)
{
var data = new List<ExcelExportItem>();
foreach (DataTable dt in ds.Tables)
{
var excelItem = new ExcelExportItem();
for (var i = 0; i < dt.Columns.Count; i++)
{
var headerText = dt.Columns[i].ToString();
uint? headerFormatId = null;
if (headerText.IndexOf("$@") >= 0)
{
var headerTextSplits = System.Text.RegularExpressions.Regex.Split(headerText, "[$][@]");
headerText = headerTextSplits[0];
uint tempHeaderFormatId = 0;
uint.TryParse(headerTextSplits[1], out tempHeaderFormatId);
headerFormatId = tempHeaderFormatId;
}
excelItem.AddColumn(i, headerText, headerFormatId);
}
for (var i = 0; i < dt.Rows.Count; i++)
{
for (var j = 0; j < dt.Columns.Count; j++)
{
var dtValue = dt.Rows[i][j];
var valuetype = DocumentFormat.OpenXml.Spreadsheet.CellValues.SharedString;
if (dt.Columns[j].ColumnName == FeljegyzesekResource.Oraszam || dt.Columns[j].ColumnName == FeljegyzesekResource.OsszesOraszam)
{
valuetype = DocumentFormat.OpenXml.Spreadsheet.CellValues.Number;
dtValue = double.Parse(string.Format("{0:0.00}", dtValue));
}
excelItem.AddCell(i + 2, j, dtValue, null, valuetype);
}
}
if (dt != ds.Tables[0])
{
excelItem.AddCell(dt.Rows.Count + 2, 0, "Összesen:");
excelItem.AddCell(dt.Rows.Count + 2, 4, null, formula: $"SUM(E2:E{dt.Rows.Count + 1})", valuetype: DocumentFormat.OpenXml.Spreadsheet.CellValues.Number);
}
excelItem.SheetCaption = dt.TableName;
data.Add(excelItem);
}
return data;
}
public string IsTanuloTagjaOsztalyCsoportnakByEsemenyDatum(FeljegyzesCo co)
{
if (!co.RogziteskoriOsztalyId.HasValue)
{
throw new ArgumentNullException();
}
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var osztalyCsoportDal = h.OsztalyCsoport();
var tanuloOsztalyCsoportjaiEsemenyNapjan = osztalyCsoportDal.GetTanuloOsztalyCsoportjaiIdList(co.TanuloIdList[0], co.EsemenyDatuma);
if (!tanuloOsztalyCsoportjaiEsemenyNapjan.Contains(co.RogziteskoriOsztalyId.Value))
{
var tanuloNeve = h.Tanulo().Get(co.TanuloIdList[0]).NyomtatasiNev;
var formazottDatum = co.EsemenyDatuma.Value.ToString(Constants.ToStringPattern.HungarianDateWithSpaces);
var osztalyCsoportNeve = osztalyCsoportDal.Get(co.RogziteskoriOsztalyId.Value).Nev;
var osztalyVagyCsoport = osztalyCsoportDal.GetIsOsztaly(co.RogziteskoriOsztalyId.Value) ? OsztalyCsoportResource.Osztaly : OsztalyCsoportResource.Csoport;
return string.Format(OsztalyCsoportResource.ATanuloDatumonNemTagjaAzOsztalyCsoportnak, tanuloNeve, formazottDatum, osztalyCsoportNeve, osztalyVagyCsoport);
}
return null;
});
}
private int GetRogziteskoriOsztalyId(FeljegyzesCo co, IDalHandler h)
{
var osztalyCsoportHelper = new OsztalyCsoportHelper(new DalHandlerConnectionType(ConnectionType, h));
var csoportHelper = new CsoportHelper(new DalHandlerConnectionType(ConnectionType, h));
if (!co.RogziteskoriOsztalyId.HasValue)
{
throw new ArgumentNullException();
}
if (osztalyCsoportHelper.IsOsztaly(co.RogziteskoriOsztalyId.Value))
{
return co.RogziteskoriOsztalyId.Value;
}
var bontasId = csoportHelper.GetCsoportOsztalyBontasId(co.RogziteskoriOsztalyId.Value);
if (bontasId.IsEntityId())
{
return bontasId.Value;
}
var osztalyByCsoportAndDatum = csoportHelper.GetTanuloOsztalyByCsoportAndDatum(co.RogziteskoriOsztalyId.Value, co.EsemenyDatuma.Value);
var osztalyList = osztalyByCsoportAndDatum.Tables[0].AsEnumerable().Where(x => x.Field<int>("C_TANULOID") == co.TanuloIdList[0]).Select(x => x.Field<int>("ID")).ToList();
if (osztalyList.Count != 1)
{
// AMI esetén nem kell kitölteni
return -1;
}
return osztalyList[0];
}
private void FilterFeljegyzesBySzervezetTipusEnumId(IDalHandler dalHandler, ref DataSet ds, int? szervezetTipusEnumId)
{
// NOTE: Ha várunk szervezetet
if (szervezetTipusEnumId.IsEntityId())
{
var szervezetHelper = new SzervezetHelper(new DalHandlerConnectionType(ConnectionType, dalHandler));
var alkalmazottSzervezetId = szervezetHelper.GetAlkalmazottSzervezetId(FelhasznaloId);
var lathatoSzervezetIdList = szervezetHelper.GetLathatoSzervezetIdList(alkalmazottSzervezetId, SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek);
ds.Tables[0].Rows.Cast<DataRow>().Where(dataRow =>
{
var szervezetId = SDAConvert.ToNullableInt32(dataRow["FeljegyzoSzervezetId"]);
// NOTE: ha a sornak van feljegyző szervezetId-ja
if (szervezetId.IsEntityId())
{
// NOTE: akkor nem törlendő a sor, ha benne van a látható szervezetek listájában
return !lathatoSzervezetIdList.Contains(szervezetId.Value);
}
// NOTE: egyébként törlendő a sor
return true;
}).ToList().ForEach(r => r.Delete());
}
// NOTE: ha nem várunk szervezetet
else
{
ds.Tables[0].Rows.Cast<DataRow>().Where(dataRow =>
{
var szervezetId = SDAConvert.ToNullableInt32(dataRow["FeljegyzoSzervezetId"]);
// NOTE: akkor törlendő, ha a soron van feljegyző szervezetId
return szervezetId.IsEntityId();
}).ToList().ForEach(r => r.Delete());
}
ds.AcceptChanges();
}
private void FilterFeljegyzesNaploNezetBySzervezetTipusEnumId(IDalHandler dalHandler, ref DataSet ds, int? szervezetTipusEnumId)
{
var szervezetHelper = new SzervezetHelper(new DalHandlerConnectionType(ConnectionType, dalHandler));
var alkalmazottSzervezetId = szervezetHelper.GetAlkalmazottSzervezetId(FelhasznaloId);
// NOTE: Napló nézetben minden tanulónak meg kell jelennie attól függetlenül, hogy van-e rá vonatkozó elektronikus üzenet,
// ezért nem jó szervezetId-val szűrni, mert az ilyen tanulók NULL-os tanulóesemenéy adatokkal és NULL-os feljegyző
// szervezetId-val szerepel a DataSet-ben
// Ezért csoportosítjuk a sorokat tanulónként, végig megyünk minden csoporton
ds.Tables[0].AsEnumerable().GroupBy(x => x["TanuloId"]).ToList().ForEach(group =>
{
// NOTE: Így vagy eltörlünk egy sort, vagy módosítunk, vagy marad ahogy van.
var dataRowList = group.ToList();
dataRowList.Where(dataRow =>
{
// NOTE: Kivesszük a sorból a feljegyző szervezetId-ját és tanulóesemény ID-ját.
var szervezetId = SDAConvert.ToNullableInt32(dataRow["FeljegyzoSzervezetId"]);
var tanuloEsemenyId = SDAConvert.ToNullableInt32(dataRow["ID"]);
// NOTE: Ha a tanuló csoportjában csak egyetlen sor van,
if (dataRowList.Count == 1)
{
// NOTE: és ahhoz tartozik tanulóesemény,
if (tanuloEsemenyId.IsEntityId())
{
// NOTE: és ha (nem várunk szervezetet és a sornál meg van adva feljegyző szervezetId
// vagy várunk szervezetet és a sornál nincs megadva feljegyző szervezetId), akkor törlünk minden
// tanulóesemény és szervezet adatot a sorból
if ((!szervezetTipusEnumId.IsEntityId() && szervezetId.IsEntityId())
|| (szervezetTipusEnumId.IsEntityId() && !szervezetId.IsEntityId()))
{
ResetFeljegyzesTanuloEsemenySzervezetAdatok(dataRow);
}
// NOTE: vagy ha várunk szervezetet és a sornál van megadva feljegyző szervezetId
else if (szervezetTipusEnumId.IsEntityId() && szervezetId.IsEntityId())
{
var lathatoSzervezetIdList = szervezetHelper.GetLathatoSzervezetIdList(alkalmazottSzervezetId, SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek);
// NOTE: és a vizsgált sor feljegyzőjének szervezete nincs benne a látható szervezetek listájában,
// akkor törlünk minden tanulóesemény és szervezet adatot a sorból
if (!lathatoSzervezetIdList.Contains(szervezetId.Value))
{
ResetFeljegyzesTanuloEsemenySzervezetAdatok(dataRow);
}
}
}
// NOTE: így az egyetlen sor nem törlendő
return false;
}
// NOTE: ha a tanuló csoportjában több sor van
else
{
// NOTE: ha nem várunk szervezetet és a tanuló során nincs feljegyző szervezetId
if (!szervezetTipusEnumId.IsEntityId() && !szervezetId.IsEntityId())
{
// NOTE: akkor a sor nem törlendő
return false;
}
// NOTE: vagy ha várunk szervezetet és a tanuló során van feljegyző szervezetId és
else if (szervezetTipusEnumId.IsEntityId() && szervezetId.IsEntityId())
{
var lathatoSzervezetIdList = szervezetHelper.GetLathatoSzervezetIdList(alkalmazottSzervezetId, SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek);
// NOTE: és a vizsgált sor feljegyzőjének szervezetId-ja benne van a látható szervezetek listájában
if (lathatoSzervezetIdList.Contains(szervezetId.Value))
{
// NOTE: akkor nem törlendő a sor
return false;
}
}
// NOTE: vagy ha nem várunk szervezetet és a soron van feljegyző szervezetId
else if (!szervezetTipusEnumId.IsEntityId() && szervezetId.IsEntityId())
{
// NOTE: ha a tanuló csoportjában levő sorok között van olyan, aminél nincs megadva feljegyző szervezetId
if (dataRowList.Any(x => !SDAConvert.ToNullableInt32(x["FeljegyzoSzervezetId"]).IsEntityId()))
{
// NOTE: akkor a vizsgált sor törlendő
return true;
}
else
{
// NOTE: ha nincs ilyen sor, akkor törlünk minden tanulóesemény és szervezet adatot a sorból
ResetFeljegyzesTanuloEsemenySzervezetAdatok(dataRow);
return false;
}
}
// NOTE: vagy ha várunk szervezetet és a soron nincs feljegyző szervezetId
else if (szervezetTipusEnumId.IsEntityId() && !szervezetId.IsEntityId())
{
// NOTE: ha a tanuló csoportjában levő sorok között van olyan, amelyiknél helyes feljegyző szervezetId van beállítva
if (dataRowList.Any(x =>
{
// NOTE: a csoportban levő sorrol el kell dönteni, hogy a feljegyző szervezetId-ja megfelelő-e
var feljegyzoSzervezetId = SDAConvert.ToNullableInt32(x["FeljegyzoSzervezetId"]);
var lathatoSzervezetIdList = szervezetHelper.GetLathatoSzervezetIdList(alkalmazottSzervezetId, SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek);
// NOTE: ha az adott sor feljegyző szervezetId-ja megfelelő
if (feljegyzoSzervezetId.IsEntityId() && lathatoSzervezetIdList.Contains(feljegyzoSzervezetId.Value))
{
// NOTE: akkor van helyes sor
return true;
}
// NOTE: egyébként nincs helyes sor
return false;
}))
{
// NOTE: akkor a vizsgált sor törlendő
return true;
}
else
{
// NOTE: ha nincs ilyen sor, akkor törlünk minden tanulóesemény és szervezet adatot a sorból
ResetFeljegyzesTanuloEsemenySzervezetAdatok(dataRow);
// NOTE: és a vizsgált sor nem törlendő
return false;
}
}
}
// NOTE: minden egyéb esetben törlendő a vizsgált sor
return true;
}).ToList().ForEach(row => row.Delete());
});
ds.AcceptChanges();
}
private void ResetFeljegyzesTanuloEsemenySzervezetAdatok(DataRow dataRow)
{
dataRow["ID"] = DBNull.Value;
dataRow["EsemenyDatuma"] = DBNull.Value;
dataRow["Targy"] = DBNull.Value;
dataRow["Tartalom"] = DBNull.Value;
dataRow["Tipus"] = DBNull.Value;
dataRow["FeljegyzoNeve"] = DBNull.Value;
if (dataRow.Table.Columns.Contains("FeljegyzoNeveElotagNelkul"))
{
dataRow["FeljegyzoNeveElotagNelkul"] = DBNull.Value;
}
dataRow["FeljegyzoSzervezetId"] = DBNull.Value;
}
}
}