kreta/KretaWeb/Areas/Orarend/Logic/AdminKozpontiOraLogic.cs
2024-03-13 00:33:46 +01:00

65 lines
3.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.Enums.ManualEnums;
using Kreta.Web.Areas.Intezmeny.Logic;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
namespace Kreta.Web.Areas.Orarend.Logic
{
public class AdminKozpontiOraLogic
{
public KozpontiOraValidationCo CreateOraValidationCoListForKozpontiOrak(DateTime start, DateTime end, int hanyadikOra, List<AdminKozpontiOrakRogzitesGridModel> kozpontiOrakList, bool isTeremutkozesFigyelese, out List<OraValidationCo> validatedKozpontiOraToBeSaved)
{
validatedKozpontiOraToBeSaved = new List<OraValidationCo>();
var validationCo = new KozpontiOraValidationCo();
validationCo.IsValid = true;
validationCo.ErrorMessage = string.Empty;
if (kozpontiOrakList == null || !kozpontiOrakList.Any())
{
return validationCo;
}
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var csengetesirendId = new AdminKozpontiOrakHelper(ConnectionTypeExtensions.GetSessionConnectionType()).CsengetesirendId;
var kozpontiOraGroupId = Guid.NewGuid();
foreach (var kozpontiOra in kozpontiOrakList)
{
OrarendiOraModel orarendiOramodel = KozpontiOraConverter.ConvertToOrarendiOra(kozpontiOra, csengetesirendId, start, end, hanyadikOra);
OrarendiOraLogic.SetHetNapja(orarendiOramodel, start.DayOfWeek);
orarendiOramodel.HetirendList = OrarendiOraLogic.GetAktualHetirendList();
orarendiOramodel.IsEgyediNap = TanevRendjeLogic.IsEgyediNapByDateAndOsztalyCsoportId(start.Date, kozpontiOra.OsztalyId);
OrarendiOraLogic.PostProcessHetirend(orarendiOramodel);
OrarendiOraLogic.PostProcessOraszam(orarendiOramodel);
OrarendiOraLogic.PostProcessHetnapja(orarendiOramodel);
orarendiOramodel.ModositasiIdoszakTipus = (int)OraModositasiIdoszakTipus.EgyOra;
OraValidationCo oraValidationCo = orarendiOramodel.CreateOraValidationCo();
if (orarendiOraHelper.CheckUtkozesValidation(oraValidationCo, null, isPrevalidation: false, isThrowExceptionOnCollision: false, isCheckKozponti: true, isTeremutkozesFigyelese: isTeremutkozesFigyelese))
{
if (oraValidationCo.IsKozpontiDuplicate || !string.IsNullOrWhiteSpace(oraValidationCo.Msg.ToString()))
{
validationCo.IsValid = false;
validationCo.ErrorMessage = oraValidationCo.Msg.ToString();
validationCo.HasTeremutkozes = oraValidationCo.OrarendiOraValidationCo.HasTeremutkozes;
validationCo.TeremutkozesSystemSettingsValue = oraValidationCo.OrarendiOraValidationCo.TeremutkozesSystemSetting;
validatedKozpontiOraToBeSaved.Add(oraValidationCo);
return validationCo;
}
oraValidationCo.OrarendiOraValidationCo.KozpontiOraGroupId = kozpontiOraGroupId;
validatedKozpontiOraToBeSaved.Add(oraValidationCo);
}
}
return validationCo;
}
}
}