using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Web.Mvc; using ICSharpCode.SharpZipLib.Zip; using Kreta.BusinessLogic.Classes; 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.Framework; using Kreta.Resources; using Kreta.Web.Areas.Nyomtatvanyok.Logic; using Kreta.Web.Classes; using Kreta.Web.Helpers; using Kreta.Web.Security; namespace Kreta.Web.Areas.Nyomtatvanyok.Controllers { public partial class NyomtatvanyokController : BaseNyomtatvanyokController { private ActionResult JelenletiIv(NyomtatvanyModel model, NyomtatvanyEnum nye) { var OutPut = new MemoryStream(); var ZipOutPut = new ZipOutputStream(OutPut); try { var buffer = new byte[Constants.General.BufferSize]; ActionResult egyediJelenletiIv = new FileStreamResult(OutPut, Constants.ImportExport.ContentType); var parameters = new Dictionary { {"Kelt", NyomtatvanyokLogic.KeltSzoveg(model.KeltDatum, model.KeltFormatumId)}, {"PHMegjelenitese", model.PHMegjelenitese } }; foreach (var foglalkozasId in GetFoglalkozasIdList(model.FoglalkozasIdList)) { DataSet ds = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanuloJelenletiIvAlkalmankent(foglalkozasId, model.KeltDatum); var nevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value, FoglalkozasID = foglalkozasId }; if (GetFoglalkozasIdList(model.FoglalkozasIdList).Count > 1) { using (var stream = GetMemoryStreamByName(ds, nye.ToString(), parameters, CommonExtensions.NevGeneralas(nye.ToString(), nevmodel), formatumId: model.FormatumId)) { AddZipEntry(ZipOutPut, stream, $"{CommonExtensions.NevGeneralas(nye.ToString(), nevmodel)}", model.FormatumId); } } else { egyediJelenletiIv = Nyomtatas(ds, nye.ToString(), parameters, CommonExtensions.NevGeneralas(nye.ToString(), nevmodel), formatumId: model.FormatumId); } } ZipOutPut.Finish(); OutPut.Position = 0; var zipnevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value }; if (GetFoglalkozasIdList(model.FoglalkozasIdList).Count > 1) { return new FileStreamResult(OutPut, Constants.ImportExport.ContentType) { FileDownloadName = $"{CommonExtensions.NevGeneralas(nye.ToString(), zipnevmodel)}.{Constants.ImportExport.FileFormatZip}" }; } return egyediJelenletiIv; } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } [HttpPost] public ActionResult JelenletiIvAlkalmankent(NyomtatvanyModel model) { /// TODO: nincs ilyen dokumentum típus return JelenletiIv(model, NyomtatvanyEnum.JelenletiIvAlkalmankent); } [HttpPost] public ActionResult JelenletiIv15Alkalom(NyomtatvanyModel model) { /// TODO: nincs ilyen dokumentum típus return JelenletiIv(model, NyomtatvanyEnum.JelenletiIv15Alkalmas); } [HttpPost] public ActionResult AlairoIv15Alkalom(NyomtatvanyModel model) { /// TODO: nincs ilyen dokumentum típus return JelenletiIv(model, NyomtatvanyEnum.AlairoIv15Alkalom); } public ActionResult TanuloiKapcsolatKereses(NyomtatvanyModel model) { var OutPut = new MemoryStream(); var ZipOutPut = new ZipOutputStream(OutPut); try { var buffer = new byte[Constants.General.BufferSize]; ActionResult fileStremResult = new FileStreamResult(OutPut, Constants.ImportExport.ContentType); var tanuloiKapcsolatKeresesAdatok = NyomtatvanyokLogic.TanuloiKapcsolatKeresesAdatok(model.KeltDatum); var nemJelenlevoTanulok = new List(); var tanulok = NyomtatvanyokLogic.GetTanulokKapcsolatKereso(model, tanuloiKapcsolatKeresesAdatok); var jelenlevoTanulok = tanulok.Count(x => x.tanuloKapcsolatKeresoAdatok.Tables[0].Rows.Count > 0); if (jelenlevoTanulok > 1) { foreach (var tanulo in tanulok.Where(x => x.tanuloKapcsolatKeresoAdatok.Tables[0].Rows.Count > 0)) { var stream = ExcelNyomtatasByMemoryStream(tanulo.tanuloKapcsolatKeresoAdatok, false); var fajlNev = RemoveSpecialCharacters("Tanulói kapcsolat " + DateTime.Now.ToString("yyyyMMddHHmm") + " " + tanulo.tanuloNev); AddExcelMintZipEntry(ZipOutPut, stream, fajlNev); } } else if (jelenlevoTanulok == 1) { var tanulo = tanulok.FirstOrDefault(x => x.tanuloKapcsolatKeresoAdatok.Tables[0].Rows.Count > 0); var fajlNev = RemoveSpecialCharacters("Tanulói kapcsolat " + DateTime.Now.ToString("yyyyMMddHHmm") + " " + tanulo.tanuloNev); fileStremResult = ExcelNyomtatas(tanulo.tanuloKapcsolatKeresoAdatok, fajlNev); } else { throw new Exception(NyomtatvanyokResource.JelzettNaponTanulonakNemVoltJelen); } ZipOutPut.Finish(); OutPut.Position = 0; if (jelenlevoTanulok > 1) { fileStremResult = new FileStreamResult(OutPut, Constants.ImportExport.ContentType) { FileDownloadName = $"{RemoveSpecialCharacters("Tanulói kapcsolat " + DateTime.Now.ToString("yyyyMMddHHmm"))}.{Constants.ImportExport.FileFormatZip}" }; } return fileStremResult; } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } [HttpPost] public ActionResult FeljegyzesekReszletezese([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { try { var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); System.Reflection.MethodInfo metodus = helper.GetType().GetMethod(nameof(helper.GetTanulokFeljegyzesekReszletezese)); var dsParameterek = new Dictionary(); var frxParameterek = new Dictionary() { {"Osztalyfonok", StringResourcesUtil.GetString(29)}, {"Kelt", NyomtatvanyokLogic.KeltSzoveg(model.KeltDatum, model.KeltFormatumId)}, {"AlulirottMegnevezese", new AlkalmazottMunkaugyiAdatokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottByVezetoiOraszamOk(true).Where(x => x.Value == model.AlulirottMegnevezesId.ToString()).FirstOrDefault()?.Text} }; return AltalanosTanuloiGeneralas(model, NyomtatvanyEnum.TanulokFeljegyzesekReszletezese.ToString(), DokumentumKategoriaEnum.Tanulok, Enums.DokumentumTipusEnum.FeljegyzesekReszletezese, metodus, 0, dsParameterek, frxParameterek, distinctTables: "Fejlec", tablakFilterByTanuloId: "FeljegyzesReszletezes", tanuloIdColumnName: "TANULO_ID"); } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } [HttpPost] public ActionResult TantargyiMulasztasokReszletezese([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { try { var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var isIskolaerdekuSzamit = GetIsIskolaerdekuSzamit(); System.Reflection.MethodInfo metodus = helper.GetType().GetMethod(nameof(helper.GetTanulokTantargyMulasztasokReszletezese)); var dsParameterek = new Dictionary() { { "iskolaErdekuSzamit", isIskolaerdekuSzamit } }; var frxParameterek = new Dictionary { {"Kelt", NyomtatvanyokLogic.KeltSzoveg(model.KeltDatum, model.KeltFormatumId)}, {"AlulirottMegnevezese", new AlkalmazottMunkaugyiAdatokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottByVezetoiOraszamOk(true).Where(x => x.Value == model.AlulirottMegnevezesId.ToString()).FirstOrDefault()?.Text} }; return AltalanosTanuloiGeneralas(model, "TanulokTantargyiMulasztasokReszletezese", DokumentumKategoriaEnum.Tanulok, Enums.DokumentumTipusEnum.TantargyiMulasztasokReszletezese, metodus, 0, dsParameterek, frxParameterek, distinctTables: "Fejlec", tablakFilterByTanuloId: "Tanulo,Tantargy,MulasztasokReszletezese", tanuloIdColumnName: "TanuloId"); } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } [HttpPost] public ActionResult TanulokMulasztasai(NyomtatvanyModel model) { try { var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); System.Reflection.MethodInfo metodus = helper.GetType().GetMethod(nameof(helper.GetTanulokMulasztasokKesesek)); Dictionary dsParameterek = new Dictionary(); dsParameterek.Add("elmeletgyakorlat", model.ElmeletGyakorlatKulon); model.FormatumId = NyomtatvanyFormatumEnum.Excel.AsInt(); var multisheet = (model.OsztalyIdList.Count > 1) && (!model.AlapszintuNyomtatvanyokKulonDokumentumba); var tanulokMulasztasai = new TanulokMulasztasaiExcel(ConnectionTypeExtensions.GetSessionConnectionType(), isMultisheetExcel: multisheet, elmeletGyakorlat: model.ElmeletGyakorlatKulon); Dictionary frxParameterek = new Dictionary() { { "Kelt", model.KeltDatum.ToString(Core.Constants.ToStringPattern.HungarianDateWithSuffix) } }; return AltalanosTanuloiGeneralas(model, NyomtatvanyEnum.TanulokMulasztasok.ToString(), DokumentumKategoriaEnum.Tanulok, Enums.DokumentumTipusEnum.TanulokMulasztasai, metodus, 0, dsParameterek, frxParameterek, distinctTables: "Fejlec", tablakFilterByTanuloId: "TanulokMulasztasai", tanuloIdColumnName: "TanuloId", formazottExcelGenerator: tanulokMulasztasai); } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } [HttpPost] public ActionResult KozossegiSzolgalatokExcelExport(NyomtatvanyModel model) { try { var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); KozossegiSzolgalatokSearchCo co = new KozossegiSzolgalatokSearchCo(); co.OsztalyCsoportIdList = model.OsztalyIdList; co.TanuloIdList = model.TanuloIdList; DataSet dataSet = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetKozossegiSzolgalatokExcelExport(co); //NOTE: Az osztály összesítő táblák 4. oszlopa, illetve az összes többi tábla 5. oszlopa numerikus formában kell megjelennie. var excelNumericTypeColumns = new List(); excelNumericTypeColumns.AddRange(Enumerable.Range(0, model.OsztalyIdList.Count).Select(x => new ExcelNumericTypeColumn(3, x))); excelNumericTypeColumns.Add(new ExcelNumericTypeColumn(4)); return ExcelNyomtatas(dataSet, FeljegyzesekResource.KozossegiSzolgalatokExportFileName, excelNumericTypeColumns: excelNumericTypeColumns); } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } [HttpPost] public ActionResult FelmentesekHatarozatok([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { try { var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); System.Reflection.MethodInfo metodus = helper.GetType().GetMethod(nameof(helper.GetTanulokFelmentesekHatarozatok)); var dsParameterek = new Dictionary(); var frxParameterek = new Dictionary { {"Osztalyfonok", StringResourcesUtil.GetString(29)}, {"Tantargy", StringResourcesUtil.GetString(2882)}, {"MentessegOka", StringResourcesUtil.GetString(2883)}, {"Tipus", StringResourcesUtil.GetString(2884)}, {"Kelt", NyomtatvanyokLogic.KeltSzoveg(model.KeltDatum, model.KeltFormatumId)}, {"AlulirottMegnevezese", new AlkalmazottMunkaugyiAdatokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottByVezetoiOraszamOk(true).Where(x => x.Value == model.AlulirottMegnevezesId.ToString()).FirstOrDefault()?.Text} }; return AltalanosTanuloiGeneralas(model, NyomtatvanyEnum.TanulokFelmentesekHatarozatok.ToString(), DokumentumKategoriaEnum.Tanulok, Enums.DokumentumTipusEnum.FelmentesekHatarozatok, metodus, 0, dsParameterek, frxParameterek, distinctTables: "Fejlec", tablakFilterByTanuloId: "FelmentesekDataSource", tanuloIdColumnName: "TANULO_ID"); } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } [HttpPost] public ActionResult TanuloiAdatlapok([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { try { var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); System.Reflection.MethodInfo metodus = helper.GetType().GetMethod(nameof(helper.GetTanuloiAdatlap)); Dictionary dsParameterek = new Dictionary() { { "isSzakkepzoIntezmenyAnd21_22TanevOrLater", ClaimData.IsSelectedTanev21_22OrLater && ClaimData.IsSzakkepzoIntezmeny } }; Dictionary frxParameterek = new Dictionary() { { "MagantanuloText", ClaimData.IsSelectedTanev20_21OrLater ? TanuloResource.EgyeniMunkarend : TanuloResource.Magantanulo } }; return AltalanosTanuloiGeneralas(model, "TanuloiAdatlap", DokumentumKategoriaEnum.Tanulok, Enums.DokumentumTipusEnum.TanuloiAdatlapok, metodus, 0, dsParameterek, frxParameterek, distinctTables: "Fejlec", tablakFilterByTanuloId: "Tanulok", tanuloIdColumnName: "TanuloId"); } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } [HttpPost] public ActionResult TanuloJegyeiReszletezes([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { try { var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); System.Reflection.MethodInfo metodus = helper.GetType().GetMethod(nameof(helper.GetTanulokJegyeiReszletezes)); var dsParameterek = new Dictionary() { { "isMagatartasSzorgalomNemLatszik" , !model.MagatartasSzorgalomMegjelenitese } }; var frxParameterek = new Dictionary { {"AlulirottMegnevezese", new AlkalmazottMunkaugyiAdatokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottByVezetoiOraszamOk(true).Where(x => x.Value == model.AlulirottMegnevezesId.ToString()).FirstOrDefault()?.Text} }; var multisheet = (model.OsztalyIdList.Count > 1) && (!model.AlapszintuNyomtatvanyokKulonDokumentumba); var tanuloJegyeiReszletezes = new TanuloJegyeiReszletezesExcelbe(ConnectionTypeExtensions.GetSessionConnectionType(), multisheet); return AltalanosTanuloiGeneralas(model, "TanuloJegyekReszletezese", DokumentumKategoriaEnum.Tanulok, Enums.DokumentumTipusEnum.ErtekelesekReszletezese, metodus, 0, dsParameterek, frxParameterek, distinctTables: "Fejlec", tablakFilterByTanuloId: "JegyekReszletezese", tanuloIdColumnName: "TanuloId", formazottExcelGenerator: tanuloJegyeiReszletezes); } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } public ActionResult Ellenorzo([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { try { var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var isIskolaerdekuSzamit = GetIsIskolaerdekuSzamit(); var minTanoraSzam = GetMinTanoraSzam(); var nyomtatvanyNeve = NyomtatvanyEnum.Ellenorzo.ToString(); model.FormatumId = (int)NyomtatvanyFormatumEnum.PDF; // Azért, hogy tanulói szinten legyen generálva model.AlapszintuNyomtatvanyokKulonDokumentumba = true; if (model.TanuloIdList == null) { model.TanuloIdList = new List { -1 }; } System.Reflection.MethodInfo metodus = helper.GetType().GetMethod(nameof(helper.GetEllenorzo)); Dictionary dsParameterek = new Dictionary() { { "aktivtanevId", ClaimData.AktivTanevID }, { "iskolaErdekuSzamit", isIskolaerdekuSzamit }, { "fuggolegesTantargyak", model.FuggolegesTantargyak }, { "isReszletesMulasztasok", model.ReszletesMulasztasok }, { "isEgyebFoglalkozasok", model.EgyebFoglalkozasok }, { "minTanoraSzam", minTanoraSzam }, { "orarendErvenyessegiDatum", model.OrarendErvenyessegiDatum }, { "isEllenorzo", true }, { "isSzovegesNaplo", true }, { "isMagatartasSzorgalomNemLatszik" , !model.MagatartasSzorgalomMegjelenitese } }; Dictionary frxParameterek = new Dictionary() { { "ElmeletGyakorlat", model.ElmeletGyakorlatKulon.ToString() } }; return AltalanosTanuloiGeneralas(model, nyomtatvanyNeve, DokumentumKategoriaEnum.Tanulok, Enums.DokumentumTipusEnum.OsztalyTanuloinakEllenorzokonyve, metodus, 0, dsParameterek, frxParameterek, distinctTables: "Fejlec,Tanarok", tablakFilterByTanuloId: "TanuloAlapAdatok,TanuloElerhetosegei,TanuloMentessegei,TanuloHatarozatok,FeljegyzesekATanulorol,TanuloMulasztasai,TanuloGonviselokAdatai,TanuloZaradek,TanuloSzoveges,TanuloKozossegiSzolgalat,TanuloTantargyiErtekelesei,TanuloHetirend,Orarend,ErtekelesFeljegyzesei1Felev,ErtekelesFeljegyzesei2Felev", tanuloIdColumnName: "TanuloId", emptyDocumentTable: "TanuloAlapAdatok"); } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } [HttpPost] public ActionResult KozossegiSzolgalatJelentkezesLap(NyomtatvanyModel model) { try { var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); System.Reflection.MethodInfo metodus = helper.GetType().GetMethod(nameof(helper.GetKozossegiJelentkezesLap)); Dictionary dsParameterek = new Dictionary(); Dictionary frxParameterek = new Dictionary { { "Kelt", model.KeltDatum.ToString(Core.Constants.ToStringPattern.HungarianDateWithSuffix) } }; return AltalanosTanuloiGeneralas(model, NyomtatvanyEnum.KozossegiJelentkezesLap.ToString(), DokumentumKategoriaEnum.Tanulok, Enums.DokumentumTipusEnum.KozossegiSzolgalatiJelentkezesiLap, metodus, 0, dsParameterek, frxParameterek, distinctTables: "IntezmenyAdatok", tablakFilterByTanuloId: "TanuloAdatok,GondviseloAdatok", tanuloIdColumnName: "TanuloId", egyediLablecKellOldalszam: false); } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } [HttpPost] public ActionResult KozossegiSzolgalatNaplo(NyomtatvanyModel model) { try { var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); System.Reflection.MethodInfo metodus = helper.GetType().GetMethod(nameof(helper.GetKozossegiSzolgalatNaplo)); var dsParameterek = new Dictionary(); var frxParameterek = new Dictionary { { "Kelt", model.KeltDatum.ToString(Core.Constants.ToStringPattern.HungarianDateWithSuffix) } }; return AltalanosTanuloiGeneralas(model, NyomtatvanyEnum.KozossegiSzolgalatNaplo.ToString(), DokumentumKategoriaEnum.Tanulok, null, metodus, 0, dsParameterek, frxParameterek, distinctTables: "IntezmenyAdatok", tablakFilterByTanuloId: "Tanulok,Reszletek", tanuloIdColumnName: "TanuloId"); } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } [HttpPost] public ActionResult BukasraAlloTanulok(NyomtatvanyModel model) { try { List osztalyCsoportIdList = model.OsztalyCsoportIdList?.Where(x => x.IsEntityId()).Distinct().ToList(); if (osztalyCsoportIdList == null || osztalyCsoportIdList.Count <= 0) { OktNevelesiKategoriaEnum? feladatKategoria = model.OktNevelesiKategoriaId.IsEntityId() ? (OktNevelesiKategoriaEnum?)model.OktNevelesiKategoriaId : null; DataSet osztalyCsoportDataSet = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetKapcsolodoOsztalyCsoportDataSet(true, true, true, feladatKategoria); var osztalyCsoportIdListByTanar = new List(); foreach (DataRow dataRow in osztalyCsoportDataSet.Tables[0].Rows) { osztalyCsoportIdListByTanar.Add(Convert.ToInt32(dataRow["ID"])); } osztalyCsoportIdList = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()) .GetOsztalyCsoportCoList() .Where(x => osztalyCsoportIdListByTanar.Contains(x.Id) && x.IsOsztaly) .OrderBy(x => x.EvfolyamTipusOrder) .ThenBy(x => x.Nev) .Select(x => x.Id) .ToList(); } DataSet dataSet = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetBukasraAlloTanulok(osztalyCsoportIdList); var nevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value }; return ExcelNyomtatas(dataSet, CommonExtensions.NevGeneralas("BukasraAlloTanulok", nevmodel)); } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } } }