| | 1 | | using Fluorite.Strainer.Models.Metadata; |
| | 2 | | using System.Reflection; |
| | 3 | |
|
| | 4 | | namespace Fluorite.Strainer.Services.Metadata.FluentApi; |
| | 5 | |
|
| | 6 | | public class FluentApiPropertyMetadataBuilder : IFluentApiPropertyMetadataBuilder |
| | 7 | | { |
| | 8 | | private readonly IStrainerOptionsProvider _strainerOptionsProvider; |
| | 9 | |
|
| 13 | 10 | | public FluentApiPropertyMetadataBuilder(IStrainerOptionsProvider strainerOptionsProvider) |
| | 11 | | { |
| 13 | 12 | | _strainerOptionsProvider = Guard.Against.Null(strainerOptionsProvider); |
| 13 | 13 | | } |
| | 14 | |
|
| | 15 | | public IPropertyMetadata BuildDefaultMetadata(IObjectMetadata objectMetadata) |
| | 16 | | { |
| 7 | 17 | | Guard.Against.Null(objectMetadata); |
| 7 | 18 | | Guard.Against.Null(objectMetadata.DefaultSortingPropertyInfo); |
| | 19 | |
|
| 7 | 20 | | return new PropertyMetadata(objectMetadata.DefaultSortingPropertyName, objectMetadata.DefaultSortingPropertyInfo |
| 7 | 21 | | { |
| 7 | 22 | | IsDefaultSorting = true, |
| 7 | 23 | | DefaultSortingWay = objectMetadata.DefaultSortingWay, |
| 7 | 24 | | IsFilterable = objectMetadata.IsFilterable, |
| 7 | 25 | | IsSortable = objectMetadata.IsSortable, |
| 7 | 26 | | }; |
| | 27 | | } |
| | 28 | |
|
| | 29 | | public IPropertyMetadata BuildMetadataForProperty(IObjectMetadata objectMetadata, PropertyInfo propertyInfo) |
| | 30 | | { |
| 4 | 31 | | Guard.Against.Null(objectMetadata); |
| 4 | 32 | | Guard.Against.Null(objectMetadata.DefaultSortingPropertyInfo); |
| 4 | 33 | | Guard.Against.Null(propertyInfo); |
| | 34 | |
|
| 4 | 35 | | var isDefaultSorting = objectMetadata.DefaultSortingPropertyInfo == propertyInfo; |
| 4 | 36 | | var defaultSortingWay = isDefaultSorting |
| 4 | 37 | | ? objectMetadata.DefaultSortingWay |
| 4 | 38 | | : _strainerOptionsProvider.GetStrainerOptions().DefaultSortingWay; |
| | 39 | |
|
| 4 | 40 | | return new PropertyMetadata(propertyInfo.Name, propertyInfo) |
| 4 | 41 | | { |
| 4 | 42 | | IsFilterable = objectMetadata.IsFilterable, |
| 4 | 43 | | IsSortable = objectMetadata.IsSortable, |
| 4 | 44 | | IsDefaultSorting = isDefaultSorting, |
| 4 | 45 | | DefaultSortingWay = defaultSortingWay, |
| 4 | 46 | | }; |
| | 47 | | } |
| | 48 | | } |