263 lines
11 KiB
C#
263 lines
11 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Security.Cryptography;
|
|
using System.Web.Http;
|
|
using System.Web.Mvc;
|
|
using FastReport;
|
|
using FastReport.Export.Pdf;
|
|
using FastReport.Export.RichText;
|
|
using FastReport.Utils;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
|
using Kreta.BusinessLogic.Security;
|
|
using Kreta.Core;
|
|
using Kreta.Enums;
|
|
using Kreta.Enums.ManualEnums;
|
|
using Kreta.Resources;
|
|
using Kreta.Web.Areas.Nyomtatvanyok.Logic;
|
|
using Kreta.Web.Areas.Tanar.Models;
|
|
using Kreta.Web.Helpers;
|
|
using Kreta.Web.Models.EditorTemplates;
|
|
using Kreta.Web.Security;
|
|
|
|
namespace Kreta.Web.Areas.Tanar.Controllers
|
|
{
|
|
[MvcRoleClaimsAuthorize(true)]
|
|
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsSzirIntezmeny.ClaimValue, KretaClaimPackages.IsDualisKepzohelyiOktato.ClaimValue)]
|
|
public class FogadooraController : Controller
|
|
{
|
|
public object Datetime { get; private set; }
|
|
|
|
[MvcRolePackageAuthorize(KretaClaimPackages.Tanar.ClaimValue)]
|
|
public ActionResult Index()
|
|
{
|
|
if (!new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Fogadoorak_megjelenitese))
|
|
{
|
|
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
|
|
}
|
|
|
|
var model = new FogadooraSearchModel();
|
|
return View("Index", model);
|
|
}
|
|
|
|
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
|
|
public ActionResult FogadooraKereso()
|
|
{
|
|
if (!new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Fogadoorak_megjelenitese))
|
|
{
|
|
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
|
|
}
|
|
|
|
var model = new FogadooraSearchModel() { FeladatEllatasiHelyId = ClaimData.FelhelySzuro };
|
|
return View("FogadooraKereso", model);
|
|
}
|
|
|
|
public ActionResult OpenFogadooraJelentkezettGondviselokPopupp(int fogadooraId, string handler = "FogadooraGridHelper")
|
|
{
|
|
var helper = new FogadooraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
|
|
|
|
var fogadooraCo = helper.GetFogadooraById(fogadooraId);
|
|
|
|
var popUpModel = new PopUpModel(new FogadooraJelentkezesInfoModel
|
|
{
|
|
Id = fogadooraCo.Id,
|
|
TeremNev = fogadooraCo.TeremNev,
|
|
IsNemKotottMunkaido = fogadooraCo.IsNemKotottMunkaido,
|
|
FogadoOraKezdete = fogadooraCo.FogadoOraKezdete.ToShortTimeString(),
|
|
FogadoOraVege = fogadooraCo.FogadoOraVege.ToShortTimeString(),
|
|
JelentkezesekKezelese = fogadooraCo.JelentkezesekKezelese,
|
|
FogadoOraDatuma = fogadooraCo.FogadoOraDatuma.ToShortDateString()
|
|
}, "Fogadoora_Info");
|
|
|
|
popUpModel = popUpModel.AddCancelBtn(popUpModel, handler + ".detailJelentkezettGondviselokCancel");
|
|
return PartialView(Constants.General.PopupView, popUpModel);
|
|
}
|
|
|
|
public ActionResult FogadooraLetoltesPdf([FromBody] int fogadooraId) => FogadooraLetoltes(fogadooraId, NyomtatvanyFormatumEnum.PDF);
|
|
|
|
public ActionResult FogadooraLetoltesWord([FromBody] int fogadooraId) => FogadooraLetoltes(fogadooraId, NyomtatvanyFormatumEnum.Word);
|
|
|
|
private ActionResult FogadooraLetoltes(int fogadooraId, NyomtatvanyFormatumEnum fileTipus)
|
|
{
|
|
try
|
|
{
|
|
var outPut = new MemoryStream();
|
|
ActionResult fogadooraDokumentum = new FileStreamResult(outPut, "application/octet-stream");
|
|
var fogadooraHelper = new FogadooraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
var ds = fogadooraHelper.GetFogadooraDokumentumAdatok(fogadooraId);
|
|
|
|
var parameters = new Dictionary<string, object>();
|
|
var frxNev = NyomtatvanyEnum.FogadooraDokumentum.ToString();
|
|
|
|
var row = ds.Tables[0].Rows[0];
|
|
parameters.Add("FogadooraDatuma", SDAConvert.ToDateTime(row["FogadooraDatuma"])?.ToString("yyyy.MM.dd."));
|
|
parameters.Add("TeremNev", SDAConvert.ToString(row["TeremNev"]).ReplaceMultipleSpacesAndTrim());
|
|
parameters.Add("FogadooraKezdete", SDAConvert.ToDateTime(row["FogadooraKezdete"])?.ToString("HH:mm"));
|
|
parameters.Add("FogadooraVege", SDAConvert.ToDateTime(row["FogadooraVege"])?.ToString("HH:mm"));
|
|
parameters.Add("IdosavokMerteke", SDAConvert.ToString(row["IdosavokMerteke"]).ReplaceMultipleSpacesAndTrim());
|
|
parameters.Add("FogadooratKiiro", SDAConvert.ToString(row["FogadooratKiiro"]).ReplaceMultipleSpacesAndTrim());
|
|
|
|
var jelentkezesHatarido = GetJelentkezesHatarido(row);
|
|
parameters.Add("Hatarido", jelentkezesHatarido);
|
|
|
|
var fogadooraCo = fogadooraHelper.GetFogadooraById(fogadooraId);
|
|
var osztalyHelper = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
var osztalyokNeveiList = fogadooraCo.SelectedOsztalyCsoportIdList.Select(x => osztalyHelper.GetOsztalyCsoportNevById(x)).ToList();
|
|
parameters.Add("FogadooOsztalyaiCsoportjai", string.Join(",", osztalyokNeveiList));
|
|
parameters.Add("KellSorokKiegeszitese", fogadooraCo.FogadooraTipusEnumId != (int)FogadooraTipusEnum.JelentkezhetoDarabolt);
|
|
|
|
switch (fileTipus)
|
|
{
|
|
case NyomtatvanyFormatumEnum.PDF:
|
|
fogadooraDokumentum = PDFGeneralas(ds, frxNev, FogadooraResource.FogadooraDokumentumNev, parameters);
|
|
break;
|
|
case NyomtatvanyFormatumEnum.Word:
|
|
fogadooraDokumentum = WordGeneralas(ds, frxNev, FogadooraResource.FogadooraDokumentumNev, parameters);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
outPut.Position = 0;
|
|
|
|
return fogadooraDokumentum;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw NyomtatvanyokLogic.NyomtatvanyError(ex);
|
|
}
|
|
}
|
|
|
|
private string GetJelentkezesHatarido(DataRow row)
|
|
{
|
|
var fogadooraKezdete = SDAConvert.ToDateTime(row["FogadooraKezdeteTeljes"]);
|
|
var jelentkezesHatarido = SDAConvert.ToDateTime(row["JelentkezesHatarido"]);
|
|
|
|
var hatarido = jelentkezesHatarido.HasValue ? (int?)(fogadooraKezdete.Value - jelentkezesHatarido.Value).TotalHours : null;
|
|
if (hatarido == null || hatarido == 0)
|
|
{
|
|
return FogadooraResource.Nincs;
|
|
}
|
|
|
|
return string.Format(FogadooraResource.ora, hatarido.Value);
|
|
}
|
|
|
|
private ActionResult PDFGeneralas(DataSet ds, string frxNeve, string dokumentumNeve, Dictionary<string, object> parameterek = null)
|
|
{
|
|
Config.WebMode = true;
|
|
|
|
const string _fileTemplate = "{0}/{1}.frx";
|
|
|
|
var report = new Report();
|
|
|
|
var mapPath = string.Format(_fileTemplate, ApplicationData.NyomtatasiSablonokKonyvtar, frxNeve);
|
|
report.Load(System.Web.Hosting.HostingEnvironment.MapPath(mapPath));
|
|
|
|
foreach (DataTable dt in ds.Tables)
|
|
{
|
|
report.RegisterData(dt, dt.TableName);
|
|
}
|
|
|
|
if (parameterek != null)
|
|
{
|
|
foreach (var parameter in parameterek)
|
|
{
|
|
report.SetParameterValue(parameter.Key, parameter.Value);
|
|
}
|
|
}
|
|
|
|
string script = report.ReportResourceString;
|
|
if (report.Report.Prepare())
|
|
{
|
|
PDFExport pdfExport = new PDFExport
|
|
{
|
|
ShowProgress = false,
|
|
Subject = "Subject",
|
|
Title = dokumentumNeve,
|
|
Compressed = true,
|
|
AllowPrint = true,
|
|
EmbeddingFonts = true,
|
|
Creator = Constants.ImportExport.Creator
|
|
};
|
|
|
|
var stream = new MemoryStream();
|
|
report.Report.Export(pdfExport, stream);
|
|
report.Dispose();
|
|
pdfExport.Dispose();
|
|
stream.Position = 0;
|
|
|
|
byte[] base64;
|
|
using (CryptoStream cryptoStream = new CryptoStream(stream, new ToBase64Transform(), CryptoStreamMode.Write))
|
|
using (StreamWriter streamWriter = new StreamWriter(cryptoStream))
|
|
{
|
|
streamWriter.Flush();
|
|
base64 = stream.ToArray();
|
|
}
|
|
var fileContents = Convert.ToBase64String(base64);
|
|
var dokumentumContent = new ContentResult() { Content = fileContents, ContentType = "application/pdf" };
|
|
|
|
return dokumentumContent;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
private ActionResult WordGeneralas(DataSet ds, string frxNeve, string dokumentumNeve, Dictionary<string, object> parameterek = null)
|
|
{
|
|
Config.WebMode = true;
|
|
|
|
const string _fileTemplate = "{0}/{1}.frx";
|
|
|
|
var report = new Report();
|
|
|
|
var mapPath = string.Format(_fileTemplate, ApplicationData.NyomtatasiSablonokKonyvtar, frxNeve);
|
|
report.Load(System.Web.Hosting.HostingEnvironment.MapPath(mapPath));
|
|
|
|
foreach (DataTable dt in ds.Tables)
|
|
{
|
|
report.RegisterData(dt, dt.TableName);
|
|
}
|
|
|
|
if (parameterek != null)
|
|
{
|
|
foreach (var parameter in parameterek)
|
|
{
|
|
report.SetParameterValue(parameter.Key, parameter.Value);
|
|
}
|
|
}
|
|
|
|
string script = report.ReportResourceString;
|
|
if (report.Report.Prepare())
|
|
{
|
|
RTFExport textExport = new RTFExport
|
|
{
|
|
ShowProgress = false,
|
|
Creator = Constants.ImportExport.Creator
|
|
};
|
|
|
|
var stream = new MemoryStream();
|
|
report.Report.Export(textExport, stream);
|
|
report.Dispose();
|
|
textExport.Dispose();
|
|
stream.Position = 0;
|
|
|
|
byte[] base64;
|
|
using (CryptoStream cryptoStream = new CryptoStream(stream, new ToBase64Transform(), CryptoStreamMode.Write))
|
|
using (StreamWriter streamWriter = new StreamWriter(cryptoStream))
|
|
{
|
|
streamWriter.Flush();
|
|
base64 = stream.ToArray();
|
|
}
|
|
var fileContents = Convert.ToBase64String(base64);
|
|
var dokumentumContent = new ContentResult() { Content = fileContents, ContentType = "application/doc" };
|
|
|
|
return dokumentumContent;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
}
|