293 lines
12 KiB
C#
293 lines
12 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
|
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.Resources;
|
|
|
|
namespace Kreta.BusinessLogic.Helpers
|
|
{
|
|
public class ZaradekHelper : LogicBase
|
|
{
|
|
public ZaradekHelper(IConnectionType connectionType) : base(connectionType) { }
|
|
|
|
public ZaradekCo GetZaradekById(int Id)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.ZaradekDal();
|
|
var entity = dal.Get(Id);
|
|
var result = new ZaradekCo(entity);
|
|
|
|
return result;
|
|
});
|
|
}
|
|
|
|
public void DeleteZaradek(int Id, bool isOfo)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.ZaradekDal();
|
|
var entity = dal.Get(Id);
|
|
|
|
var hasError = false;
|
|
var errorMessage = new StringBuilder();
|
|
if (h.OsztalyCsoport().GetIsOsztaly(entity.TanuloCsoport.OsztalyCsoportId))
|
|
{
|
|
hasError = ValidateUtolsoKiVagyAtsorolasiZaradek(errorMessage, entity, dal);
|
|
}
|
|
|
|
if (isOfo || hasError)
|
|
{
|
|
ValidateOfo(h, errorMessage, entity.IsKiVagyAtsorolasiZaradek);
|
|
|
|
if (errorMessage.Length > 0)
|
|
{ throw new BlException(errorMessage.ToString()); }
|
|
}
|
|
|
|
dal.Delete(entity);
|
|
});
|
|
}
|
|
|
|
public void SaveZaradek(ZaradekCo co, bool isOfo, bool isAdmin, int? tanevId = null)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
Validate(h, co, isOfo, isAdmin);
|
|
SaveZaradek(h, co, tanevId);
|
|
});
|
|
}
|
|
|
|
public List<ZaradekCo> GetZaradekok(List<int> nemzetiDokumentumNyelvek, int tanuloCsoportId, int? tanuloId = null)
|
|
{
|
|
DataSet ds = Dal.CustomConnection.Run(ConnectionType, (h) => h.ZaradekDal().GetZaradekok(TanevId, IntezmenyId, nemzetiDokumentumNyelvek, tanuloCsoportId, tanuloId));
|
|
|
|
var coList = new List<ZaradekCo>();
|
|
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
|
{
|
|
foreach (DataRow row in ds.Tables[0].Rows)
|
|
{
|
|
coList.Add(new ZaradekCo
|
|
{
|
|
Id = row.Field<int>("Id"),
|
|
KeltezesDatuma = row.Field<DateTime?>("KeltezesDatuma"),
|
|
KeltezesHelye = row.Field<string>("KeltezesHelye"),
|
|
TanuloCsoportId = row.Field<int>("TanuloCsoportId"),
|
|
TanuloId = row.Field<int>("TanuloId"),
|
|
RogzitoId = row.Field<int>("RogzitoId"),
|
|
RogzitesDatuma = row.Field<DateTime>("RogzitesDatuma"),
|
|
ZaradekSzovegek = row.Field<string>("IdegenNyelvSzovegek"),
|
|
ZaradekSzovegList = new List<ZaradekNyelvCo> { new ZaradekNyelvCo() { NyelvId = (int)AnyanyelvEnum.magyar, Szoveg = row.Field<string>("Szoveg") } },
|
|
IsKiVagyAtsorolasiZaradek = SDAConvert.ToBooleanFromTF(row["IsKiVagyAtsorolasiZaradek"]),
|
|
OsztalyNev = row.Field<string>("OsztalyNev"),
|
|
IsKapcsolodo = SDAConvert.ToBooleanFromTF(row["IsKapcsolodo"]),
|
|
IsTorolheto = SDAConvert.ToBooleanFromTF(row["IsTorolheto"]),
|
|
IsOsztaly = SDAConvert.ToBooleanFromTF(row["IsOsztaly"])
|
|
});
|
|
}
|
|
}
|
|
|
|
return coList;
|
|
}
|
|
|
|
public void SaveZaradekTobbesModositas(ZaradekCo co, bool isOfo, bool isAdmin, List<int> tanuloCsoportIdList)
|
|
{
|
|
if (tanuloCsoportIdList.Any())
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
Validate(h, co, isOfo, isAdmin);
|
|
foreach (var tanuloCsoportId in tanuloCsoportIdList)
|
|
{
|
|
co.TanuloCsoportId = tanuloCsoportId;
|
|
co.Id = null;
|
|
SaveZaradek(h, co);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
public void OsszesZaradekTorlese(List<int> tanuloCsoportIdList, bool isOsztalyList)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.ZaradekDal();
|
|
dal.DeleteAll(tanuloCsoportIdList, FelhasznaloId, isOsztalyList);
|
|
});
|
|
}
|
|
|
|
public void LegutobbRogzitettZaradekokTorlese(List<int> tanuloCsoportIdList, bool isOsztalyList)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.ZaradekDal();
|
|
dal.DeleteLasts(tanuloCsoportIdList, FelhasznaloId, isOsztalyList);
|
|
});
|
|
}
|
|
|
|
private void SaveZaradek(IDalHandler h, ZaradekCo co, int? tanevId = null)
|
|
{
|
|
var dal = h.ZaradekDal();
|
|
IZaradek entity;
|
|
|
|
if (co.Id.HasValue)
|
|
{
|
|
entity = dal.Get(co.Id.Value);
|
|
}
|
|
else
|
|
{
|
|
entity = dal.Get();
|
|
entity.TanevId = tanevId ?? TanevId;
|
|
entity.RogzitesDatuma = DateTime.Now;
|
|
entity.RogzitoId = co.RogzitoId;
|
|
entity.TanuloCsoportId = co.TanuloCsoportId.Value;
|
|
}
|
|
|
|
entity.IsBizonyitvanybanMegjelenik = co.IsBizonyitvanybanMegjelenik;
|
|
entity.IsKiVagyAtsorolasiZaradek = co.IsKiVagyAtsorolasiZaradek;
|
|
entity.IsOsztalynaplobanMegjelenik = co.IsOsztalynaplobanMegjelenik;
|
|
entity.IsTorzslaponMegjelenik = co.IsTorzslaponMegjelenik;
|
|
entity.KeltezesDatuma = co.KeltezesDatuma.Value;
|
|
entity.KeltezesHelye = co.KeltezesHelye;
|
|
|
|
entity.Szoveg = co.ZaradekSzovegList.Single(x => x.NyelvId == (int)AnyanyelvEnum.magyar).Szoveg;
|
|
entity.UtolsoModositasDatuma = DateTime.Now;
|
|
entity.UtolsoModositoId = FelhasznaloId;
|
|
|
|
if (co.Id.HasValue)
|
|
{
|
|
dal.FullUpdate(entity);
|
|
}
|
|
else
|
|
{
|
|
co.Id = dal.Insert(entity);
|
|
}
|
|
|
|
foreach (var zaradekNyelv in co.ZaradekSzovegList.Where(x => x.NyelvId != (int)AnyanyelvEnum.magyar))
|
|
{
|
|
var zaradekNyelvEntity = entity.ZaradekNyelv.SingleOrDefault(x => x.NyelvId == zaradekNyelv.NyelvId && !x.Torolt);
|
|
|
|
if (zaradekNyelvEntity != null)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(zaradekNyelv.Szoveg))
|
|
{
|
|
zaradekNyelvEntity.Szoveg = zaradekNyelv.Szoveg;
|
|
dal.UpdateIdegenNyelv(zaradekNyelvEntity);
|
|
}
|
|
else
|
|
{
|
|
dal.DeleteIdegenNyelv(zaradekNyelvEntity);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var idegenNyelvEntity = dal.GetIdegenNyelv();
|
|
idegenNyelvEntity.NyelvId = zaradekNyelv.NyelvId;
|
|
idegenNyelvEntity.Szoveg = zaradekNyelv.Szoveg;
|
|
idegenNyelvEntity.ZaradekId = co.Id.Value;
|
|
|
|
dal.InsertIdegenNyelv(idegenNyelvEntity);
|
|
}
|
|
}
|
|
|
|
foreach (var entityZaradekNyelv in entity.ZaradekNyelv.Where(e => !co.ZaradekSzovegList.Any(c => c.NyelvId == e.NyelvId) && !e.Torolt))
|
|
{
|
|
dal.DeleteIdegenNyelv(entityZaradekNyelv);
|
|
}
|
|
}
|
|
|
|
private void Validate(IDalHandler h, ZaradekCo co, bool isOfo, bool isAdmin)
|
|
{
|
|
if (!isOfo && !isAdmin)
|
|
{
|
|
throw new BlException(OsztalyCsoportResource.NincsJogosultsagaZaradekFelvetelere);
|
|
}
|
|
|
|
var errorMessage = new StringBuilder();
|
|
|
|
if (isOfo)
|
|
{
|
|
ValidateOfo(h, errorMessage, co.IsKiVagyAtsorolasiZaradek);
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(co.KeltezesHelye))
|
|
{
|
|
errorMessage.Append(OsztalyCsoportResource.KeltezesHelyeKotelezo).Append(Environment.NewLine);
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(co.ZaradekSzovegList.Single(x => x.NyelvId == (int)AnyanyelvEnum.magyar).Szoveg))
|
|
{
|
|
errorMessage.Append(OsztalyCsoportResource.ZaradekSzovegeKotelezo).Append(Environment.NewLine);
|
|
}
|
|
|
|
if (!co.KeltezesDatuma.HasValue)
|
|
{
|
|
errorMessage.Append(OsztalyCsoportResource.KeltezesDatumaKotelezo);
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(errorMessage.ToString()))
|
|
{
|
|
throw new BlException(errorMessage.ToString());
|
|
}
|
|
}
|
|
|
|
private void ValidateOfo(IDalHandler h, StringBuilder errorMessage, bool isKiVagyAtsorolasiZaradek)
|
|
{
|
|
var systemSettingsHelper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h));
|
|
|
|
var isOfoRogzithetEvkoziZaradekot = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyfonok_megtekintheti_modosithatja_osztalyaba_jaro_tanulok_zaradekat);
|
|
var isOfoRogzithetKiVagyAtsorolasiZaradekot = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyfonok_kiegeszitheti_osztalyaba_jaro_tanulok_ki_vagy_atsorolsasi_zaradekat);
|
|
|
|
if (!isOfoRogzithetEvkoziZaradekot)
|
|
{
|
|
errorMessage.Append(OsztalyCsoportResource.OfoNemRogzithetZaradekot).Append(Environment.NewLine);
|
|
}
|
|
else if (isKiVagyAtsorolasiZaradek && !isOfoRogzithetKiVagyAtsorolasiZaradekot)
|
|
{
|
|
errorMessage.Append(OsztalyCsoportResource.OfoNemRogzithetKiVagyAtsorolasiZaradekot).Append(Environment.NewLine);
|
|
}
|
|
}
|
|
|
|
private bool ValidateUtolsoKiVagyAtsorolasiZaradek(StringBuilder errorMessage, IZaradek entity, IZaradekDal dal)
|
|
{
|
|
if (entity.IsKiVagyAtsorolasiZaradek && entity.TanuloCsoport.KilepesDatum.HasValue)
|
|
{
|
|
if (!IsKiVagyAtsorolasiZaradekTorolheto(entity.TanuloCsoport.ID, entity.ID))
|
|
{
|
|
errorMessage.Append(OsztalyCsoportResource.OsztalybolKiirtTanuloknakRendelkezniukKellKiAtsorolasiZaradekkal);
|
|
return true;
|
|
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool IsKiVagyAtsorolasiZaradekTorolheto(int tanuloCsoportId, int zaradekId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var tanuloCsoportDal = h.TanuloCsoport();
|
|
|
|
var tanuloCsoport = tanuloCsoportDal.Get(tanuloCsoportId);
|
|
if (!tanuloCsoport.KilepesDatum.HasValue)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
var zaradekDal = h.ZaradekDal();
|
|
return zaradekDal.GetTanuloKiVagyAtsorolasiZaradekai(tanuloCsoportId, zaradekId).Tables[0].AsEnumerable().Any();
|
|
});
|
|
}
|
|
|
|
}
|
|
}
|