134 lines
6.7 KiB
C#
134 lines
6.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Kreta.Core;
|
|
using Kreta.Enums.ManualEnums;
|
|
using Kreta.Resources;
|
|
|
|
namespace Kreta.BusinessLogic.HelperClasses
|
|
{
|
|
/// <summary>
|
|
/// Ez a Co írja le az egyszerű export-ok egy oszlopának tulajdonságát/viselkedését.
|
|
/// </summary>
|
|
public class SimpleExportColumnCo
|
|
{
|
|
/// <summary>
|
|
/// Az oszlop indexe az excelben, ahová export-áljuk.
|
|
/// 0-tól indexelünk!
|
|
/// </summary>
|
|
public int Index { get; set; }
|
|
|
|
/// <summary>
|
|
/// Az oszlop header-jének a neve, azaz ami az első sorba fog kerülni export-áláskor a tényleges adatok felett.
|
|
/// </summary>
|
|
public string HeaderName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Az oszlop típusa.
|
|
/// Ez alapján állítjuk be az excel-ben az adat formátmát. (https://docs.aspose.com/display/cellsnet/Data+Formatting)
|
|
/// </summary>
|
|
public Type Type { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ha megadjuk, akkor az oszlophoz tartozó lenyíló lista adatforrását egy külön sheet-be generálunk.
|
|
/// </summary>
|
|
public IList<string> DropDownColumnSource { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ha megadjuk, akkor az oszlophoz tartozó lenyíló lista adatforrásának sheet neve lesz.
|
|
/// Ezt akkor kell használni, ha több lenyíló listának kell használni egy sheet-et adatforrásként. Pl.: Állampolgárság/Állampolgárság2.
|
|
/// </summary>
|
|
public string DropDownColumnSourceSheetGroupName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ha megadjuk, akkor az oszlophoz generál egy aggregált értéket az oszlop értékeiből az utolsó sor után.
|
|
/// FONTOS: AGGREGATE function is designed vertical ranges, not horizontal ranges.
|
|
/// https://support.microsoft.com/en-us/office/aggregate-function-43b9278e-6aa7-4f17-92b6-e19993fa26df
|
|
/// Default értéke: ExcelAggregateFunctionEnum.NONE és így nem lesz figyelembe véve.
|
|
/// </summary>
|
|
public ExcelAggregateFunctionEnum AggregateFunction { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ha az oszlop bool típusú, akkor annak a megjelenítéséhez használható paraméter.
|
|
/// Default értéke: BooleanDisplayFormatEnum.Teljes(azaz Igen/Nem fog megjelenni)
|
|
/// </summary>
|
|
public BooleanDisplayFormatEnum BooleanDisplayFormat { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ha az oszlop DateTime típusú, akkor annak a formázáshoz használható paraméter.
|
|
/// Default értéke: Kreta.Core.Constants.ToStringPattern.HungarianDate
|
|
/// </summary>
|
|
public string DateTimeToStringPattern { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ha az oszlop decimal/decimal?/double/double? típusú, akkor az excel-ben megjelenő tizedesjegyek számának meghatározásához használható paraméter.
|
|
/// Default értéke: 2
|
|
/// </summary>
|
|
public int DecimalDigitCount { get; set; }
|
|
|
|
/// <summary>
|
|
/// A property neve, amiből előszedjük az oszlophoz az adatokat.
|
|
/// Reflection-höz kell.
|
|
/// </summary>
|
|
public string PropertyName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ez alapján döntjük el, hogy lenyílólistás lesz-e az oszlop.
|
|
/// Ha van megadva DropDownColumnSource vagy bool a ColumnType, akkor lenyílólistás lesz.
|
|
/// </summary>
|
|
public bool IsDropDownColumn { get; }
|
|
|
|
/// <summary>
|
|
/// Ez alapján dől el, hogy a szöveget a cellában HTML-ként, vagy sima szövegként fogja megjeleníteni.
|
|
/// </summary>
|
|
public bool AsHtml { get; }
|
|
|
|
/// <summary>
|
|
/// Ebben az esetben használjuk a SimpleExportColumnAttribute-ot Co-n vagy model-en.
|
|
/// </summary>
|
|
/// <param name="index">Az oszlop indexe az excelben, ahová export-áljuk.</param>
|
|
/// <param name="headerName">Az oszlop header-jének a neve, azaz ami az első sorba fog kerülni export-áláskor a tényleges adatok felett.</param>
|
|
/// <param name="type">Az oszlop típusa.</param>
|
|
/// <param name="dropDownColumnSource">Ha megadjuk, akkor az oszlophoz tartozó lenyíló lista adatforrását egy külön sheet-be generálunk.</param>
|
|
/// <param name="dropDownColumnSourceSheetGroupName">Ha megadjuk, akkor az oszlophoz tartozó lenyíló lista adatforrásának sheet neve lesz.</param>
|
|
/// <param name="aggregateFunction">Ha megadjuk, akkor az oszlophoz generál egy aggregált értéket az oszlop értékeiből az utolsó sor után.</param>
|
|
/// <param name="booleanDisplayFormat">Ha az oszlop bool típusú, akkor annak a megjelenítéséhez használható paraméter.</param>
|
|
/// <param name="dateTimeToStringPattern">Ha a oszlop DateTime típusú, akkor annak a formázáshoz használható paraméter.</param>
|
|
/// <param name="decimalDigitCount">Ha a oszlop decimal/decimal?/double/double? típusú, akkor az excel-ben megjelenő tizedesjegyek számának meghatározásához használható paraméter.</param>
|
|
/// <param name="asHtml">Ha az oszlop string típusú, akkor ezzel adhatjuk meg, hogy HTML vagy egyszerű szövegként jelenjen meg.</param>
|
|
/// <param name="propertyName">A property neve, amiből előszedjük az oszlophoz az adatokat.</param>
|
|
public SimpleExportColumnCo(
|
|
int index,
|
|
string headerName,
|
|
Type type,
|
|
IList<string> dropDownColumnSource,
|
|
string dropDownColumnSourceSheetGroupName,
|
|
ExcelAggregateFunctionEnum aggregateFunction = ExcelAggregateFunctionEnum.NONE,
|
|
BooleanDisplayFormatEnum booleanDisplayFormat = BooleanDisplayFormatEnum.Teljes,
|
|
string dateTimeToStringPattern = Constants.ToStringPattern.HungarianDate,
|
|
int decimalDigitCount = 2,
|
|
bool asHtml = false,
|
|
string propertyName = null)
|
|
{
|
|
Index = index;
|
|
HeaderName = headerName;
|
|
Type = type;
|
|
DropDownColumnSource = dropDownColumnSource;
|
|
DropDownColumnSourceSheetGroupName = Type == typeof(bool) ? CommonResource.Logikai : dropDownColumnSourceSheetGroupName;
|
|
AggregateFunction = aggregateFunction;
|
|
BooleanDisplayFormat = booleanDisplayFormat;
|
|
DateTimeToStringPattern = dateTimeToStringPattern;
|
|
if (decimalDigitCount < 0)
|
|
{
|
|
throw new ArgumentOutOfRangeException();
|
|
}
|
|
|
|
DecimalDigitCount = decimalDigitCount;
|
|
AsHtml = asHtml;
|
|
PropertyName = propertyName;
|
|
if (DropDownColumnSource != null && DropDownColumnSource.Count > 0 || Type == typeof(bool))
|
|
{
|
|
IsDropDownColumn = true;
|
|
}
|
|
}
|
|
}
|
|
}
|