371 lines
19 KiB
C#
371 lines
19 KiB
C#
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<int> 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<string, object>
|
|
{
|
|
{"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<string>();
|
|
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<string>();
|
|
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<int> 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<string, object>
|
|
{
|
|
{"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
|
|
}
|
|
}
|