819 lines
35 KiB
C#
819 lines
35 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.Exceptions;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
|
using Kreta.Core;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.Core.Exceptions;
|
|
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;
|
|
using Kreta.Framework.Entities;
|
|
using Kreta.Resources;
|
|
|
|
namespace Kreta.BusinessLogic.Helpers
|
|
{
|
|
public class TanevrendHelper : LogicBase
|
|
{
|
|
public TanevrendHelper(IConnectionType connectionType) : base(connectionType) { }
|
|
|
|
public DataSet GetTanevredhezTartozoOsztCsopList(int tanevrendId = -1, int? feladatKategoriaId = null, int? mukodesiHelyId = null, int? feladatEllatasiHelyId = null)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal(GridParameters);
|
|
return dal.GetTanevredhezTartozoOsztCsopList(TanevId, tanevrendId, feladatKategoriaId, mukodesiHelyId, feladatEllatasiHelyId);
|
|
});
|
|
}
|
|
|
|
/// INFO @DevKornel: Mobil használja
|
|
public DataSet GetTanevrendekOsztalyCsoportokkal(DateTime? start = null, DateTime? end = null, int? tanuloId = null)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal(GridParameters);
|
|
return dal.ListTanevRendekOsztalyCsoportokkal(TanevId, start, end, tanuloId);
|
|
});
|
|
|
|
}
|
|
|
|
/// INFO @DevKornel: Mobil használja
|
|
public TanevRendjeListsCO GetTanevRendjeLists(DataTable tanevrendek)
|
|
{
|
|
var result = new TanevRendjeListsCO();
|
|
|
|
foreach (DataRow row in tanevrendek.Rows)
|
|
{
|
|
DateTime datum = Convert.ToDateTime(row["Datum"]);
|
|
var ocsId = SDAConvert.ToInt32(row["OsztalyCsoportId"]);
|
|
var isOrarendiNap = SDAConvert.ToBooleanFromTF(row["OrarendiNap"]) && !OrarendHelper.NemTanitasiNapTipusok.Contains(SDAConvert.ToInt32(row["NapTip"]));
|
|
|
|
if (ocsId < 1)
|
|
{
|
|
if (!isOrarendiNap)
|
|
{
|
|
result.GlobalTiltas.Add(datum);
|
|
}
|
|
else
|
|
{
|
|
result.GlobalEngedelyezes.Add(datum);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (isOrarendiNap)
|
|
{
|
|
result.OcsEngedelyezes.Add(new Tuple<DateTime, int>(datum, ocsId));
|
|
}
|
|
else
|
|
{
|
|
result.OcsTiltas.Add(new Tuple<DateTime, int>(datum, ocsId));
|
|
}
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public Dictionary<string, string> GetTanevHetirendTipusok()
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
var ds = dal.GetTanevHetirendTipusok(TanevId);
|
|
|
|
var dictionary = new Dictionary<string, string>();
|
|
if (ds != null && ds.Tables[0].Rows != null)
|
|
{
|
|
foreach (DataRow row in ds.Tables[0].Rows)
|
|
dictionary.Add(row["HetirendId"].ToString(), row["Hetirend"].ToString());
|
|
}
|
|
|
|
return dictionary;
|
|
});
|
|
}
|
|
|
|
public TanevrendCO GetTanevrendById(int tanevRendId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var entity = h.TanevRendjeDal().Get(tanevRendId);
|
|
|
|
var co = new TanevrendCO();
|
|
co.ID = entity.ID;
|
|
co.Tanev = entity.TanevId;
|
|
co.TanevNeve = entity.Tanev.Nev;
|
|
if (entity.HetNapja != null)
|
|
{
|
|
co.Nap = entity.HetNapja;
|
|
}
|
|
|
|
co.NapTip = entity.NapTipusa;
|
|
co.Hetirend = entity.HetiRend;
|
|
co.Megjegyzes = entity.Megjegyzes;
|
|
co.Datum = entity.Datum;
|
|
co.OsszesCsop = entity.OsszesCsoportraVonatkozik ?? false;
|
|
co.CsengetesiRend = entity.CsengetesiRendId;
|
|
co.ElteroOrarendSzerintiTanitasNapDatum = entity.ElteroNapDatuma;
|
|
co.UresOrarend = entity.IsUresOrarend;
|
|
|
|
if (co.CsengetesiRend == -1)
|
|
{
|
|
co.CsengetesiRend = GetTanevrendDefaultCsengetesiRend(entity.TanevId);
|
|
}
|
|
|
|
if (!co.OsszesCsop)
|
|
{
|
|
co.Csoportok = GetTanevRendjeOsztalyCsoportokText(entity.ID);
|
|
}
|
|
else
|
|
{
|
|
co.Csoportok = "Összes osztály és csoport";
|
|
}
|
|
|
|
var dal = h.TanevRendjeDal();
|
|
co.IsElteroNapModosithato = !dal.GetKezzelrogzitettOrarendiOra(entity.Datum);
|
|
|
|
return co;
|
|
});
|
|
}
|
|
|
|
public string GetTanevRendjeOsztalyCsoportokText(int tanevRendjeId)
|
|
{
|
|
Dictionary<int, string> tanevRendjeOsztalyCsoportokDictionary = GetTanevRendjeOsztalyCsoportokDictionary(new List<int> { tanevRendjeId });
|
|
string result = tanevRendjeOsztalyCsoportokDictionary.FirstOrDefault(x => x.Key == tanevRendjeId).Value;
|
|
return result;
|
|
}
|
|
|
|
public Dictionary<int, string> GetTanevRendjeOsztalyCsoportokDictionary(List<int> tanevRendjeIds)
|
|
{
|
|
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.TanevRendjeDal().GetTanevRendjeOsztalyCsoportok(TanevId, tanevRendjeIds));
|
|
|
|
var result = new Dictionary<int, string>();
|
|
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
|
|
{
|
|
int id = SDAConvert.ToInt32(dataRow["ID"]);
|
|
string osztalyCsoportNev = SDAConvert.ToString(dataRow["OsztalyCsoportNev"]);
|
|
if (result.ContainsKey(id))
|
|
{
|
|
result[id] += $@", {osztalyCsoportNev}";
|
|
}
|
|
else
|
|
{
|
|
result.Add(id, osztalyCsoportNev);
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public bool IsTanitasiNap(DateTime date, int? osztalycsoportId)
|
|
{
|
|
var osztalyTanevrendjei = GetOsztalycsoportTanevrendje(date, osztalycsoportId ?? 0);
|
|
if (osztalyTanevrendjei.Any(x => !x.Globalis && (OrarendHelper.NemTanitasiNapTipusok.Contains(x.Naptipus) || !x.OrarendiNap)))
|
|
{
|
|
return false; //ha van benne az osztályra szabott tiltás
|
|
}
|
|
|
|
if (osztalyTanevrendjei.Any(x => !x.Globalis && !OrarendHelper.NemTanitasiNapTipusok.Contains(x.Naptipus)))
|
|
{
|
|
return true; //ha van benne az osztályra szabott engedélyezés
|
|
}
|
|
|
|
if (osztalyTanevrendjei.Any(x => x.Globalis && !OrarendHelper.NemTanitasiNapTipusok.Contains(x.Naptipus)))
|
|
{
|
|
return true; //ha van benne globalis engedélyezés
|
|
}
|
|
|
|
if (osztalyTanevrendjei.Any(x => x.Globalis && (OrarendHelper.NemTanitasiNapTipusok.Contains(x.Naptipus) || !x.OrarendiNap)))
|
|
{
|
|
return false; //ha van benne globalis tiltás
|
|
}
|
|
|
|
var foglalkozasok_Rogzitese_Hetvegere = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<FoglalkozasokRogziteseHetvegere>(RendszerBeallitasTipusEnum.Foglalkozasok_Rogzitese_Hetvegere);
|
|
|
|
switch (foglalkozasok_Rogzitese_Hetvegere)
|
|
{
|
|
case FoglalkozasokRogziteseHetvegere.Engedelyezett:
|
|
return true;
|
|
case FoglalkozasokRogziteseHetvegere.CsakSzombat:
|
|
return date.DayOfWeek != DayOfWeek.Sunday;
|
|
case FoglalkozasokRogziteseHetvegere.NemEngedelyezett:
|
|
default:
|
|
return date.DayOfWeek != DayOfWeek.Saturday && date.DayOfWeek != DayOfWeek.Sunday;
|
|
}
|
|
}
|
|
|
|
public bool IsOrarendiNap(DateTime date, int? osztalycsoportId, bool isFromSzervezet = false)
|
|
{
|
|
if (isFromSzervezet)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
var osztalyTanevrendjei = GetOsztalycsoportTanevrendje(date, osztalycsoportId ?? 0);
|
|
if (osztalyTanevrendjei.Any(x => !x.Globalis && !x.OrarendiNap))
|
|
{
|
|
return false; //ha van benne az osztályra szabott tiltás
|
|
}
|
|
|
|
if (osztalyTanevrendjei.Any(x => !x.Globalis && x.OrarendiNap))
|
|
{
|
|
return true; //ha van benne az osztályra szabott engedélyezés
|
|
}
|
|
|
|
if (osztalyTanevrendjei.Any(x => x.Globalis && !x.OrarendiNap))
|
|
{
|
|
return false; //ha van benne globalis tiltás
|
|
}
|
|
|
|
if (osztalyTanevrendjei.Any(x => x.Globalis && x.OrarendiNap))
|
|
{
|
|
return true; //ha van benne globalis engedélyezés
|
|
}
|
|
|
|
var foglalkozasok_Rogzitese_Hetvegere = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<FoglalkozasokRogziteseHetvegere>(RendszerBeallitasTipusEnum.Foglalkozasok_Rogzitese_Hetvegere);
|
|
|
|
switch (foglalkozasok_Rogzitese_Hetvegere)
|
|
{
|
|
case FoglalkozasokRogziteseHetvegere.Engedelyezett:
|
|
return true;
|
|
case FoglalkozasokRogziteseHetvegere.CsakSzombat:
|
|
return date.DayOfWeek != DayOfWeek.Sunday;
|
|
case FoglalkozasokRogziteseHetvegere.NemEngedelyezett:
|
|
default:
|
|
return date.DayOfWeek != DayOfWeek.Saturday && date.DayOfWeek != DayOfWeek.Sunday;
|
|
}
|
|
}
|
|
|
|
public List<TanevrendOsztalycsoportCO> GetOsztalycsoportTanevrendje(DateTime? date, int osztalycsoportId, bool? osszesCsoportVonatkozokat = null)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
var ds = dal.GetOsztalycsoportTanevrendje(date, osztalycsoportId, IntezmenyId, TanevId, osszesCsoportVonatkozokat);
|
|
var result = new List<TanevrendOsztalycsoportCO>();
|
|
foreach (DataRow rend in ds.Tables[0].Rows)
|
|
{
|
|
var item = new TanevrendOsztalycsoportCO
|
|
{
|
|
TanevrendId = SDAConvert.ToInt32(rend["ID"]),
|
|
Hetirend = SDAConvert.ToInt32(rend["C_HETIREND"]),
|
|
Csengetesirend = SDAConvert.ToInt32(rend["C_CSENGETESIRENDID"]),
|
|
Naptipus = SDAConvert.ToInt32(rend["C_NAPTIPUSA"]),
|
|
HetNapja = SDAConvert.ToInt32(rend["C_HETNAPJA"]),
|
|
OrarendiNap = SDAConvert.ToBooleanFromTF(rend["C_ORARENDINAP"]),
|
|
Globalis = SDAConvert.ToBooleanFromTF(rend["C_OSSZESCSOPORTRAVONATKOZIK"]),
|
|
Datum = SDAConvert.ToDateTime(rend["C_DATUM"]).Value
|
|
};
|
|
result.Add(item);
|
|
}
|
|
|
|
return result;
|
|
});
|
|
}
|
|
|
|
public List<OrarendCO.Event> GetTanevRendjeCalendarData(DateTime start, DateTime end)
|
|
{
|
|
var tanevEsemenyeiDS = Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var orarendiOraDal = h.OrarendiOra();
|
|
return orarendiOraDal.GetTanevEsemenyeiOrarend(start, end);
|
|
});
|
|
var tanevEsemenyeiLista = new List<OrarendCO.Event>();
|
|
|
|
foreach (DataRow row in tanevEsemenyeiDS.Tables[0].Rows)
|
|
{
|
|
DateTime datum = Convert.ToDateTime(row["Datum"]);
|
|
|
|
var orarendiEvent = new OrarendCO.Event();
|
|
orarendiEvent.allDay = true;
|
|
orarendiEvent.start = datum;
|
|
orarendiEvent.end = datum + new TimeSpan(10, 10, 10);
|
|
orarendiEvent.title = (SDAConvert.ToInt32(row["KapcsCsopSzam"]) <= 0 ? row["NapTip_DNAME"].ToString() : "*" + row["NapTip_DNAME"].ToString());
|
|
orarendiEvent.Tema = SDAConvert.ToString(row["Megjegyzes"]);
|
|
orarendiEvent.id = SDAConvert.ToInt32(row["ID"]);
|
|
|
|
orarendiEvent.color = SetColorByType(Convert.ToInt32(row["NapTip"]));
|
|
tanevEsemenyeiLista.Add(orarendiEvent);
|
|
}
|
|
|
|
return tanevEsemenyeiLista;
|
|
}
|
|
|
|
public DateTime GetUtolsoTanitasiNapDate()
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var result = h.TanevRendjeDal().GetUtolsoTanitasiNapDate(IntezmenyId, TanevId);
|
|
return result;
|
|
});
|
|
}
|
|
|
|
public DateTime? GetNapDate(NapTipusEnum napEnum, bool returnDefaultValue = true)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var result = h.TanevRendjeDal().GetNapDate(IntezmenyId, TanevId, napEnum, returnDefaultValue);
|
|
return result;
|
|
});
|
|
}
|
|
|
|
public DateTime GetNapDate(NapTipusEnum napEnum)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var result = h.TanevRendjeDal().GetNapDate(IntezmenyId, TanevId, napEnum);
|
|
return result.Value;
|
|
});
|
|
}
|
|
|
|
public DateTime GetElsoTanitasiNapDate()
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var result = h.TanevRendjeDal().GetElsoTanitasiNapDate(IntezmenyId, TanevId);
|
|
return result;
|
|
});
|
|
}
|
|
|
|
public bool HasTanitasiNap(DateTime date)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var naptariNapHelper = new NaptariNapHelper(new DalHandlerConnectionType(ConnectionType, h));
|
|
var tanitasiNapIdList = naptariNapHelper.GetTanitasiNapIdList();
|
|
return h.TanevRendjeDal().HasTanitasiNap(new DateTime(date.Year, date.Month, date.Day), tanitasiNapIdList, TanevId);
|
|
});
|
|
}
|
|
|
|
public int GetTanevrendDefaultCsengetesiRend(int tanevId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
return dal.GetTanevrendDefaultCsengetesiRend(tanevId);
|
|
});
|
|
}
|
|
|
|
public string GetTanevrendValueString(int tanevId, int? id)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
return dal.GetTanevrendCsengetesiRendValue(id, tanevId);
|
|
});
|
|
}
|
|
|
|
public List<int> GetMarFelvettKiemeltTanevEsemenyek()
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
return dal.GetMarFelvettKiemeltTanevEsemenyTipusok(TanevId);
|
|
});
|
|
}
|
|
|
|
public DataSet GetTanevrendByCsengRend(int csRendId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal(GridParameters);
|
|
return dal.GetTanevrendekByCsengetesiRend(TanevId, csRendId);
|
|
});
|
|
}
|
|
|
|
public bool GetVanTanevRendjeEsemenyNemKotottMunkaido(DateTime startDatum, DateTime endDatum)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
return dal.GetVanTanevRendjeEsemenyNemKotottMunkaido(TanevId, startDatum, endDatum);
|
|
});
|
|
}
|
|
|
|
public void CheckTanevRendjeUtkozes(DateTime datum, List<int> selectedOsztalyCsoportIdList, bool IsGlobalis, int? tanevrendjeId)
|
|
{
|
|
var tanevrendek = GetVanTanevRendje(datum, tanevrendjeId);
|
|
|
|
if (IsGlobalis)
|
|
{
|
|
if (tanevrendek.Any(a => !a.OsztalyCsoportId.HasValue))
|
|
{
|
|
throw new BlException(OrarendResource.MarVanTanevrendjeEsemeny);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var osztalyUtkozesek = tanevrendek.Where(a => a.OsztalyCsoportId.HasValue && selectedOsztalyCsoportIdList.Contains(a.OsztalyCsoportId.Value)).ToList();
|
|
if (osztalyUtkozesek.Any())
|
|
{
|
|
var hibaUzenet = OrarendResource.OsztalyCsoporthozMarTartozikTanevRend + string.Join(",", osztalyUtkozesek.Select(a => a.OsztalyCsoportNev));
|
|
throw new BlException(hibaUzenet);
|
|
}
|
|
}
|
|
}
|
|
|
|
public bool HasTanevRendjeEsemeny(DateTime datum, int? osztalyId)
|
|
{
|
|
var tanevrendek = GetVanTanevRendje(datum, null);
|
|
if (osztalyId.HasValue)
|
|
{
|
|
var masOsztalyokTanevrendjei = tanevrendek.Where(a => a.OsztalyCsoportId.HasValue && a.OsztalyCsoportId.Value != osztalyId).ToList();
|
|
tanevrendek = tanevrendek.Except(masOsztalyokTanevrendjei).ToList();
|
|
}
|
|
|
|
var tanevrendlist = tanevrendek.Where(x => x.IsRendkivuliTanitasiNap || (x.HetNapja != 0 && x.HetNapja != x.AlapHetnapja) || x.IsUresOrarend).ToList();
|
|
var result = tanevrendlist.Where(x => x.NapTipusaId != (int)NapTipusEnum.elso_tanitasi_nap && x.NapTipusaId != (int)NapTipusEnum.utolso_tanitasi_nap).Any();
|
|
|
|
return result;
|
|
}
|
|
|
|
private List<TanevrendOsztalyokkalCO> GetVanTanevRendje(DateTime datum, int? alapTanevrendId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
var ds = dal.GetTanevRendjeByDatum(datum, TanevId, IntezmenyId);
|
|
var tanevRendek = new List<TanevrendOsztalyokkalCO>();
|
|
foreach (DataRow item in ds.Tables[0].Rows)
|
|
{
|
|
var tanevrendId = SDAConvert.ToInt32(item["TanevrendId"]);
|
|
if (alapTanevrendId == tanevrendId)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var rend = new TanevrendOsztalyokkalCO();
|
|
rend.TanevrendId = tanevrendId;
|
|
rend.IsGlobal = SDAConvert.ToBooleanFromTF(item["IsGlobal"]);
|
|
rend.OsztalyCsoportId = item["OsztalyCsoportId"] != DBNull.Value ? SDAConvert.ToInt32(item["OsztalyCsoportId"]) : (int?)null;
|
|
rend.OsztalyCsoportNev = item["OsztalyCsoportNev"] != DBNull.Value ? item["OsztalyCsoportNev"].ToString() : string.Empty;
|
|
rend.HetNapja = SDAConvert.ToInt32(item["HetNapja"]);
|
|
rend.NapTipusaId = SDAConvert.ToInt32(item["NapTipusa"]);
|
|
rend.AlapHetnapja = SDAConvert.ToInt32(item["EredetiHetNapja"]);
|
|
rend.IsRendkivuliTanitasiNap = SDAConvert.ToInt32(item["NapTipusa"]) == (int)NapTipusEnum.RendkivuliTanitasiNap;
|
|
rend.IsUresOrarend = SDAConvert.ToBooleanFromTF(item["IsUresOrarend"]);
|
|
|
|
tanevRendek.Add(rend);
|
|
}
|
|
|
|
return tanevRendek;
|
|
});
|
|
}
|
|
|
|
public void DeleteTanevRendjeByID(int tanevRendId, bool isKezzelRogzitesTorles)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
var entity = dal.Get(tanevRendId);
|
|
|
|
if (entity.NapTipusa == (int)Enums.NapTipusEnum.elso_tanitasi_nap || entity.NapTipusa == (int)Enums.NapTipusEnum.elso_felev_vege
|
|
|| entity.NapTipusa == (int)Enums.NapTipusEnum.utolso_tanitasi_nap)
|
|
{
|
|
//A tanév első tanítási napja, az első félévének vége és a tanév utolsó napja nem törölhető!
|
|
throw new CannotBeDeletedException(TanevResource.ATanevElsoTanitasiNapjaAzElsoFelevenekVegeEsATanevUtolsoNapjaNemTorolheto);
|
|
}
|
|
|
|
var tanevDal = h.TanevRendjeDal();
|
|
/*Ha van kapcsolódó osztály a tanévrendéhez akkor azokat a kapcsolatokat törölni kell*/
|
|
if (entity.OsztalyCsoport.Count > 0)
|
|
{
|
|
foreach (var item in entity.OsztalyCsoport)
|
|
{
|
|
tanevDal.DeleteEgyediNapOsztalycsoport(tanevRendId, item.ID, FelhasznaloId);
|
|
}
|
|
|
|
dal.RemoveKapcsolodoOsztalyCsoportok(entity);
|
|
}
|
|
|
|
tanevDal.DeleteEgyediNap(tanevRendId, isKezzelRogzitesTorles, FelhasznaloId);
|
|
tanevDal.Delete(entity);
|
|
|
|
var adatszotarDal = h.AdatszotarDAL();
|
|
adatszotarDal.GenerateNaptariNapok(IntezmenyId, TanevId);
|
|
|
|
dal.GenerateOrarend(entity.IntezmenyId, entity.TanevId, null, entity.Datum, entity.NapTipusa);
|
|
});
|
|
}
|
|
|
|
public void SaveOrUpdateTanevRendje(TanevrendCO co, Dictionary<int, bool> osztalyCsoportDic, List<int> selectedOsztalyCsoportIdList)
|
|
{
|
|
try
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
var entity = dal.Get();
|
|
|
|
bool isModification = (co.ID.IsEntityId());
|
|
bool egyediNapValtozott = false;
|
|
bool datumValtozott = false;
|
|
bool uresOrarendValtozott = false;
|
|
bool mindenkireVonatkozikValtozott = false;
|
|
|
|
if (isModification)
|
|
{
|
|
entity = dal.Get(co.ID.Value);
|
|
egyediNapValtozott = entity.EgyediNap != co.IsEgyediNap;
|
|
datumValtozott = entity.ElteroNapDatuma != co.ElteroOrarendSzerintiTanitasNapDatum;
|
|
uresOrarendValtozott = entity.IsUresOrarend != co.UresOrarend;
|
|
mindenkireVonatkozikValtozott = entity.OsszesCsoportraVonatkozik != co.OsszesCsop;
|
|
}
|
|
|
|
entity.Aktiv = true;
|
|
entity.Datum = co.Datum;
|
|
entity.OrarendiNap = co.OrarendiNap;
|
|
entity.Megjegyzes = co.Megjegyzes;
|
|
entity.OsszesCsoportraVonatkozik = co.OsszesCsop;
|
|
entity.TanevId = co.Tanev;
|
|
entity.HetNapja = co.Nap;
|
|
entity.EgyediNap = co.IsEgyediNap;
|
|
entity.IsUresOrarend = co.UresOrarend;
|
|
entity.ElteroNapDatuma = co.ElteroOrarendSzerintiTanitasNapDatum;
|
|
|
|
if (co.NapTip.HasValue && co.NapTip > 0)
|
|
{
|
|
entity.NapTipusa = co.NapTip.Value;
|
|
}
|
|
|
|
if (co.Hetirend.HasValue)
|
|
{
|
|
entity.HetiRend = co.Hetirend.Value;
|
|
}
|
|
|
|
if (co.CsengetesiRend.HasValue && co.CsengetesiRend.Value > 0)
|
|
{
|
|
entity.CsengetesiRendId = co.CsengetesiRend.Value;
|
|
}
|
|
else
|
|
{
|
|
entity.CsengetesiRendId = -1;
|
|
}
|
|
|
|
if (isModification)
|
|
{
|
|
dal.FullUpdate(entity, !co.OsszesCsop, osztalyCsoportDic, TanevId, FelhasznaloId, co.OsszesCsop);
|
|
|
|
if (egyediNapValtozott)
|
|
{
|
|
if (co.IsEgyediNap == false)
|
|
{
|
|
dal.DeleteEgyediNap(entity.ID, true, FelhasznaloId);
|
|
}
|
|
else if (!co.UresOrarend)
|
|
{
|
|
dal.InsertEgyediNap(entity.ID, co.IntezmenyId, co.Tanev);
|
|
}
|
|
|
|
}
|
|
else if (!egyediNapValtozott && co.IsEgyediNap && (datumValtozott || co.UresOrarend))
|
|
{
|
|
if (co.UresOrarend && !uresOrarendValtozott && !mindenkireVonatkozikValtozott)
|
|
{
|
|
if (!co.OsszesCsop)
|
|
{
|
|
foreach (var item in osztalyCsoportDic.Where(x => x.Value == true))
|
|
{
|
|
dal.DeleteEgyediNapOsztalycsoport(entity.ID, item.Key, FelhasznaloId);
|
|
}
|
|
|
|
foreach (var item in osztalyCsoportDic.Where(x => x.Value == false))
|
|
{
|
|
dal.InsertEgyediNapOsztalycsoport(entity.ID, item.Key, entity.IntezmenyId, entity.TanevId);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
dal.DeleteEgyediNap(entity.ID, true, FelhasznaloId);
|
|
|
|
if (!co.UresOrarend)
|
|
dal.InsertEgyediNap(entity.ID, co.IntezmenyId, co.Tanev);
|
|
}
|
|
else if (!egyediNapValtozott && co.IsEgyediNap && co.OsszesCsop)
|
|
{
|
|
dal.DeleteEgyediNap(entity.ID, false, FelhasznaloId);
|
|
dal.InsertEgyediNap(entity.ID, co.IntezmenyId, co.Tanev);
|
|
}
|
|
else if (!egyediNapValtozott && co.IsEgyediNap && !co.OsszesCsop)
|
|
{
|
|
dal.DeleteEgyediNap(entity.ID, false, FelhasznaloId);
|
|
foreach (var item in selectedOsztalyCsoportIdList)
|
|
{
|
|
dal.InsertEgyediNapOsztalycsoport(entity.ID, item, entity.IntezmenyId, entity.TanevId);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var tanevrendjeId = dal.Insert(entity, !co.OsszesCsop, osztalyCsoportDic, TanevId, FelhasznaloId);
|
|
if (!co.UresOrarend && co.OsszesCsop)
|
|
{
|
|
if (co.IsEgyediNap)
|
|
{
|
|
dal.InsertEgyediNap(entity.ID, co.IntezmenyId, co.Tanev);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (co.UresOrarend && !co.OsszesCsop)
|
|
{
|
|
foreach (var item in osztalyCsoportDic)
|
|
{
|
|
dal.DeleteEgyediNapOsztalycsoport(entity.ID, item.Key, FelhasznaloId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var adatszotarDal = h.AdatszotarDAL();
|
|
adatszotarDal.GenerateNaptariNapok(IntezmenyId, TanevId);
|
|
|
|
if (entity.NapTipusa == (int)NapTipusEnum.elso_tanitasi_nap ||
|
|
entity.NapTipusa == (int)NapTipusEnum.utolso_tanitasi_nap)
|
|
{
|
|
NemTanitasiIdoszakbaTartozoTanitasiOrakTorlese(h, entity);
|
|
}
|
|
|
|
dal.GenerateOrarend(entity.IntezmenyId, entity.TanevId, null, entity.Datum, entity.NapTipusa);
|
|
});
|
|
}
|
|
catch (EntityDeleteFailedException e)
|
|
{
|
|
throw new BlException(IntezmenyResource.NemModositahatoATanevRendjeMertABeallitottDatumertekOlyanOratTorolneAzOraErvenyessegiIdejeMiattAmelynekKapcsolataVan, e);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
throw new BlException(StringResourcesUtil.GetString(4945) /*Nem sikerült a mentés!*/, e);
|
|
}
|
|
}
|
|
|
|
public bool IsRendkivuliTanitasiNap(DateTime datum)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
return dal.IsRendkivuliTanitasiNap(TanevId, datum);
|
|
});
|
|
}
|
|
|
|
private void NemTanitasiIdoszakbaTartozoTanitasiOrakTorlese(IDalHandler handler, ITanevRendje entity)
|
|
{
|
|
NapTipusEnum tanevRendTipus = (NapTipusEnum)entity.NapTipusa;
|
|
var dal = handler.OrarendiOra();
|
|
|
|
if (tanevRendTipus == NapTipusEnum.elso_tanitasi_nap)
|
|
{
|
|
dal.DeleteTanevKezdeteElttiOrak(entity.Datum, TanevId);
|
|
}
|
|
|
|
if (tanevRendTipus == NapTipusEnum.utolso_tanitasi_nap)
|
|
{
|
|
dal.DeleteTanevVegeUtaniOrak(entity.Datum.AddDays(1), TanevId);
|
|
}
|
|
}
|
|
|
|
private string SetColorByType(int typeId)
|
|
{
|
|
switch (typeId)
|
|
{
|
|
case (int)NapTipusEnum.tanitasi_nap:
|
|
return "#CCCCCC";
|
|
case (int)NapTipusEnum.teli_szunet:
|
|
case (int)NapTipusEnum.tavaszi_szunet:
|
|
case (int)NapTipusEnum.oszi_szunet:
|
|
case (int)NapTipusEnum.tanitasi_szunet:
|
|
return "#91F578";
|
|
case (int)NapTipusEnum.munkaszuneti_nap:
|
|
return "#90AD89";
|
|
case (int)NapTipusEnum.unnepnap:
|
|
return "#A65A5A";
|
|
case (int)NapTipusEnum.roviditett_orakat_tartalmazo_tanitasi_nap:
|
|
return "#99C4F2";
|
|
case (int)NapTipusEnum.tanitas_nelkuli_munkanap:
|
|
return "#007BFF";
|
|
default:
|
|
return "#FCD158";
|
|
}
|
|
}
|
|
|
|
public bool IsTanoraOrNapirendRogzitheto(int naptipusId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
return dal.IsTanoraOrNapirendRogzitheto(naptipusId, IntezmenyId, TanevId);
|
|
});
|
|
}
|
|
|
|
public void InsertTanevRendjeNewBontottCsoport(int osztalyId, int bontottCsoportId)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
dal.InsertTanevRendjeNewBontottCsoport(osztalyId, bontottCsoportId);
|
|
dal.GenerateOrarend(IntezmenyId, TanevId, bontottCsoportId, null, null);
|
|
});
|
|
}
|
|
|
|
public void DeleteTanevRendjeNewBontottCsoport(int osztalyId, int bontottCsoportId, int modifierId)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
dal.DeleteTanevRendjeNewBontottCsoport(osztalyId, bontottCsoportId, modifierId);
|
|
dal.GenerateOrarend(IntezmenyId, TanevId, bontottCsoportId, null, null);
|
|
});
|
|
}
|
|
|
|
public bool EnabledNemKotottMunkaidoRogzitese(DateTime date)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
var ds = dal.EnabledNemKotottMunkaidoRogzitese(date, IntezmenyId, TanevId);
|
|
|
|
if (ds.Tables[0].Rows.Count == 0 || !SDAConvert.ToBooleanFromTF(ds.Tables[0].Rows[0]["C_OSSZESCSOPORTRAVONATKOZIK"]))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
var enabledNemKotottMunkaidoRogzitese = SDAConvert.ToBooleanFromTF(ds.Tables[0].Rows[0]["C_ISLENEMKOTOTTMUNKAIDO"]);
|
|
return enabledNemKotottMunkaidoRogzitese;
|
|
});
|
|
}
|
|
|
|
public List<TanevrendOsztalyokkalNaptipusTulajdonsagokkalCO> GetTanevRendjeNaptipusTulajdonsagokkal(int? osztalyCsoportId = null)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var dal = h.TanevRendjeDal();
|
|
var ds = dal.GetTanevRendjeNaptipusTulajdonsagokkal(TanevId, osztalyCsoportId);
|
|
|
|
return ds.Tables[0].AsEnumerable().Select(row => new TanevrendOsztalyokkalNaptipusTulajdonsagokkalCO()
|
|
{
|
|
TanevrendId = SDAConvert.ToInt32(row["ID"]),
|
|
Datum = SDAConvert.ToDateTime(row["C_DATUM"]),
|
|
Hetirend = SDAConvert.ToInt32(row["C_HETIREND"]),
|
|
HetNapja = SDAConvert.ToInt32(row["C_HETNAPJA"]),
|
|
Naptipus = SDAConvert.ToInt32(row["C_NAPTIPUSA"]),
|
|
IsEgyediNap = SDAConvert.ToBooleanFromTF(row["C_EGYEDINAP"]),
|
|
ElteroNapDatuma = SDAConvert.ToDateTime(row["C_ELTERONAPDATUMA"]),
|
|
OsztalyCsoportId = SDAConvert.ToNullableInt32(row["C_OSZTALYCSOPORTID"]),
|
|
OsztalyCsoportNev = SDAConvert.ToString(row["C_NEV"]),
|
|
IsTanitasi = SDAConvert.ToBooleanFromTF(row["C_ISTANORAI"]),
|
|
IsTanoranKivuli = SDAConvert.ToBooleanFromTF(row["C_ISTANORANKIVULI"]),
|
|
OrarendiNap = SDAConvert.ToBooleanFromTF(row["C_ORARENDINAP"]),
|
|
Globalis = SDAConvert.ToBooleanFromTF(row["C_OSSZESCSOPORTRAVONATKOZIK"]),
|
|
}).ToList();
|
|
});
|
|
}
|
|
|
|
public List<TanevRendjeItemCo> GetTanevRendjeCoList()
|
|
{
|
|
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.TanevRendjeDal().GetTanevRendjeData(TanevId));
|
|
|
|
var result = new List<TanevRendjeItemCo>();
|
|
|
|
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
|
|
{
|
|
var co = new TanevRendjeItemCo(dataRow);
|
|
result.Add(co);
|
|
}
|
|
|
|
Dictionary<int, string> tanevRendjeOsztalyCsoportokDictionary = GetTanevRendjeOsztalyCsoportokDictionary(result.Select(x => x.Id).ToList());
|
|
|
|
foreach (TanevRendjeItemCo co in result)
|
|
{
|
|
var erintettOsztalyCsoportText = tanevRendjeOsztalyCsoportokDictionary.SingleOrDefault(x => x.Key == co.Id).Value ?? string.Empty;
|
|
|
|
if (!co.IsOsszesCsoportraVonatkozik)
|
|
{
|
|
if (co.VonatkozoOsztalyCsoportSzam > 1)
|
|
{
|
|
co.ErintettOsztalyCsoportText = IntezmenyResource.Tobb;
|
|
}
|
|
else if (co.VonatkozoOsztalyCsoportSzam == 1)
|
|
{
|
|
co.ErintettOsztalyCsoportText = erintettOsztalyCsoportText;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
co.ErintettOsztalyCsoportText = IntezmenyResource.Osszes;
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
}
|
|
}
|