Events-MVC (example with htmx)

This commit is contained in:
Boris Milašinović
2026-04-25 22:21:35 +02:00
parent eb04483417
commit 0ee1b22f61
114 changed files with 7966 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
using Sieve.Models;
namespace Events.MVC.Util.Extensions;
public static class SieveModelExtensions
{
public static void SetDefaultPagingAndSorting(this SieveModel sieveModel, int defaultPageSize, string defaultSort)
{
sieveModel.Page ??= 1;
if (sieveModel.Page < 1)
{
sieveModel.Page = 1;
}
if (sieveModel.PageSize is null || sieveModel.PageSize <= 0)
{
sieveModel.PageSize = defaultPageSize;
}
if (string.IsNullOrWhiteSpace(sieveModel.Sorts))
{
sieveModel.Sorts = defaultSort;
}
}
public static string ExtractFilterValue(this SieveModel sieveModel, string propertyName)
{
var filters = sieveModel.Filters?.Trim() ?? string.Empty;
return ExtractFilterValue(filters, propertyName);
}
public static string ExtractFilterValue(string filters, string propertyName)
{
return ExtractFilterValue(filters, propertyName, "@=*", "@=");
}
public static string ExtractFilterValue(string filters, string propertyName, params string[] operators)
{
if (string.IsNullOrWhiteSpace(filters))
{
return string.Empty;
}
foreach (var filter in filters.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries))
{
foreach (var filterOperator in operators)
{
var prefix = $"{propertyName}{filterOperator}";
if (filter.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
{
return filter[prefix.Length..];
}
}
}
return string.Empty;
}
}