using System; using System.Collections.Generic; using System.Data; using System.Linq; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.Core.ConnectionType; using Kreta.DataAccessManual; using Kreta.Enums; using Kreta.Enums.ManualEnums; namespace Kreta.BusinessLogic.Classes { public class NaplozarasLogic { private readonly IConnectionType _connectionType; public NaplozarasLogic(IConnectionType connectionType) { _connectionType = connectionType; } public bool ModosithatoNaplozarasMiatt(DateTime datum, int? osztalyId) { try { var ret = osztalyId.HasValue && GetLezartOsztalyokEsBontottCsoportjaik().Contains(osztalyId.Value); if (!ret) { var naplozarasDatum = new OrarendHelper(_connectionType).GetNaplozarasDate(startDate: null); return naplozarasDatum <= datum; } return false; } catch { return true; } } public bool IsCsakErtekelesZarasaBeallitas() { return new SystemSettingsHelper(_connectionType) .GetSystemSettingValue(RendszerBeallitasTipusEnum.elektronikus_naplo_zarasanak_datuma_beallitas_ervenyesegi_kore) == NaplozarasErvenyessegiKoreEnum.CsakErtekelesZarasa; } public bool IsCsakNaplozasZarasaBeallitas() { return new SystemSettingsHelper(_connectionType) .GetSystemSettingValue(RendszerBeallitasTipusEnum.elektronikus_naplo_zarasanak_datuma_beallitas_ervenyesegi_kore) == NaplozarasErvenyessegiKoreEnum.CsakNaplozasZarasa; } public bool IsCsakErtekelesZarasaVagyErtekelesEsNaploZarasaBeallitas() { var naplozarasErvenyessegiKore = new SystemSettingsHelper(_connectionType).GetSystemSettingValue(RendszerBeallitasTipusEnum.elektronikus_naplo_zarasanak_datuma_beallitas_ervenyesegi_kore); return naplozarasErvenyessegiKore == NaplozarasErvenyessegiKoreEnum.CsakErtekelesZarasa || naplozarasErvenyessegiKore == NaplozarasErvenyessegiKoreEnum.ErtekelesEsNaploZarasa; } public bool IsNaplozhatZarastolFuggetlenul(DateTime date, int? osztalyId) { return (ModosithatoNaplozarasMiatt(date, osztalyId: null) || IsCsakErtekelesZarasaBeallitas()) && (!osztalyId.HasValue || !GetLezartOsztalyokEsBontottCsoportjaik().Contains(osztalyId.Value)); } public bool IsErtekelhetZarastolFuggetlenul(DateTime date, int? osztalyId) { return (ModosithatoNaplozarasMiatt(date, osztalyId: null) || IsCsakNaplozasZarasaBeallitas()) && (!osztalyId.HasValue || !GetLezartOsztalyokEsBontottCsoportjaik().Contains(osztalyId.Value)); } public List GetLezartOsztalyokEsBontottCsoportjaik() { var lezartOsztalyokIdList = new SystemSettingsHelper(_connectionType).GetSystemSettingValue>(RendszerBeallitasTipusEnum.lezart_osztalynaplok).Select(int.Parse).ToList(); return GetOsztalyokEsBontottCsoportjaik(lezartOsztalyokIdList); } private List GetOsztalyokEsBontottCsoportjaik(List osztalyIdList) { var list = new List(); Dal.CustomConnection.Run(_connectionType, h => { foreach (var osztalyId in osztalyIdList) { var ds = h.Osztaly().GetOsztalyEsBontottCsoportjai(osztalyId); foreach (var row in ds.Tables[0].AsEnumerable()) { var id = SDAConvert.ToInt32(row["Id"]); if (!list.Contains(id)) { list.Add(id); } } } }); return list; } } }