using System; using System.Collections.Generic; using Kreta.Core; using Kreta.Enums.ManualEnums; using Kreta.Resources; namespace Kreta.BusinessLogic.HelperClasses { /// /// Ez a Co írja le az egyszerű export-ok egy oszlopának tulajdonságát/viselkedését. /// public class SimpleExportColumnCo { /// /// Az oszlop indexe az excelben, ahová export-áljuk. /// 0-tól indexelünk! /// public int Index { get; set; } /// /// Az oszlop header-jének a neve, azaz ami az első sorba fog kerülni export-áláskor a tényleges adatok felett. /// public string HeaderName { get; set; } /// /// 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) /// public Type Type { get; set; } /// /// Ha megadjuk, akkor az oszlophoz tartozó lenyíló lista adatforrását egy külön sheet-be generálunk. /// public IList DropDownColumnSource { get; set; } /// /// 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. /// public string DropDownColumnSourceSheetGroupName { get; set; } /// /// 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. /// public ExcelAggregateFunctionEnum AggregateFunction { get; set; } /// /// 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) /// public BooleanDisplayFormatEnum BooleanDisplayFormat { get; set; } /// /// Ha az oszlop DateTime típusú, akkor annak a formázáshoz használható paraméter. /// Default értéke: Kreta.Core.Constants.ToStringPattern.HungarianDate /// public string DateTimeToStringPattern { get; set; } /// /// 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 /// public int DecimalDigitCount { get; set; } /// /// A property neve, amiből előszedjük az oszlophoz az adatokat. /// Reflection-höz kell. /// public string PropertyName { get; set; } /// /// 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. /// public bool IsDropDownColumn { get; } /// /// Ez alapján dől el, hogy a szöveget a cellában HTML-ként, vagy sima szövegként fogja megjeleníteni. /// public bool AsHtml { get; } /// /// Ebben az esetben használjuk a SimpleExportColumnAttribute-ot Co-n vagy model-en. /// /// Az oszlop indexe az excelben, ahová export-áljuk. /// Az oszlop header-jének a neve, azaz ami az első sorba fog kerülni export-áláskor a tényleges adatok felett. /// Az oszlop típusa. /// Ha megadjuk, akkor az oszlophoz tartozó lenyíló lista adatforrását egy külön sheet-be generálunk. /// Ha megadjuk, akkor az oszlophoz tartozó lenyíló lista adatforrásának sheet neve lesz. /// Ha megadjuk, akkor az oszlophoz generál egy aggregált értéket az oszlop értékeiből az utolsó sor után. /// Ha az oszlop bool típusú, akkor annak a megjelenítéséhez használható paraméter. /// Ha a oszlop DateTime típusú, akkor annak a formázáshoz használható paraméter. /// 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. /// Ha az oszlop string típusú, akkor ezzel adhatjuk meg, hogy HTML vagy egyszerű szövegként jelenjen meg. /// A property neve, amiből előszedjük az oszlophoz az adatokat. public SimpleExportColumnCo( int index, string headerName, Type type, IList 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; } } } }