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 kozpontiOrakList, bool isTeremutkozesFigyelese, out List validatedKozpontiOraToBeSaved) { validatedKozpontiOraToBeSaved = new List(); 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; } } }