kreta/KretaWeb/Areas/Nyomtatvanyok/Logic/NyomtatvanyokLogic.cs
2024-03-13 00:33:46 +01:00

861 lines
38 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Web.Mvc;
using FastReport;
using FastReport.Table;
using FastReport.Utils;
using ICSharpCode.SharpZipLib.Zip;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using Kreta.Web.Areas.Alkalmazott.Models;
using Kreta.Web.Areas.Nyomtatvanyok.Controllers;
using Kreta.Web.Areas.Nyomtatvanyok.Models;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Areas.Tanulo.Models;
using Kreta.Web.Controllers;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Security;
using Newtonsoft.Json;
namespace Kreta.Web.Areas.Nyomtatvanyok.Logic
{
public static class NyomtatvanyokLogic
{
private const float LABLEC_OLDALSZAM_MAGASSAG_MILIMETERBEN = 10;
private const float LABLEC_MAGASSAG_MILIMETERBEN = 22;
private const float KEP_MAGASSAG_MILIMETERBEN = 20;
private const float LABLEC_FUGGOLEGES_TAVOLSAG_MILIMETERBEN = 1;
private const float FEJLEC_MAGASSAG = 25;
public class DokumentumModel
{
public string SzervezetNev { get; set; }
public string EloadasHelyszin { get; set; }
public string EloadasNev { get; set; }
public string EloadasIdopontja { get; set; }
public string TanuloNev { get; set; }
public string TanuloOktAzon { get; set; }
}
public static ActionResult GetLepGondviseloEngedelyezesZip(string data)
{
var modelList = JsonConvert.DeserializeObject<List<DokumentumModel>>(data);
var outPut = new MemoryStream();
var zipOutPut = new ZipOutputStream(outPut);
try
{
var intezmenyAdatok = new IntezmenyHelper(ConnectionTypeExtensions.GetOrganizationConnectionType()).GetAktivIntezmenyNevCim();
string dokumentumNeve = "LEP_gondviselo_engedelyezes";
byte[] buffer = new byte[Constants.General.BufferSize];
foreach (var item in modelList)
{
var parameters = new Dictionary<string, object>
{
{"IntezmenyNev", intezmenyAdatok.Nev},
{"IntezmenyOmAzonosito", intezmenyAdatok.OMKod},
{"SzervezetNeve", item.SzervezetNev},
{"EloadasHelyszine", item.EloadasHelyszin},
{"EloadasNeve", item.EloadasNev},
{"Idopont", item.EloadasIdopontja},
{"TanuloNev", item.TanuloNev},
{"OktatasiAzonosito", item.TanuloOktAzon}
};
var filePath = System.Web.HttpContext.Current.Server.MapPath($"{ApplicationData.NyomtatasiSablonokKonyvtar}/LEP_gondviselo_engedelyezes.frx");
var stream = GetPdfMemoryStreamByPath(new DataSet(), filePath, parameters, pdfNeve: $"{item.TanuloNev}_{item.TanuloOktAzon}");
var entry = new ZipEntry($"{item.TanuloNev}_{item.TanuloOktAzon}.{Constants.ImportExport.FileFormatPdf}");
zipOutPut.PutNextEntry(entry);
int sourceBytes;
do
{
sourceBytes = stream.Read(buffer, 0, buffer.Length);
zipOutPut.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
zipOutPut.Finish();
outPut.Position = 0;
return new FileStreamResult(outPut, Constants.ImportExport.ContentType)
{
FileDownloadName = $"{dokumentumNeve}.zip"
};
}
catch (Exception ex)
{
throw NyomtatvanyError(ex);
}
}
public static string GetFileLetoltesUrlGondviseo(GondviseloJelszoIgenyloCo co, int tanevId)
{
var nevmodel = new NyomtatvanyNevGeneralasModel { TanevID = tanevId };
var fileName = CommonExtensions.NevGeneralas("BelepesiAdatok", nevmodel, forOrganization: true);
var stream = OnlineUrlapGondviselonek(co, tanevId);
var guid = Cache.Add(stream);
var fileFullName = $"{fileName}.pdf";
var url = new UrlHelper(System.Web.HttpContext.Current.Request.RequestContext);
return url.Action(nameof(CacheController.DownloadFile), nameof(CacheController).Replace("Controller", ""), new { guid, fileName = fileFullName, contentType = Kreta.Core.Constants.ContentTypes.Pdf, area = "" });
}
private static MemoryStream OnlineUrlapGondviselonek(GondviseloJelszoIgenyloCo co, int tanevId)
{
DateTime datum = DateTime.Today;
var intezmenyAdatok = new IntezmenyHelper(ConnectionTypeExtensions.GetOrganizationConnectionType()).GetAktivIntezmenyNevCim();
var parameters = new Dictionary<string, object>
{
{"Kelt", datum.ToString(Core.Constants.ToStringPattern.HungarianDate)},
{"IntezmenyNeve", intezmenyAdatok.Nev},
{"IntezmenyTelefon", intezmenyAdatok.Telefonszam},
{"IntezmenyOMKod", intezmenyAdatok.OMKod},
{"IntezmenyEmail", intezmenyAdatok.Email},
{"OktAzon", co.OktatasiAzonosito},
{"GondviseloEmail", co.GondviseloEmail},
{"GondviseloNev", co.GondviseloNev},
{"RokonsagiFok", co.RokonsagiFok.GetDisplayName<RokonsagiFokEnum>(tanevId)},
{"Orszag", co.Orszag.GetDisplayName<OrszagTipusEnum>(tanevId)},
{
"Helyiseg", co.Iranyitoszam + ", " +
co.HelysegNev + ", " +
co.KozteruletNev + " " +
co.KozteruletTipusNev
},
{"Hazszam", (co.Hazszam != null && (co.Emelet != null || co.Ajto != null)) ? co.Hazszam + "," : co.Hazszam},
{"Emelet", (co.Ajto != null) ? (co.Emelet != null ? co.Emelet + ". emelet, " : string.Empty) : (co.Emelet != null ? co.Emelet + ". emelet" : string.Empty)},
{"Ajto", (co.Ajto != null) ? co.Ajto + ". ajtó" : string.Empty}
};
return PDFNyomtatasGondviselo(new DataSet(), "UrlapGondviselonek", parameters, "Gondviselo_Urlap");
}
public static MemoryStream PDFNyomtatasGondviselo(DataSet ds, string frxNeve, Dictionary<string, object> parameterek = null, string pdfNeve = "Alap")
{
FastReport.Utils.Config.WebMode = true;
var report = new Report();
report.Load(System.Web.Hosting.HostingEnvironment.MapPath(ApplicationData.NyomtatasiSablonokKonyvtar + "/" + frxNeve + ".frx"));
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);
}
}
if (report.Report.Prepare())
{
FastReport.Export.Pdf.PDFExport pdfExport = new FastReport.Export.Pdf.PDFExport
{
ShowProgress = false,
Subject = "Subject",
Title = pdfNeve,
Compressed = true,
AllowPrint = true,
EmbeddingFonts = true
};
var stream = new MemoryStream();
report.Report.Export(pdfExport, stream);
report.Dispose();
pdfExport.Dispose();
stream.Position = 0;
return stream;
}
return null;
}
public static MemoryStream GetIktSzandeknyilatkozatAdatok()
{
try
{
DataSet ds = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetIktSzandeknyilatkozatAdatok();
var dokumentumNeve = "IktSzandeknyilatkozatok";
var filePath = System.Web.HttpContext.Current.Server.MapPath($"{ApplicationData.NyomtatasiSablonokKonyvtar}/{dokumentumNeve}.frx");
var result = GetPdfMemoryStreamByPath(ds, filePath, pdfNeve: dokumentumNeve, dokumentumTipus: Enums.DokumentumTipusEnum.TorzslapkivonatA4EsFelsobbEvfolyamokhozNemetGepi);
return result;
}
catch (Exception ex)
{
throw NyomtatvanyError(ex);
}
}
public static MemoryStream GetPdfMemoryStreamByPath(DataSet ds, string filePath, Dictionary<string, object> parameterek = null, string pdfNeve = "Alap", bool egyediLablecKellOldalszam = true, Enums.DokumentumTipusEnum? dokumentumTipus = null)
{
var result = GetPdfMemoryStream(ds, parameterek, pdfNeve, filePath, egyediLablecKellOldalszam, dokumentumTipus);
return result;
}
private static MemoryStream GetPdfMemoryStream(DataSet ds, Dictionary<string, object> parameterek, string pdfNeve, string filePath, bool egyediLablecKellOldalszam, Enums.DokumentumTipusEnum? dokumentumTipus)
{
FastReport.Utils.Config.WebMode = true;
var report = new Report();
report.Load(filePath);
var temp = report.ReportResourceString;
var (IsDokumentumFejlecMegjelenit, IsDokumentumLablecMegjelenit) = new NyomtatvanyokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetActualIntezmenyAdatok();
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (!IsEgyediFejlecLablecTiltott(dokumentumTipus))
{
if (IsDokumentumFejlecMegjelenit && IsDokumentumLablecMegjelenit)
{
Image fejlecImage = helper.GetIntezmenyFejlecDokumentum();
Image lablecImage = helper.GetIntezmenyLablecDokumentum();
EgyediFejlecLablec(report, fejlecImage, lablecImage, egyediLablecKellOldalszam);
}
if (IsDokumentumFejlecMegjelenit && !IsDokumentumLablecMegjelenit)
{
Image fejlecImage = helper.GetIntezmenyFejlecDokumentum();
EgyediFejlec(report, fejlecImage);
}
if (IsDokumentumLablecMegjelenit && !IsDokumentumFejlecMegjelenit)
{
Image lablecImage = helper.GetIntezmenyLablecDokumentum();
EgyediLablec(report, lablecImage, egyediLablecKellOldalszam);
}
}
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);
}
}
if (report.Report.Prepare())
{
FastReport.Export.Pdf.PDFExport pdfExport = new FastReport.Export.Pdf.PDFExport
{
ShowProgress = false,
Subject = "Subject",
Title = pdfNeve,
Compressed = true,
AllowPrint = true,
EmbeddingFonts = true
};
var stream = new MemoryStream();
report.Report.Export(pdfExport, stream);
report.Dispose();
pdfExport.Dispose();
stream.Position = 0;
return stream;
}
return null;
}
public static Report EgyediFejlecLablec(Report reportDetail, Image fejlec, Image lablec, bool kellOldalszam)
{
if (fejlec != null && lablec != null)
{
for (int i = 0; i < reportDetail.Pages.Count; i++)
{
ReportPage addHeaderAndFooterPage = reportDetail.Pages[i] as ReportPage;
EgyediFejlecGeneralas(fejlec, addHeaderAndFooterPage, i);
EgyediLablecGeneralas(lablec, addHeaderAndFooterPage, i, kellOldalszam);
}
}
return reportDetail;
}
public static Report EgyediFejlec(Report reportDetail, Image fejlec)
{
if (fejlec != null)
{
for (int i = 0; i < reportDetail.Pages.Count; i++)
{
ReportPage addHeaderPage = reportDetail.Pages[i] as ReportPage;
EgyediFejlecGeneralas(fejlec, addHeaderPage, i);
}
}
return reportDetail;
}
public static Report EgyediLablec(Report reportDetail, Image lablec, bool kellOldalszam)
{
if (lablec != null)
{
for (int i = 0; i < reportDetail.Pages.Count; i++)
{
ReportPage addFooterPage = reportDetail.Pages[i] as ReportPage;
EgyediLablecGeneralas(lablec, addFooterPage, i, kellOldalszam);
}
}
return reportDetail;
}
private static void EgyediFejlecGeneralas(Image fejlec, ReportPage reportPage, int pageIndex)
{
string reportName = reportPage.Name;
reportPage.CreateUniqueName();
reportPage.Name = reportName;
float pageWidth = reportPage.PaperWidth - Constants.ImportExport.PageWidthCorrect;
reportPage.PageHeader = new PageHeaderBand
{
Name = "newHeader" + pageIndex,
Height = SetSizeToMilimeter(FEJLEC_MAGASSAG)
};
ComponentBase pageHeader;
if (reportPage.Columns.Count > 1)
{
pageHeader = CreateTableObject(fejlec, pageWidth, reportPage.Columns.Count);
}
else
{
pageHeader = CreatePictureObject(fejlec, pageWidth);
}
reportPage.PageHeader.Objects.Add(pageHeader);
}
private static ComponentBase CreateTableObject(Image image, float width, int columnCount)
{
var tableHeader = new TableObject
{
RowCount = 1,
ColumnCount = columnCount,
Width = SetSizeToMilimeter(width)
};
var columnWidth = width / columnCount;
for (int i = 0; i < columnCount; i++)
{
tableHeader.Columns[i].MaxWidth = SetSizeToMilimeter(columnWidth);
tableHeader.Columns[i].Width = SetSizeToMilimeter(columnWidth);
tableHeader[i, 0].AddChild(CreatePictureObject(image, columnWidth));
}
return tableHeader;
}
private static ComponentBase CreatePictureObject(Image image, float width)
{
PictureObject pictureHeader = new PictureObject
{
Width = SetSizeToMilimeter(width),
Height = SetSizeToMilimeter(KEP_MAGASSAG_MILIMETERBEN),
Image = image
};
pictureHeader.CreateUniqueName();
return pictureHeader;
}
private static void EgyediLablecGeneralas(Image lablec, ReportPage reportPage, int pageIndex, bool kellOldalszam)
{
string reportName = reportPage.Name;
reportPage.CreateUniqueName();
reportPage.Name = reportName;
float pageWidth = reportPage.PaperWidth - Constants.ImportExport.PageWidthCorrect;
reportPage.PageFooter = new PageFooterBand
{
Name = "newFooter" + pageIndex,
Height = SetSizeToMilimeter(LABLEC_MAGASSAG_MILIMETERBEN + (kellOldalszam ? LABLEC_OLDALSZAM_MAGASSAG_MILIMETERBEN : 0))
};
ComponentBase pageFooter;
if (reportPage.Columns.Count > 1)
{
pageFooter = CreateTableObject(lablec, pageWidth, reportPage.Columns.Count);
}
else
{
pageFooter = CreatePictureObject(lablec, pageWidth);
}
pageFooter.Top = SetSizeToMilimeter(LABLEC_FUGGOLEGES_TAVOLSAG_MILIMETERBEN);
reportPage.PageFooter.Objects.Add(pageFooter);
if (kellOldalszam)
{
TextObject footerText = new TextObject();
footerText.CreateUniqueName();
footerText.Bounds = new RectangleF(0.0f, 0.5f * Units.Centimeters, 19.0f * Units.Centimeters, SetSizeToMilimeter(LABLEC_OLDALSZAM_MAGASSAG_MILIMETERBEN));
footerText.Top = SetSizeToMilimeter(LABLEC_FUGGOLEGES_TAVOLSAG_MILIMETERBEN + KEP_MAGASSAG_MILIMETERBEN + LABLEC_FUGGOLEGES_TAVOLSAG_MILIMETERBEN);
footerText.Width = SetSizeToMilimeter(pageWidth);
footerText.HorzAlign = HorzAlign.Center;
footerText.VertAlign = VertAlign.Center;
footerText.Text = Constants.ImportExport.FrxPageCount;
reportPage.PageFooter.Objects.Add(footerText);
}
}
public static bool IsEgyediFejlecLablecTiltott(Enums.DokumentumTipusEnum? dokumentumTipus)
{
if (!dokumentumTipus.HasValue)
{
return false;
}
switch (dokumentumTipus.Value)
{
case Enums.DokumentumTipusEnum.TorzslapAz1tol3EsFelsobbEvfolyamokSzovegesMinositesehez:
case Enums.DokumentumTipusEnum.TorzslapAz1tol3EsFelsobbEvfolyamokSzovegesMinositesehezAngolGepi:
case Enums.DokumentumTipusEnum.TorzslapAz1tol3EsFelsobbEvfolyamokSzovegesMinositesehezMuveszetoktatasban:
case Enums.DokumentumTipusEnum.TorzslapAz1tol3EsFelsobbEvfolyamokSzovegesMinositesehezNemetGepi:
case Enums.DokumentumTipusEnum.TorzslapkivonatA4EsFelsobbEvfolyamokhozAngolGepi:
case Enums.DokumentumTipusEnum.TorzslapkivonatA4EsFelsobbEvfolyamokhozGepi:
case Enums.DokumentumTipusEnum.TorzslapkivonatA4EsFelsobbEvfolyamokhozGepiMuveszetoktatasban:
case Enums.DokumentumTipusEnum.TorzslapkivonatA4EsFelsobbEvfolyamokhozNemetGepi:
return true;
default:
return false;
}
}
public static float SetSizeToMilimeter(float size)
{
return size * Units.Millimeters;
}
public static string KeltSzoveg(DateTime datum, int formatumId)
{
if (formatumId == (int)KeltFormatumTipusEnum.Szammal)
{
return datum.ToString(Core.Constants.ToStringPattern.HungarianDateWithSpaces);
}
return datum.Date.ToString("yyyy. MMMM dd.", new CultureInfo("hu-HU"));
}
public static StatusError NyomtatvanyError(Exception ex, string plusMessage = null)
{
var message = NyomtatvanyokResource.NyomtatvanyGeneralasHiba;
if (ex.Message == NyomtatvanyokResource.UresDokumentum)
{
message = NyomtatvanyokResource.NemTartalmazRelevansAdatokat;
}
else if (ex.Message == NyomtatvanyokResource.ATanulonakFelnottkepzesiJogviszonyaVan)
{
message = NyomtatvanyokResource.ATanulonakFelnottkepzesiJogviszonyaVan;
}
else if (ex.Message == NyomtatvanyokResource.MindenTanulonakFelnottkepzesiJogviszonyaVan)
{
message = NyomtatvanyokResource.MindenTanulonakFelnottkepzesiJogviszonyaVan;
}
else if (ex.Message == NyomtatvanyokResource.JelzettNaponTanulonakNemVoltJelen)
{
message = NyomtatvanyokResource.JelzettNaponTanulonakNemVoltJelen;
}
else if (ex.Message == NyomtatvanyokResource.ATanuloknakNemNappaliRendszeruOktatasVanBeallitva)
{
message = NyomtatvanyokResource.ATanuloknakNemNappaliRendszeruOktatasVanBeallitva;
}
else if (ex.Message == NyomtatvanyokResource.TanulohozNincsMentorHozzarendelve)
{
message = NyomtatvanyokResource.TanulohozNincsMentorHozzarendelve;
}
else if (ex.Message == NyomtatvanyokResource.TanulonakNincsRogzitveGondviselo)
{
message = NyomtatvanyokResource.TanulonakNincsRogzitveGondviselo;
}
else if (ex.Message == TanuloResource.ATanulonakNincsRogzitettTorvenyesKepviseloje)
{
message = TanuloResource.ATanulonakNincsRogzitettTorvenyesKepviseloje;
}
else if (
ex.InnerException.Message.Contains(NyomtatvanyokResource.TanulonalKotelezoKotelezoenValaszthatoTargyakSzamaNagyobbMintMaxSor)
|| ex.InnerException.Message.Contains(NyomtatvanyokResource.TanulonalValaszthatoTargyakSzamaNagyobbMintMaxSor)
|| ex.InnerException.Message.Contains(NyomtatvanyokResource.TanulonalKotelezoTargyakSzamaNagyobbMintMaxSor)
|| ex.InnerException.Message.Contains(NyomtatvanyokResource.TanulonalKotelezoenValaszthatoTargyakSzamaNagyobbMintMaxSor)
|| ex.InnerException.Message.Contains(NyomtatvanyokResource.TanulonalFotargyakSzamaNagyobbMintMaxSor))
{
message = ex.InnerException.Message;
}
if (!string.IsNullOrWhiteSpace(plusMessage))
{
message += plusMessage;
}
var result = new StatusError(
HttpStatusCode.InternalServerError,
message)
{
UnHandledException = ex
};
return result;
}
public static StatusError NyomtatvanyError(string message, HttpStatusCode statusCode = HttpStatusCode.InternalServerError)
{
var result = new StatusError(statusCode, message);
return result;
}
public static (bool HasSzovegesErtekelesHosszLimit, string WarningText) GetSzovegesErtekelesHosszValidationDeatails(int nyomtatvanyId)
{
var defaultResult = (false, string.Empty);
if (!Core.Constants.OsszesErtesitokWithSzovegesErtekelesHosszLimit().Contains(nyomtatvanyId))
{
return defaultResult;
}
if (Core.Constants.FeleviErtesitokWithSzovegesErtekelesHosszLimit.Contains(nyomtatvanyId))
{
return (true, string.Format(NyomtatvanyokResource.SzovegesErtekelesHosszLimitText, $"a \"{NyomtatvanyokResource.FeleviErtesito}"));
}
if (Core.Constants.EvVegiErtesitokWithSzovegesErtekelesHosszLimit.Contains(nyomtatvanyId))
{
return (true, string.Format(NyomtatvanyokResource.SzovegesErtekelesHosszLimitText, $"az \"{NyomtatvanyokResource.EvVegiErtesito}"));
}
if (Core.Constants.INegyedeviErtesitokWithSzovegesErtekelesHosszLimit.Contains(nyomtatvanyId))
{
return (true, string.Format(NyomtatvanyokResource.SzovegesErtekelesHosszLimitText, $"az \"{NyomtatvanyokResource.INegyedeviErtesito}"));
}
if (Core.Constants.IINegyedeviErtesitokWithSzovegesErtekelesHosszLimit.Contains(nyomtatvanyId))
{
return (true, string.Format(NyomtatvanyokResource.SzovegesErtekelesHosszLimitText, $"a \"{NyomtatvanyokResource.IINegyedeviErtesito}"));
}
if (Core.Constants.IIINegyedeviErtesitokWithSzovegesErtekelesHosszLimit.Contains(nyomtatvanyId))
{
return (true, string.Format(NyomtatvanyokResource.SzovegesErtekelesHosszLimitText, $"a \"{NyomtatvanyokResource.IIINegyedeviErtesito}"));
}
if (Core.Constants.IVNegyedeviErtesitokWithSzovegesErtekelesHosszLimit.Contains(nyomtatvanyId))
{
return (true, string.Format(NyomtatvanyokResource.SzovegesErtekelesHosszLimitText, $"a \"{NyomtatvanyokResource.IVNegyedeviErtesito}"));
}
return defaultResult;
}
public static void AddQrCode(Report report, Bitmap qrCode)
{
if (report.FindObject("PictureQr") is PictureObject pic)
{
pic.Image = qrCode;
}
}
public static void ValidateFelnottkepzes(List<int> tanulocsoportIdList, List<int> osztalyIdList, NyomtatvanyokHelper helper)
{
if (tanulocsoportIdList != null)
{
var kivalasztottTanulokOsztalyai = helper.GetOsztalyIdListByTanulocsoportIdList(tanulocsoportIdList);
var tovabbiKivalasztottOsztalyok = osztalyIdList.Except(kivalasztottTanulokOsztalyai).ToList();
if (tovabbiKivalasztottOsztalyok.Count > 0)
{
var tovabbiOsztalyokTanulocsoportIdList = helper.GetTanulocsoportIdByOsztalyIdList(tovabbiKivalasztottOsztalyok);
tanulocsoportIdList.AddRange(tovabbiOsztalyokTanulocsoportIdList);
}
tanulocsoportIdList = tanulocsoportIdList.Distinct().ToList();
if (tanulocsoportIdList.Count == 0)
{
throw new Exception(NyomtatvanyokResource.UresDokumentum);
}
else if (tanulocsoportIdList.Count == 1)
{
if (helper.IsTanuloFelnottkepzesJogviszonyByTanulocsoportId(tanulocsoportIdList[0]))
{
throw new Exception(NyomtatvanyokResource.ATanulonakFelnottkepzesiJogviszonyaVan);
}
}
else
{
if (helper.IsAllTanuloFelnottkepzesJogviszonyByTanulocsoportIdList(tanulocsoportIdList))
{
throw new Exception(NyomtatvanyokResource.MindenTanulonakFelnottkepzesiJogviszonyaVan);
}
}
return;
}
if (osztalyIdList != null)
{
var tanuloList = helper.GetNumberOfTanuloNemFelnottkepzesJogviszonyByOsztalyIdList(osztalyIdList);
if (tanuloList == null || tanuloList == 0)
{
throw new Exception(NyomtatvanyokResource.UresDokumentum);
}
}
}
public static void ValidateJogviszonyLetolthetosegSzakkepzo(List<int> tanulocsoportIdList, List<int> osztalyIdList, NyomtatvanyokHelper helper, bool isSelectedTanev21_22orLater)
{
var nyomtathatoJogviszonyosTanerviJellegekIdList = new int[] { (int)TanterviJellegEnum.nappali_rendszeru_iskolai_oktatas, (int)TanterviJellegEnum.felnottoktatas_nappali_rendszeru };
if (tanulocsoportIdList != null)
{
var kivalasztottTanulokOsztalyai = helper.GetOsztalyIdListByTanulocsoportIdList(tanulocsoportIdList);
var tovabbiKivalasztottOsztalyok = osztalyIdList.Except(kivalasztottTanulokOsztalyai).ToList();
if (tovabbiKivalasztottOsztalyok.Count > 0)
{
var tovabbiOsztalyokTanulocsoportIdList = helper.GetTanulocsoportIdByOsztalyIdList(tovabbiKivalasztottOsztalyok);
tanulocsoportIdList.AddRange(tovabbiOsztalyokTanulocsoportIdList);
}
tanulocsoportIdList = tanulocsoportIdList.Distinct().ToList();
var adatok = helper.GetJogviszonyTipusTanterviJellegByTanulocsoportIdList(tanulocsoportIdList);
if (adatok.Any(x => x.jogviszonyId == (int)JogviszonyTipusEnum.felnottkepzesi_jogviszony))
{
if (tanulocsoportIdList.Count == 1)
{
throw new Exception(NyomtatvanyokResource.ATanulonakFelnottkepzesiJogviszonyaVan);
}
else
{
if (adatok.All(x => x.jogviszonyId == (int)JogviszonyTipusEnum.felnottkepzesi_jogviszony))
{
throw new Exception(NyomtatvanyokResource.MindenTanulonakFelnottkepzesiJogviszonyaVan);
}
}
}
if (adatok.Any(x => !x.jogviszonyId.IsEntityId() && !nyomtathatoJogviszonyosTanerviJellegekIdList.Contains(x.tanterviJellegId)))
{
if (isSelectedTanev21_22orLater && (tanulocsoportIdList.Count == 1
|| adatok.All(x => !x.jogviszonyId.IsEntityId() && !nyomtathatoJogviszonyosTanerviJellegekIdList.Contains(x.tanterviJellegId))))
{
throw new Exception(NyomtatvanyokResource.ATanuloknakNemNappaliRendszeruOktatasVanBeallitva);
}
}
return;
}
if (osztalyIdList != null)
{
var adatok = helper.GetJogviszonyTipusTanterviJellegByOsztalyIdList(osztalyIdList);
if (!adatok.Any())
{
throw new Exception(NyomtatvanyokResource.UresDokumentum);
}
if (adatok.All(x => x.jogviszonyId == (int)JogviszonyTipusEnum.felnottkepzesi_jogviszony))
{
throw new Exception(NyomtatvanyokResource.MindenTanulonakFelnottkepzesiJogviszonyaVan);
}
if (adatok.All(x => !x.jogviszonyId.IsEntityId() && !nyomtathatoJogviszonyosTanerviJellegekIdList.Contains(x.tanterviJellegId)) && isSelectedTanev21_22orLater)
{
throw new Exception(NyomtatvanyokResource.ATanuloknakNemNappaliRendszeruOktatasVanBeallitva);
}
}
}
#region Tanulói kapcsolat keresés
internal static List<(string tanuloNev, DataSet tanuloKapcsolatKeresoAdatok)> GetTanulokKapcsolatKereso(NyomtatvanyokController.NyomtatvanyModel model, TanuloiKapcsolatKeresesModel tanuloiKapcsolatKeresesAdatok)
{
var tanulokKapcsolatai = new List<(string, DataSet)>();
foreach (var tanuloId in model.TanuloIdList)
{
var tanuloNev = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanuloNev(tanuloId);
var tanuloKapcsolatKeresoAdatok = GetTanuloiKapcsolatKereso(tanuloId, model.KeltDatum, tanuloiKapcsolatKeresesAdatok);
tanulokKapcsolatai.Add((tanuloNev, tanuloKapcsolatKeresoAdatok));
}
return tanulokKapcsolatai;
}
public static DataSet GetTanuloiKapcsolatKereso(int tanuloId, DateTime keresettNap, TanuloiKapcsolatKeresesModel tanuloiKapcsolatKeresesModel)
{
DataSet mainDataSet = new DataSet();
var foglalkozasokonJelenlevoTanuloId = new List<int>();
var foglalkozasokonJelenlevoAlkalmazottId = new List<int>();
var foglalkozasokonHasznaltTeremId = new List<int>();
var foglalkozasiAdatok = tanuloiKapcsolatKeresesModel.MegtartottTanorak.FoglalkozasiAdatokFilter(tanuloId, keresettNap, foglalkozasokonJelenlevoTanuloId, foglalkozasokonJelenlevoAlkalmazottId, foglalkozasokonHasznaltTeremId);
mainDataSet.Tables.Add(foglalkozasiAdatok.Tables[0].Copy());
mainDataSet.Tables[0].TableName = "Foglalkozási adatok";
var tanuloiAdatok = tanuloiKapcsolatKeresesModel.TanuloiAdatok.AdatokFilter(foglalkozasokonJelenlevoTanuloId);
mainDataSet.Tables.Add(tanuloiAdatok.Tables[0].Copy());
mainDataSet.Tables[1].TableName = "Tanulói adatok";
var gondviseloiAdatok = tanuloiKapcsolatKeresesModel.GondviseloiAdatok.AdatokFilter(foglalkozasokonJelenlevoTanuloId);
mainDataSet.Tables.Add(gondviseloiAdatok.Tables[0].Copy());
mainDataSet.Tables[2].TableName = "Gondviselői adatok";
var alkalmazottiAdatok = tanuloiKapcsolatKeresesModel.AlkalmazottiAdatok.AdatokFilter(foglalkozasokonJelenlevoAlkalmazottId);
mainDataSet.Tables.Add(alkalmazottiAdatok.Tables[0].Copy());
mainDataSet.Tables[3].TableName = "Alkalmazotti adatok";
var tanteremAdatok = tanuloiKapcsolatKeresesModel.MegtartottTanorak.AdatokFilter(foglalkozasokonHasznaltTeremId, "TeremId");
mainDataSet.Tables.Add(tanteremAdatok.Tables[0].Copy());
mainDataSet.Tables[4].TableName = "Tanterem adatok";
NyomtatvanyokTanulokHelper.FoglalkozasiAdatokFeleslegesOszlopokTorlese(mainDataSet.Tables[0]);
NyomtatvanyokTanulokHelper.TanuloiEsGondviseloiEsAlkalmazottiAdatokFeleslegesOszlopokTorlese(mainDataSet.Tables[1]);
NyomtatvanyokTanulokHelper.TanuloiEsGondviseloiEsAlkalmazottiAdatokFeleslegesOszlopokTorlese(mainDataSet.Tables[2]);
NyomtatvanyokTanulokHelper.TanuloiEsGondviseloiEsAlkalmazottiAdatokFeleslegesOszlopokTorlese(mainDataSet.Tables[3]);
NyomtatvanyokTanulokHelper.FoglalkozasiAdatokFeleslegesOszlopokTorlese(mainDataSet.Tables[4]);
return mainDataSet;
}
#region DataSet szűrések
private static DataSet AdatokFilter(this DataSet adatok, List<int> foglalkozasokonJelenlevoAlkalmazottId, string felhasznaloIdOszlopNev = "FelhasznaloId")
{
var adatokFilter = adatok.Clone();
foreach (DataRow adat in adatok.Tables[0].Rows)
{
var felhasznaloId = SDAConvert.ToInt32(adat[felhasznaloIdOszlopNev]);
if (foglalkozasokonJelenlevoAlkalmazottId.Contains(felhasznaloId))
{
adatokFilter.Tables[0].ImportRow(adat);
}
}
return adatokFilter;
}
public static DataSet FoglalkozasiAdatokFilter(this DataSet megtartottTanorak, int tanuloId, DateTime keresettNap, List<int> foglalkozasokonJelenlevoTanuloId, List<int> foglalkozasokonJelenlevoAlkalmazottId, List<int> foglalkozasokonHasznaltTeremId)
{
DataSet foglalkozasiAdatokFilter = megtartottTanorak.Clone();
var systemHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var alapertelmezettMulasztasTipus = (MulasztasTipusEnum)systemHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.alapertelmezett_statusz_naplozasok_eseteben);
var tanevCo = tanevHelper.GetTanevInfo();
foreach (DataRow megtartottTanora in megtartottTanorak.Tables[0].Rows)
{
var foglalkozasiAdatokCo = new NyomtatvanyokFoglalkozasiAdatokCo(megtartottTanora);
var megtartottTanoraTanuloi = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType())
.GetMulasztasEsFelmentesOsztalyCsoportTanuloi(foglalkozasiAdatokCo.OsztalycsoportId, foglalkozasiAdatokCo.TanoraId, foglalkozasiAdatokCo.TargyId, foglalkozasiAdatokCo.TanarId, keresettNap, 1, tanevCo, alapertelmezettMulasztasTipus);
var megtartottTanoraTanuloiIdLista = (from DataRow dataRow in megtartottTanoraTanuloi.Tables[0].Rows where (SDAConvert.ToInt32(dataRow["MulasztasTipus"]) == (int)MulasztasTipusEnum.jelenlet || SDAConvert.ToInt32(dataRow["MulasztasTipus"]) == (int)MulasztasTipusEnum.keses) select SDAConvert.ToInt32(dataRow["ID"]));
if (megtartottTanoraTanuloiIdLista.Contains(tanuloId))
{
foglalkozasiAdatokFilter.Tables[0].ImportRow(megtartottTanora);
foglalkozasokonJelenlevoTanuloId.AddRange(megtartottTanoraTanuloiIdLista);
foglalkozasokonJelenlevoAlkalmazottId.Add(foglalkozasiAdatokCo.TanarId);
foglalkozasokonHasznaltTeremId.Add(foglalkozasiAdatokCo.TeremId);
}
}
foglalkozasokonJelenlevoTanuloId = foglalkozasokonJelenlevoTanuloId.Distinct().ToList();
return foglalkozasiAdatokFilter;
}
#endregion
#region DataSet feltöltés
public static TanuloiKapcsolatKeresesModel TanuloiKapcsolatKeresesAdatok(DateTime keresettNap)
{
var tanuloiKapcsolatKeresesModel = new TanuloiKapcsolatKeresesModel();
tanuloiKapcsolatKeresesModel.MegtartottTanorak = MegtartottTanorak(keresettNap);
tanuloiKapcsolatKeresesModel.TanuloiAdatok = TanuloiAdatok();
tanuloiKapcsolatKeresesModel.GondviseloiAdatok = GondviseloiAdatok();
tanuloiKapcsolatKeresesModel.AlkalmazottiAdatok = AlkalmazottiAdatok();
return tanuloiKapcsolatKeresesModel;
}
private static DataSet MegtartottTanorak(DateTime keresettNap)
{
var megtartottTanorakKeresoModel = new TanitasiOraSearchModel() { DatumTol = keresettNap, DatumIg = keresettNap, FeladatKategoriaId = Constants.MindenErteke.FeladatKategoria };
return new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetMegtartottTanorakExport(Orarend.Models.TanitasiOraSearchModel.ConvertModelToCo(megtartottTanorakKeresoModel), isShowId: true);
}
private static DataSet TanuloiAdatok()
{
var model = new TanuloSearchModel() { FeladatKategoriaId = Constants.MindenErteke.FeladatKategoria };
return new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanulokLakcimmelExport(model.ConvertModelToCo(ConnectionTypeExtensions.GetSessionConnectionType(), ClaimData.IsActivTanev), isShowId: true);
}
private static DataSet GondviseloiAdatok()
{
var model = new TanuloSearchModel() { FeladatKategoriaId = Constants.MindenErteke.FeladatKategoria };
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
return new TanuloHelper(connectionType).GetGondviselokElerhetosegeiExport(model.ConvertModelToCo(connectionType, ClaimData.IsActivTanev), OktNevelesiKategoriaEnum.NevelesOktatas, isShowId: true);
}
private static DataSet AlkalmazottiAdatok()
{
var model = new AlkalmazottSearchModel() { };
return new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottakLakcimmelExport(model.ConvertModelToCo(), isShowId: true);
}
#endregion
#endregion
}
}