laatzen/LaaProductionWeb/LaaProductionWeb.Services/Models/HeliumReportModel.cs
2023-04-06 17:02:58 +02:00

39 lines
1.2 KiB
C#

namespace LaaProductionWeb.Services.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq.Expressions;
using System.Reflection;
public class HeliumReportModel
{
public HeliumReportFilter Filter { get; set; }
= new HeliumReportFilter();
public IEnumerable<HeliumReportItem> Items { get; set; }
= Array.Empty<HeliumReportItem>();
public static implicit operator HeliumReportModel(HeliumReportFilter filter)
=> new HeliumReportModel { Filter = filter };
public string Display(Expression<Func<HeliumReportItem, object>> expression)
{
var memberInfo = default(MemberInfo);
if (expression.Body is MemberExpression memberExpression)
{
memberInfo = memberExpression.Member;
}
else if (expression.Body is UnaryExpression unaryExpression && unaryExpression.Operand is MemberExpression operandExpression)
{
memberInfo = operandExpression.Member;
}
return memberInfo
?.GetCustomAttribute<DisplayAttribute>()
?.Name;
}
}
}