229 lines
11 KiB
C#
229 lines
11 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.HelperClasses;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.Core;
|
|
using Kreta.Enums;
|
|
using Kreta.Enums.ManualEnums;
|
|
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
|
|
{
|
|
public ActionResult TermekOrarendje([ModelBinder(typeof(Helpers.NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))]
|
|
NyomtatvanyModel model)
|
|
{
|
|
return Orarendek(model, NyomtatvanyEnum.TeremOrarend, Enums.DokumentumTipusEnum.TermekOrarendje);
|
|
}
|
|
|
|
public ActionResult OsztalyokOrarendje([ModelBinder(typeof(Helpers.NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))]
|
|
NyomtatvanyModel model)
|
|
{
|
|
return Orarendek(model, NyomtatvanyEnum.OsztalyOrarendOsszes, Enums.DokumentumTipusEnum.OsztalyokOrarendje);
|
|
}
|
|
|
|
public ActionResult PedagogusokOrarendje([ModelBinder(typeof(Helpers.NyomtatvanyModelBinderWithPoszeidonIktatasDefiniciok))]
|
|
NyomtatvanyModel model)
|
|
{
|
|
return Orarendek(model, NyomtatvanyEnum.PedagogusOrarendOsszes, Enums.DokumentumTipusEnum.PedagogusOrarendje);
|
|
}
|
|
|
|
private ActionResult Orarendek(NyomtatvanyModel model, NyomtatvanyEnum orarendTipus, Enums.DokumentumTipusEnum dokumentumTipus)
|
|
{
|
|
try
|
|
{
|
|
var OutPut = new MemoryStream();
|
|
var ZipOutPut = new ZipOutputStream(OutPut);
|
|
|
|
DataSet mergedDs = new DataSet();
|
|
var needMergedData = false;
|
|
var atLeastOneData = false;
|
|
|
|
var foszamKulcsSzavak = (kulcsSzavak: (NameValueCollection)null, foszamDefinicio: (BusinessLogic.Helpers.Nyomtatvanyok.Iktatas.FoszamDefinicioValueModel)null);
|
|
DokumentumElemiSzintEnum? elemiSzint;
|
|
|
|
var parameters = new Dictionary<string, object>
|
|
{
|
|
{"Kelt", DateTime.Now.ToString(Core.Constants.ToStringPattern.HungarianDateWithSuffix)}
|
|
};
|
|
|
|
string nyomtatvanyNeve = "OrarendOsszes";
|
|
var nevmodel = new NyomtatvanyNevGeneralasModel() { TanevID = ClaimData.SelectedTanevID.Value };
|
|
|
|
DataSet hetSorszamaDs;
|
|
|
|
var naptariHetHelper = new NaptariHetHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
hetSorszamaDs = naptariHetHelper.GetNaptariHetList();
|
|
|
|
var het = hetSorszamaDs.Tables[0].AsEnumerable().Where(x => x.Field<int>("HetSorszama") == model.HetSorszama).Select(dataRow => new
|
|
{
|
|
Kezdete = Convert.ToDateTime(dataRow.Field<DateTime>("HetKezdoNapja")),
|
|
Vege = Convert.ToDateTime(dataRow.Field<DateTime>("HetUtolsoNapja"))
|
|
}).FirstOrDefault();
|
|
|
|
DateTime hetKezdete = het.Kezdete;
|
|
DateTime hetVege = het.Vege;
|
|
|
|
List<int> idList;
|
|
bool teremId = false;
|
|
bool osztalyId = false;
|
|
bool pedagogusId = false;
|
|
OktNevelesiKategoriaEnum? oktNevKategoria = (model.OktNevelesiKategoriaId.IsEntityId()) ? (OktNevelesiKategoriaEnum?)model.OktNevelesiKategoriaId : null;
|
|
|
|
switch (orarendTipus)
|
|
{
|
|
case NyomtatvanyEnum.OsztalyOrarendOsszes:
|
|
idList = GetOsztalyIdList(model.OsztalyIdList, oktNevKategoria, forOrarend: true);
|
|
osztalyId = true;
|
|
elemiSzint = DokumentumElemiSzintEnum.Osztaly;
|
|
break;
|
|
case NyomtatvanyEnum.PedagogusOrarendOsszes:
|
|
idList = GetPedagogusIdList(model.PedagogusIdList);
|
|
pedagogusId = true;
|
|
elemiSzint = DokumentumElemiSzintEnum.Tanulo;
|
|
break;
|
|
case NyomtatvanyEnum.TeremOrarend:
|
|
idList = GetTeremIdList(model.TeremIdList);
|
|
teremId = true;
|
|
elemiSzint = DokumentumElemiSzintEnum.Terem;
|
|
break;
|
|
default:
|
|
idList = GetOsztalyIdList(model.OsztalyIdList, oktNevKategoria, forOrarend: true);
|
|
osztalyId = true;
|
|
elemiSzint = DokumentumElemiSzintEnum.Osztaly;
|
|
break;
|
|
}
|
|
|
|
if (idList.Count == 0)
|
|
{
|
|
throw new ApplicationException(NyomtatvanyokResource.UresDokumentum);
|
|
}
|
|
foreach (var id in idList)
|
|
{
|
|
if (osztalyId)
|
|
{
|
|
nevmodel.OsztalyID = id;
|
|
}
|
|
|
|
if (teremId)
|
|
{
|
|
nevmodel.TeremID = id;
|
|
}
|
|
|
|
if (pedagogusId)
|
|
{
|
|
nevmodel.TanarID = id;
|
|
}
|
|
|
|
var helper = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
|
|
var ds = helper.GetOrarendOsszes((pedagogusId) ? id : (int?)null, (teremId) ? id : (int?)null, (osztalyId) ? id : (int?)null, model.OrarendTipusaId, hetKezdete, hetVege, model.KapcsolodoCsoportokMegjelenitese, model.OsztalyBontasokMegjelenitese, oktNevKategoria);
|
|
if (ds.Tables[0].Rows.Count == 0)
|
|
{
|
|
if (idList.Count > 1)
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
throw new ApplicationException(NyomtatvanyokResource.UresDokumentum);
|
|
}
|
|
}
|
|
var orarendUtolsoNapja = helper.GetOrarendUtolsoNapja(ds.Tables["Orarend"], true);
|
|
parameters.Add(nameof(orarendUtolsoNapja) + "_" + id, orarendUtolsoNapja);
|
|
|
|
if (idList.Count > 1)
|
|
{
|
|
if (!model.AlapszintuNyomtatvanyokKulonDokumentumba)
|
|
{
|
|
TobbNyomtatvanyEgyDataSetbe(ref mergedDs, ds);
|
|
needMergedData = true;
|
|
}
|
|
else
|
|
{
|
|
if (!model.Iktatas)
|
|
{
|
|
AddNyomtatvanyMintZipEntry(ZipOutPut, ds, nyomtatvanyNeve, parameters, CommonExtensions.NevGeneralas(orarendTipus.ToString(), nevmodel), formatumId: model.FormatumId, dokumentumTipus: dokumentumTipus);
|
|
}
|
|
else
|
|
{
|
|
foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus, ds, elemiSzint.Value);
|
|
|
|
Nyomtatas(ds, nyomtatvanyNeve, parameters, CommonExtensions.NevGeneralas(orarendTipus.ToString(), nevmodel), model.Iktatas, CommonExtensions.NevGeneralas(orarendTipus.ToString(), nevmodel, true), formatumId: model.FormatumId, osztalyId: (osztalyId) ? id : 0, dokumentumKategoria: DokumentumKategoriaEnum.Orarendek, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio);
|
|
}
|
|
|
|
atLeastOneData = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (model.Iktatas)
|
|
{
|
|
|
|
foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus, ds, elemiSzint.Value);
|
|
}
|
|
|
|
var customMessage = hetKezdete.Date.ToShortDateString() + "-" + hetVege.Date.ToShortDateString();
|
|
var notAppendDateTimeNow = true;
|
|
|
|
return Nyomtatas(ds, nyomtatvanyNeve, parameters, CommonExtensions.NevGeneralas(orarendTipus.ToString(), nevmodel, notAppendDateTimeNow: notAppendDateTimeNow, customMessage: customMessage), model.Iktatas, CommonExtensions.NevGeneralas(orarendTipus.ToString(), nevmodel, true, notAppendDateTimeNow: notAppendDateTimeNow, customMessage: customMessage), formatumId: model.FormatumId, osztalyId: (osztalyId) ? id : 0, dokumentumKategoria: DokumentumKategoriaEnum.Orarendek, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio);
|
|
}
|
|
}
|
|
|
|
if (!model.AlapszintuNyomtatvanyokKulonDokumentumba)
|
|
{
|
|
if (!needMergedData)
|
|
{
|
|
throw new ApplicationException(NyomtatvanyokResource.UresDokumentum);
|
|
}
|
|
|
|
if (model.Iktatas)
|
|
{
|
|
foszamKulcsSzavak = KulcsszavakEsFoszamGeneralas(model, dokumentumTipus, mergedDs, DokumentumElemiSzintEnum.Intezmeny);
|
|
}
|
|
|
|
nevmodel.OsztalyID = null;
|
|
nevmodel.TeremID = null;
|
|
nevmodel.TanarID = null;
|
|
return Nyomtatas(mergedDs, nyomtatvanyNeve, parameters, CommonExtensions.NevGeneralas("Tobb" + orarendTipus.ToString(), nevmodel), model.Iktatas, CommonExtensions.NevGeneralas("Tobb" + orarendTipus.ToString(), nevmodel, true), formatumId: model.FormatumId, osztalyId: 0, dokumentumKategoria: DokumentumKategoriaEnum.Orarendek, dokumentumTipus: dokumentumTipus, kulcsSzavak: foszamKulcsSzavak.kulcsSzavak, foszamDefinicio: foszamKulcsSzavak.foszamDefinicio);
|
|
}
|
|
else
|
|
{
|
|
if (!atLeastOneData)
|
|
{
|
|
throw new ApplicationException(NyomtatvanyokResource.UresDokumentum);
|
|
}
|
|
|
|
if (!model.Iktatas)
|
|
{
|
|
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}"
|
|
};
|
|
}
|
|
else
|
|
{
|
|
return RedirectToAction("Index", Constants.Controllers.IktatottDokumentumok, new { area = Constants.Areas.Nyomtatvanyok });
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw NyomtatvanyokLogic.NyomtatvanyError(ex);
|
|
}
|
|
}
|
|
}
|
|
}
|