From a6518b86709c5f1a9cbf09036957556211abef35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20J=C3=B8rgen=20Skogstad?= Date: Tue, 14 Jan 2025 15:37:41 +0100 Subject: [PATCH] fix --- .../SearchDialogs/SearchDialogInputValidator.cs | 4 +++- .../SearchDialogs/SearchDialogSortTypeExtensions.cs | 12 ++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Digdir.Domain.Dialogporten.GraphQL/EndUser/SearchDialogs/SearchDialogInputValidator.cs b/src/Digdir.Domain.Dialogporten.GraphQL/EndUser/SearchDialogs/SearchDialogInputValidator.cs index 6ea158748..7eda2134d 100644 --- a/src/Digdir.Domain.Dialogporten.GraphQL/EndUser/SearchDialogs/SearchDialogInputValidator.cs +++ b/src/Digdir.Domain.Dialogporten.GraphQL/EndUser/SearchDialogs/SearchDialogInputValidator.cs @@ -12,7 +12,9 @@ public SearchDialogInputValidator() .When(x => x.OrderBy != null); RuleForEach(x => x.OrderBy) - .Must(order => order.CreatedAt.HasValue ^ order.UpdatedAt.HasValue ^ order.DueAt.HasValue) + .Must(order => + new[] { order.CreatedAt.HasValue, order.UpdatedAt.HasValue, order.DueAt.HasValue } + .Count(x => x) == 1) .WithMessage("Exactly one property must be set on each OrderBy object."); } } diff --git a/src/Digdir.Domain.Dialogporten.GraphQL/EndUser/SearchDialogs/SearchDialogSortTypeExtensions.cs b/src/Digdir.Domain.Dialogporten.GraphQL/EndUser/SearchDialogs/SearchDialogSortTypeExtensions.cs index 6e5d70f19..8af79cbc2 100644 --- a/src/Digdir.Domain.Dialogporten.GraphQL/EndUser/SearchDialogs/SearchDialogSortTypeExtensions.cs +++ b/src/Digdir.Domain.Dialogporten.GraphQL/EndUser/SearchDialogs/SearchDialogSortTypeExtensions.cs @@ -12,12 +12,14 @@ public static List ToSearchDialogSortTypeList( { List searchDialogSortTypes = []; - orderBy = orderBy + var orderByParts = orderBy .ToLower(CultureInfo.InvariantCulture) - .Replace("id_desc", "", StringComparison.OrdinalIgnoreCase) - .Replace("id_asc", "", StringComparison.OrdinalIgnoreCase); + .Split(',', StringSplitOptions.RemoveEmptyEntries) + .Where(part => !part.Equals("id_desc", StringComparison.OrdinalIgnoreCase) && + !part.Equals("id_asc", StringComparison.OrdinalIgnoreCase)) + .ToList(); - foreach (var orderByPart in orderBy.Split(',')) + foreach (var orderByPart in orderByParts) { var parts = orderByPart.Split('_'); if (parts.Length != 2) @@ -55,11 +57,13 @@ public static bool TryToOrderSet(this List searchDialogSor stringBuilder.Append(CultureInfo.InvariantCulture, $"createdAt_{orderBy.CreatedAt},"); continue; } + if (orderBy.UpdatedAt != null) { stringBuilder.Append(CultureInfo.InvariantCulture, $"updatedAt_{orderBy.UpdatedAt},"); continue; } + if (orderBy.DueAt != null) { stringBuilder.Append(CultureInfo.InvariantCulture, $"dueAt_{orderBy.DueAt},");