280 lines
11 KiB
C#
280 lines
11 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.Logic;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.DataAccessManual;
|
|
using Kreta.Enums;
|
|
using Kreta.Resources;
|
|
using OfficeOpenXml;
|
|
|
|
namespace Kreta.BusinessLogic.Helpers
|
|
{
|
|
public class IgazolasHelper : LogicBase
|
|
{
|
|
public IgazolasHelper(IConnectionType connectionType) : base(connectionType) { }
|
|
|
|
public IgazolasCO GetIgazolasCoById(int id)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, helper =>
|
|
{
|
|
var igazolasDal = helper.IgazolasDal(GridParameters);
|
|
var entity = igazolasDal.Get(id);
|
|
|
|
return new IgazolasCO(entity);
|
|
});
|
|
}
|
|
|
|
public IgazolasCO GetIgazolasInfo(int id)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var iDal = h.IgazolasDal();
|
|
var tDal = h.TanuloCsoport();
|
|
|
|
var igazolasInfok = iDal.GetIgazolasInfo(id);
|
|
var tanuloIdList = igazolasInfok.Tables[0].AsEnumerable().Select(d => d.Field<int>("TanuloId")).Distinct();
|
|
|
|
var dsTanulok = tDal.GetTanulokOsztalyai(tanuloIdList.ToList());
|
|
|
|
MergeOsztalyokColumnIntoIgazolasok(igazolasInfok, dsTanulok);
|
|
|
|
var igazolasCo = new IgazolasCO();
|
|
if (igazolasInfok.Tables.Count > 0 && igazolasInfok.Tables[0].Rows.Count > 0)
|
|
{
|
|
var row = igazolasInfok.Tables[0].Rows[0];
|
|
igazolasCo.ID = SDAConvert.ToInt32(row["ID"]);
|
|
igazolasCo.TanuloId = SDAConvert.ToInt32(row["TanuloId"]);
|
|
igazolasCo.TanuloNev = row["Nev"].ToString();
|
|
//igazolasCo.OsztCsop = SDAConvert.ToInt32(row["OsztalyCsoportId"]);
|
|
igazolasCo.OsztCsopNev = row["OsztalyCsoport"].ToString();
|
|
igazolasCo.ErvKezdete = SDAConvert.ToDateTime(row["Kezdete"]).Value;
|
|
igazolasCo.ErvVege = SDAConvert.ToDateTime(row["Vege"]).Value;
|
|
igazolasCo.IgazolasTipus = SDAConvert.ToInt32(row["IgazolasTipusa"]);
|
|
igazolasCo.Megjegyzes = row["Megjegyzes"].ToString();
|
|
igazolasCo.RogzDatum = SDAConvert.ToDateTime(row["RogzitesDatuma"]).Value;
|
|
igazolasCo.RogzitoNev = row["Rogzito"].ToString();
|
|
}
|
|
return igazolasCo;
|
|
});
|
|
}
|
|
|
|
public DataSet GetIgazolasByTanuloId(int tanuloId)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, helper =>
|
|
{
|
|
var igazolasDal = helper.IgazolasDal(GridParameters);
|
|
return igazolasDal.GetIgazolasDataSet(tanuloId);
|
|
});
|
|
}
|
|
|
|
public DataSet GetInformaciokIgazolasGrid(IgazolasSearchCo co)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, helper =>
|
|
{
|
|
var igazolasDal = helper.IgazolasDal(GridParameters);
|
|
return igazolasDal.GetIgazolasSearchDataSet(co.ConvertToPco());
|
|
});
|
|
}
|
|
|
|
public void SaveOrUpdateIgazolas(IgazolasCO co)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, helper =>
|
|
{
|
|
var igazolasDal = helper.IgazolasDal(GridParameters);
|
|
var igazolas = igazolasDal.Get();
|
|
|
|
if (co.ID.HasValue && co.ID.Value > 0)
|
|
{
|
|
igazolas = igazolasDal.Get(co.ID.Value);
|
|
}
|
|
|
|
igazolas.IgazolasTipusa = co.IgazolasTipus ?? 0;
|
|
igazolas.Kezdete = co.ErvKezdete;
|
|
igazolas.Vege = co.ErvVege;
|
|
igazolas.Megjegyzes = co.Megjegyzes;
|
|
igazolas.TanuloId = co.TanuloId;
|
|
igazolas.RogzitoId = co.RogzitoId;
|
|
igazolas.RogzitesDatuma = co.RogzDatum;
|
|
|
|
if (!string.IsNullOrWhiteSpace(co.Ugyiratszam))
|
|
{
|
|
igazolas.Ugyiratszam = co.Ugyiratszam;
|
|
}
|
|
|
|
igazolas.TanevId = TanevId;
|
|
igazolas.IntezmenyId = IntezmenyId;
|
|
|
|
if(co.SzervezetId.HasValue)
|
|
{
|
|
igazolas.SzervezetId = co.SzervezetId.Value;
|
|
}
|
|
|
|
if (igazolas.ID > 0)
|
|
{
|
|
igazolasDal.Update(igazolas);
|
|
}
|
|
else
|
|
{
|
|
igazolasDal.Insert(igazolas);
|
|
}
|
|
});
|
|
}
|
|
|
|
public void DeleteIgazolasById(int igazolasId)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, helper =>
|
|
{
|
|
var igazolasDal = helper.IgazolasDal(GridParameters);
|
|
igazolasDal.Delete(igazolasId);
|
|
});
|
|
}
|
|
|
|
public DataSet GetOsztalyCsoportIgazolasok(int id, OktNevelesiKategoriaEnum? kategoria)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, helper =>
|
|
{
|
|
var igazolasDal = helper.IgazolasDal(GridParameters);
|
|
return igazolasDal.GetOsztalyCsoportIgazolasok(id, kategoria);
|
|
});
|
|
}
|
|
|
|
public DataSet GetOsztalyCsoportIgazolasokForValidate(DataTable igazolasDT)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, helper =>
|
|
{
|
|
var igazolasDal = helper.IgazolasDal(GridParameters);
|
|
return igazolasDal.GetOsztalyCsoportIgazolasokForValidate(igazolasDT);
|
|
});
|
|
}
|
|
|
|
public DataSet IgazolasKereses(int? osztCsopID, int? szervezetTipusId = null)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, helper =>
|
|
{
|
|
var igazolasDal = helper.IgazolasDal(GridParameters);
|
|
return igazolasDal.IgazolasKereses(osztCsopID, null, szervezetTipusId: szervezetTipusId);
|
|
});
|
|
}
|
|
|
|
public DataSet IgazolasDetailKereses(int tanuloID, int? szervezetTipusId = null)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, helper =>
|
|
{
|
|
var igazolasDal = helper.IgazolasDal(GridParameters);
|
|
return igazolasDal.IgazolasDetailKereses(tanuloID, szervezetTipusId);
|
|
});
|
|
}
|
|
|
|
public DataSet GetIgazolasokListajaGrid(IgazolasokListajaSearchCO co)
|
|
{
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var iDal = h.IgazolasDal(GridParameters);
|
|
var tDal = h.TanuloCsoport();
|
|
|
|
var dsIgazolasok = iDal.GetIgazolasokListajaGrid(co.ConvertToPCO(), null);
|
|
var tanuloIdList = dsIgazolasok.Tables[0].AsEnumerable().Select(d => d.Field<int>("TanuloId")).Distinct();
|
|
|
|
var dsTanulok = tDal.GetTanulokOsztalyai(tanuloIdList.ToList());
|
|
|
|
MergeOsztalyokColumnIntoIgazolasok(dsIgazolasok, dsTanulok);
|
|
|
|
return dsIgazolasok;
|
|
});
|
|
}
|
|
|
|
public MemoryStream GetInformaciokIgazolasExcelExport(IgazolasSearchCo igazolasSearchCo)
|
|
{
|
|
var igazolasokListajaCO = new IgazolasokListajaSearchCO()
|
|
{
|
|
IgazolasKezdteteSearch = igazolasSearchCo.IgazolasKezdeteSearch,
|
|
IgazolasVegeSearch = igazolasSearchCo.IgazolasVegeSearch,
|
|
IgazolasTipusaSearch = igazolasSearchCo.IgazolasTipusaSearch,
|
|
TanuloId = igazolasSearchCo.TanuloId,
|
|
FeladatEllatasiHelyId = igazolasSearchCo.FeladatEllatasiHelyId
|
|
};
|
|
|
|
return Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var igazolasDal = h.IgazolasDal(GridParameters);
|
|
|
|
var dsIgazolasok = igazolasDal.GetIgazolasExcelExport(igazolasokListajaCO.ConvertToPCO());
|
|
|
|
var dataTable = dsIgazolasok.Tables[0];
|
|
|
|
(string fromColumn, string toColumn, Type type)[] exportColumns = new (string, string, Type)[]
|
|
{
|
|
("Kezdete", HianyzasResource.ErvenyessegKezdete, typeof(DateTime)),
|
|
("Vege", HianyzasResource.ErvenyessegVege, typeof(DateTime)),
|
|
("IgazolasTipusa_DNAME", HianyzasResource.IgazolasTipusa, typeof(string)),
|
|
("Megjegyzes", HianyzasResource.Megjegyzes, typeof(string)),
|
|
};
|
|
|
|
ExportLogic.MapDataTable(dataTable, exportColumns, true);
|
|
ExportLogic.TryCreateHeaderIfNotExist(dataTable);
|
|
|
|
var stream = new MemoryStream();
|
|
|
|
using (var excel = new ExcelPackage(stream))
|
|
{
|
|
var workSheet = excel.Workbook.Worksheets.Add(IgazolasResource.IgazolasExport);
|
|
|
|
workSheet.Cells[1, 1].LoadFromDataTable(dataTable, true);
|
|
ExportLogic.FormatDateFields(exportColumns, workSheet);
|
|
ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, dataTable.Columns.Count]);
|
|
|
|
workSheet.Cells.AutoFitColumns();
|
|
excel.Save();
|
|
}
|
|
|
|
stream.Position = 0;
|
|
|
|
return stream;
|
|
|
|
});
|
|
}
|
|
|
|
private static void MergeOsztalyokColumnIntoIgazolasok(DataSet dsIgazolasok, DataSet dsTanulok)
|
|
{
|
|
// Az igazolasok listája alapesetben nem tartalmazza a tanuló osztály rekordját
|
|
// Az igazolások soraiban a tanuló osztályainak befrissítése ("többosztály" kezelése):
|
|
dsIgazolasok.Tables[0].Columns.Add("OsztalyCsoport");
|
|
foreach (DataRow item in dsIgazolasok.Tables[0].Rows)
|
|
{
|
|
var tanuloId = item.Field<int>("TanuloId");
|
|
|
|
var queryR = from f in dsTanulok.Tables[0].AsEnumerable()
|
|
where f.Field<int>("C_TANULOID") == tanuloId
|
|
&& f.Field<DateTime>("C_BELEPESDATUM") <= item.Field<DateTime>("Kezdete")
|
|
&& (f.Field<DateTime?>("C_KILEPESDATUM") is null || f.Field<DateTime?>("C_KILEPESDATUM") >= item.Field<DateTime>("Vege"))
|
|
select
|
|
f.Field<string>("C_NEV");
|
|
|
|
if (queryR.Any())
|
|
{
|
|
item["OsztalyCsoport"] = string.Join(", ", queryR);
|
|
}
|
|
}
|
|
}
|
|
|
|
public List<IgazolasItemCo> GetIgazolasCoList(IgazolasokListajaSearchCO searchModel)
|
|
{
|
|
var igazolasok = new List<IgazolasItemCo>();
|
|
|
|
var ds = GetIgazolasokListajaGrid(searchModel);
|
|
|
|
foreach (DataRow dataRow in ds.Tables[0].Rows)
|
|
{
|
|
var itemCo = new IgazolasItemCo(dataRow);
|
|
igazolasok.Add(itemCo);
|
|
}
|
|
|
|
return igazolasok;
|
|
}
|
|
}
|
|
}
|