1484 lines
75 KiB
C#
1484 lines
75 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Xml;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
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.Enums.ManualEnums;
|
|
using Kreta.Framework.Util;
|
|
using Kreta.Resources;
|
|
|
|
namespace Kreta.BusinessLogic.Helpers
|
|
{
|
|
public class FogadooraHelper : LogicBase
|
|
{
|
|
public FogadooraHelper(IConnectionType connectionType) : base(connectionType) { }
|
|
|
|
public DataSet GetFogadoora(FogadooraSearchCo searchCo)
|
|
{
|
|
var dataSet = Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetFogadoora(
|
|
IntezmenyId,
|
|
TanevId,
|
|
searchCo.ConvertToPco()
|
|
);
|
|
});
|
|
|
|
dataSet.Tables[0].Columns.Add("JelentkezesekKezelese");
|
|
dataSet.Tables[0].Columns.Add("Rendszeresseg");
|
|
dataSet.Tables[0].Columns.Add("OsztalyCsoportFormatted");
|
|
|
|
var temp = dataSet.Tables[0].AsEnumerable();
|
|
var RendszeressegDictionary = EnumExtensions.EnumToDictionary<FogadooraRendszeressegEnum>(tanevId: TanevId);
|
|
|
|
var TipusDictionary = new Dictionary<int, string>
|
|
{
|
|
{(int)FogadooraTipusEnum.Jelentkezheto, FogadooraResource.Igen },
|
|
{(int)FogadooraTipusEnum.NemJelentkezheto, FogadooraResource.Nem },
|
|
{(int)FogadooraTipusEnum.JelentkezhetoDarabolt, FogadooraResource.Idopontra },
|
|
};
|
|
|
|
foreach (var row in temp)
|
|
{
|
|
row["JelentkezesekKezelese"] = TipusDictionary.First(x => x.Key == (int)row["JelentkezesekKezeleseId"]).Value;
|
|
row["Rendszeresseg"] = RendszeressegDictionary.First(x => x.Key == row["RendszeressegId"].ToString()).Value;
|
|
|
|
var ocsStr = row["OsztalyCsoport"].ToString();
|
|
if (ocsStr.Length > 70 && ocsStr.LastIndexOf(',') > 0)
|
|
{
|
|
int indx = ocsStr.LastIndexOf(',');
|
|
row["OsztalyCsoportFormatted"] = ocsStr.Substring(0, indx) + " ...";
|
|
}
|
|
else
|
|
{
|
|
row["OsztalyCsoportFormatted"] = row["OsztalyCsoport"].ToString();
|
|
}
|
|
}
|
|
|
|
return dataSet;
|
|
}
|
|
|
|
private DataSet GetGondviselokByFogadooraId(IDalHandler h, int fogadooraId)
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetGondviselokByFogadooraId(fogadooraId);
|
|
}
|
|
|
|
public DataSet GetJelentkezettGondviseloCntByFogadooraId(int fogadooraId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetJelentkezettGondviseloCntByFogadooraId(fogadooraId);
|
|
});
|
|
}
|
|
|
|
private DataSet GetGondviselokByFogadooraIdAndOsztalyCsoportId(IDalHandler h, int fogadooraId, int osztalyCsoportId)
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetGondviselokByFogadooraIdAndOsztalyCsoportId(fogadooraId, osztalyCsoportId);
|
|
}
|
|
|
|
public void DeleteFogadoora(int fogadooraId, int modositasiIdoszakTipus)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
TanevCO tanevCO;
|
|
var tanevHelper = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
|
|
tanevCO = tanevHelper.GetTanevInfo();
|
|
|
|
var gondviseloDs = GetGondviselokByFogadooraId(h, fogadooraId);
|
|
var fogadooraCo = GetFogadooraById(h, fogadooraId);
|
|
DateTime idopontVege = fogadooraCo.FogadoOraVege;
|
|
var lista = new List<(int Id, DateTime Idopont)>();
|
|
switch (modositasiIdoszakTipus)
|
|
{
|
|
case (int)OraModositasiIdoszakTipus.EgyOra:
|
|
lista.Add((fogadooraId, fogadooraCo.FogadoOraKezdete));
|
|
break;
|
|
case (int)OraModositasiIdoszakTipus.AdottNaptol:
|
|
lista = GetFogadooraIdAndKezdeteByGroupIdList(h, fogadooraCo.GroupId, fogadooraCo.FogadoOraDatuma, tanevCO.UtolsoTanitasiNap);
|
|
break;
|
|
case (int)OraModositasiIdoszakTipus.AdottNapig:
|
|
lista = GetFogadooraIdAndKezdeteByGroupIdList(h, fogadooraCo.GroupId, tanevCO.ElsoTanitasiNap, fogadooraCo.FogadoOraDatuma);
|
|
break;
|
|
case (int)OraModositasiIdoszakTipus.TeljesIdoszak:
|
|
lista = GetFogadooraIdAndKezdeteByGroupIdList(h, fogadooraCo.GroupId, tanevCO.ElsoTanitasiNap, tanevCO.UtolsoTanitasiNap);
|
|
break;
|
|
}
|
|
|
|
var elsoAlkalomDatuma = GetRendszeresModifyDeleteElsoDatum(lista);
|
|
|
|
var dal = h.Fogadoora(GridParameters);
|
|
foreach (var (Id, Idopont) in lista)
|
|
{
|
|
dal.DeleteFogadoora(Id);
|
|
}
|
|
|
|
bool isEgyalkalom = lista.Count < 2;
|
|
|
|
PedagogusToroltFogadooraEmailKuldes(h, fogadooraCo.TanarId, fogadooraCo.TeremId, isEgyalkalom, elsoAlkalomDatuma, idopontVege, fogadooraCo.Rendszeresseg, fogadooraCo.JelentkezesHatarideje);
|
|
GondviseloToroltFogadooraEmailKuldes(h, gondviseloDs, fogadooraCo.TanarId, fogadooraCo.TeremId, isEgyalkalom, elsoAlkalomDatuma, idopontVege, fogadooraCo.Rendszeresseg, fogadooraCo.JelentkezesHatarideje);
|
|
|
|
if (fogadooraCo.IsFaliujsagonMegjelenjen) //beállítától függjön?
|
|
{
|
|
SaveToroltFogadooraFaliujsag(h, fogadooraCo, isEgyalkalom, elsoAlkalomDatuma, idopontVege);
|
|
}
|
|
});
|
|
}
|
|
|
|
public DataSet GetFogadooraDokumentumAdatok(int fogadooraId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetFogadooraDokumentumAdatok(fogadooraId, TanevId);
|
|
});
|
|
}
|
|
|
|
public DataSet GetFogadooraOsztalyCsoportok(bool isSzuperOsztalyfonok)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetFogadooraOsztalyCsoportok(TanevId, FelhasznaloId, isSzuperOsztalyfonok);
|
|
});
|
|
}
|
|
|
|
private int InsertNewFogadoora(IDalHandler h, FogadooraCo fogadooraCo)
|
|
{
|
|
if (fogadooraCo.Rendszeresseg == (int)FogadooraRendszeressegEnum.EgyAlkalom)
|
|
{
|
|
return InsertFogadoora(h, fogadooraCo);
|
|
}
|
|
|
|
return InsertFogadooraTobbalkalom(h, fogadooraCo);
|
|
}
|
|
|
|
public Dictionary<string, string> SaveFogadoora(FogadooraCo fogadooraCo)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var tanevCO = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanevInfo();
|
|
|
|
var isIdopontUjraGeneralasKell = false;
|
|
|
|
var validateDictionary = ValidateFogadoora(fogadooraCo);
|
|
|
|
if (validateDictionary.Any())
|
|
{
|
|
return validateDictionary;
|
|
}
|
|
|
|
if (fogadooraCo.Id.HasValue)
|
|
{
|
|
var gondviseloDs = GetGondviselokByFogadooraId(h, fogadooraCo.Id.Value);
|
|
var oldFogadooraCo = GetFogadooraById(h, fogadooraCo.Id.Value);
|
|
fogadooraCo.FaliujsagId = oldFogadooraCo.FaliujsagId;
|
|
fogadooraCo.GroupId = oldFogadooraCo.GroupId;
|
|
fogadooraCo.FaliujsagId = oldFogadooraCo.FaliujsagId;
|
|
fogadooraCo.Rendszeresseg = oldFogadooraCo.Rendszeresseg;
|
|
var lista = new List<(int Id, DateTime Idopont)>();
|
|
isIdopontUjraGeneralasKell = IsIdopontUjraGeneralasKell(h, fogadooraCo.Id.Value, fogadooraCo.JelentkezesekKezelese, fogadooraCo.IsIdosavraOsztas.Value, fogadooraCo.EgysegnyiIdopontok, fogadooraCo.FogadoOraKezdete, fogadooraCo.FogadoOraVege);
|
|
|
|
switch (fogadooraCo.ModositasiIdoszakTipus)
|
|
{
|
|
case (int)OraModositasiIdoszakTipus.TeljesIdoszak:
|
|
lista = GetFogadooraIdAndKezdeteByGroupIdList(h, oldFogadooraCo.GroupId, DateTime.Now, tanevCO.UtolsoTanitasiNap);
|
|
break;
|
|
case (int)OraModositasiIdoszakTipus.AdottNaptol:
|
|
lista = GetFogadooraIdAndKezdeteByGroupIdList(h, oldFogadooraCo.GroupId, fogadooraCo.FogadoOraDatuma, tanevCO.UtolsoTanitasiNap);
|
|
break;
|
|
case (int)OraModositasiIdoszakTipus.AdottNapig:
|
|
lista = GetFogadooraIdAndKezdeteByGroupIdList(h, oldFogadooraCo.GroupId, DateTime.Now, fogadooraCo.FogadoOraDatuma);
|
|
break;
|
|
case (int)OraModositasiIdoszakTipus.EgyOra:
|
|
lista.Add((fogadooraCo.Id.Value, fogadooraCo.FogadoOraKezdete));
|
|
fogadooraCo.Rendszeresseg = 0;
|
|
break;
|
|
}
|
|
|
|
bool isEgyalkalom = lista.Count < 2;
|
|
UpdateFogadoora(h, lista, fogadooraCo, isIdopontUjraGeneralasKell);
|
|
|
|
if (isIdopontUjraGeneralasKell || oldFogadooraCo.TeremId != fogadooraCo.TeremId)
|
|
{
|
|
var elsoAlkalomDatuma = GetRendszeresModifyDeleteElsoDatum(lista).Date;
|
|
var oldFogadooraKezdete = elsoAlkalomDatuma.AddHours(oldFogadooraCo.FogadoOraKezdete.Hour).AddMinutes(oldFogadooraCo.FogadoOraKezdete.Minute);
|
|
var oldFogadooraVege = elsoAlkalomDatuma.AddHours(oldFogadooraCo.FogadoOraVege.Hour).AddMinutes(oldFogadooraCo.FogadoOraVege.Minute);
|
|
var newFogadooraKezdete = elsoAlkalomDatuma.AddHours(fogadooraCo.FogadoOraKezdete.Hour).AddMinutes(fogadooraCo.FogadoOraKezdete.Minute);
|
|
var newFogadooraVege = elsoAlkalomDatuma.AddHours(fogadooraCo.FogadoOraVege.Hour).AddMinutes(fogadooraCo.FogadoOraVege.Minute);
|
|
|
|
PedagogusModositottFogadooraEmailKuldes(h, fogadooraCo.TanarId, oldFogadooraCo.TeremId, fogadooraCo.TeremId, oldFogadooraKezdete, oldFogadooraVege, newFogadooraKezdete, newFogadooraVege, isEgyalkalom, fogadooraCo.Rendszeresseg, fogadooraCo.JelentkezesHatarideje);
|
|
GondviseloModositottFogadooraEmailKuldes(h, gondviseloDs, fogadooraCo.TanarId, oldFogadooraCo.TeremId, fogadooraCo.TeremId, oldFogadooraKezdete, oldFogadooraVege, newFogadooraKezdete, newFogadooraVege, isEgyalkalom, fogadooraCo.Rendszeresseg, fogadooraCo.JelentkezesHatarideje);
|
|
|
|
if (fogadooraCo.IsFaliujsagonMegjelenjen) //beállítástól függjön?
|
|
{
|
|
fogadooraCo.Id = fogadooraCo.GroupId;
|
|
SaveModositottFogadooraFaliujsag(h, fogadooraCo, fogadooraCo.TeremId, newFogadooraKezdete, newFogadooraVege, isEgyalkalom);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var newFogadooraKezdete = fogadooraCo.RendszeresFogadooraElsoDatuma?.AddHours(fogadooraCo.FogadoOraKezdete.Hour).AddMinutes(fogadooraCo.FogadoOraKezdete.Minute) ?? fogadooraCo.FogadoOraKezdete;
|
|
var newFogadooraVege = fogadooraCo.RendszeresFogadooraUtolsoDatuma?.AddHours(fogadooraCo.FogadoOraVege.Hour).AddMinutes(fogadooraCo.FogadoOraVege.Minute) ?? fogadooraCo.FogadoOraVege;
|
|
var groupId = InsertNewFogadoora(h, fogadooraCo);
|
|
PedagogusUjFogadooraEmailKuldes(h, groupId, fogadooraCo.TanarId, fogadooraCo.TeremId, newFogadooraKezdete, newFogadooraVege, fogadooraCo.Rendszeresseg, fogadooraCo.EgysegnyiIdopontok, fogadooraCo.FogadooraTipusEnumId, fogadooraCo.JelentkezesHatarideje, isIdosavraOsztas: fogadooraCo.IsIdosavraOsztas);
|
|
GondviseloUjFogadooraEmailKuldes(h, groupId, fogadooraCo.TanarId, fogadooraCo.TeremId, newFogadooraKezdete, newFogadooraVege, fogadooraCo.Rendszeresseg, fogadooraCo.EgysegnyiIdopontok, fogadooraCo.JelentkezesHatarideje, isIdosavraOsztas: fogadooraCo.IsIdosavraOsztas);
|
|
|
|
if (fogadooraCo.IsFaliujsagonMegjelenjen) //beállítástól függjön?
|
|
{
|
|
fogadooraCo.Id = groupId;
|
|
SaveUjFogadooraFaliujsag(h, fogadooraCo, tanevCO.OraFelvetelKezdete, tanevCO.UtolsoTanitasiNap, newFogadooraKezdete, newFogadooraVege);
|
|
}
|
|
}
|
|
|
|
return validateDictionary;
|
|
});
|
|
}
|
|
|
|
private Dictionary<string, string> ValidateFogadoora(FogadooraCo fogadooraCo)
|
|
{
|
|
Dictionary<string, string> modelStateDictionary = new Dictionary<string, string>();
|
|
|
|
if (fogadooraCo.FogadoOraKezdete >= fogadooraCo.FogadoOraVege)
|
|
{
|
|
modelStateDictionary.Add(nameof(fogadooraCo.FogadoOraVege), FogadooraResource.AFogadooraVegeIdopontjaNemLehetKorabbanMintaKezdoIdopont);
|
|
}
|
|
|
|
if (new DateTime(fogadooraCo.FogadoOraDatuma.Year, fogadooraCo.FogadoOraDatuma.Month, fogadooraCo.FogadoOraDatuma.Day, fogadooraCo.FogadoOraKezdete.Hour, fogadooraCo.FogadoOraKezdete.Minute, fogadooraCo.FogadoOraKezdete.Second) <= DateTime.Now)
|
|
{
|
|
modelStateDictionary.Add(nameof(fogadooraCo.FogadoOraKezdete), FogadooraResource.FogadooraCreateIsFutureError);
|
|
}
|
|
|
|
if (fogadooraCo.SelectedOsztalyCsoportIdList.Count == 0)
|
|
{
|
|
modelStateDictionary.Add(nameof(fogadooraCo.SelectedOsztalyCsoportIdList), FogadooraResource.NincsBeallitvaCsoportvagyOsztalyAFogadoorahoz);
|
|
}
|
|
|
|
if ((int)FogadooraRendszeressegEnum.Egyedi == fogadooraCo.Rendszeresseg && !fogadooraCo.Id.HasValue)
|
|
{
|
|
if (!fogadooraCo.FogadooraDatumList.Any())
|
|
{
|
|
modelStateDictionary.Add(nameof(fogadooraCo.FogadooraDatumList), FogadooraResource.EgyediRendszeresseguFogadooranalLegalabbEgyIdopontKivalasztasaKotelezo);
|
|
}
|
|
}
|
|
|
|
var span = fogadooraCo.FogadoOraVege.Subtract(fogadooraCo.FogadoOraKezdete);
|
|
var oraHoszaInMinutes = span.Hours * 60 + span.Minutes;
|
|
if (fogadooraCo.JelentkezesekKezelese && fogadooraCo.IsIdosavraOsztas.HasValue && fogadooraCo.IsIdosavraOsztas.Value && oraHoszaInMinutes < fogadooraCo.EgysegnyiIdopontok)
|
|
{
|
|
modelStateDictionary.Add(nameof(fogadooraCo.EgysegnyiIdopontok), FogadooraResource.FogadooraIdotartamaKevesebbMintAzEgysegnyiIdopontok);
|
|
}
|
|
if (oraHoszaInMinutes < 15)
|
|
{
|
|
modelStateDictionary.Add(nameof(oraHoszaInMinutes), FogadooraResource.OraHosszaNemLehet15PercnelRovidebb);
|
|
}
|
|
|
|
var rendszeressegTipusList = new List<int> { (int)FogadooraRendszeressegEnum.Heti, (int)FogadooraRendszeressegEnum.HetirendAlapu };
|
|
|
|
if (!fogadooraCo.Id.HasValue && rendszeressegTipusList.Contains(fogadooraCo.Rendszeresseg) && fogadooraCo.RendszeresFogadooraElsoDatuma >= fogadooraCo.RendszeresFogadooraUtolsoDatuma)
|
|
{
|
|
modelStateDictionary.Add(nameof(fogadooraCo.RendszeresFogadooraUtolsoDatuma), FogadooraResource.AFogadooraUtolsoDatumaNemLehetKorabbanMintAzElsoDatuma);
|
|
}
|
|
|
|
if (!fogadooraCo.Id.HasValue && (rendszeressegTipusList.Contains(fogadooraCo.Rendszeresseg) && fogadooraCo.RendszeresFogadooraElsoDatuma <= DateTime.Today || fogadooraCo.FogadooraDatumList.Any(x => x <= DateTime.Today)))
|
|
{
|
|
modelStateDictionary.Add(nameof(fogadooraCo.RendszeresFogadooraElsoDatuma), FogadooraResource.FogadooraFelivetleCsakJovobeliDatumraLehetseges);
|
|
}
|
|
|
|
if (fogadooraCo.IsFaliujsagonMegjelenjen && (fogadooraCo.FaliujsagErvenyessegKezdete >= fogadooraCo.FaliujsagErvenyessegVege))
|
|
{
|
|
modelStateDictionary.Add(nameof(fogadooraCo.FaliujsagErvenyessegVege), FogadooraResource.AFaliujsagVegeIdopontjaNemLehetKorabbanMintaKezdoIdopont);
|
|
}
|
|
|
|
return modelStateDictionary;
|
|
}
|
|
|
|
private int PreUpdateFogadoora(IDalHandler h, FogadooraCo fogadooraCo, List<DateTime> modositottIdopontok = null)
|
|
{
|
|
return InsertFogadooraTobbalkalom(h, fogadooraCo, modositottIdopontok, fogadooraCo.GroupId);
|
|
}
|
|
|
|
private int InsertFogadoora(IDalHandler h, FogadooraCo fogadooraCo, int groupId = -1)
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
var entity = dal.Get();
|
|
|
|
entity.FogadooraKezdete = fogadooraCo.FogadoOraKezdete;
|
|
entity.FogadooraVege = fogadooraCo.FogadoOraVege;
|
|
entity.Rendszeresseg = fogadooraCo.Rendszeresseg;
|
|
entity.FogadooraTipusId = fogadooraCo.FogadooraTipusEnumId;
|
|
entity.TanarId = fogadooraCo.TanarId;
|
|
entity.TeremId = fogadooraCo.TeremId;
|
|
entity.Egyseg = fogadooraCo.EgysegnyiIdopontok;
|
|
|
|
if (fogadooraCo.JelentkezesHatarideje.HasValue)
|
|
{
|
|
entity.JelentkezesHatarido = fogadooraCo.FogadoOraKezdete.AddHours(-fogadooraCo.JelentkezesHatarideje.Value);
|
|
}
|
|
|
|
if (fogadooraCo.FaliujsagId.IsEntityId())
|
|
{
|
|
entity.TanuloEsemenyId = fogadooraCo.FaliujsagId;
|
|
}
|
|
|
|
InsertNemkotottMunkaido(h, fogadooraCo);
|
|
|
|
if (groupId < 0)
|
|
{
|
|
var entityId = dal.Insert(entity);
|
|
dal.UpdateFogadooraGroupId(entityId, entityId);
|
|
}
|
|
else
|
|
{
|
|
entity.GroupId = groupId;
|
|
dal.Insert(entity);
|
|
}
|
|
|
|
foreach (var osztalyCsoportId in fogadooraCo.SelectedOsztalyCsoportIdList)
|
|
{
|
|
var focs = dal.GetFogadooraOsztalyCsoport();
|
|
|
|
focs.FogadooraId = entity.ID;
|
|
focs.OsztalyCsoportId = osztalyCsoportId;
|
|
dal.Insert(focs);
|
|
}
|
|
|
|
if (fogadooraCo.JelentkezesekKezelese)
|
|
{
|
|
if (fogadooraCo.IsIdosavraOsztas == true)
|
|
{
|
|
int fogadooraSzeletekSzama = CalculateFogadooraIdoszeletekSzama(fogadooraCo);
|
|
if (fogadooraSzeletekSzama != 0)
|
|
{
|
|
var add = 0;
|
|
for (int i = 1; i < fogadooraSzeletekSzama + 1; i++)
|
|
{
|
|
var fi = dal.GetFogadooraIdopont();
|
|
fi.Kezdete = fogadooraCo.FogadoOraKezdete.AddMinutes(add);
|
|
fi.Vege = fogadooraCo.FogadoOraKezdete.AddMinutes(i * fogadooraCo.EgysegnyiIdopontok);
|
|
add = i * fogadooraCo.EgysegnyiIdopontok;
|
|
fi.FogadooraId = entity.ID;
|
|
dal.Insert(fi);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var fi = dal.GetFogadooraIdopont();
|
|
fi.Kezdete = fogadooraCo.FogadoOraKezdete;
|
|
fi.Vege = fogadooraCo.FogadoOraVege;
|
|
fi.FogadooraId = entity.ID;
|
|
dal.Insert(fi);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var fi = dal.GetFogadooraIdopont();
|
|
fi.Kezdete = fogadooraCo.FogadoOraKezdete;
|
|
fi.Vege = fogadooraCo.FogadoOraVege;
|
|
fi.FogadooraId = entity.ID;
|
|
dal.Insert(fi);
|
|
}
|
|
}
|
|
|
|
return entity.ID;
|
|
}
|
|
|
|
private void UpdateFogadoora(IDalHandler h, List<(int Id, DateTime Idopont)> fogadooraIdList, FogadooraCo fogadooraCo, bool IsIdopontUjraGeneralasKell)
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
|
|
if (IsIdopontUjraGeneralasKell)
|
|
{
|
|
foreach (var (Id, Idopont) in fogadooraIdList)
|
|
{
|
|
dal.DeleteFogadoora(Id);
|
|
}
|
|
PreUpdateFogadoora(h, fogadooraCo, fogadooraIdList.Select(x => x.Idopont).ToList());
|
|
}
|
|
else
|
|
{
|
|
var maradekElemek = GetFogadooraOsztalyCsoportMaradekElemek(h, fogadooraCo.GroupId);
|
|
bool ujonnanFelvettOsztalycsoportokMailjeiKikuldve = false;
|
|
foreach (var (Id, Idopont) in fogadooraIdList)
|
|
{
|
|
var entity = dal.Get(Id);
|
|
|
|
entity.TeremId = fogadooraCo.TeremId;
|
|
entity.TanuloEsemenyId = fogadooraCo.FaliujsagId;
|
|
|
|
if (fogadooraCo.JelentkezesHatarideje.HasValue)
|
|
{
|
|
entity.JelentkezesHatarido = fogadooraCo.FogadoOraKezdete.AddHours(-fogadooraCo.JelentkezesHatarideje.Value);
|
|
}
|
|
|
|
dal.FullUpdate(entity);
|
|
|
|
var jelentkezesHatarideje = entity.JelentkezesHatarido.HasValue ? (int?)(entity.FogadooraKezdete - entity.JelentkezesHatarido.Value).TotalHours : null;
|
|
|
|
// újonnan felvett osztálycsoportok
|
|
foreach (var osztalyCsoportId in fogadooraCo.SelectedOsztalyCsoportIdList.Except(entity.Fogadoora_OsztalyCsoport.Where(x => !x.Torolt).Select(y => y.OsztalyCsoportId)))
|
|
{
|
|
var focs = dal.GetFogadooraOsztalyCsoport();
|
|
focs.FogadooraId = entity.ID;
|
|
focs.OsztalyCsoportId = osztalyCsoportId;
|
|
dal.Insert(focs);
|
|
|
|
if (!ujonnanFelvettOsztalycsoportokMailjeiKikuldve)
|
|
{
|
|
GondviseloUjFogadooraEmailKuldes(h, Id, entity.TanarId, entity.TeremId, entity.FogadooraKezdete, entity.FogadooraVege, entity.Rendszeresseg, entity.Egyseg ?? 0, jelentkezesHatarideje, osztalyCsoportId, isIdosavraOsztas: fogadooraCo.IsIdosavraOsztas);
|
|
}
|
|
if (fogadooraCo.IsFaliujsagonMegjelenjen)
|
|
{
|
|
InsertOsztalyCsoportTanuloesemenyByFogadooraId(h, Id, osztalyCsoportId);
|
|
}
|
|
}
|
|
ujonnanFelvettOsztalycsoportokMailjeiKikuldve = true;
|
|
//eltávolított osztálycsoportok
|
|
foreach (var osztalyCsoportId in fogadooraCo.ModifiedOsztalyCsoportList.Where(x => x.Value == false).Select(x => x.Key))
|
|
{
|
|
var isEgyalkalom = fogadooraIdList.Count > 2;
|
|
DeleteFogadooraOsztalyCsoportByFogadooraIdOsztalyCsoportId(h, Id, osztalyCsoportId);
|
|
var ertesitendoGondviseloDS = DeleteGondviseloJelentkezesByFogadooraIdOsztalyCsoportId(h, Id, osztalyCsoportId);
|
|
|
|
GondviseloToroltFogadooraEmailKuldes(h, ertesitendoGondviseloDS, entity.TanarId, entity.TeremId, isEgyalkalom, entity.FogadooraKezdete, entity.FogadooraVege, entity.Rendszeresseg, jelentkezesHatarideje);
|
|
if (fogadooraCo.IsFaliujsagonMegjelenjen
|
|
&& (maradekElemek.AsEnumerable().First(x => x.Field<int>("OsztalyCsoportId") == osztalyCsoportId).Field<int>("Darab") == fogadooraIdList.Count))
|
|
{
|
|
DeleteOsztalyCsoportTanuloesemenyByFogadooraId(h, Id, osztalyCsoportId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
UpdateFaliujsag(h, fogadooraCo);
|
|
}
|
|
|
|
private void UpdateFaliujsag(IDalHandler h, FogadooraCo co)
|
|
{
|
|
var tanevCo = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanevInfo();
|
|
var fogadooraList = GetFogadooraIdAndKezdeteByGroupIdList(h, co.GroupId, tanevCo.OraFelvetelKezdete, tanevCo.UtolsoTanitasiNap);
|
|
|
|
var faliujsagDal = h.Feljegyzes();
|
|
if (co.FaliujsagId.IsEntityId())
|
|
{
|
|
var faliujsagEntity = faliujsagDal.Get(co.FaliujsagId);
|
|
faliujsagEntity.Kezdete = co.FaliujsagErvenyessegKezdete;
|
|
faliujsagEntity.Vege = co.FaliujsagErvenyessegVege;
|
|
faliujsagDal.FullUpdate(faliujsagEntity);
|
|
}
|
|
|
|
var fogadooraDal = h.Fogadoora();
|
|
if (!co.IsFaliujsagonMegjelenjen && co.FaliujsagId.IsEntityId())
|
|
{
|
|
foreach (var (Id, _) in fogadooraList)
|
|
{
|
|
var fogadooraEntity = fogadooraDal.Get(Id);
|
|
fogadooraEntity.TanuloEsemeny = null;
|
|
fogadooraDal.FullUpdate(fogadooraEntity);
|
|
}
|
|
faliujsagDal.DeleteFeljegyzes(co.FaliujsagId);
|
|
}
|
|
|
|
if (co.IsFaliujsagonMegjelenjen && !co.FaliujsagId.IsEntityId())
|
|
{
|
|
var newFogadooraKezdete = co.RendszeresFogadooraElsoDatuma?.AddHours(co.FogadoOraKezdete.Hour).AddMinutes(co.FogadoOraKezdete.Minute) ?? co.FogadoOraKezdete;
|
|
var newFogadooraVege = co.RendszeresFogadooraUtolsoDatuma?.AddHours(co.FogadoOraVege.Hour).AddMinutes(co.FogadoOraVege.Minute) ?? co.FogadoOraVege;
|
|
SaveUjFogadooraFaliujsag(h, co, tanevCo.OraFelvetelKezdete, tanevCo.UtolsoTanitasiNap, newFogadooraKezdete, newFogadooraVege);
|
|
}
|
|
}
|
|
|
|
private NemKotottMunkaidoCO CreateNemKotottMunkaidoCO(FogadooraCo model)
|
|
{
|
|
return new NemKotottMunkaidoCO()
|
|
{
|
|
Id = model.Id,
|
|
GroupId = Guid.NewGuid().ToString(),
|
|
TorvenyKategoriaId = (int)TevekenysegTipusEnum.egyeb,
|
|
TanarId = FelhasznaloId,
|
|
TulajId = FelhasznaloId,
|
|
Kezdete = model.FogadoOraKezdete,
|
|
Vege = model.FogadoOraVege,
|
|
Megtartott = false,
|
|
Megjegyzes = FogadooraResource.Fogadoora,
|
|
NaplozottMegjegyzes = FogadooraResource.Fogadoora,
|
|
HetirendId = (int)HetiRendTipusEnum.MindegyikHet
|
|
};
|
|
}
|
|
|
|
private void InsertNemkotottMunkaido(IDalHandler h, FogadooraCo model)
|
|
{
|
|
var nemKotottMunkaIdoCo = CreateNemKotottMunkaidoCO(model);
|
|
|
|
if (model.IsNemKotottMunkaido)
|
|
{
|
|
var nemKotottMunkaidoHelper = new NemKotottMunkaidoHelper(new DalHandlerConnectionType(ConnectionType, h));
|
|
nemKotottMunkaidoHelper.Insert(nemKotottMunkaIdoCo);
|
|
}
|
|
}
|
|
|
|
private int InsertFogadooraTobbalkalom(IDalHandler h, FogadooraCo fogadooraCo, List<DateTime> modositottIdopontok = null, int groupId = -1)
|
|
{
|
|
var fogadooraIdopontList = modositottIdopontok ?? GetFogadooraDatumList(h, fogadooraCo);
|
|
|
|
foreach (var fogadooraIdopont in fogadooraIdopontList)
|
|
{
|
|
fogadooraCo.FogadoOraKezdete =
|
|
new DateTime(fogadooraIdopont.Year, fogadooraIdopont.Month, fogadooraIdopont.Day, fogadooraCo.FogadoOraKezdete.Hour, fogadooraCo.FogadoOraKezdete.Minute, fogadooraCo.FogadoOraKezdete.Second);
|
|
|
|
fogadooraCo.FogadoOraVege =
|
|
new DateTime(fogadooraIdopont.Year, fogadooraIdopont.Month, fogadooraIdopont.Day, fogadooraCo.FogadoOraVege.Hour, fogadooraCo.FogadoOraVege.Minute, fogadooraCo.FogadoOraVege.Second);
|
|
|
|
if (groupId < 0)
|
|
{
|
|
groupId = InsertFogadoora(h, fogadooraCo, groupId); //A gruop id az első elem id-ja lesz
|
|
}
|
|
else
|
|
{
|
|
InsertFogadoora(h, fogadooraCo, groupId);
|
|
}
|
|
}
|
|
|
|
return groupId;
|
|
}
|
|
|
|
private List<DateTime> GetFogadooraDatumList(IDalHandler h, FogadooraCo fogadooraCo)
|
|
{
|
|
var fogadooraIdopontList = new List<DateTime>();
|
|
if (fogadooraCo.Rendszeresseg == (int)FogadooraRendszeressegEnum.EgyAlkalom)
|
|
{
|
|
fogadooraIdopontList.Add(fogadooraCo.FogadoOraDatuma);
|
|
}
|
|
else if (fogadooraCo.Rendszeresseg == (int)FogadooraRendszeressegEnum.Egyedi)
|
|
{
|
|
fogadooraIdopontList = fogadooraCo.FogadooraDatumList;
|
|
}
|
|
else
|
|
{
|
|
fogadooraIdopontList = GetFogadooraIdopontokByRendszeressegTipusEnum(h, fogadooraCo.RendszeresFogadooraElsoDatuma.Value, fogadooraCo.RendszeresFogadooraUtolsoDatuma, (FogadooraRendszeressegEnum)fogadooraCo.Rendszeresseg);
|
|
}
|
|
return fogadooraIdopontList;
|
|
}
|
|
|
|
public List<DateTime> GetFogadooraDatumList(FogadooraCo fogadooraCo)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) => GetFogadooraDatumList(h, fogadooraCo));
|
|
}
|
|
|
|
private int CalculateFogadooraIdoszeletekSzama(FogadooraCo fogadooraCo)
|
|
{
|
|
var szeletekSzama = 0;
|
|
if (fogadooraCo.EgysegnyiIdopontok != 0)
|
|
{
|
|
TimeSpan span = fogadooraCo.FogadoOraVege.Subtract(fogadooraCo.FogadoOraKezdete);
|
|
var minutes = span.Hours * 60 + span.Minutes;
|
|
szeletekSzama = minutes / fogadooraCo.EgysegnyiIdopontok;
|
|
}
|
|
|
|
return szeletekSzama;
|
|
}
|
|
|
|
private List<DateTime> GetFogadooraIdopontokByRendszeressegTipusEnum(IDalHandler h, DateTime datum, DateTime? rendszeresFogadooraUtolsoDatuma, FogadooraRendszeressegEnum rendszeressegEnum)
|
|
{
|
|
DateTime utolsoNap = rendszeresFogadooraUtolsoDatuma ?? new TanevrendHelper(new DalHandlerConnectionType(ConnectionType, h)).GetUtolsoTanitasiNapDate();
|
|
|
|
var dal = h.Fogadoora(GridParameters);
|
|
var ds = dal.GetFogadooraIdopontokByRendszeressegTipusId(TanevId, (int)rendszeressegEnum, datum, utolsoNap);
|
|
|
|
var result = ds.Tables[0].AsEnumerable().Select(x => SDAConvert.ToDateTime(x["Datum"]).Value).ToList();
|
|
return result;
|
|
}
|
|
|
|
public FogadooraCo GetFogadooraById(int fogadooraId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
return GetFogadooraById(h, fogadooraId);
|
|
});
|
|
}
|
|
|
|
private FogadooraCo GetFogadooraById(IDalHandler h, int fogadooraId)
|
|
{
|
|
var fogadoora = h.Fogadoora().Get(fogadooraId);
|
|
|
|
var result = ConvertEntityToCoFogadooraToCo(h, fogadoora);
|
|
return result;
|
|
}
|
|
|
|
private FogadooraCo ConvertEntityToCoFogadooraToCo(IDalHandler h, IFogadoora fogadoora)
|
|
{
|
|
var (kezdete, vege) = GetFaliujsagDetails(h, fogadoora);
|
|
return new FogadooraCo()
|
|
{
|
|
Id = fogadoora.ID,
|
|
Rendszeresseg = fogadoora.Rendszeresseg,
|
|
EgysegnyiIdopontok = fogadoora.Egyseg.Value,
|
|
IsIdosavraOsztas = fogadoora.FogadooraTipusId == (int)FogadooraTipusEnum.JelentkezhetoDarabolt,
|
|
FogadoOraDatuma = fogadoora.FogadooraKezdete,
|
|
FogadoOraKezdete = fogadoora.FogadooraKezdete,
|
|
FogadoOraVege = fogadoora.FogadooraVege,
|
|
FogadooraTipusEnumId = fogadoora.FogadooraTipusId,
|
|
JelentkezesekKezelese = (int)FogadooraTipusEnum.Jelentkezheto == fogadoora.FogadooraTipusId || (int)FogadooraTipusEnum.JelentkezhetoDarabolt == fogadoora.FogadooraTipusId,
|
|
TanarId = fogadoora.TanarId,
|
|
TeremId = fogadoora.TeremId,
|
|
SelectedOsztalyCsoportIdList = fogadoora.Fogadoora_OsztalyCsoport.Where(s => !s.Torolt).Select(x => x.OsztalyCsoportId).ToList(),
|
|
TeremNev = fogadoora.Terem.Nev,
|
|
GroupId = fogadoora.GroupId,
|
|
IsFaliujsagonMegjelenjen = fogadoora.TanuloEsemenyId.IsEntityId(),
|
|
FaliujsagErvenyessegKezdete = kezdete,
|
|
FaliujsagErvenyessegVege = vege,
|
|
FaliujsagId = fogadoora.TanuloEsemenyId,
|
|
JelentkezesHatarideje = fogadoora.JelentkezesHatarido.HasValue ? (int?)(fogadoora.FogadooraKezdete - fogadoora.JelentkezesHatarido.Value).TotalHours : null
|
|
};
|
|
}
|
|
|
|
private DateTime GetRendszeresModifyDeleteElsoDatum(List<(int Id, DateTime Idopont)> datumList)
|
|
{
|
|
var result = datumList.Select(x => x.Idopont).OrderBy(x => x.Date).FirstOrDefault();
|
|
return result;
|
|
}
|
|
|
|
private (DateTime kezdete, DateTime vege) GetFaliujsagDetails(IDalHandler h, IFogadoora fogadoora)
|
|
{
|
|
if (fogadoora.TanuloEsemenyId.IsEntityId())
|
|
{
|
|
return (fogadoora.TanuloEsemeny.Kezdete.Value, fogadoora.TanuloEsemeny.Vege.Value);
|
|
}
|
|
DateTime ervenyessegVege;
|
|
switch (fogadoora.Rendszeresseg)
|
|
{
|
|
case (int)FogadooraRendszeressegEnum.EgyAlkalom:
|
|
ervenyessegVege = fogadoora.FogadooraVege.Date.AddDays(1);
|
|
break;
|
|
case (int)FogadooraRendszeressegEnum.Heti:
|
|
case (int)FogadooraRendszeressegEnum.HetirendAlapu:
|
|
var helper = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
|
|
ervenyessegVege = helper.GetTanevInfo().UtolsoNap;
|
|
break;
|
|
default:
|
|
ervenyessegVege = DateTime.Today.AddDays(1);
|
|
break;
|
|
}
|
|
return (DateTime.Today, ervenyessegVege);
|
|
}
|
|
|
|
private void DeleteFogadooraOsztalyCsoportByFogadooraIdOsztalyCsoportId(IDalHandler h, int fogadooraId, int osztalyCsoportId)
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
dal.DeleteFogadooraOsztalyCsoportByFogadooraIdOsztalyCsoportId(fogadooraId, osztalyCsoportId);
|
|
}
|
|
|
|
private void DeleteOsztalyCsoportTanuloesemenyByFogadooraId(IDalHandler h, int fogadooraId, int osztalyCsoportId)
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
dal.DeleteOsztalyCsoportTanuloesemenyByFogadooraId(fogadooraId, osztalyCsoportId);
|
|
}
|
|
|
|
private void InsertOsztalyCsoportTanuloesemenyByFogadooraId(IDalHandler h, int fogadooraId, int osztalyCsoportId)
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
dal.InsertOsztalyCsoportTanuloesemenyByFogadooraId(fogadooraId, osztalyCsoportId);
|
|
}
|
|
|
|
private DataSet DeleteGondviseloJelentkezesByFogadooraIdOsztalyCsoportId(IDalHandler h, int fogadooraId, int osztalyCsoportId)
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.DeleteFogadooraIdopontGondviseloByFogadooraIdOsztalyCsoportId(fogadooraId, osztalyCsoportId);
|
|
}
|
|
|
|
public DataSet GetFogadooraGondviselo(int gondviseloId, int? tanarId = null, int? teremId = null, DateTime? start = null, DateTime? end = null, DateTime? startTime = null, DateTime? endTime = null, bool? isJelentkezheto = null)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
var dataSet = dal.GetFogadooraGondviselo(
|
|
IntezmenyId,
|
|
TanevId,
|
|
gondviseloId,
|
|
tanarId,
|
|
teremId,
|
|
start,
|
|
end,
|
|
startTime,
|
|
endTime,
|
|
isJelentkezheto
|
|
);
|
|
|
|
var jelentkezettFogadoorak = dataSet.Tables[0].AsEnumerable()
|
|
.Where(x => (int)x["JelentkezesekKezeleseId"] == (int)FogadooraTipusEnum.JelentkezhetoDarabolt && !string.IsNullOrWhiteSpace(x["IdopontGondviseloId"].ToString()))
|
|
.Select(x => (int)x["ID"]).ToList();
|
|
|
|
var result = new DataSet();
|
|
var table = dataSet.Tables[0].Clone();
|
|
|
|
var data = dataSet.Tables[0].AsEnumerable();
|
|
foreach (var dataRow in data)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(dataRow["IdopontStr"].ToString()))
|
|
{
|
|
dataRow["IdopontStr"] = FogadooraResource.NemLehetJelentkezni;
|
|
}
|
|
if (!(jelentkezettFogadoorak.Contains((int)dataRow["Id"]) && string.IsNullOrWhiteSpace(dataRow["IdopontGondviseloId"].ToString())))
|
|
{
|
|
if ((int)dataRow["JelentkezesekKezeleseId"] == (int)FogadooraTipusEnum.JelentkezhetoDarabolt
|
|
&& (int)dataRow["jelentkezesAllapot"] == 1 /*nem jelentkezett*/
|
|
&& (int)dataRow["SzabadIdopontokSzama"] == 0)
|
|
{
|
|
dataRow["JelentkezesekKezeleseId"] = ((int)FogadooraTipusEnum.NemJelentkezheto).ToString();
|
|
}
|
|
table.ImportRow(dataRow);
|
|
}
|
|
}
|
|
result.Tables.Add(table);
|
|
|
|
return result;
|
|
});
|
|
}
|
|
|
|
public DataSet GetFogadooraIdopontok(int fogadooraId, int gondviseloId, FogadooraTipusEnum? tipus = null)
|
|
{
|
|
var dataSet = Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetFogadooraIdopontok(
|
|
new List<int> { fogadooraId },
|
|
gondviseloId,
|
|
tipus
|
|
);
|
|
});
|
|
|
|
return dataSet;
|
|
}
|
|
|
|
public bool IsIdopontUjraGeneralasKell(int Id, bool isJelentkezesekKezelese, bool IsIdosavraOsztas, int egysegnyiIdopontok, DateTime kezdete, DateTime vege)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h => IsIdopontUjraGeneralasKell(h, Id, isJelentkezesekKezelese, IsIdosavraOsztas, egysegnyiIdopontok, kezdete, vege));
|
|
}
|
|
|
|
private bool IsIdopontUjraGeneralasKell(IDalHandler h, int Id, bool isJelentkezesekKezelese, bool IsIdosavraOsztas, int egysegnyiIdopontok, DateTime kezdete, DateTime vege)
|
|
{
|
|
var entity = h.Fogadoora().Get(Id);
|
|
var tipusId = isJelentkezesekKezelese ? (IsIdosavraOsztas ? (int)FogadooraTipusEnum.JelentkezhetoDarabolt : (int)FogadooraTipusEnum.Jelentkezheto) : (int)FogadooraTipusEnum.NemJelentkezheto;
|
|
|
|
var result = entity.FogadooraTipusId != tipusId
|
|
||
|
|
tipusId == (int)FogadooraTipusEnum.JelentkezhetoDarabolt && entity.Egyseg.HasValue && entity.Egyseg.Value != egysegnyiIdopontok
|
|
|| entity.FogadooraKezdete.Hour != kezdete.Hour || entity.FogadooraKezdete.Minute != kezdete.Minute || entity.FogadooraVege.Hour != vege.Hour || entity.FogadooraVege.Minute != vege.Minute;
|
|
|
|
return result;
|
|
}
|
|
|
|
/// INFO: Mobil használja
|
|
public void FogadooraGondviseloJelentkezes(int idopontId, int gondviseloId)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
var foig = dal.GetFogadooraIdopontGondviselo();
|
|
|
|
foig.FogadooraIdopontId = idopontId;
|
|
foig.GondviseloId = gondviseloId;
|
|
if (!foig.IntezmenyId.IsEntityId())
|
|
{
|
|
foig.IntezmenyId = IntezmenyId;
|
|
}
|
|
dal.Insert(foig);
|
|
|
|
//Email küldés jelentkezéskor
|
|
var fogadooraIdopont = dal.GetFogadooraIdopont(idopontId);
|
|
var fogadoora = fogadooraIdopont.Fogadoora;
|
|
|
|
string osztalyCsoportok = string.Join(", ", fogadoora.Fogadoora_OsztalyCsoport.Where(focs => focs.OsztalyCsoport.Tanulo.Any(tcs => tcs.Tanulo.Gondviselo.Any(g => g.ID == gondviseloId && !g.Torolt) && !tcs.Torolt) && !focs.Torolt).Select(focs => focs.OsztalyCsoport.Nev));
|
|
|
|
PedagogusFogadooraJelentkezesEmailKuldes(h, fogadoora.TanarId, fogadoora.TeremId, gondviseloId, fogadooraIdopont.Kezdete, fogadooraIdopont.Vege, foig.Gondviselo.TanuloId, osztalyCsoportok);
|
|
GondviseloSikeresJelentkezesEmailKuldes(h, fogadoora.TanarId, fogadoora.TeremId, gondviseloId, fogadooraIdopont.Kezdete, fogadooraIdopont.Vege, foig.Gondviselo.TanuloId, osztalyCsoportok);
|
|
});
|
|
}
|
|
|
|
/// INFO: Mobil használja
|
|
public void FogadooraGondviseloJelentkezesLemondas(int idopontId, int gondviseloId)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
|
|
var fogadooraIdopont = dal.GetFogadooraIdopont(idopontId);
|
|
var idopontGondviselo = fogadooraIdopont.FogadooraIdopont_Gondviselo.FirstOrDefault(x => x.GondviseloId == gondviseloId && !x.Torolt && !x.Gondviselo.Torolt);
|
|
|
|
if (idopontGondviselo != null)
|
|
{
|
|
FogadooraGondviseloJelentkezesLemondas(idopontGondviselo.ID);
|
|
}
|
|
});
|
|
}
|
|
|
|
public void FogadooraGondviseloJelentkezesLemondas(int idopontGondviseloId)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
|
|
var fogadooraIdopontGondviselo = dal.GetFogadooraIdopontGondviselo(idopontGondviseloId);
|
|
var fogadooraIdopont = dal.GetFogadooraIdopont(fogadooraIdopontGondviselo.FogadooraIdopontId);
|
|
var fogadoora = fogadooraIdopont.Fogadoora;
|
|
|
|
string osztalyCsoportok = string.Join(", ", fogadoora.Fogadoora_OsztalyCsoport.Where(focs => focs.OsztalyCsoport.Tanulo.Any(tcs => tcs.Tanulo.Gondviselo.Any(g => g.ID == fogadooraIdopontGondviselo.GondviseloId && !g.Torolt) && !tcs.Torolt) && !focs.Torolt).Select(focs => focs.OsztalyCsoport.Nev));
|
|
|
|
PedagogusFogadooraJelentkezesLemondasEmailKuldes(h, fogadoora.TanarId, fogadoora.TeremId, fogadooraIdopontGondviselo.GondviseloId, fogadooraIdopont.Kezdete, fogadooraIdopont.Vege, fogadooraIdopontGondviselo.Gondviselo.TanuloId, osztalyCsoportok);
|
|
|
|
dal.DeleteFogadooraIdopontGondviselo(idopontGondviseloId);
|
|
});
|
|
}
|
|
|
|
#region Email
|
|
|
|
private void FogadooraEmailKuldes(IDalHandler h, FogadooraEmailModel model)
|
|
=> new UzenetekHelper(new DalHandlerConnectionType(ConnectionType, h)).EmailKuldes(model.Message, model.Subject, model.EmailCim, model.EmailGuid);
|
|
private void FogadooraEmailekKuldese(IDalHandler h, List<FogadooraEmailModel> modelList)
|
|
=> new UzenetekHelper(new DalHandlerConnectionType(ConnectionType, h)).EmailekKuldese(modelList);
|
|
|
|
private string TanarNev(IDalHandler h, int tanarid)
|
|
=> new TanarHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanarNev(tanarid);
|
|
|
|
private string TanuloNev(IDalHandler h, int tanuloid)
|
|
=> new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanuloNev(tanuloid);
|
|
|
|
private string GondviseloNev(IDalHandler h, int gondviseloId)
|
|
=> new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanuloGondviseloById(gondviseloId).GondviseloNeve;
|
|
|
|
private (string email, Guid? guid) GetGondviseloEmailCimAndGuid(IDalHandler h, int gondviseloId)
|
|
=> new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).GetGondviseloEmailCimAndGuid(gondviseloId);
|
|
|
|
private string TeremNev(IDalHandler h, int teremId)
|
|
=> new TeremHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTeremNev(teremId);
|
|
|
|
private static IEmail TanarEmailCim(IDalHandler h, int tanarid)
|
|
{
|
|
var oTanar = h.Alkalmazott().Get(tanarid);
|
|
|
|
var emailList = oTanar.Email;
|
|
if (emailList.Any(x => x.Alapertelmezett && !x.Torolt && !x.IsHibasanMegadva))
|
|
{
|
|
return emailList.First(x => x.Alapertelmezett && !x.Torolt && !x.IsHibasanMegadva);
|
|
}
|
|
|
|
return emailList.Any(x => x.EmailTipusa == (int)EmailTipusEnum.Hivatalos && !x.Torolt && !x.IsHibasanMegadva)
|
|
? emailList.First(x => x.EmailTipusa == (int)EmailTipusEnum.Hivatalos && !x.Torolt && !x.IsHibasanMegadva)
|
|
: null;
|
|
}
|
|
|
|
private IntezmenyCO Intezmeny(IDalHandler h)
|
|
=> new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetIntezmenyiAdatok();
|
|
|
|
private (string rendszeresseg, string idopont) FogadaooraDetails(int rendszeressegEnumId)
|
|
{
|
|
switch (rendszeressegEnumId)
|
|
{
|
|
case (int)FogadooraRendszeressegEnum.EgyAlkalom:
|
|
return (string.Empty, FogadooraResource.Idopont);
|
|
case (int)FogadooraRendszeressegEnum.Heti:
|
|
return (FogadooraResource.HetiRendszeressegu, FogadooraResource.ElsoAlkalomIdopontja);
|
|
case (int)FogadooraRendszeressegEnum.HetirendAlapu:
|
|
return (FogadooraResource.HetirendAlapuRendszeressegu, FogadooraResource.ElsoAlkalomIdopontja);
|
|
case (int)FogadooraRendszeressegEnum.Egyedi:
|
|
return (FogadooraResource.EgyediRendszeressegu, FogadooraResource.ElsoAlkalomIdopontja);
|
|
}
|
|
|
|
return (string.Empty, string.Empty);
|
|
}
|
|
|
|
private void PedagogusUjFogadooraEmailKuldes(IDalHandler h, int fogadooraId, int tanarId, int teremId, DateTime idopontKezdete, DateTime idopontVege, int rendszeressegId, int egysegnyiIdopontok, int fogadooraTipusEnumId, int? jelentkezesHatarideje, bool? isIdosavraOsztas = null)
|
|
{
|
|
if (GetProfileData(h, tanarId, "FogadooraEmailUj"))
|
|
{
|
|
var tanarNev = TanarNev(h, tanarId);
|
|
var teremNev = TeremNev(h, teremId);
|
|
var (rendszeresseg, idopont) = FogadaooraDetails(rendszeressegId);
|
|
var fogadooraDetailList = (GetGondviselokByFogadooraId(h, fogadooraId)).Tables[0].AsEnumerable().Select(g => new { OsztalyNev = g["OsztalyNev"], FogadooraJelentkezesTipus = g["FogadooraJelentkezesTipusa"] });
|
|
|
|
string KiirtOsztalyok = string.Join(", ", from osztaly in fogadooraDetailList.Select(s => s.OsztalyNev).Distinct().ToList() select osztaly);
|
|
|
|
string idosavraOsztasSzoveg = string.Empty;
|
|
if (isIdosavraOsztas.HasValue && isIdosavraOsztas.Value)
|
|
{
|
|
idosavraOsztasSzoveg = string.Format(EmailResource.UjFogadooraEmailTartalomIdosavraOsztasSzoveg, egysegnyiIdopontok);
|
|
}
|
|
|
|
IEmail email = TanarEmailCim(h, tanarId);
|
|
|
|
var emailModel = new FogadooraEmailModel
|
|
{
|
|
Message = string.Format(EmailResource.UjFogadooraPedagogusEmailTartalom,
|
|
tanarNev,
|
|
rendszeresseg,
|
|
idopont,
|
|
GetFogadooraIdopontIntervallum(idopontKezdete, idopontVege, true),
|
|
idosavraOsztasSzoveg,
|
|
fogadooraTipusEnumId != 0 ? EmailResource.Tudnak : EmailResource.NemTudnak,
|
|
GetJelentkezesiHataridoText(jelentkezesHatarideje),
|
|
teremNev,
|
|
tanarNev,
|
|
KiirtOsztalyok),
|
|
Subject = $"{EmailResource.UjFogadoora} - {idopontKezdete.ToShortDateString()} - {KiirtOsztalyok} osztály/csoport",
|
|
EmailCim = email?.EmailCim,
|
|
EmailGuid = email?.Guid
|
|
};
|
|
FogadooraEmailKuldes(h, emailModel);
|
|
}
|
|
}
|
|
|
|
public void GondviseloUjFogadooraEmailKuldes(IDalHandler h, int fogadooraId, int tanarId, int teremId, DateTime idopontKezdete, DateTime idopontVege, int rendszeressegId, int egysegnyiIdopontok, int? jelentkezesHatarideje, int? osztalyCsoportId = null, bool? isIdosavraOsztas = null)
|
|
{
|
|
var tanarNev = TanarNev(h, tanarId);
|
|
var teremNev = TeremNev(h, teremId);
|
|
var (rendszeresseg, idopont) = FogadaooraDetails(rendszeressegId);
|
|
var jelentkezesHataridejeText = GetJelentkezesiHataridoText(jelentkezesHatarideje);
|
|
|
|
var ds = new DataSet();
|
|
if (!osztalyCsoportId.HasValue)
|
|
{
|
|
ds = GetGondviselokByFogadooraId(h, fogadooraId);
|
|
}
|
|
else
|
|
{
|
|
ds = GetGondviselokByFogadooraIdAndOsztalyCsoportId(h, fogadooraId, osztalyCsoportId.Value);
|
|
}
|
|
|
|
if (ds.Tables[0].Rows.Count > 0)
|
|
{
|
|
var fogadooraDetailList = ds.Tables[0].AsEnumerable()
|
|
.Select(g => new
|
|
{
|
|
FogadooraJelentkezesTipus = g["FogadooraJelentkezesTipusa"],
|
|
Id = g["GondviseloId"],
|
|
EmailCim = g["GondviseloEmailCim"],
|
|
EmailGuid = SDAConvert.ToNullableGuid(g["GondviseloEmailGuid"]),
|
|
Nev = g["GondviseloNev"],
|
|
TanuloId = g["TanuloId"],
|
|
TanuloNev = g["TanuloNev"],
|
|
OsztalyNev = g["OsztalyNev"],
|
|
IsProfilFogadooraEmailUj = SDAConvert.ToBoolean(g["FogadooraEmailUj"], true)
|
|
});
|
|
|
|
bool IsJelentkezesLehetseges = ((int)fogadooraDetailList.Select(s => s.FogadooraJelentkezesTipus).First() > 0);
|
|
|
|
string idosavraOsztasSzoveg = string.Empty;
|
|
if (isIdosavraOsztas.HasValue && isIdosavraOsztas.Value)
|
|
{
|
|
idosavraOsztasSzoveg = string.Format(EmailResource.UjFogadooraEmailTartalomIdosavraOsztasSzoveg, egysegnyiIdopontok);
|
|
}
|
|
|
|
string fogadooraIdopontIntervallum = GetFogadooraIdopontIntervallum(idopontKezdete, idopontVege, true);
|
|
string emailTartalomPluszHaLehetJelentkezni = IsJelentkezesLehetseges ? isIdosavraOsztas.ToBool() ? EmailResource.UjFogadooraGondviseloEmailTartalomPlusTextHaLehetJelentkeni : EmailResource.UjFogadooraGondviseloEmailTartalomPlusTextHaLehetJelentkeniDeNincsIdosav : ".";
|
|
var emailModelList = new List<FogadooraEmailModel>();
|
|
|
|
foreach (var fogadooraDetail in fogadooraDetailList)
|
|
{
|
|
if (fogadooraDetail.IsProfilFogadooraEmailUj && !string.IsNullOrWhiteSpace((string)fogadooraDetail.EmailCim) && ((string)fogadooraDetail.EmailCim).IsValidEmail())
|
|
{
|
|
var gondviseloNev = fogadooraDetail.Nev.ToString();
|
|
var gondviseloEmailCim = fogadooraDetail.EmailCim.ToString();
|
|
var emailModel = new FogadooraEmailModel
|
|
{
|
|
Message = string.Format(EmailResource.UjFogadooraGondviseloEmailTartalom,
|
|
gondviseloNev,
|
|
rendszeresseg,
|
|
idopont,
|
|
fogadooraIdopontIntervallum,
|
|
idosavraOsztasSzoveg,
|
|
emailTartalomPluszHaLehetJelentkezni,
|
|
jelentkezesHataridejeText,
|
|
teremNev,
|
|
tanarNev,
|
|
fogadooraDetail.TanuloNev.ToString(),
|
|
fogadooraDetail.OsztalyNev.ToString()),
|
|
Subject = $"{EmailResource.UjFogadoora} - {idopontKezdete.ToShortDateString()} - {fogadooraDetail.TanuloNev} - {fogadooraDetail.OsztalyNev}",
|
|
EmailCim = gondviseloEmailCim,
|
|
EmailGuid = fogadooraDetail.EmailGuid
|
|
};
|
|
|
|
emailModelList.Add(emailModel);
|
|
}
|
|
}
|
|
if (emailModelList.Count > 0)
|
|
{
|
|
FogadooraEmailekKuldese(h, emailModelList);
|
|
}
|
|
}
|
|
}
|
|
|
|
private int GetHetNapja(DateTime date)
|
|
{
|
|
HetNapjaTipusEnum hetNapja = HetNapjaTipusEnum.na;
|
|
switch (date.DayOfWeek)
|
|
{
|
|
case DayOfWeek.Monday:
|
|
hetNapja = HetNapjaTipusEnum.Hetfo;
|
|
break;
|
|
case DayOfWeek.Tuesday:
|
|
hetNapja = HetNapjaTipusEnum.Kedd;
|
|
break;
|
|
case DayOfWeek.Wednesday:
|
|
hetNapja = HetNapjaTipusEnum.Szerda;
|
|
break;
|
|
case DayOfWeek.Thursday:
|
|
hetNapja = HetNapjaTipusEnum.Csutortok;
|
|
break;
|
|
case DayOfWeek.Friday:
|
|
hetNapja = HetNapjaTipusEnum.Pentek;
|
|
break;
|
|
case DayOfWeek.Saturday:
|
|
hetNapja = HetNapjaTipusEnum.Szombat;
|
|
break;
|
|
case DayOfWeek.Sunday:
|
|
hetNapja = HetNapjaTipusEnum.Vasarnap;
|
|
break;
|
|
}
|
|
return (int)hetNapja;
|
|
}
|
|
|
|
private string GetHetnapja(DateTime date)
|
|
=> GetHetNapja(date).GetItemNameFromCache(TanevId).ToLower();
|
|
|
|
private void PedagogusToroltFogadooraEmailKuldes(IDalHandler h, int tanarId, int teremId, bool isEgyalkalom, DateTime idopontKezdete, DateTime idopontVege, int rendszeressegId, int? jelentkezesHatarideje)
|
|
{
|
|
if (GetProfileData(h, tanarId, "FogadooraEmailTorles"))
|
|
{
|
|
var tanarNev = TanarNev(h, tanarId);
|
|
var teremNev = TeremNev(h, teremId);
|
|
var (rendszeresseg, idopont) = FogadaooraDetails(isEgyalkalom ? (int)FogadooraRendszeressegEnum.EgyAlkalom : rendszeressegId);
|
|
var idopontSzoveg = GetFogadooraIdopontIntervallum(idopontKezdete, idopontVege, true);
|
|
var message = string.Format(EmailResource.LemondottFogadooraTartalom, tanarNev, rendszeresseg, idopont, idopontSzoveg, GetJelentkezesiHataridoText(jelentkezesHatarideje), teremNev, tanarNev);
|
|
IEmail email = TanarEmailCim(h, tanarId);
|
|
|
|
var emailModel = new FogadooraEmailModel
|
|
{
|
|
Message = message,
|
|
Subject = $"{EmailResource.LemondottFogadoora} - {tanarNev}",
|
|
EmailCim = email?.EmailCim,
|
|
EmailGuid = email?.Guid
|
|
};
|
|
FogadooraEmailKuldes(h, emailModel);
|
|
}
|
|
}
|
|
|
|
private void GondviseloToroltFogadooraEmailKuldes(IDalHandler h, DataSet gondviseloDs, int tanarId, int teremId, bool isEgyalkalom, DateTime idopontKezdete, DateTime idopontVege, int rendszeressegId, int? jelentkezesHatarideje)
|
|
{
|
|
var tanarNev = TanarNev(h, tanarId);
|
|
var teremNev = TeremNev(h, teremId);
|
|
var (rendszeresseg, idopont) = FogadaooraDetails(isEgyalkalom ? (int)FogadooraRendszeressegEnum.EgyAlkalom : rendszeressegId);
|
|
var idopontSzoveg = GetFogadooraIdopontIntervallum(idopontKezdete, idopontVege, true);
|
|
var jelentkezesHataridejeText = GetJelentkezesiHataridoText(jelentkezesHatarideje);
|
|
|
|
var gondviseloList = gondviseloDs.Tables[0].AsEnumerable()
|
|
.Select(g => new
|
|
{
|
|
Id = g.Field<int>("GondviseloId"),
|
|
EmailCim = g.Field<string>("GondviseloEmailCim"),
|
|
EmailGuid = g.Field<Guid?>("GondviseloEmailGuid"),
|
|
Nev = g.Field<string>("GondviseloNev"),
|
|
TanuloId = g.Field<int>("TanuloId")
|
|
});
|
|
|
|
foreach (var gondviselo in gondviseloList.Where(g => !string.IsNullOrWhiteSpace(g.EmailCim)))
|
|
{
|
|
if (GetProfileData(h, (int)gondviselo.TanuloId, "FogadooraEmailTorles"))
|
|
{
|
|
var emailModel = new FogadooraEmailModel
|
|
{
|
|
Message = string.Format(EmailResource.LemondottFogadooraTartalom, gondviselo.Nev, rendszeresseg, idopont, idopontSzoveg, jelentkezesHataridejeText, teremNev, tanarNev),
|
|
Subject = $"{EmailResource.LemondottFogadoora} - {idopontKezdete.ToShortDateString()} - {tanarNev}",
|
|
EmailCim = gondviselo.EmailCim,
|
|
EmailGuid = gondviselo.EmailGuid
|
|
};
|
|
FogadooraEmailKuldes(h, emailModel);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void PedagogusModositottFogadooraEmailKuldes(IDalHandler h, int tanarId, int oldaTeremId, int newTeremId, DateTime oldIdopontKezdete, DateTime oldIdopontVege, DateTime newIdopontKezdete, DateTime newIdopontVege, bool isEgyalkalom, int rendszeressegId, int? jelentkezesHatarideje)
|
|
{
|
|
if (GetProfileData(h, tanarId, "FogadooraEmailUj"))
|
|
{
|
|
var oldTeremNev = TeremNev(h, oldaTeremId);
|
|
var teremText = oldaTeremId != newTeremId ? $"<s>({oldTeremNev})</s> <b>{TeremNev(h, newTeremId)}</b>" : $"<b>{oldTeremNev}</b>";
|
|
|
|
var tanarNev = TanarNev(h, tanarId);
|
|
var (rendszeresseg, idopont) = FogadaooraDetails(isEgyalkalom ? (int)FogadooraRendszeressegEnum.EgyAlkalom : rendszeressegId);
|
|
|
|
var idopontText = oldIdopontKezdete != newIdopontKezdete || oldIdopontVege != newIdopontVege ?
|
|
$"(<s>{GetFogadooraIdopontIntervallum(oldIdopontKezdete, oldIdopontVege)}</s>) <b>{GetFogadooraIdopontIntervallum(newIdopontKezdete, newIdopontVege, true)}</b>"
|
|
: $"<b>{GetFogadooraIdopontIntervallum(oldIdopontKezdete, oldIdopontVege, true)}</b>";
|
|
|
|
var message = string.Format(EmailResource.ModositottFogadooraTartalom, tanarNev, rendszeresseg, idopont, idopontText, GetJelentkezesiHataridoText(jelentkezesHatarideje), teremText, tanarNev);
|
|
IEmail email = TanarEmailCim(h, tanarId);
|
|
|
|
var emailModel = new FogadooraEmailModel
|
|
{
|
|
Message = message,
|
|
Subject = $"{EmailResource.ModositottFogadoora} - {tanarNev}",
|
|
EmailCim = email?.EmailCim,
|
|
EmailGuid = email?.Guid
|
|
};
|
|
FogadooraEmailKuldes(h, emailModel);
|
|
}
|
|
}
|
|
|
|
private void GondviseloModositottFogadooraEmailKuldes(IDalHandler h, DataSet gondviseloDs, int tanarId, int oldaTeremId, int newTeremId, DateTime oldIdopontKezdete, DateTime oldIdopontVege, DateTime newIdopontKezdete, DateTime newIdopontVege, bool isEgyalkalom, int rendszeressegId, int? jelentkezesHatarideje)
|
|
{
|
|
var oldTeremNev = TeremNev(h, oldaTeremId);
|
|
var teremText = oldaTeremId != newTeremId ? $"<s>({oldTeremNev})</s> <b>{TeremNev(h, newTeremId)}</b>" : $"<b>{oldTeremNev}</b>";
|
|
|
|
var tanarNev = TanarNev(h, tanarId);
|
|
var (rendszeresseg, idopont) = FogadaooraDetails(isEgyalkalom ? (int)FogadooraRendszeressegEnum.EgyAlkalom : rendszeressegId);
|
|
|
|
var idopontText = oldIdopontKezdete != newIdopontKezdete || oldIdopontVege != newIdopontVege ?
|
|
$"(<s>{GetFogadooraIdopontIntervallum(oldIdopontKezdete, oldIdopontVege)}</s>) <b>{GetFogadooraIdopontIntervallum(newIdopontKezdete, newIdopontVege, true)}</b>"
|
|
: $"<b>{GetFogadooraIdopontIntervallum(oldIdopontKezdete, oldIdopontVege, true)}</b>";
|
|
var jelentkezesHataridejeText = GetJelentkezesiHataridoText(jelentkezesHatarideje);
|
|
|
|
var gondviseloList = gondviseloDs.Tables[0].AsEnumerable()
|
|
.Select(g => new
|
|
{
|
|
Id = g.Field<int>("GondviseloId"),
|
|
EmailCim = g.Field<string>("GondviseloEmailCim"),
|
|
EmailGuid = g.Field<Guid?>("GondviseloEmailGuid"),
|
|
Nev = g.Field<string>("GondviseloNev"),
|
|
TanuloId = g.Field<int>("TanuloId")
|
|
});
|
|
|
|
foreach (var gondviselo in gondviseloList.Where(g => !string.IsNullOrWhiteSpace(g.EmailCim)))
|
|
{
|
|
if (GetProfileData(h, (int)gondviselo.TanuloId, "FogadooraEmailUj"))
|
|
{
|
|
var message = string.Format(EmailResource.ModositottFogadooraTartalom, gondviselo.Nev, rendszeresseg, idopont, idopontText, jelentkezesHataridejeText, teremText, tanarNev);
|
|
var emailModel = new FogadooraEmailModel
|
|
{
|
|
Message = message,
|
|
Subject = $"{EmailResource.ModositottFogadoora} - {tanarNev}",
|
|
EmailCim = gondviselo.EmailCim,
|
|
EmailGuid = gondviselo.EmailGuid
|
|
};
|
|
FogadooraEmailKuldes(h, emailModel);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void PedagogusFogadooraJelentkezesEmailKuldes(IDalHandler h, int tanarId, int teremId, int gondviseloId, DateTime idopont, DateTime idopontVege, int tanuloId, string osztalyCsoportok)
|
|
{
|
|
if (GetProfileData(h, tanarId, "FogadooraEmailJelentkezes"))
|
|
{
|
|
var tanarNev = TanarNev(h, tanarId);
|
|
var teremNev = TeremNev(h, teremId);
|
|
var gondviseloNev = GondviseloNev(h, gondviseloId);
|
|
var tanuloNev = TanuloNev(h, tanuloId);
|
|
var intezmenyCO = Intezmeny(h);
|
|
var intezmenyUrl = Utils.CommonUtils.GetIntezmenyUrl(intezmenyCO.IntezmenyAzonosito);
|
|
var intezmenyNev = intezmenyCO.Nev;
|
|
var intezmenyCim = intezmenyCO.IntezmenyCim;
|
|
IEmail email = TanarEmailCim(h, tanarId);
|
|
|
|
var emailModel = new FogadooraEmailModel
|
|
{
|
|
Message = string.Format(EmailResource.JelentkezesFogadoorara, tanarNev, idopont, teremNev, gondviseloNev, idopontVege, tanuloNev, osztalyCsoportok, intezmenyUrl, intezmenyNev, intezmenyCim),
|
|
Subject = $"{EmailResource.FogadooraJelentkezes} - {idopont} - {gondviseloNev}",
|
|
EmailCim = email?.EmailCim,
|
|
EmailGuid = email?.Guid
|
|
};
|
|
FogadooraEmailKuldes(h, emailModel);
|
|
}
|
|
}
|
|
|
|
private void PedagogusFogadooraJelentkezesLemondasEmailKuldes(IDalHandler h, int tanarId, int teremId, int gondviseloId, DateTime idopont, DateTime idopontVege, int tanuloId, string osztalyCsoportok)
|
|
{
|
|
if (GetProfileData(h, tanarId, "FogadooraEmailJelentkezesLemondas"))
|
|
{
|
|
var tanarNev = TanarNev(h, tanarId);
|
|
var teremNev = TeremNev(h, teremId);
|
|
var gondviseloNev = GondviseloNev(h, gondviseloId);
|
|
var tanuloNev = TanuloNev(h, tanuloId);
|
|
var intezmenyCO = Intezmeny(h);
|
|
var intezmenyUrl = Utils.CommonUtils.GetIntezmenyUrl(intezmenyCO.IntezmenyAzonosito);
|
|
var intezmenyNev = intezmenyCO.Nev;
|
|
var intezmenyCim = intezmenyCO.IntezmenyCim;
|
|
IEmail email = TanarEmailCim(h, tanarId);
|
|
|
|
var emailModel = new FogadooraEmailModel
|
|
{
|
|
Message = string.Format(EmailResource.JelentkezesLemondasFogadoorara, tanarNev, idopont, teremNev, gondviseloNev, idopontVege, tanuloNev, osztalyCsoportok, intezmenyUrl, intezmenyNev, intezmenyCim),
|
|
Subject = $"{EmailResource.FogadooraJelentkezesLemondas} - {idopont} - {gondviseloNev}",
|
|
EmailCim = email?.EmailCim,
|
|
EmailGuid = email?.Guid
|
|
};
|
|
FogadooraEmailKuldes(h, emailModel);
|
|
}
|
|
}
|
|
|
|
private void GondviseloSikeresJelentkezesEmailKuldes(IDalHandler h, int tanarId, int teremId, int gondviseloId, DateTime idopont, DateTime idopontVege, int tanuloId, string osztalyCsoportok)
|
|
{
|
|
if (GetProfileData(h, tanuloId, "FogadooraEmailJelentkezes"))
|
|
{
|
|
var tanarNev = TanarNev(h, tanarId);
|
|
var teremNev = TeremNev(h, teremId);
|
|
var gondviseloNev = GondviseloNev(h, gondviseloId);
|
|
var tanuloNev = TanuloNev(h, tanuloId);
|
|
var intezmenyCO = Intezmeny(h);
|
|
var intezmenyUrl = Utils.CommonUtils.GetIntezmenyUrl(intezmenyCO.IntezmenyAzonosito);
|
|
var intezmenyNev = intezmenyCO.Nev;
|
|
var intezmenyCim = intezmenyCO.IntezmenyCim;
|
|
var (email, guid) = GetGondviseloEmailCimAndGuid(h, gondviseloId);
|
|
|
|
var emailModel = new FogadooraEmailModel
|
|
{
|
|
Message = string.Format(EmailResource.SikeresFogadooraJelentkezesTartalom, gondviseloNev, idopont, teremNev, tanarNev, idopontVege, tanuloNev, osztalyCsoportok, intezmenyUrl, intezmenyNev, intezmenyCim),
|
|
Subject = $"{EmailResource.SikeresFogadooraJelentkezes} - {idopont} - {tanarNev}",
|
|
EmailCim = email,
|
|
EmailGuid = guid
|
|
};
|
|
FogadooraEmailKuldes(h, emailModel);
|
|
}
|
|
}
|
|
|
|
private bool GetProfileData(IDalHandler h, int felhasznaloId, string profileTipus)
|
|
{
|
|
|
|
var dal = h.Fogadoora(GridParameters);
|
|
var profileXml = dal.GetProfileData(felhasznaloId);
|
|
|
|
if (string.IsNullOrWhiteSpace(profileXml))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
XmlDocument xDoc = new XmlDocument();
|
|
xDoc.LoadXml(profileXml);
|
|
XmlNode node = xDoc.SelectSingleNode("UserProfile/" + profileTipus);
|
|
return node == null || (bool.TryParse(node.InnerText, out bool result)) && result;
|
|
}
|
|
|
|
#endregion
|
|
|
|
public DataSet GetFogadooraJelentkezettGondviselokDataSet(int fogadooraId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var fogadooraOsztalyCsoportIdList = GetFogadooraById(h, fogadooraId).SelectedOsztalyCsoportIdList;
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetFogadooraJelentkezettGondviselokDataSet(fogadooraId, fogadooraOsztalyCsoportIdList);
|
|
});
|
|
}
|
|
|
|
public DataSet GetFogadooraJelentkezettGondviselokByGroupId(int groupId, DateTime kedzete, DateTime vege)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetFogadooraJelentkezettGondviselokByGroupId(groupId, kedzete, vege);
|
|
});
|
|
}
|
|
|
|
public DataSet GeTeremOrarendDs(DateTime start, DateTime end, int teremId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GeTeremOrarendDataSet(IntezmenyId, TanevId, start, end, teremId);
|
|
});
|
|
}
|
|
|
|
public DataSet GetPedagogusOrarendDs(DateTime start, DateTime end)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetPedagogusOrarendDataSet(IntezmenyId, TanevId, start, end, FelhasznaloId);
|
|
});
|
|
}
|
|
|
|
public DataSet GetPedagogusFogadooraDs(DateTime start, DateTime end)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetPedagogusTeremFogadooraDataSet(TanevId, start, end, FelhasznaloId, null);
|
|
});
|
|
}
|
|
|
|
public DataSet GetTeremFogadooraDs(DateTime start, DateTime end, int teremId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetPedagogusTeremFogadooraDataSet(TanevId, start, end, null, teremId);
|
|
});
|
|
}
|
|
|
|
private List<(int Id, DateTime Idopont)> GetFogadooraIdAndKezdeteByGroupIdList(IDalHandler h, int fogadooraGroupId, DateTime start, DateTime end)
|
|
{
|
|
var dal = h.Fogadoora(GridParameters);
|
|
return dal.GetFogadooraIdByGroupIdList(TanevId, fogadooraGroupId, start, end);
|
|
}
|
|
|
|
public int IsSzabadIdopontByFogadooraIdopontId(int fogadooraIdopontId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var isTorolt = false;
|
|
var isSzabad = false;
|
|
var dal = h.Fogadoora(GridParameters);
|
|
|
|
var fogadooraIdopont = dal.GetFogadooraIdopont(fogadooraIdopontId);
|
|
|
|
if (fogadooraIdopont.Torolt)
|
|
{
|
|
isTorolt = true;
|
|
}
|
|
|
|
var isSzabadIdopont = dal.IsSzabadIdopontByFogadooraIdopontId(fogadooraIdopontId);
|
|
if (isSzabadIdopont)
|
|
{
|
|
isSzabad = true;
|
|
}
|
|
|
|
if (isTorolt)
|
|
{
|
|
return (int)FogadooraJelentkezesAllapotEnum.ToroltFogoora;
|
|
}
|
|
if (!isSzabad)
|
|
{
|
|
return (int)FogadooraJelentkezesAllapotEnum.MarJelentkeztek;
|
|
}
|
|
return (int)FogadooraJelentkezesAllapotEnum.LehetJelentkezni;
|
|
});
|
|
}
|
|
|
|
private string GetDateWithoutHoursAndMinutes(DateTime date)
|
|
{
|
|
var months = date.Month < 10 ? $"0{date.Month}" : date.Month.ToString();
|
|
var days = date.Day < 10 ? $"0{date.Day}" : date.Day.ToString();
|
|
return $"{date.Year}.{months}.{days}.";
|
|
}
|
|
|
|
private string GetDateOnlyHoursAndMinutes(DateTime date)
|
|
{
|
|
var hours = date.Hour < 10 ? $"0{date.Hour}" : date.Hour.ToString();
|
|
var minutes = date.Minute < 10 ? $"0{date.Minute}" : date.Minute.ToString();
|
|
return $"{hours}:{minutes}";
|
|
}
|
|
|
|
private string GetFogadooraIdopontIntervallum(DateTime intervallumEleje, DateTime intervalllumVege, bool isNapFelirat = false)
|
|
{
|
|
var hetnapjaText = isNapFelirat ? $"{GetHetnapja(intervallumEleje)}, " : string.Empty;
|
|
return $"{GetDateWithoutHoursAndMinutes(intervallumEleje)} ({hetnapjaText}{GetDateOnlyHoursAndMinutes(intervallumEleje)}-{GetDateOnlyHoursAndMinutes(intervalllumVege)})";
|
|
}
|
|
|
|
private string GetJelentkezesiHataridoText(int? jelentkezesHatarideje)
|
|
{
|
|
if (!jelentkezesHatarideje.HasValue || jelentkezesHatarideje == 0)
|
|
{
|
|
return FogadooraResource.Nincs;
|
|
}
|
|
|
|
return string.Format(FogadooraResource.ora, jelentkezesHatarideje.Value);
|
|
}
|
|
|
|
private void SaveUjFogadooraFaliujsag(IDalHandler h, FogadooraCo co, DateTime elsoTanitasiNap, DateTime utolsoTanitasiNap, DateTime idopontKezdete, DateTime idopontVege)
|
|
{
|
|
var (rendszeresseg, idopont) = FogadaooraDetails(co.Rendszeresseg);
|
|
|
|
var tanarNeve = h.Alkalmazott().GetAlkalmazottNevById(FelhasznaloId, TanevId, IntezmenyId);
|
|
var teremNev = h.Terem().Get(co.TeremId).Nev;
|
|
|
|
var dal = h.Feljegyzes();
|
|
var fogadooraDal = h.Fogadoora();
|
|
var entity = dal.Get();
|
|
|
|
entity.Kezdete = co.FaliujsagErvenyessegKezdete;
|
|
entity.FaliujsagMegjelenes = true;
|
|
entity.EsemenyDatuma = idopontKezdete.Date;
|
|
entity.Tipus = (int)EsemenyTipusEnum.FaliujsagBejegyzes;
|
|
entity.Vege = co.FaliujsagErvenyessegVege;
|
|
entity.FeljegyzoId = FelhasznaloId;
|
|
entity.Mindenkinek = false;
|
|
entity.Targy = FogadooraResource.UjFogadora;
|
|
entity.Tartalom = string.Format(FogadooraResource.FaliujsagUjFogadoora, rendszeresseg, idopont, GetFogadooraIdopontIntervallum(idopontKezdete, idopontVege, true), tanarNeve, teremNev);
|
|
dal.Insert(entity);
|
|
|
|
var coOsztalyCsoportIdList = co.SelectedOsztalyCsoportIdList;
|
|
foreach (var id in coOsztalyCsoportIdList)
|
|
{
|
|
dal.AddOsztalyCsoport(entity, id);
|
|
}
|
|
|
|
var fogadooraList = fogadooraDal.GetFogadooraIdByGroupIdList(TanevId, co.Id.Value, elsoTanitasiNap, utolsoTanitasiNap);
|
|
foreach (var (Id, _) in fogadooraList)
|
|
{
|
|
var fogadooraEntity = fogadooraDal.Get(Id);
|
|
fogadooraEntity.TanuloEsemenyId = entity.ID;
|
|
fogadooraDal.FullUpdate(fogadooraEntity);
|
|
}
|
|
}
|
|
|
|
private void SaveToroltFogadooraFaliujsag(IDalHandler handler, FogadooraCo co, bool isEgyalkalom, DateTime idopontKezdete, DateTime idopontVege)
|
|
{
|
|
var (rendszeresseg, idopont) = FogadaooraDetails(isEgyalkalom ? (int)FogadooraRendszeressegEnum.EgyAlkalom : co.Rendszeresseg);
|
|
|
|
var tanarNeve = handler.Alkalmazott().GetAlkalmazottNevById(co.TanarId, TanevId, IntezmenyId);
|
|
var teremNev = handler.Terem().Get(co.TeremId).Nev;
|
|
|
|
var dal = handler.Feljegyzes();
|
|
var entity = dal.Get(co.FaliujsagId);
|
|
|
|
entity.Kezdete = co.FaliujsagErvenyessegKezdete;
|
|
entity.FaliujsagMegjelenes = true;
|
|
entity.EsemenyDatuma = DateTime.Today;
|
|
entity.Tipus = (int)EsemenyTipusEnum.FaliujsagBejegyzes;
|
|
entity.Vege = co.FaliujsagErvenyessegVege;
|
|
entity.Mindenkinek = false;
|
|
entity.Targy = EmailResource.LemondottFogadoora;
|
|
entity.Tartalom = string.Format(FogadooraResource.LemondottFogadooraFaliujsag, rendszeresseg, idopont, GetFogadooraIdopontIntervallum(idopontKezdete, idopontVege, true), tanarNeve, teremNev);
|
|
dal.FullUpdate(entity);
|
|
}
|
|
|
|
public void SaveModositottFogadooraFaliujsag(IDalHandler h, FogadooraCo co, int newTeremId, DateTime newIdopontKezdete, DateTime newIdopontVege, bool isEgyalkalom)
|
|
{
|
|
var teremText = $"{TeremNev(h, newTeremId)}";
|
|
var tanarNev = TanarNev(h, co.TanarId);
|
|
var (rendszeresseg, idopont) = FogadaooraDetails(isEgyalkalom ? (int)FogadooraRendszeressegEnum.EgyAlkalom : co.Rendszeresseg);
|
|
var idopontText = $"{GetFogadooraIdopontIntervallum(newIdopontKezdete, newIdopontVege, true)}";
|
|
|
|
var fogadooraDal = h.Fogadoora();
|
|
var faliujsagId = fogadooraDal.Get(co.Id.Value).TanuloEsemenyId;
|
|
var dal = h.Feljegyzes();
|
|
var entity = dal.Get(faliujsagId);
|
|
|
|
entity.Kezdete = co.FaliujsagErvenyessegKezdete;
|
|
entity.FaliujsagMegjelenes = true;
|
|
entity.EsemenyDatuma = DateTime.Today;
|
|
entity.Tipus = (int)EsemenyTipusEnum.FaliujsagBejegyzes;
|
|
entity.Vege = co.FaliujsagErvenyessegVege;
|
|
entity.FeljegyzoId = FelhasznaloId;
|
|
entity.Mindenkinek = false;
|
|
entity.Targy = EmailResource.ModositottFogadoora;
|
|
entity.Tartalom = string.Format(FogadooraResource.ModositottFaliujsagTartalom, rendszeresseg, idopont, idopontText, teremText, tanarNev);
|
|
dal.FullUpdate(entity);
|
|
}
|
|
|
|
private DataTable GetFogadooraOsztalyCsoportMaradekElemek(IDalHandler h, int fogadooraId)
|
|
{
|
|
var fogadooraDal = h.Fogadoora();
|
|
return fogadooraDal.GetFogadooraOsztalyCsoportMaradekElemek(fogadooraId);
|
|
}
|
|
}
|
|
}
|