using System; using System.Collections.Generic; using System.Collections.Specialized; 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.Core; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework; using Kreta.Resources; using Kreta.Web.Areas.Nyomtatvanyok.Logic; using Kreta.Web.Helpers; using Kreta.Web.Security; namespace Kreta.Web.Areas.Nyomtatvanyok.Controllers { public partial class NyomtatvanyokController : BaseNyomtatvanyokController { private ActionResult Osztalynaplok([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model, NyomtatvanyEnum nyomtatvanyTipus = NyomtatvanyEnum.Naplo, Enums.DokumentumTipusEnum dokumentumTipus = Enums.DokumentumTipusEnum.Osztalynaplo) { var OutPut = new MemoryStream(); var ZipOutPut = new ZipOutputStream(OutPut); try { var mentesNaplozarasba = nyomtatvanyTipus == NyomtatvanyEnum.Naplo; var isIskolaerdekuSzamit = GetIsIskolaerdekuSzamit(); var minTanoraSzam = GetMinTanoraSzam(); var isSzovegesNaplo = model.HaladasiNaploFormatumId == 1 || nyomtatvanyTipus == NyomtatvanyEnum.OsztalyozoNaplo; var isEllenorzo = nyomtatvanyTipus == NyomtatvanyEnum.Ellenorzo; var buffer = new byte[Constants.General.BufferSize]; string nyomtatvanyNeve; bool isHaladasiNaplo = false, isOsztalyozoNaplo = false; if ((model.HaladasiNaploFormatumId == (int)HaladasiNaploFormatumEnum.A4) && (nyomtatvanyTipus != NyomtatvanyEnum.HaladasiNaplo)) { nyomtatvanyTipus = NyomtatvanyEnum.Naplo_szoveges; } switch (nyomtatvanyTipus) { case NyomtatvanyEnum.Naplo_szoveges: nyomtatvanyNeve = model.FuggolegesTantargyak ? NyomtatvanyEnum.Naplo_szoveges_fuggoleges.ToString() : NyomtatvanyEnum.Naplo_szoveges.ToString(); break; case NyomtatvanyEnum.Naplo: nyomtatvanyNeve = model.FuggolegesTantargyak ? NyomtatvanyEnum.Naplo_fuggoleges.ToString() : NyomtatvanyEnum.Naplo.ToString(); break; case NyomtatvanyEnum.OsztalyozoNaplo: nyomtatvanyNeve = model.FuggolegesTantargyak ? NyomtatvanyEnum.Naplo_fuggoleges.ToString() : NyomtatvanyEnum.Naplo.ToString(); isOsztalyozoNaplo = true; break; case NyomtatvanyEnum.HaladasiNaplo: nyomtatvanyNeve = (model.HaladasiNaploFormatumId == (int)HaladasiNaploFormatumEnum.A4) ? NyomtatvanyEnum.Naplo_szoveges.ToString() : NyomtatvanyEnum.Naplo.ToString(); isHaladasiNaplo = true; break; case NyomtatvanyEnum.Ellenorzo: nyomtatvanyNeve = NyomtatvanyEnum.Ellenorzo.ToString(); break; default: nyomtatvanyNeve = NyomtatvanyEnum.Naplo.ToString(); break; } var orarendErvenyessegiDatum = model.OrarendErvenyessegiDatum; if (model.OrarendErvenyessegiDatum == DateTime.MinValue) { orarendErvenyessegiDatum = DateTime.Now; } OktNevelesiKategoriaEnum? oktNevKategoria = (model.OktNevelesiKategoriaId.IsEntityId()) ? (OktNevelesiKategoriaEnum?)model.OktNevelesiKategoriaId : null; List osztalyIdList = GetOsztalyIdList(model.OsztalyIdList, oktNevKategoria); if (osztalyIdList.Count == 0) { throw new ApplicationException(NyomtatvanyokResource.UresDokumentum); } var nyomtatvanyokHelper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); foreach (var osztalyId in osztalyIdList) { var ds = nyomtatvanyokHelper.GetOsztalynaplo(osztalyId, ClaimData.AktivTanevID, isIskolaerdekuSzamit, model.FuggolegesTantargyak, model.ReszletesMulasztasok, model.EgyebFoglalkozasok, minTanoraSzam, orarendErvenyessegiDatum, isEllenorzo, isSzovegesNaplo, model.NaploZaras, osztalyTanuloOrarendbenNemLatszik: true, isMagatartasSzorgalomNemLatszik: !model.MagatartasSzorgalomMegjelenitese); int orarendUtolsoNapja = nyomtatvanyokHelper.GetOrarendUtolsoNapja(ds.Tables["Orarend"]); var parameters = new Dictionary { {"pTargy", StringResourcesUtil.GetString(252)}, {"pJan", StringResourcesUtil.GetString(198)}, {"pFeb", StringResourcesUtil.GetString(199)}, {nameof(orarendUtolsoNapja), orarendUtolsoNapja} }; string osztalyNev; if (ds.Tables.Count > 0 && ds.Tables["Fejlec"] != null && ds.Tables["Fejlec"].Rows.Count > 0 && ds.Tables["Fejlec"].Columns.Contains("OsztalyNev")) { osztalyNev = ds.Tables["Fejlec"].Rows[0]["OsztalyNev"].ToString(); } else { osztalyNev = StringResourcesUtil.GetString(435); /*Osztály név megadása kötelező!*/ } parameters.Add("OsztalyNev", osztalyNev); if (ds.Tables.Count > 0 && ds.Tables["Fejlec"] != null && ds.Tables["Fejlec"].Rows.Count > 0) { parameters.Add("MaxOraszam", ds.Tables["Fejlec"].Rows[0]["MaxOraszam"].ToString()); parameters.Add("MinOraszam", ds.Tables["Fejlec"].Rows[0]["MinOraszam"].ToString()); } var oszlopok = new List(); for (var i = 11; i < ds.Tables["NaploAdatok"].Columns.Count; i++) { oszlopok.Add(ds.Tables["NaploAdatok"].Columns[i].ColumnName); } parameters.Add("Oszlopok", oszlopok.ToArray()); var ertoszlopok = new List(); for (var i = 0; i < ds.Tables["TanuloTantargyiErtekelesei"].Columns.Count; i++) { ertoszlopok.Add(ds.Tables["TanuloTantargyiErtekelesei"].Columns[i].ColumnName); } ertoszlopok.Remove("periodusId"); ertoszlopok.Remove("tanuloID"); ertoszlopok.Remove("TanuloCsoportId"); parameters.Add("ErtekelesOszlopok", ertoszlopok.ToArray()); parameters.Add("isLezartNaplo", model.NaploZaras); parameters.Add("ElmeletGyakorlat", model.ElmeletGyakorlatKulon.ToString()); parameters.Add("FeljegyzesHaviBontas", model.FeljegyzesHaviBontas.ToString()); parameters.Add("FontSizeDifference", model.BetuMeret.AsInt()); var nevmodel = new NyomtatvanyNevGeneralasModel() { OsztalyCsoportId = osztalyId, TanevID = ClaimData.SelectedTanevID.Value }; parameters.Add(nameof(isOsztalyozoNaplo), isOsztalyozoNaplo); parameters.Add(nameof(isHaladasiNaplo), isHaladasiNaplo); parameters.Add("AlulirottMegnevezese", new AlkalmazottMunkaugyiAdatokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottByVezetoiOraszamOk(true).Where(x => x.Value == model.AlulirottMegnevezesId.ToString()).FirstOrDefault()?.Text); parameters.Add(nameof(model.EvfolyamSzerepelteteseTanuloiAdatokKozott), model.EvfolyamSzerepelteteseTanuloiAdatokKozott); parameters.Add(nameof(ClaimData.IsSelectedTanev20_21OrLater), ClaimData.IsSelectedTanev20_21OrLater); parameters.Add(nameof(ClaimData.IsSelectedTanev21_22OrLater), ClaimData.IsSelectedTanev21_22OrLater); parameters.Add("IsZaradekDatumVisible", model.ZaradekKeltMegjelenites); var foszamKulcsSzavak = (kulcsSzavak: (NameValueCollection)null, foszamDefinicio: (BusinessLogic.Helpers.Nyomtatvanyok.Iktatas.FoszamDefinicioValueModel)null); if (model.Iktatas) { foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus, ds, Enums.DokumentumElemiSzintEnum.Osztaly); } if ((osztalyIdList.Count > 1) && !model.Iktatas) { AddNyomtatvanyMintZipEntry(ZipOutPut, ds, nyomtatvanyNeve, parameters, CommonExtensions.NevGeneralas(nyomtatvanyTipus.ToString(), nevmodel), dokumentumTipus: dokumentumTipus); if (model.NaploZaras && mentesNaplozarasba) { nyomtatvanyokHelper.MentesNaplozarasParameterRendszerbeallitasba(osztalyId); } } else { var ret = Nyomtatas(ds, nyomtatvanyNeve, parameters, CommonExtensions.NevGeneralas(nyomtatvanyTipus.ToString(), nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nyomtatvanyTipus.ToString(), nevmodel, true), osztalyId: osztalyId, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, dokumentumKategoria: DokumentumKategoriaEnum.Naplok, dokumentumTipus: dokumentumTipus, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio); if (model.NaploZaras && mentesNaplozarasba) { nyomtatvanyokHelper.MentesNaplozarasParameterRendszerbeallitasba(osztalyId); } if (osztalyIdList.Count == 1) { return ret; } } } ZipOutPut.Finish(); OutPut.Position = 0; if (!model.Iktatas) { var zipnevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value }; return new FileStreamResult(OutPut, Constants.ImportExport.ContentType) { FileDownloadName = $"{CommonExtensions.NevGeneralas(nyomtatvanyNeve, zipnevmodel)}.{Constants.ImportExport.FileFormatZip}" }; } else { return RedirectToAction("Index", Constants.Controllers.IktatottDokumentumok, new { area = Constants.Areas.Nyomtatvanyok }); } } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } private ActionResult Csoportnaplok(NyomtatvanyModel model, NyomtatvanyEnum nye, Enums.DokumentumTipusEnum dokumentumTipus) { var OutPut = new MemoryStream(); var ZipOutPut = new ZipOutputStream(OutPut); try { var isIskolaerdekuSzamit = GetIsIskolaerdekuSzamit(); var buffer = new byte[Constants.General.BufferSize]; OktNevelesiKategoriaEnum? oktNevKategoria = (model.OktNevelesiKategoriaId.IsEntityId()) ? (OktNevelesiKategoriaEnum?)model.OktNevelesiKategoriaId : (OktNevelesiKategoriaEnum?)null; List csoportIdList = GetCsoportIdList(model.CsoportIdList, oktNevKategoria); if (csoportIdList.Count == 0) { throw new ApplicationException(NyomtatvanyokResource.UresDokumentum); } foreach (var csoportId in csoportIdList) { DataSet ds; var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); switch (nye) { case NyomtatvanyEnum.CsoportNaplo: (int, int)? jelenletAdatok = null; if (model.JelenletAdatokMegjelenitese) { jelenletAdatok = ((int)model.JelenletAdatokOsszesitese, (int)model.JelenletTablazatElrendezese); } ds = helper.GetCsoportNaplo(csoportId, model.GyakorlatiOrakMegjelenites, model.ElmeletiOrakMegjelenites, isIskolaerdekuSzamit, model.CsoportnaploTanulokSorrendje, jelenletAdatok, isMagatartasSzorgalomNemLatszik: !model.MagatartasSzorgalomMegjelenitese); break; case NyomtatvanyEnum.NapkozisNaplo: ds = helper.GetNapkozisNaplo(csoportId, isIskolaerdekuSzamit, model.CsoportnaploTanulokSorrendje); break; case NyomtatvanyEnum.SzakmaiGyNaplo: ds = helper.GetSzakmaiGyNaplo(csoportId, isIskolaerdekuSzamit, model.CsoportnaploTanulokSorrendje); break; case NyomtatvanyEnum.EgyebFoglalkozasiNaplo: ds = helper.GetEgyebFoglalkozasiNaplo(csoportId, isIskolaerdekuSzamit, model.CsoportnaploTanulokSorrendje); break; default: ds = helper.GetCsoportNaplo(csoportId, model.GyakorlatiOrakMegjelenites, model.ElmeletiOrakMegjelenites, isIskolaerdekuSzamit, model.CsoportnaploTanulokSorrendje); break; } var parameters = new Dictionary { {"isLezartNaplo", model.NaploZaras}, {"AlulirottMegnevezese", new AlkalmazottMunkaugyiAdatokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottByVezetoiOraszamOk(true).Where(x => x.Value == model.AlulirottMegnevezesId.ToString()).FirstOrDefault()?.Text}, {"JelenletAdatokOsszesitese", (int)model.JelenletAdatokOsszesitese }, {"JelenletTablazatElrendezese", (int)model.JelenletTablazatElrendezese }, { "FelevHetsorszam", ds.Tables["JelenletFelevEvvegeHetsorszam"] != null ? ds.Tables["JelenletFelevEvvegeHetsorszam"].Rows[0]["FelevHetsorszam"] : -1 }, { "UtolsoTanitasiNapHetsorszam", ds.Tables["JelenletFelevEvvegeHetsorszam"] != null ? ds.Tables["JelenletFelevEvvegeHetsorszam"].Rows[0]["UtolsoTanitasiNapHetsorszam"] : -1 }, { "isJelenletAdatokTablakkal", model.JelenletAdatokMegjelenitese }, { "IsZaradekDatumVisible", model.ZaradekKeltMegjelenites } }; var nevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value, OsztalyCsoportId = csoportId }; var foszamKulcsSzavak = (kulcsSzavak: (NameValueCollection)null, foszamDefinicio: (BusinessLogic.Helpers.Nyomtatvanyok.Iktatas.FoszamDefinicioValueModel)null); if (model.Iktatas) { foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus, ds, Enums.DokumentumElemiSzintEnum.Csoport); } if ((csoportIdList.Count > 1) && !model.Iktatas) { AddNyomtatvanyMintZipEntry(ZipOutPut, ds, nye.ToString(), parameters, CommonExtensions.NevGeneralas(nye.ToString(), nevmodel), dokumentumTipus: dokumentumTipus); } else { var ret = Nyomtatas(ds, nye.ToString(), parameters, CommonExtensions.NevGeneralas(nye.ToString(), nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(nye.ToString(), nevmodel, true), osztalyId: csoportId, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, dokumentumKategoria: DokumentumKategoriaEnum.Naplok, dokumentumTipus: dokumentumTipus, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio); if (csoportIdList.Count == 1) { return ret; } } } ZipOutPut.Finish(); OutPut.Position = 0; if (!model.Iktatas) { var zipnevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value }; return new FileStreamResult(OutPut, Constants.ImportExport.ContentType) { FileDownloadName = $"{CommonExtensions.NevGeneralas(nye.ToString(), zipnevmodel)}.{Constants.ImportExport.FileFormatZip}" }; } else { return RedirectToAction("Index", Constants.Controllers.IktatottDokumentumok, new { area = Constants.Areas.Nyomtatvanyok }); } } catch (Exception ex) { throw NyomtatvanyokLogic.NyomtatvanyError(ex); } } #region Osztály naplók public ActionResult OsztalyNaplo([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { return Osztalynaplok(model, NyomtatvanyEnum.Naplo, Enums.DokumentumTipusEnum.Osztalynaplo); } public ActionResult HaladasiNaplo([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { return Osztalynaplok(model, NyomtatvanyEnum.HaladasiNaplo, Enums.DokumentumTipusEnum.HaladasiNaplo); } public ActionResult OsztalyozoNaplo([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { return Osztalynaplok(model, NyomtatvanyEnum.OsztalyozoNaplo, Enums.DokumentumTipusEnum.OsztalyozoNaplo); } #endregion #region Csoport naplók public ActionResult CsoportNaplo([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { return Csoportnaplok(model, NyomtatvanyEnum.CsoportNaplo, Enums.DokumentumTipusEnum.CsoportNaplo); } public ActionResult NapkozisNaplo([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { return Csoportnaplok(model, NyomtatvanyEnum.NapkozisNaplo, Enums.DokumentumTipusEnum.NapkozisCsoportNaploja); } public ActionResult SzakmaiGyNaplo([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { return Csoportnaplok(model, NyomtatvanyEnum.SzakmaiGyNaplo, Enums.DokumentumTipusEnum.GyakorlatiFoglalkozasrolVezetettNaplo); } public ActionResult EgyebFoglalkozasiNaplo([ModelBinder(typeof(NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))] NyomtatvanyModel model) { return Csoportnaplok(model, NyomtatvanyEnum.EgyebFoglalkozasiNaplo, Enums.DokumentumTipusEnum.EgyebFoglalkozasiNaplo); } #endregion } }