using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Web.Mvc; 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.Nyomtatvanyok.Excel; using Kreta.Core; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Resources; using Kreta.Web.Helpers; using Kreta.Web.Security; namespace Kreta.Web.Areas.Nyomtatvanyok.Controllers { public partial class NyomtatvanyokController : BaseNyomtatvanyokController { public ActionResult AltalanosTanuloiGeneralas(NyomtatvanyModel model, string frxNyomtatvanyNeve, DokumentumKategoriaEnum dokumentumKategoria, Enums.DokumentumTipusEnum? dokumentumTipus, System.Reflection.MethodInfo metodus, int osztalyIdParameterOrder, IDictionary dataSetParameterek, Dictionary frxParameterek, string nyomtatvanyNeve = null, string excludedTables = null, string distinctTables = null, bool isCsoport = false, string tablakFilterByTanuloId = "", string tanuloIdColumnName = "", BaseNyomtatvanyExcelWithDataSet formazottExcelGenerator = null, string emptyDocumentTable = null, bool egyediLablecKellOldalszam = true, bool IsAspose = false, System.Reflection.MethodInfo asposeMetodus = null, AsposeHelperOptions asposeHelperOptions = null, bool egyTanuloTobbNyomtatvanyaEgyben = false) { if ((model.FormatumId == NyomtatvanyFormatumEnum.Excel.AsInt()) && (formazottExcelGenerator == null)) { throw new ArgumentNullException(nameof(formazottExcelGenerator)); } if (string.IsNullOrWhiteSpace(nyomtatvanyNeve)) { nyomtatvanyNeve = frxNyomtatvanyNeve; } var OutPut = new MemoryStream(); var ZipOutPut = new ZipOutputStream(OutPut); var buffer = new byte[Constants.General.BufferSize]; var nevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value }; DataSet mergedDs = new DataSet(); var needMergedData = false; var atLeastOneData = false; var isOsztalySzintuGeneralas = // ha nincs kijelölve tanuló (model.TanuloIdList == null) // és (egy osztálycsoport egyben && (((isCsoport ? model.CsoportIdList : model.OsztalyIdList).Count == 1 && !model.AlapszintuNyomtatvanyokKulonDokumentumba) // vagy egynél több osztály külön) || (((isCsoport ? model.CsoportIdList : model.OsztalyIdList).Count > 1 && model.AlapszintuNyomtatvanyokKulonDokumentumba))); var foszamKulcsSzavak = (kulcsSzavak: (NameValueCollection)null, foszamDefinicio: (BusinessLogic.Helpers.Nyomtatvanyok.Iktatas.FoszamDefinicioValueModel)null); var osztalyCsoportLista = (isCsoport) ? GetCsoportIdList(model.CsoportIdList, null) : GetOsztalyIdList(model.OsztalyIdList, null); for (int db = 0; db < osztalyCsoportLista.Count; db++) { var osztalyId = osztalyCsoportLista[db]; if (isOsztalySzintuGeneralas) { if (isCsoport) { nevmodel.CsoportId = osztalyId; } else { nevmodel.OsztalyID = osztalyId; } } DataSet osztalyDS; var pis = metodus.GetParameters(); var parObjs = new object[pis.Length]; for (int i = 0; i < pis.Length; i++) { if (i == osztalyIdParameterOrder) { parObjs[i] = osztalyId; } else { parObjs[i] = (dataSetParameterek.Keys.Contains(pis[i].Name)) ? dataSetParameterek[pis[i].Name] : Type.Missing; } } osztalyDS = metodus.Invoke(new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()), parObjs) as DataSet; var tanuloIdList = (isOsztalySzintuGeneralas || (osztalyCsoportLista.Count > 1 && !model.AlapszintuNyomtatvanyokKulonDokumentumba && model.TanuloIdList == null)) ? new int[] { -1 }.ToList() : GetTanulokIdList(model.TanuloIdList, osztalyId); if (dokumentumTipus == Enums.DokumentumTipusEnum.TanuloiJogviszonyIgazoloLap_ && model.TanuloIdList != null) { tanuloIdList = model.TanuloIdList.Distinct().ToList(); } if (model.MustGondviselo.HasValue && model.MustGondviselo.Value && osztalyCsoportLista.Count == 1 && model.TanuloIdList != null) { var tanuloIdListTemp = tanuloIdList.ToList(); if (tanuloIdListTemp.Count == 1 && tanuloIdList.First() == -1) { tanuloIdListTemp = GetTanulokIdList(new List(), osztalyId); } tanuloIdListTemp = CheckTanuloHasGondviselo(tanuloIdListTemp); if (tanuloIdListTemp.Count == 0) { throw new Exception(NyomtatvanyokResource.TanulonakNincsRogzitveGondviselo); } } if (model.MustGondviseloIsTorvenyes.HasValue && model.MustGondviseloIsTorvenyes.Value && osztalyCsoportLista.Count == 1 && model.TanuloIdList != null) { var tanuloIdListTemp = tanuloIdList.ToList(); if (tanuloIdListTemp.Count == 1 && tanuloIdListTemp.First() == -1) { tanuloIdListTemp = GetTanulokIdList(new List(), osztalyId); } tanuloIdListTemp = CheckTanuloGondviseloIsTorvenyes(tanuloIdListTemp); if (tanuloIdListTemp.Count == 0) { throw new ApplicationException(TanuloResource.ATanulonakNincsRogzitettTorvenyesKepviseloje); } } if (osztalyDS.Tables.Contains("Orarend")) { if (osztalyDS.Tables["Orarend"].Columns.Contains("Szombat")) { var szombatColIdx = osztalyDS.Tables["Orarend"].Columns.IndexOf("Szombat"); var columnHasData = osztalyDS.Tables["Orarend"].AsEnumerable().FirstOrDefault(row => !(row[szombatColIdx] is DBNull)); if (!frxParameterek.Keys.Contains("SzombatiNap")) { if (columnHasData == null) { frxParameterek.Add("SzombatiNap", false); } else { frxParameterek.Add("SzombatiNap", true); } } else { var val = (bool)frxParameterek["SzombatiNap"]; val |= (columnHasData != null); frxParameterek["SzombatiNap"] = val; } } } foreach (var tanuloId in tanuloIdList) { DataSet ds; if (tanuloId.IsEntityId()) { nevmodel.TanuloID = tanuloId; if (model.MustGondviseloIsTorvenyes.HasValue && model.MustGondviseloIsTorvenyes.Value && !CheckTanuloGondviseloIsTorvenyes(tanuloId)) { continue; } // Tanuló bizonyítványainak és értesítőinek lekérése egyszerre miatt kell, mert a zip-be annyi egyforma nevű fájl kerül, ahány osztályba/csoportba jár. Ráadásul magában a csoport dokumentumban sem szerepel a csoport megnevezése. (KRETA2-6697) if (egyTanuloTobbNyomtatvanyaEgyben) { if (!isCsoport) { nevmodel.OsztalyID = osztalyId; } else { nevmodel.CsoportId = osztalyId; } } ds = new DataSet(); if (model.MustGondviselo.HasValue && model.MustGondviselo.Value && osztalyDS.Tables.Contains("GondviseloAdatok")) { var tabla = osztalyDS.Tables["GondviseloAdatok"]; DataView dv = tabla.DefaultView; dv.RowFilter = tanuloIdColumnName + "=" + tanuloId; if (dv.Count == 0) { continue; } } foreach (DataTable tabla in osztalyDS.Tables) { if (tablakFilterByTanuloId.Split(",".ToCharArray()).Contains(tabla.TableName)) { DataView dv = tabla.DefaultView; dv.RowFilter = tanuloIdColumnName + "=" + tanuloId; ds.Tables.Add(dv.ToTable(tabla.TableName)); } else { ds.Tables.Add(tabla.Copy()); } } } else { ds = osztalyDS; } if (! // nem kell merge ( // külön dokumentumba kerüljön minden (model.AlapszintuNyomtatvanyokKulonDokumentumba) // egy osztálycsoport kell egyben (osztály szintű) || (osztalyCsoportLista.Count == 1 && model.TanuloIdList == null) // egy tanuló egyben (tanuló szintű) || (osztalyCsoportLista.Count == 1 && model.TanuloIdList.Count == 1) )) { if (model.FormatumId == NyomtatvanyFormatumEnum.Excel.AsInt()) { formazottExcelGenerator.CreateSheet(ds, osztalyId, db + 1); } TobbNyomtatvanyEgyDataSetbe(ref mergedDs, ds, excludedTables, distinctTables); needMergedData = true; } else { if ((tanuloIdList.Count > 1) || (osztalyCsoportLista.Count > 1)) { if ((!string.IsNullOrWhiteSpace(emptyDocumentTable)) && (ds.Tables[emptyDocumentTable].Rows.Count == 0)) { continue; } atLeastOneData = true; if (model.Iktatas) { foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus.Value, ds, (!tanuloId.IsEntityId()) ? ((isCsoport) ? DokumentumElemiSzintEnum.Csoport : DokumentumElemiSzintEnum.Osztaly) : DokumentumElemiSzintEnum.Tanulo); if (model.FormatumId != NyomtatvanyFormatumEnum.Excel.AsInt()) { Nyomtatas(ds, frxNyomtatvanyNeve, frxParameterek, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel, true), formatumId: model.FormatumId, osztalyId: osztalyId, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus.Value, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio, egyediLablecKellOldalszam: egyediLablecKellOldalszam, IsAspose: IsAspose, asposeMetodus: asposeMetodus, asposeHelperOptions: asposeHelperOptions); } else { var stream = formazottExcelGenerator.ExcelNyomtatas(ds, osztalyId); ExcelNyomtatas(stream, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel, true), osztalyId: osztalyId, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus.Value, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio); } } else { if (model.FormatumId != NyomtatvanyFormatumEnum.Excel.AsInt()) { AddNyomtatvanyMintZipEntry(ZipOutPut, ds, frxNyomtatvanyNeve, frxParameterek, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel), formatumId: model.FormatumId, egyediLablecKellOldalszam: egyediLablecKellOldalszam, dokumentumTipus: dokumentumTipus, IsAspose: IsAspose, asposeMetodus: asposeMetodus, asposeHelperOptions: asposeHelperOptions); } else { var stream = formazottExcelGenerator.ExcelNyomtatas(ds, osztalyId); AddExcelMintZipEntry(ZipOutPut, stream, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel)); } } } else { if ((!string.IsNullOrWhiteSpace(emptyDocumentTable)) && (ds.Tables[emptyDocumentTable].Rows.Count == 0)) { throw new ApplicationException(NyomtatvanyokResource.UresDokumentum); } if (model.Iktatas) { foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus.Value, ds, !tanuloId.IsEntityId() ? ((isCsoport) ? DokumentumElemiSzintEnum.Csoport : DokumentumElemiSzintEnum.Osztaly) : DokumentumElemiSzintEnum.Tanulo); atLeastOneData = true; } ActionResult nyomtatvany; if (model.FormatumId != NyomtatvanyFormatumEnum.Excel.AsInt()) { nyomtatvany = Nyomtatas(ds, frxNyomtatvanyNeve, frxParameterek, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel, true), formatumId: model.FormatumId, osztalyId: osztalyId, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio, egyediLablecKellOldalszam: egyediLablecKellOldalszam, IsAspose: IsAspose, asposeMetodus: asposeMetodus, asposeHelperOptions: asposeHelperOptions); } else { var stream = formazottExcelGenerator.ExcelNyomtatas(ds, osztalyId); nyomtatvany = ExcelNyomtatas(stream, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel, true), osztalyId: osztalyId, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio); } if (!model.Iktatas) { return nyomtatvany; } } } } } ZipOutPut.Finish(); OutPut.Position = 0; if (!model.Iktatas) { if (!model.AlapszintuNyomtatvanyokKulonDokumentumba) { if ((!string.IsNullOrWhiteSpace(emptyDocumentTable)) && !mergedDs.IsEmpty() && (mergedDs.Tables[emptyDocumentTable].Rows.Count == 0)) { throw new ApplicationException(NyomtatvanyokResource.UresDokumentum); } var postFix = ""; if (model.TanuloIdList == null) { nevmodel.TanuloID = null; if (osztalyCsoportLista.Count > 1) { if (isCsoport) { nevmodel.CsoportId = null; postFix = "_Csoportok"; } else { nevmodel.OsztalyID = null; postFix = "_Osztalyok"; } } } else { nevmodel.TanuloID = null; nevmodel.CsoportId = null; nevmodel.OsztalyID = null; postFix = "_Tanulok"; } if (model.FormatumId != NyomtatvanyFormatumEnum.Excel.AsInt()) { return Nyomtatas(mergedDs, frxNyomtatvanyNeve, frxParameterek, CommonExtensions.NevGeneralas(nyomtatvanyNeve + postFix, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve + postFix, nevmodel, true), formatumId: model.FormatumId, osztalyId: 0, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio, egyediLablecKellOldalszam: egyediLablecKellOldalszam, IsAspose: IsAspose, asposeMetodus: asposeMetodus, asposeHelperOptions: asposeHelperOptions); } else { var stream = formazottExcelGenerator.ExcelNyomtatas(); return ExcelNyomtatas(stream, CommonExtensions.NevGeneralas(nyomtatvanyNeve + postFix, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve + postFix, nevmodel, true), osztalyId: 0, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio); } } else { if (!atLeastOneData) { throw new ApplicationException(NyomtatvanyokResource.UresDokumentum); } var postFix = ""; var zipnevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value }; if (osztalyCsoportLista.Count > 1) { postFix = (isOsztalySzintuGeneralas) ? ((isCsoport) ? "_Csoportok" : "_Osztalyok") : "_Tanulok"; } else { zipnevmodel.OsztalyCsoportId = osztalyCsoportLista[0]; } return new FileStreamResult(OutPut, Constants.ImportExport.ContentType) { FileDownloadName = $"{CommonExtensions.NevGeneralas(nyomtatvanyNeve + postFix, zipnevmodel)}.{Constants.ImportExport.FileFormatZip}" }; } } if ((needMergedData && (mergedDs.Tables.Count == 0)) || (!needMergedData && !atLeastOneData)) { throw new ApplicationException(NyomtatvanyokResource.UresDokumentum); } if (mergedDs.Tables.Count > 0) { if ((!string.IsNullOrWhiteSpace(emptyDocumentTable)) && (mergedDs.Tables[emptyDocumentTable].Rows.Count == 0)) { throw new ApplicationException(NyomtatvanyokResource.UresDokumentum); } var postFix = ""; if (model.TanuloIdList == null) { nevmodel.TanuloID = null; if (isCsoport) { nevmodel.CsoportId = null; postFix = "_Csoportok"; } else { nevmodel.OsztalyID = null; postFix = "_Osztalyok"; } } else { nevmodel.TanuloID = null; nevmodel.CsoportId = null; nevmodel.OsztalyID = null; postFix = "_Tanulok"; } foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus.Value, mergedDs, DokumentumElemiSzintEnum.Intezmeny); if (model.FormatumId != NyomtatvanyFormatumEnum.Excel.AsInt()) { Nyomtatas(mergedDs, frxNyomtatvanyNeve, frxParameterek, CommonExtensions.NevGeneralas(nyomtatvanyNeve + postFix, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve + postFix, nevmodel, true), formatumId: model.FormatumId, osztalyId: 0, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio, egyediLablecKellOldalszam: egyediLablecKellOldalszam, IsAspose: IsAspose, asposeMetodus: asposeMetodus, asposeHelperOptions: asposeHelperOptions); } else { var stream = formazottExcelGenerator.ExcelNyomtatas(); return ExcelNyomtatas(stream, CommonExtensions.NevGeneralas(nyomtatvanyNeve + postFix, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve + postFix, nevmodel, true), osztalyId: 0, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus.Value, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio); } } return RedirectToAction("Index", Constants.Controllers.IktatottDokumentumok, new { area = Constants.Areas.Nyomtatvanyok }); } private ActionResult AltalanosPedagogusGeneralas(NyomtatvanyModel model, string frxNyomtatvanyNeve, DokumentumKategoriaEnum dokumentumKategoria, Enums.DokumentumTipusEnum? dokumentumTipus, System.Reflection.MethodInfo metodus, int pedagogusIdParameterOrder, IDictionary dataSetParameterek, Dictionary frxParameterek, string nyomtatvanyNeve = null, string excludedTables = null, string distinctTables = null, string emptyDocumentTable = null, bool egyediLablecKellOldalszam = true, Bitmap qrCode = null) { if (string.IsNullOrWhiteSpace(nyomtatvanyNeve)) { nyomtatvanyNeve = frxNyomtatvanyNeve; } var OutPut = new MemoryStream(); var ZipOutPut = new ZipOutputStream(OutPut); var buffer = new byte[Constants.General.BufferSize]; ActionResult egyediPedagogusResult = new FileStreamResult(OutPut, Constants.ImportExport.ContentType); DataSet mergedDs = new DataSet(); var pedagogusIdList = GetPedagogusIdListByFelhasznaloId(model.PedagogusIdList); var foszamKulcsSzavak = (kulcsSzavak: (NameValueCollection)null, foszamDefinicio: (BusinessLogic.Helpers.Nyomtatvanyok.Iktatas.FoszamDefinicioValueModel)null); foreach (var pedagogusId in pedagogusIdList) { var pis = metodus.GetParameters(); var parObjs = new object[pis.Length]; for (int i = 0; i < pis.Length; i++) { if (i == pedagogusIdParameterOrder) { parObjs[i] = pedagogusId; } else { parObjs[i] = (dataSetParameterek.Keys.Contains(pis[i].Name)) ? dataSetParameterek[pis[i].Name] : Type.Missing; } } var ds = metodus.Invoke(new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()), parObjs) as DataSet; if (ds.Tables.Count == 0 && pedagogusIdList.Count == 1) { throw new ApplicationException(NyomtatvanyokResource.UresDokumentum); } if (ds.Tables.Count == 0) { continue; } foreach (var par in metodus.GetParameters().Where(p => p.IsOut).ToList()) { frxParameterek[par.Name] = parObjs[par.Position]; } var nevmodel = new NyomtatvanyNevGeneralasModel() { TanarID = pedagogusId, TanevID = ClaimData.SelectedTanevID.Value }; if (pedagogusIdList.Count > 1) { if (!model.AlapszintuNyomtatvanyokKulonDokumentumba) { TobbNyomtatvanyEgyDataSetbe(ref mergedDs, ds, excludedTables, distinctTables); } else { if ((!string.IsNullOrWhiteSpace(emptyDocumentTable)) && (ds.Tables[emptyDocumentTable].Rows.Count == 0)) { continue; } if (model.Iktatas) { foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus.Value, ds, DokumentumElemiSzintEnum.Tanulo); egyediPedagogusResult = Nyomtatas(ds, frxNyomtatvanyNeve, frxParameterek, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel, true), formatumId: model.FormatumId, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus.Value, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio, egyediLablecKellOldalszam: egyediLablecKellOldalszam); } else { AddNyomtatvanyMintZipEntry(ZipOutPut, ds, frxNyomtatvanyNeve, frxParameterek, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel), formatumId: model.FormatumId, egyediLablecKellOldalszam: egyediLablecKellOldalszam, dokumentumTipus: dokumentumTipus); } } } else { if ((!string.IsNullOrWhiteSpace(emptyDocumentTable)) && (ds.Tables[emptyDocumentTable].Rows.Count == 0)) { throw new ApplicationException(NyomtatvanyokResource.UresDokumentum); } if (model.Iktatas) { foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus.Value, ds, DokumentumElemiSzintEnum.Tanulo); } return Nyomtatas(ds, frxNyomtatvanyNeve, frxParameterek, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel, true), formatumId: model.FormatumId, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio, egyediLablecKellOldalszam: egyediLablecKellOldalszam, qrCode: qrCode); } } ZipOutPut.Finish(); OutPut.Position = 0; if (!model.AlapszintuNyomtatvanyokKulonDokumentumba) { if ((!string.IsNullOrWhiteSpace(emptyDocumentTable)) && (mergedDs.Tables[emptyDocumentTable].Rows.Count == 0)) { throw new ApplicationException(NyomtatvanyokResource.UresDokumentum); } if (model.Iktatas) { foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus.Value, mergedDs, DokumentumElemiSzintEnum.Intezmeny); } var nevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value }; return Nyomtatas(mergedDs, frxNyomtatvanyNeve, frxParameterek, CommonExtensions.NevGeneralas(nyomtatvanyNeve + "_Tanarok", nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve + "_Tanarok", nevmodel, true), formatumId: model.FormatumId, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio, egyediLablecKellOldalszam: egyediLablecKellOldalszam); } else { if (model.Iktatas) { return egyediPedagogusResult; } else { var zipnevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value }; return new FileStreamResult(OutPut, Constants.ImportExport.ContentType) { FileDownloadName = $"{CommonExtensions.NevGeneralas(nyomtatvanyNeve, zipnevmodel)}.{Constants.ImportExport.FileFormatZip}" }; } } } private ActionResult AltalanosOsztalyFormazottXlsGeneralas(NyomtatvanyModel model, BaseNyomtatvanyExcel formazottExcelGenerator, DokumentumKategoriaEnum dokumentumKategoria, Enums.DokumentumTipusEnum? dokumentumTipus, IDictionary dataSetParameterek, string osztalyIdParameterName, string nyomtatvanyNeve, string excludedTables = null, string distinctTables = null) { var OutPut = new MemoryStream(); var ZipOutPut = new ZipOutputStream(OutPut); OktNevelesiKategoriaEnum? oktNevKategoria = (model.OktNevelesiKategoriaId.IsEntityId()) ? (OktNevelesiKategoriaEnum?)model.OktNevelesiKategoriaId : (OktNevelesiKategoriaEnum?)null; var osztalyIdList = GetOsztalyIdList(model.OsztalyIdList, oktNevKategoria); var foszamKulcsSzavak = (kulcsSzavak: (NameValueCollection)null, foszamDefinicio: (BusinessLogic.Helpers.Nyomtatvanyok.Iktatas.FoszamDefinicioValueModel)null); var nevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value }; MemoryStream excelContent; DataSet mergedDs = new DataSet(); for (int i = 0; i < osztalyIdList.Count; i++) { var osztalyId = osztalyIdList[i]; var parameters = dataSetParameterek.ToDictionary(k => k.Key, k => (k.Value ?? "").ToString()); parameters.Add(osztalyIdParameterName, osztalyId.ToString()); if (osztalyIdList.Count > 1) { if (!model.AlapszintuNyomtatvanyokKulonDokumentumba) { formazottExcelGenerator.CreateSheet(parameters, i + 1); if (model.Iktatas) { var ds = formazottExcelGenerator.GetSheetDataSet(); TobbNyomtatvanyEgyDataSetbe(ref mergedDs, ds, excludedTables, distinctTables); } } else { nevmodel.OsztalyID = osztalyId; excelContent = formazottExcelGenerator.ExcelNyomtatas(parameters); if (!model.Iktatas) { AddExcelMintZipEntry(ZipOutPut, excelContent, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel)); } else { var ds = formazottExcelGenerator.GetSheetDataSet(); foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus.Value, ds, Enums.DokumentumElemiSzintEnum.Osztaly); ExcelNyomtatas(excelContent, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel, true), osztalyId, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio); } } } else { nevmodel.OsztalyID = osztalyId; excelContent = formazottExcelGenerator.ExcelNyomtatas(parameters); var ds = formazottExcelGenerator.GetSheetDataSet(); if (model.Iktatas) { foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus.Value, ds, Enums.DokumentumElemiSzintEnum.Osztaly); } var ret = ExcelNyomtatas(excelContent, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyNeve, nevmodel, true), osztalyId, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio); formazottExcelGenerator.Dispose(); return ret; } } if (model.Iktatas) { if (!model.AlapszintuNyomtatvanyokKulonDokumentumba) { excelContent = formazottExcelGenerator.ExcelNyomtatas(); formazottExcelGenerator.Dispose(); foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus.Value, mergedDs, Enums.DokumentumElemiSzintEnum.Intezmeny); ExcelNyomtatas(excelContent, CommonExtensions.NevGeneralas("Tobb" + nyomtatvanyNeve, nevmodel), model.Iktatas, CommonExtensions.NevGeneralas("Tobb" + nyomtatvanyNeve, nevmodel, true), 0, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio); } return RedirectToAction("Index", Constants.Controllers.IktatottDokumentumok, new { area = Constants.Areas.Nyomtatvanyok }); } if (!model.AlapszintuNyomtatvanyokKulonDokumentumba) { excelContent = formazottExcelGenerator.ExcelNyomtatas(); formazottExcelGenerator.Dispose(); return ExcelNyomtatas(excelContent, CommonExtensions.NevGeneralas("Tobb" + nyomtatvanyNeve, nevmodel), false, CommonExtensions.NevGeneralas("Tobb" + nyomtatvanyNeve, nevmodel, true), 0, dokumentumKategoria: dokumentumKategoria, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio); } else { ZipOutPut.Finish(); OutPut.Position = 0; var zipnevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value }; return new FileStreamResult(OutPut, Constants.ImportExport.ContentType) { FileDownloadName = $"{CommonExtensions.NevGeneralas(nyomtatvanyNeve, zipnevmodel)}.{Constants.ImportExport.FileFormatZip}" }; } } private List CheckTanuloHasGondviselo(List tanuloIds) { if (tanuloIds == null || tanuloIds.Count == 0) { return tanuloIds; } var validTanuloIdList = new List(); var invalidTanuloIdList = new List(); var tanulohelper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()); foreach (var tanuloId in tanuloIds) { if (!tanulohelper.ExistsGondviselo(tanuloId)) { invalidTanuloIdList.Add(tanuloId); } else { validTanuloIdList.Add(tanuloId); } } //NOTE: Ha többet generálnak és van köztük olyan akinek van gondviselője, akkor invalidok kihagyása if (validTanuloIdList.Any()) { tanuloIds = validTanuloIdList; } return tanuloIds; } private List CheckTanuloGondviseloIsTorvenyes(List tanuloIds) { if (tanuloIds == null) { return tanuloIds; } var resultTanuloIds = tanuloIds.ToList(); if (tanuloIds.Count == 1 && !CheckTanuloGondviseloIsTorvenyes(tanuloIds.First())) { resultTanuloIds.Remove(tanuloIds.First()); return resultTanuloIds; } foreach (var tanuloId in tanuloIds) { if (!CheckTanuloGondviseloIsTorvenyes(tanuloId)) { resultTanuloIds.Remove(tanuloId); } } return resultTanuloIds; } private bool CheckTanuloGondviseloIsTorvenyes(int tanuloId) { var gondviseloHelper = new GondviseloHelper(ConnectionTypeExtensions.GetSessionConnectionType()); return gondviseloHelper.HasTanuloTorvenyesGondviselo(tanuloId); } private List CheckTanuloIsTankotelezettAllapot(List tanuloIds, bool tankotelezettseg) { if (tanuloIds == null) { return tanuloIds; } var resultTanuloIds = tanuloIds.ToList(); var tanulohelper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()); foreach (var tanuloId in tanuloIds) { if (tanulohelper.IsTankotelezettsegetTeljesito(tanuloId) != tankotelezettseg) { resultTanuloIds.Remove(tanuloId); } } return resultTanuloIds; } } }