185 lines
8.8 KiB
C#
185 lines
8.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
|
using Kreta.BusinessLogic.Helpers.ImportExport;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.DataAccessManual;
|
|
using Kreta.DataAccessManual.Interfaces;
|
|
using Kreta.DataAccessManual.ParameterClasses;
|
|
using Kreta.DataAccessManual.Util;
|
|
using Kreta.Enums.ManualEnums;
|
|
using Kreta.Enums.ManualEnums.ImportExport;
|
|
using Kreta.Resources;
|
|
|
|
namespace Kreta.BusinessLogic.Helpers
|
|
{
|
|
public class OrarendTorleseHelper : LogicBase
|
|
{
|
|
public OrarendTorleseHelper(IConnectionType connectionType) : base(connectionType)
|
|
{
|
|
}
|
|
|
|
public List<(string Text, string Value)> GetFeladatellatasiHelyek(bool isKellOcsDarabszam = false)
|
|
{
|
|
var ret = new List<(string Text, string Value)>();
|
|
Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var dal = h.FeladatEllatasiHelyDal();
|
|
var ds = dal.GetFeladatEllatasiHelyekForkDropDown(TanevId);
|
|
ret.AddRange(ds.Tables[0].AsEnumerable().OrderBy(x => x.Field<int>("MukodesiHelyID")).ThenBy(x => x.Field<int>("OktNevFel")).Select(x => (Text: x.Field<string>("Nev"), Value: x.Field<int>("ID").ToString())));
|
|
if (isKellOcsDarabszam)
|
|
{
|
|
for (int i = 0; i < ret.Count; i++)
|
|
{
|
|
var felhely = ret[i];
|
|
var ocsRows = dal.GetFeladatellatasiHelyOsztalycsoportjai(int.Parse(felhely.Value), TanevId).Tables[0].AsEnumerable();
|
|
int osztalySzam = ocsRows.Count(x => x.Field<string>("Tipus") == "Osztály");
|
|
int csoportSzam = ocsRows.Count(x => x.Field<string>("Tipus") == "Csoport");
|
|
felhely.Text += $" (Osztályok száma: {osztalySzam}, Csoportok száma: {csoportSzam})";
|
|
ret[i] = felhely;
|
|
}
|
|
}
|
|
});
|
|
return ret;
|
|
}
|
|
|
|
public (DateTime EvKezdoNapja, DateTime EvUtolsoNapja) GetMinMaxDatumValaszto()
|
|
{
|
|
var tanevInfo = new TanevHelper(ConnectionType).GetTanevInfo();
|
|
return (EvKezdoNapja: tanevInfo.KezdoNap, EvUtolsoNapja: tanevInfo.UtolsoNap);
|
|
}
|
|
|
|
public List<(string Text, string Value)> GetNezetTipusok()
|
|
{
|
|
return Enum.GetValues(typeof(OrarendekTorleseNezetTipusEnum)).OfType<OrarendekTorleseNezetTipusEnum>().Select(x => (Text: x.GetDisplayName(TanevId), Value: x.ToString())).ToList();
|
|
}
|
|
|
|
public List<(string FileName, MemoryStream FileStream)> OrarendekTorlese(OrarendekTorleseCo orarendekTorleseCo)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, (h) =>
|
|
{
|
|
var orarendiOraDal = h.OrarendiOra();
|
|
|
|
var orarendekTorlesePco = orarendekTorleseCo.ConvertToPco(TanevId, FelhasznaloId);
|
|
|
|
var exportok = GetExportok(h, orarendekTorlesePco);
|
|
|
|
orarendiOraDal.OrarendekTorlese(orarendekTorlesePco);
|
|
|
|
return exportok;
|
|
});
|
|
}
|
|
|
|
private List<(string FileName, MemoryStream FileStream)> GetExportok(IDalHandler dalHandler, OrarendekTorlesePco orarendekTorlesePco)
|
|
{
|
|
var orarendiOraDal = dalHandler.OrarendiOra();
|
|
var importExportDal = dalHandler.ImportExportDal();
|
|
|
|
var exportAdatokDs = orarendiOraDal.GetExportAdatokForOrarendekTorlese(orarendekTorlesePco);
|
|
|
|
var orarendExportAdatokDs = importExportDal.GetOrarendExcelExportData(TanevId, orarendekTorlesePco.IntervallumKezdete, orarendekTorlesePco.IntervallumVege, isOraErvenyessegiIdovel: true, isIdoszakonKivuliElemekMegjelenitese: true);
|
|
|
|
var results = new List<(string FileName, MemoryStream FileStream)>();
|
|
|
|
var orarendImportExportHelper = new OrarendImportExportHelper(new DalHandlerConnectionType(ConnectionType, dalHandler));
|
|
|
|
var exportAdatok = exportAdatokDs.Tables[0].AsEnumerable().Select(r => new OrarendekTorleseExportAdatokCo
|
|
{
|
|
Id = r.Field<int>("Id"),
|
|
ErvenyessegKezdete = r.Field<DateTime>("ErvenyessegKezdete"),
|
|
ErvenyessegVege = r.Field<DateTime>("ErvenyessegVege"),
|
|
IsNapirend = r.Field<bool>("IsNapirend")
|
|
}).ToList();
|
|
|
|
var existsTanora = exportAdatok.Any(a => !a.IsNapirend);
|
|
var existsNapirendiOra = exportAdatok.Any(a => a.IsNapirend);
|
|
var orarendExportList = GetOrarendExportList(orarendekTorlesePco.NezetTipus, existsTanora, existsNapirendiOra);
|
|
foreach (var (FileName, OrarendExportSettings) in orarendExportList)
|
|
{
|
|
var exportDataSet = CreateExportDataSet(exportAdatok, orarendExportAdatokDs, OrarendExportSettings.IsNapirendImport);
|
|
var workbookMemoryStream = orarendImportExportHelper.GetWorkbook(OrarendExportSettings, exportDataSet);
|
|
results.Add((FileName, workbookMemoryStream));
|
|
}
|
|
|
|
return results;
|
|
}
|
|
|
|
private IEnumerable<(string FileName, OrarendImportFileUploadCo OrarendExportSettings)> GetOrarendExportList(OrarendekTorleseNezetTipusEnum nezetTipus, bool existsTanora, bool existsNapirendiOra)
|
|
{
|
|
var results = new List<(string FileName, OrarendImportFileUploadCo OrarendExportSettings)>();
|
|
|
|
if (existsTanora && nezetTipus != OrarendekTorleseNezetTipusEnum.Napirend)
|
|
{
|
|
results.Add((ImportExportOrarendResource.ExportFileName,
|
|
new OrarendImportFileUploadCo
|
|
{
|
|
OrarendImportTipus = (int)OrarendImportTipusEnum.Import,
|
|
IsNapirendImport = false,
|
|
WorksheetName = ImportExportOrarendResource.ImportDefaultSheetNameOrarend,
|
|
ExcelHeaderList = OrarendImportExportHelper.ImportHeaderList
|
|
}));
|
|
|
|
results.Add((ImportExportOrarendResource.ExportFileNameErvenyessegiIdovel,
|
|
new OrarendImportFileUploadCo
|
|
{
|
|
OrarendImportTipus = (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport,
|
|
IsNapirendImport = false,
|
|
WorksheetName = ImportExportOrarendResource.ImportDefaultSheetNameOrarendErvenyessegiIdovel,
|
|
ExcelHeaderList = OrarendImportExportHelper.ImportHeaderListOraErvenyessegiIdovel
|
|
}));
|
|
}
|
|
|
|
if (existsNapirendiOra && nezetTipus != OrarendekTorleseNezetTipusEnum.Tanora)
|
|
{
|
|
results.Add((ImportExportOrarendResource.ExportFileNameNapirend,
|
|
new OrarendImportFileUploadCo
|
|
{
|
|
OrarendImportTipus = (int)OrarendImportTipusEnum.Import,
|
|
IsNapirendImport = true,
|
|
WorksheetName = ImportExportOrarendResource.ImportDefaultSheetNameNapirend,
|
|
ExcelHeaderList = OrarendImportExportHelper.ImportHeaderListNapirend
|
|
}));
|
|
|
|
results.Add((ImportExportOrarendResource.ExportFileNameNapirendErvenyessegiIdovel,
|
|
new OrarendImportFileUploadCo
|
|
{
|
|
OrarendImportTipus = (int)OrarendImportTipusEnum.ErvenyessegiIdovelImport,
|
|
IsNapirendImport = true,
|
|
WorksheetName = ImportExportOrarendResource.ImportDefaultSheetNameNapirendErvenyessegiIdovel,
|
|
ExcelHeaderList = OrarendImportExportHelper.ImportHeaderListNapirendOraErvenyessegiIdovel
|
|
}));
|
|
}
|
|
|
|
return results;
|
|
}
|
|
|
|
private DataSet CreateExportDataSet(List<OrarendekTorleseExportAdatokCo> exportAdatok, DataSet orarendExportAdatokDs, bool isNapirend)
|
|
{
|
|
var filteredExportAdatok = exportAdatok.Where(a => isNapirend ? a.IsNapirend : !a.IsNapirend);
|
|
|
|
var exportDs = orarendExportAdatokDs.Copy();
|
|
foreach (DataRow dataRow in exportDs.Tables[0].Rows)
|
|
{
|
|
var orarendiOraId = dataRow.Field<int>("Id");
|
|
var exportAdat = filteredExportAdatok.FirstOrDefault(a => a.Id == orarendiOraId);
|
|
if (exportAdat != null)
|
|
{
|
|
dataRow.SetField("OraErvenyessegKezdete", exportAdat.ErvenyessegKezdete);
|
|
dataRow.SetField("OraErvenyessegVege", exportAdat.ErvenyessegVege);
|
|
}
|
|
else
|
|
{
|
|
dataRow.Delete();
|
|
}
|
|
}
|
|
|
|
exportDs.AcceptChanges();
|
|
return exportDs;
|
|
}
|
|
}
|
|
}
|