using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Data; using System.IO; using System.Linq; using System.Net; using System.Web.Mvc; using System.Web.Routing; using System.Xml.Linq; using ICSharpCode.SharpZipLib.Zip; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Classes.AsposeHelpers; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.BusinessLogic.Interfaces; using Kreta.BusinessLogic.Security; using Kreta.Core; using Kreta.Core.Configuratiaton.Interface; using Kreta.Core.FeatureToggle; using Kreta.Core.Iktato.Poszeidon.Factory.Interface; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework; using Kreta.Resources; using Kreta.Web.Areas.Nyomtatvanyok.Logic; using Kreta.Web.Areas.Nyomtatvanyok.Models; using Kreta.Web.Controllers; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Error; using Kreta.Web.Helpers.Modal; using Kreta.Web.Menu; using Kreta.Web.Models.EditorTemplates; using Kreta.Web.Security; namespace Kreta.Web.Areas.Nyomtatvanyok.Controllers { //[AllowAnonymous] [MvcRoleClaimsAuthorize(true)] [MvcRolePackageAuthorize(TanevEnum.Mind, KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Tanar.ClaimValue, KretaClaimPackages.IsKozossegiSzolgalatKezelo.ClaimValue, KretaClaimPackages.IsArchivIntezmeny.ClaimValue)] public partial class NyomtatvanyokController : BaseNyomtatvanyokController { private IFeatureContext FeatureContext { get; } private IIktatoRepositoryFactory IktatoRepositoryFactory { get; } private IktatoServiceConfiguration IktatoServiceConfiguration { get; } private readonly IKozpontiKretaHelper KozpontiKretaHelper; private readonly IKozpontiKretaConfiguration KozpontiKretaConfiguration; private bool RendszerbeallitasMindenkiLathatjaAzOsszesDokumentumot => new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue(RendszerBeallitasTipusEnum.osszes_dokumentum_eleresenek_engedelyezese_szaktanarok_es_osztalyfonokok_reszere); public class NyomtatvanyModel : NyomtatvanyBaseModel { public int TanevId { get; set; } public int OsztalyId { get; set; } public int OsztalyCsoportId { get; set; } public List OsztalyCsoportIdList { get; set; } public List OsztalyIdList { get; set; } public int CsoportId { get; set; } public List CsoportIdList { get; set; } public int FoglalkozasId { get; set; } public List FoglalkozasIdList { get; set; } public int PedagogusId { get; set; } public List PedagogusIdList { get; set; } public int TanuloId { get; set; } public List TanuloIdList { get; set; } public List TanulocsoportIdList { get; set; } public int TeremId { get; set; } public List TeremIdList { get; set; } public int HonapId { get; set; } public int HaladasiNaploFormatumId { get; set; } public int HetSorszama { get; set; } public DateTime KeltDatum { get; set; } public int KeltFormatumId { get; set; } public int CimzettId { get; set; } public int AlulirottMegnevezesId { get; set; } public int OrarendTipusaId { get; set; } public int FormatumId { get; set; } public string ModelXmlString { get; set; } public int AtsoroltTanuloAdatokModId { get; set; } public int OsztalyInditasaId { get; set; } public int MegtartottVagyMegtarthatoModId { get; set; } public int TeljesNaposMulasztasSzamitashozMiminalisanMulasztottOrakszamaModId { get; set; } public int NyomtatvanyErtekelesMegjelenitesId { get; set; } public DateTime IdoszakKezdete { get; set; } public DateTime IdoszakVege { get; set; } public int HelyettesitesListaFormatumId { get; set; } public int TanulokNevsorRendezeseId { get; set; } public DateTime OrarendErvenyessegiDatum { get; set; } public BetuMeretEnum BetuMeret { get; set; } public CsoportnaploTanulokSorrendjeEnum CsoportnaploTanulokSorrendje { get; set; } public int IgazolatlanOrakSzama { get; set; } public KotesmargoTipusEnum KotesMargoTipus { get; set; } public bool KiiratkozottTanulokMegjelenitese { get; set; } public HelyettesitesiNaploBontasEnum HelyettesitesiNaploBontas { get; set; } public bool SNIAdatokMegjeleniteseUresen { get; set; } public bool JegyzekSzerepeltetese { get; set; } public bool OkjSzakmacsoport { get; set; } public bool OkjAgazat { get; set; } public bool OkjSzakkepesites { get; set; } public bool OkjReszszakkepesites { get; set; } public bool UjSzktAgazat { get; set; } public bool UjSzktSzakma { get; set; } public bool UjSzktSzakmairany { get; set; } public bool NktTanulmanyiTerulet { get; set; } public bool NktSzakkepesites { get; set; } public bool NktSzakirany { get; set; } public bool KapcsolodoCsoportokMegjelenitese { get; set; } public bool OsztalyBontasokMegjelenitese { get; set; } public MunkaidoelszamolasBontasEnum MunkaidoelszamolasBontas { get; set; } public bool TanoraiFoglalkozasokUresBlokkMegjelenites { get; set; } public bool TanoranKivuliFoglalkozasokUresBlokkMegjelenites { get; set; } public bool EgyeniFoglalkozasokUresBlokkMegjelenites { get; set; } public bool HelyettesitesekUresBlokkMegjelenites { get; set; } public bool OktNevLeNemKotottMunkaidoUresBlokkMegjelenites { get; set; } public bool ElmeletiGyakorlatiOrakElkulonitese { get; set; } public bool FelnottkepzesiOrakElkulonitese { get; set; } public int OktNevelesiKategoriaId { get; set; } public List FeladatellatasiHelyIdList { get; set; } public AnyanyelvEnum NemzetisegiNyelvId { get; set; } public bool EvfolyamSzerepelteteseTanuloiAdatokKozott { get; set; } public bool PHMegjelenitese { get; set; } = true; public bool HelyettesitesTipusanakMegjelenitese { get; set; } = true; public bool ParhuzamosOrakMegjelenitese { get; set; } public bool NegyedevreSzamoltMulasztasok { get; set; } public bool JelenletAdatokMegjelenitese { get; set; } public JelenletAdatokOsszesiteseEnum JelenletAdatokOsszesitese { get; set; } public JelenletTablazatElrendezeseEnum JelenletTablazatElrendezese { get; set; } public string IgazolasSorszama { get; set; } public DateTime ErvenyessegVege { get; set; } public int IgazolasKiallitasanakHelyeId { get; set; } public bool TagintezmenyCimenekMegjelenitese { get; set; } public int TagintezmenyCimeId { get; set; } public bool IntezmenyNevenekMegjelenitese { get; set; } public string MasodikIntezmenyNeve { get; set; } public bool FeladatellatasiHelyCimenekMegjelenitese { get; set; } public string MasodikFeladatellatasiHelyCime { get; set; } public string GyakorlatiKepzesiHelyNeve { get; set; } public string GyakorlatiKepzesiHelyCime { get; set; } public IgazolasKiallitasanakOkaEnum IgazolasKiallitasanakOka { get; set; } public int BetuMeretSzam { get; set; } public bool IsUjSzkt { get; set; } public int Oraszam { get; set; } public int MuveszetiAgId { get; set; } public bool MegjegyzesekMegjelenitese { get; set; } public bool IsAmiHianyzasIsMegjelenjen { get; set; } public bool? MustGondviselo { get; set; } public bool? MustGondviseloIsTorvenyes { get; set; } public bool IsTankoteles { get; set; } } public NyomtatvanyokController(IKozpontiKretaConfiguration kozpontiKretaConfiguration, IKozpontiKretaHelper kozpontiKretaHelper, IFeatureContext featureContext, IIktatoRepositoryFactory iktatoRepositoryFactory, IktatoServiceConfiguration iktatoServiceConfiguration) { FeatureContext = featureContext ?? throw new ArgumentNullException(nameof(featureContext)); IktatoRepositoryFactory = iktatoRepositoryFactory ?? throw new ArgumentNullException(nameof(iktatoRepositoryFactory)); IktatoServiceConfiguration = iktatoServiceConfiguration ?? throw new ArgumentNullException(nameof(iktatoServiceConfiguration)); KozpontiKretaHelper = kozpontiKretaHelper ?? throw new ArgumentNullException(nameof(kozpontiKretaHelper)); KozpontiKretaConfiguration = kozpontiKretaConfiguration ?? throw new ArgumentNullException(nameof(kozpontiKretaConfiguration)); } public ActionResult Index() { var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var pbbm = new PanelBarBaseModel { PanelName = "NyomtatvanyPanel" }; var lpbcm = new List(); var xdoc = XDocument.Load(Server.MapPath("~/Resources/Nyomtatvanyok.xml")); var groups = from x in xdoc.Descendants("Group") select new { GroupId = x.Attribute("Id").Value, GroupName = x.Attribute("Name").Value, GroupDescription = x.Attribute("Description").Value, Nyomtatvanyok = x.Descendants("Nyomtatvany"), isKovTanevbenElerheto = x.Attribute("isKovTanevbenElerheto"), isVisibleOnlyOnSZIRIntezmeny = x.Attribute("isVisibleOnlyOnSZIRIntezmeny"), isVisibleOnlyOnNemSZIRIntezmeny = x.Attribute("isVisibleOnlyOnNemSZIRIntezmeny") }; if (ClaimData.KovTanevID.HasValue && ClaimData.SelectedTanevID.HasValue && ClaimData.KovTanevID.Value == ClaimData.SelectedTanevID.Value) { groups = groups.Where(x => (bool?)x.isKovTanevbenElerheto == true); } groups = groups.Where(y => !(y.isVisibleOnlyOnSZIRIntezmeny != null || y.isVisibleOnlyOnNemSZIRIntezmeny != null) || (y.isVisibleOnlyOnSZIRIntezmeny != null && y.isVisibleOnlyOnSZIRIntezmeny.Value.ToLower() == ClaimData.IsSzakkepzoIntezmeny.ToString().ToLower() && !ClaimData.IsSelectedTanev21_22OrLater) || (y.isVisibleOnlyOnNemSZIRIntezmeny != null && y.isVisibleOnlyOnNemSZIRIntezmeny.Value.ToLower() == (!ClaimData.IsSzakkepzoIntezmeny || !ClaimData.IsSelectedTanev21_22OrLater).ToString().ToLower())); var IsNemLathatjaDiakokAdatait = MenuHelper.IsAlkalmazottNemLathatjaDiakokAdatait(); AddNemzetisegiDokumentumok(systemSettingsHelper); AddKozossegiSzolgalatiNaplo(); AddIfIsszakkepzojuttatas(); var isSportAdatokKezelese = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Tanulo_sportoloi_adatainak_kezelese); var isOfoKezelhetSportAdatokat = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Osztalyfonok_megtekintheti_modosithatja_osztalyaba_jaro_tanulok_sportoloi_adatait); var isCsopVezKezelhetSportAdatokat = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Csoportvezeto_Tanulo_Adat_Modositas); var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType()); var isPedIgHelyettKiallIsEnabled = helper.GetIntezmenyConfig(IntezmenyConfigModulEnum.Nyomtatvany_PedIgHelyettKiall, IntezmenyConfigTipusEnum.IsEnabled); foreach (var group in groups) { var data = new List(); foreach (var nyomtatvany in group.Nyomtatvanyok) { var nyomtatvanyIdAttributeValue = nyomtatvany.Attribute("Id").Value; var nyomtatvanyName = nyomtatvany.Attribute("Name").Value; if (!int.TryParse(nyomtatvanyIdAttributeValue, out var nyomtatvanyId)) { nyomtatvanyId = (int)Enum.Parse(typeof(DokumentumFeluletEnum), nyomtatvanyIdAttributeValue); var dokumentumFeluletEnum = (DokumentumFeluletEnum)Enum.Parse(typeof(DokumentumFeluletEnum), nyomtatvanyIdAttributeValue); /// TODO: miért hasal el a GetDisplayName()? nyomtatvanyName = dokumentumFeluletEnum.GetAttribute()?.GetName() ?? dokumentumFeluletEnum.ToDisplayName(); } if (!IsNemLathatjaDiakokAdatait && IsValidNyomtatvany(nyomtatvanyId)) { if (nyomtatvany.Attribute("SeparatorHeader") != null) { if (ClaimData.KovTanevID.HasValue && ClaimData.SelectedTanevID.HasValue && ClaimData.KovTanevID.Value == ClaimData.SelectedTanevID.Value) { var isKovTanevbenElerheto = (bool?)nyomtatvany.Attribute("isKovTanevbenElerheto"); if (isKovTanevbenElerheto.HasValue && isKovTanevbenElerheto.Value) { data.Add(new PanelBarChildHeaderModel { Name = nyomtatvany.Attribute("SeparatorHeader").Value, Description = string.Empty }); } } else { data.Add(new PanelBarChildHeaderModel { Name = nyomtatvany.Attribute("SeparatorHeader").Value, Description = string.Empty }); } } if (nyomtatvanyId == (int)DokumentumFeluletEnum.TanulokSportoloiAdatainakOsszesitojeOsztaly || nyomtatvanyId == (int)DokumentumFeluletEnum.TanulokSportoloiAdatainakOsszesitojeCsoport) { if (isSportAdatokKezelese) { if (ClaimData.IsAdministrator || (ClaimData.IsOsztalyfonok && isOfoKezelhetSportAdatokat && nyomtatvanyId == (int)DokumentumFeluletEnum.TanulokSportoloiAdatainakOsszesitojeOsztaly) || (isCsopVezKezelhetSportAdatokat && ClaimData.FelhasznaloSzerepCsomagok.Any(x => x == KretaClaimPackages.CsoportVezeto.ClaimValue && nyomtatvanyId == 1001))) { data.Add(new PanelBarChildDataModel { Name = nyomtatvanyName, Description = nyomtatvany.Attribute("Description").Value, Id = nyomtatvanyId.ToString(), ControllerAction = nyomtatvany.Attribute("ControllerAction").Value, DocumentType = nyomtatvany.Attribute("DocumentType").Value }); } } } else { if (ClaimData.KovTanevID.HasValue && ClaimData.SelectedTanevID.HasValue && ClaimData.KovTanevID.Value == ClaimData.SelectedTanevID.Value) { var isKovTanevbenElerheto = (bool?)nyomtatvany.Attribute("isKovTanevbenElerheto"); if (isKovTanevbenElerheto.HasValue && isKovTanevbenElerheto.Value) { data.Add(new PanelBarChildDataModel { Name = nyomtatvanyName, Description = nyomtatvany.Attribute("Description").Value, Id = nyomtatvanyId.ToString(), ControllerAction = nyomtatvany.Attribute("ControllerAction").Value, DocumentType = nyomtatvany.Attribute("DocumentType").Value }); } } else { if (nyomtatvanyId == (int)DokumentumFeluletEnum.PedagogusigazolvanyHelyettKiallitottIgazolas) { if (!isPedIgHelyettKiallIsEnabled) { continue; } data.Add(new PanelBarChildDataModel { Name = nyomtatvanyName, Description = nyomtatvany.Attribute("Description").Value, Id = nyomtatvanyId.ToString(), ControllerAction = nyomtatvany.Attribute("ControllerAction").Value, DocumentType = nyomtatvany.Attribute("DocumentType").Value }); } else { data.Add(new PanelBarChildDataModel { Name = nyomtatvanyName, Description = nyomtatvany.Attribute("Description").Value, Id = nyomtatvanyId.ToString(), ControllerAction = nyomtatvany.Attribute("ControllerAction").Value, DocumentType = nyomtatvany.Attribute("DocumentType").Value }); } } } } } if (data.Count > 0) { lpbcm.Add(new PanelBarChildModel() { PartialViewName = "PanelBarDefaultView", PartialViewTitle = group.GroupName, Data = data }); } } pbbm.ChildModels = lpbcm; return View("Index", pbbm); } [MvcRolePackageAuthorize(TanevEnum.AktTanev, KretaClaimPackages.Tanulo.ClaimValue, KretaClaimPackages.Gondviselo.ClaimValue)] public ActionResult TanuloiIndex() { var bdm = new BizonyitvanyDownloadModel() { ButtonModel = new ModalButtonModel { Name = "downloadBtn", Text = NyomtatvanyokResource.Letoltes, Enabled = true, Icon = null, Parameters = new RouteValueDictionary(), ImageUrl = "", SpriteCssClass = "", EventName = "TanuloiBizonyitvanyokLetolteseHelper.downloadDocuments" }, }; return View("TanuloiIndex", bdm); } #region Listák lekérése public List GetOsztalyIdList(List osztalyIdList, OktNevelesiKategoriaEnum? feladatKategoria, bool forOrarend = false) { var nyomtatvanyHelper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); return osztalyIdList ?? (forOrarend ? nyomtatvanyHelper.GetOsztalyByTanevList(null, feladatKategoria) : nyomtatvanyHelper.GetOsztalyByTanevList(AdminisztratorVagySzuperOsztalyfonok() || RendszerbeallitasMindenkiLathatjaAzOsszesDokumentumot ? -1 : ClaimData.FelhasznaloId, feladatKategoria)); } public List GetCsoportIdList(List csoportIdList, OktNevelesiKategoriaEnum? feladatKategoria) { return csoportIdList ?? new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetCsoportByTanevList(AdminisztratorVagySzuperOsztalyfonok() || RendszerbeallitasMindenkiLathatjaAzOsszesDokumentumot ? -1 : ClaimData.FelhasznaloId, feladatKategoria); } public List GetOsztalyCsoportIdList(List osztalyCsoportIdList) { return osztalyCsoportIdList ?? new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyCsoportByTanevList(AdminisztratorVagySzuperOsztalyfonok() || RendszerbeallitasMindenkiLathatjaAzOsszesDokumentumot ? -1 : ClaimData.FelhasznaloId, OktNevelesiKategoriaEnum.NevelesOktatas); } public List GetFoglalkozasIdList(List foglalkozasIdList) { return foglalkozasIdList ?? new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetoFoglalkozasByTanevList(AdminisztratorVagySzuperOsztalyfonok() || RendszerbeallitasMindenkiLathatjaAzOsszesDokumentumot ? -1 : ClaimData.FelhasznaloId); } public List GetPedagogusIdList(List pedagogusIdList) { return GetPedagogusIdListCommon(pedagogusIdList); } public List GetTeremIdList(List teremIdList) { return GetTeremIdListCommon(teremIdList); } public List GetPedagogusIdListByFelhasznaloId(List pedagogusIdList, OktNevelesiKategoriaEnum? oktNevKategoria = null) { if (AdminisztratorVagySzuperOsztalyfonok() || RendszerbeallitasMindenkiLathatjaAzOsszesDokumentumot) { return GetPedagogusIdListCommon(pedagogusIdList, oktNevKategoria: oktNevKategoria); } return GetPedagogusIdListCommon(pedagogusIdList, ClaimData.FelhasznaloId, oktNevKategoria); } public List GetOsztalyCsoportIdListByFelhasznaloId(List osztalyCsoportIdList, OktNevelesiKategoriaEnum? feladatKategoria) { if (AdminisztratorVagySzuperOsztalyfonok() || RendszerbeallitasMindenkiLathatjaAzOsszesDokumentumot) { return GetOsztalyCsoportIdListCommon(osztalyCsoportIdList, feladatKategoria); } return GetOsztalyCsoportIdListCommon(osztalyCsoportIdList, feladatKategoria, ClaimData.FelhasznaloId); } private List GetTanulokIdList(List tanuloIdList, int osztalyId) { List result = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanulokByOsztalyList(osztalyId); if (tanuloIdList == null) { return result; } var sajatTanulokListaja = result.Intersect(tanuloIdList).ToList(); if (sajatTanulokListaja.Count != 0) { return sajatTanulokListaja; } return result; } private List GetPedagogusIdListCommon(List pedagogusIdList, int? felhasznaloId = null, OktNevelesiKategoriaEnum? oktNevKategoria = null) { if (pedagogusIdList != null) { return pedagogusIdList; } var result = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetPedagogusByTanevList(felhasznaloId, oktNevKategoria); return result; } private List GetOsztalyCsoportIdListCommon(List osztalyCsoportIdList, OktNevelesiKategoriaEnum? feladatKategoria, int? felhasznaloId = null) { if (osztalyCsoportIdList != null) { return osztalyCsoportIdList; } var result = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyCsoportByTanevList(felhasznaloId, feladatKategoria); return result; } private List GetTeremIdListCommon(List teremIdList) { if (teremIdList != null) { return teremIdList; } var result = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTeremByTanevList(); return result; } #endregion public static string CreateXMLFromList(List data) { if (data != null && data.Count > 0) { string xmlStringStart = $"", xmlStringEnd = $"", xmlString = string.Empty; foreach (var d in data) xmlString += xmlStringStart + d + xmlStringEnd; return xmlString; } return null; } #region Közösen használt metódusok private void AddNemzetisegiDokumentumok(SystemSettingsHelper systemSettingsHelper) { var nemzetiDokumentumNyelvek = systemSettingsHelper.GetSystemSettingValue>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek); //Nemzetiségi törzslap if (nemzetiDokumentumNyelvek.Exists(x => x == (int)AnyanyelvEnum.horvat) || nemzetiDokumentumNyelvek.Exists(x => x == (int)AnyanyelvEnum.roman)) { AdminisztratorNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.NemzetisegiTorzslap); TanarNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.NemzetisegiTorzslap); } //Bizonyítvány pótlap - 1. osztály //if (nemzetiDokumentumNyelvek.Any()) //{ // AdminisztratorNyomtatasDokumentumIds.Add(802); //} //Bizonyítvány pótlap - 1-4. osztály if (nemzetiDokumentumNyelvek.Exists(x => x == (int)AnyanyelvEnum.nemet) || nemzetiDokumentumNyelvek.Exists(x => x == (int)AnyanyelvEnum.roman) || nemzetiDokumentumNyelvek.Exists(x => x == (int)AnyanyelvEnum.szerb)) { AdminisztratorNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.NemzetisegiBizonyitvany1_4); TanarNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.NemzetisegiBizonyitvany1_4); } //Bizonyítvány pótlap - felső tagozatos if (nemzetiDokumentumNyelvek.Exists(x => x == (int)AnyanyelvEnum.roman)) { AdminisztratorNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.NemzetisegiBizonyitvanyFelso); TanarNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.NemzetisegiBizonyitvanyFelso); } //Gimnáziumi bizonyítvány pótlap if (nemzetiDokumentumNyelvek.Exists(x => x == (int)AnyanyelvEnum.horvat) || nemzetiDokumentumNyelvek.Exists(x => x == (int)AnyanyelvEnum.nemet)) { AdminisztratorNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.NemzetisegiGimnaziumBizonyitvany); TanarNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.NemzetisegiGimnaziumBizonyitvany); } } private void AddKozossegiSzolgalatiNaplo() { if (ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.Tanar.ClaimValue)) { var tanarKozossegiSzolgalatKezelo = new TanarHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetTanarAdatok(ClaimData.FelhasznaloId).KozossegiSzolgalatKezelo; if (tanarKozossegiSzolgalatKezelo) { TanarNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.KozossegiSzolgalatiNaplo); } } } private void AddIfIsszakkepzojuttatas() { var isSzakkepzoJuttatas = new IntezmenyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetIntezmenyiAdatok().IsSzakkepzoJuttatas; if (ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.Adminisztrator.ClaimValue) && isSzakkepzoJuttatas) { AdminisztratorNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.Apaczai16AlattiESZABelepo2022_23); AdminisztratorNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.Apaczai16AlattiESZAKilepo2022_23); AdminisztratorNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.Apaczai16FelettiESZABelepo2022_23); AdminisztratorNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.Apaczai16FelettiESZAKilepo2022_23); AdminisztratorNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.ApaczaiHozzajarulasiNyilatkozat2022_23); AdminisztratorNyomtatasDokumentumIds.Add((int)DokumentumFeluletEnum.ApaczaiMentoriTamogatoNyilatkozat2022_23); } } private bool IsValidNyomtatvany(int nyomtatvanyId) { if (nyomtatvanyId == (int)DokumentumFeluletEnum.FenntartoAltalElfogadottTantargyFelosztasExcel && !ClaimData.IsActivTanev && ClaimData.SelectedTanevID != ClaimData.KovTanevID) { AdminisztratorNyomtatasDokumentumIds.Remove((int)DokumentumFeluletEnum.FenntartoAltalElfogadottTantargyFelosztasExcel); AdminisztratorNyomtatasDokumentumIds.Remove((int)DokumentumFeluletEnum.FenntartoAltalElfogadottTantargyFelosztasPDF); } if (ApplicationData.SystemType == SystemType.KK || ApplicationData.SystemType == SystemType.AZURE || ApplicationData.SystemType == SystemType.NSZFH_EMA) { AdminisztratorNyomtatasDokumentumIds.Remove((int)DokumentumFeluletEnum.ReszletesTanuloiAdatokRiport); } if (nyomtatvanyId == (int)DokumentumFeluletEnum.OsztalyokEsOsztalyokLetszamadataiRiport && ClaimData.IsSzakkepzoIntezmeny) { // Osztályok és az osztályok létszámadatai riport -> NSZFH-s környezeten nem elérhető AdminisztratorNyomtatasDokumentumIds.Remove(nyomtatvanyId); } if ((ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.Adminisztrator.ClaimValue) || RendszerbeallitasMindenkiLathatjaAzOsszesDokumentumot) && AdminisztratorNyomtatasDokumentumIds.Contains(nyomtatvanyId)) { return true; } if (ClaimData.IsFullKretaVerzio) { if (ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.SzuperOsztalyfonok.ClaimValue) && OsztalyfonokNyomtatasDokumentumIds.Contains(nyomtatvanyId)) { return true; } if (ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.Osztalyfonok.ClaimValue) && OsztalyfonokNyomtatasDokumentumIds.Contains(nyomtatvanyId)) { return true; } if (ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.CsoportVezeto.ClaimValue) && CsoportvezetoNyomtatasDokumentumIds.Contains(nyomtatvanyId)) { return true; } if (ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.Tanar.ClaimValue) && TanarNyomtatasDokumentumIds.Contains(nyomtatvanyId)) { return true; } if (ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.IsKozossegiSzolgalatKezelo.ClaimValue) && (nyomtatvanyId == (int)DokumentumFeluletEnum.KozossegiSzolgalatiNaplo)) { return true; } if (ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.SzuperOsztalyfonok.ClaimValue) && (nyomtatvanyId == (int)DokumentumFeluletEnum.KozossegiSzolgalatiNaplo)) { return true; } if (ClaimData.IsArchivIntezmeny && ClaimData.IsArchivAdminUser) { return true; } if (ClaimData.IsArchivIntezmeny && !ClaimData.IsArchivAdminUser && TanarNyomtatasDokumentumIds.Contains(nyomtatvanyId)) { return true; } } return false; } private void AddNyomtatvanyMintZipEntry(ZipOutputStream zipOutput, DataSet ds, string frxNeve, Dictionary parameters = null, string nyomtatvanyNeve = "Alap", string headerImage = null, string footerImage = null, int formatumId = 1, bool egyediLablecKellOldalszam = true, Enums.DokumentumTipusEnum? dokumentumTipus = null, bool IsAspose = false, System.Reflection.MethodInfo asposeMetodus = null, AsposeHelperOptions asposeHelperOptions = null) { using (var stream = GetMemoryStreamByName(ds, frxNeve, parameters, nyomtatvanyNeve, headerImage, footerImage, formatumId, egyediLablecKellOldalszam, dokumentumTipus, IsAspose, asposeMetodus, asposeHelperOptions)) { AddZipEntry(zipOutput, stream, nyomtatvanyNeve, formatumId); } } private void AddExcelMintZipEntry(ZipOutputStream zipOutput, MemoryStream stream, string nyomtatvanyNeve = "Alap") { AddZipEntry(zipOutput, stream, nyomtatvanyNeve, NyomtatvanyFormatumEnum.Excel.AsInt()); } private void TobbNyomtatvanyEgyDataSetbe(ref DataSet ds, DataSet mergingdDs, string excludedTables = null, string distinctTables = null) { if (ds.Tables.Count == 0) { ds = mergingdDs.Copy(); return; } var excludedTableNames = string.IsNullOrWhiteSpace(excludedTables) ? Array.Empty() : excludedTables.Split(",".ToCharArray()); foreach (DataTable table in mergingdDs.Tables) { if (!excludedTableNames.Contains(table.TableName)) { ds.Tables[table.TableName].Merge(table); var distinctTableNames = string.IsNullOrWhiteSpace(distinctTables) ? Array.Empty() : distinctTables.Split(",".ToCharArray()); if ((distinctTableNames.Length > 0) && (distinctTableNames.Contains(table.TableName))) { DataView dv = ds.Tables[table.TableName].DefaultView; ds.Tables.Remove(table.TableName); ds.Tables.Add(dv.ToTable(table.TableName, true, table.Columns.Cast().Select(x => x.ColumnName).ToArray())); } } } } private bool GetIsIskolaerdekuSzamit() { var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()); return systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Az_iskolaerdeku_tavollet_tipusu_igazolasok_beleszamitanak_a_tanulo_osszes_mulasztasaba); } private int GetMinTanoraSzam() { var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()); return (int)systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Ervenyes_tanitasi_nap_oraszam); } private bool AdminisztratorVagySzuperOsztalyfonok() { return ClaimManager.HasPackage(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue); } private string GetTagintezmenyCime(NyomtatvanyModel model) { return model.TagintezmenyCime ? model.TagintezmenyCimeDropdown : string.Empty; } #endregion public FileStreamResult LEPSzakmaiUtmutato() { FileStream fs = new FileStream(Server.MapPath("~/Resources/LEP/Lázár_Ervin_Program_-_Szakmai_útmutatóV_1.pdf"), FileMode.Open, FileAccess.Read); return new FileStreamResult(fs, Constants.ImportExport.FileFormatPdf) { FileDownloadName = "LEP_Útmutató.pdf" }; } [MvcRolePackageAuthorize(TanevEnum.AktTanev, KretaClaimPackages.Tanulo.ClaimValue, KretaClaimPackages.Gondviselo.ClaimValue)] public ActionResult TanuloiBizonyitvanyokLetoltese(BizonyitvanyDownloadModel model) { if (model.TanevId.HasValue) { try { var OutPut = new MemoryStream(); var ZipOutPut = new ZipOutputStream(OutPut); var nyomtatvanyModel = new NyomtatvanyModel { FormatumId = (int)NyomtatvanyFormatumEnum.PDF, KeltFormatumId = (int)KeltFormatumTipusEnum.Szammal, KeltDatum = DateTime.Today, BetuMeret = BetuMeretEnum.Normal, NyomtatvanyErtekelesMegjelenitesId = (int)NyomtatvanyErtekelesMegjelenitesEnum.Tablazatos, PHMegjelenitese = true, MulasztasokUjLapon = false, KiiratkozottTanulokMegjelenitese = true, isFelmentesekMegjelenitese = false, TanitasiHetekSzamaVegzos = 32, TanitasiHetekSzamaNemVegzos = 36, EvesOraszam = true, AtlagFeltuntetes = false, TagintezmenyCime = false, ElmeletGyakorlatKulon = false, TanuloZaradekai = false, KozossegiSzolgalat = false, CimzettId = (int)ErtesitoCimzettjeEnum.GondviseloReszere, AltantargyBeszamitasa = true, AlapszintuNyomtatvanyokKulonDokumentumba = true, }; var (tanuloId, osztalyai, csoportjai) = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanuloElozoEvesTanuloEsOsztalyCsoportjai(ClaimData.FelhasznaloId, model.TanevId.Value, new List { (int)OktNevelesiKategoriaEnum.Kollegium }); if (!tanuloId.HasValue) { throw NyomtatvanyokLogic.NyomtatvanyError(NyomtatvanyokResource.TanuloNemTalahatoAKivalasztottElozoEvben, HttpStatusCode.BadRequest); } nyomtatvanyModel.OsztalyIdList = osztalyai; nyomtatvanyModel.TanuloIdList = new List { tanuloId.Value }; var origSelectedTanevId = ClaimData.SelectedTanevID; ClaimData.SelectedTanevID = model.TanevId; var alulirottak = new ComboBoxHelperApiController().GetAlulirottMegnevezeseEnumListItems(false, (int)NyomtatvanyNyelvEnum.Magyar); var alulirott = alulirottak.FirstOrDefault(x => x.Selected) ?? alulirottak.Single(x => x.Text.Contains(NyomtatvanyokResource.IntezmenyiAdatokbol)); nyomtatvanyModel.AlulirottMegnevezesId = int.Parse(alulirott.Value); var dokumentResult = (FileStreamResult)BizonyitvanyPotlap(nyomtatvanyModel, true, (int)NyomtatvanyNyelvEnum.Magyar, Enums.DokumentumTipusEnum.BizonyitvanyPotlapAz1Evfolyamon, true, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)BizonyitvanyPotlap(nyomtatvanyModel, true, (int)NyomtatvanyNyelvEnum.Magyar, Enums.DokumentumTipusEnum.BizonyitvanyPotlapAz1Evfolyamon, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)BizonyitvanyPotlap(nyomtatvanyModel, false, (int)NyomtatvanyNyelvEnum.Magyar, Enums.DokumentumTipusEnum.BizonyitvanyPotlapA2Evfolyamtol, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)BizonyitvanyPotlap(nyomtatvanyModel, true, (int)NyomtatvanyNyelvEnum.Nemet, Enums.DokumentumTipusEnum.BizonyitvanyPotlapAz1EvfolyamonNemet, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)BizonyitvanyPotlap(nyomtatvanyModel, false, (int)NyomtatvanyNyelvEnum.Nemet, Enums.DokumentumTipusEnum.BizonyitvanyPotlapA2EvfolyamtolNemet, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)BizonyitvanyPotlap(nyomtatvanyModel, true, (int)NyomtatvanyNyelvEnum.Angol, Enums.DokumentumTipusEnum.BizonyitvanyPotlapAz1EvfolyamonAngol, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)BizonyitvanyPotlap(nyomtatvanyModel, false, (int)NyomtatvanyNyelvEnum.Angol, Enums.DokumentumTipusEnum.BizonyitvanyPotlapA2EvfolyamtolAngol, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)Ertesito(nyomtatvanyModel, NyomtatvanyEnum.EvvegiErtesitoSzoveges, Enums.DokumentumTipusEnum.EvVegiSzovegesErtesito1tol4osztaly, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)Ertesito(nyomtatvanyModel, NyomtatvanyEnum.EvvegiErtesito, Enums.DokumentumTipusEnum.EvVegiErtesito, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)Ertesito(nyomtatvanyModel, NyomtatvanyEnum.EvvegiErtesitoFuzet, Enums.DokumentumTipusEnum.EvVegiSzovegesErtesitoFuzet1tol4osztaly, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)Ertesito(nyomtatvanyModel, NyomtatvanyEnum.EvvegiErtesitoFuzetNyomtatvany, Enums.DokumentumTipusEnum.EvVegiSzovegesErtesitoFuzetNyomtatvanyra, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)Ertesito(nyomtatvanyModel, NyomtatvanyEnum.EvvegiErtesitoA5Ellenorzobe, Enums.DokumentumTipusEnum.EvVegiErtesitoEllenorzobenElhelyezhetoA5Meretben, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); dokumentResult = (FileStreamResult)Ertesito(nyomtatvanyModel, NyomtatvanyEnum.EvvegiErtesitoEllenorzobe, Enums.DokumentumTipusEnum.EvVegiErtesitoEllenorzobenElhelyezheto, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); if (csoportjai.Count > 0) { nyomtatvanyModel.OsztalyIdList = null; nyomtatvanyModel.CsoportIdList = csoportjai; dokumentResult = (FileStreamResult)Ertesito(nyomtatvanyModel, NyomtatvanyEnum.EvVegiErtesitoMuveszOktatasban, Enums.DokumentumTipusEnum.EviErtesitoMuveszoktatasban, true, egyTanuloTobbNyomtatvanyaEgyben: true); AddZipEntry(ZipOutPut, dokumentResult.FileStream, dokumentResult.FileDownloadName, null); } ClaimData.SelectedTanevID = origSelectedTanevId; ZipOutPut.Finish(); OutPut.Position = 0; var zipnevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = model.TanevId }; return new FileStreamResult(OutPut, Constants.ImportExport.ContentType) { FileDownloadName = $"{CommonExtensions.NevGeneralas("TanuloiBizonyitvanyok", zipnevmodel)}.{Constants.ImportExport.FileFormatZip}" }; } catch (Exception ex) { if (ex is StatusError) { throw; } throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } throw NyomtatvanyokLogic.NyomtatvanyError(NyomtatvanyokResource.TanevKivalasztasaKotelezo); } } public static class XmlParseExtension { public static string TryGetElementValue(this XElement parentEl, string elementName, string defaultValue = null) { var foundEl = parentEl.Attribute(elementName); if (foundEl != null) return foundEl.Value; return defaultValue; } } }