Api/NetinaShop.Common/Models/Report/ReportableItem.cs

89 lines
2.6 KiB
C#

using System.Collections;
using System.Reflection;
namespace NetinaShop.Common.Models.Report
{
public interface IReportableItem
{
string Name { get; set; }
string PropertyName { get; set; }
object DefaultValue { get; set; }
object SelectedValue { get; set; }
string ItemType { get; }
object Element { get; set; }
}
public class BoolReportable : IReportableItem
{
public BoolReportable()
{
ItemType = GetType().Name;
}
public string Name { get; set; }
public string PropertyName { get; set; }
public object DefaultValue { get; set; }
public object SelectedValue { get; set; }
public string ItemType { get; }
public object Element { get; set; }
}
public class ListReportable : IReportableItem
{
public ListReportable()
{
ItemType = GetType().Name;
}
public IList List { get; set; }
public IList ConvertedList { get; set; }
public string DisplayMemberPath { get; set; }
public string SelectedMemberPath { get; set; }
public string ListItemType { get; set; }
public string Name { get; set; }
public string PropertyName { get; set; }
public object DefaultValue { get; set; }
public object SelectedValue { get; set; }
public string ItemType { get; }
public object Element { get; set; }
}
public class EnumReportable : IReportableItem
{
public EnumReportable()
{
ItemType = GetType().Name;
}
public string EnumTypeName { get; set; }
public string Name { get; set; }
public string PropertyName { get; set; }
public object DefaultValue { get; set; }
public object SelectedValue { get; set; }
public string ItemType { get; }
public object Element { get; set; }
public Type EnumType(Assembly domainAssembly)
{
var types = domainAssembly.GetTypes();
var type = types.FirstOrDefault(t => t.Name == EnumTypeName);
return type;
}
}
public class NumericReportable : IReportableItem
{
public NumericReportable()
{
ItemType = GetType().Name;
}
public string Name { get; set; }
public string PropertyName { get; set; }
public object DefaultValue { get; set; }
public object SelectedValue { get; set; }
public string ItemType { get; }
public object Element { get; set; }
}
}