From acffb812eda018a73e7b36ccfb8714ccfe88024e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janis=20Daniel=20Da=CC=88hne?= <janis.daehne2@student.uni-halle.de> Date: Tue, 19 Nov 2019 22:59:20 +0100 Subject: [PATCH] - enabled release controll get releases for execises sorting by automaticEndAt and releasedAt --- src/ClientServer/Config/Constants.cs | 2 +- .../Core/Exercises/ReleaseController.cs | 35 +++++++++++++------ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/ClientServer/Config/Constants.cs b/src/ClientServer/Config/Constants.cs index 5180109..260ad43 100644 --- a/src/ClientServer/Config/Constants.cs +++ b/src/ClientServer/Config/Constants.cs @@ -13,7 +13,7 @@ namespace ClientServer.Helpers /// </summary> public static class Constants { - public static string VersionString = "2.6.1"; + public static string VersionString = "2.6.2"; /// <summary> /// this is only set once at program.cs!! diff --git a/src/ClientServer/Controllers/Core/Exercises/ReleaseController.cs b/src/ClientServer/Controllers/Core/Exercises/ReleaseController.cs index 65d3ba4..93b8c07 100644 --- a/src/ClientServer/Controllers/Core/Exercises/ReleaseController.cs +++ b/src/ClientServer/Controllers/Core/Exercises/ReleaseController.cs @@ -870,6 +870,19 @@ namespace ClientServer.Controllers.Core.Exercises string orderByProp = ""; Expression<Func<ExerciseRelease, object>> orderByFunc = null; + //when we want to sort nulls first/last + //see https://stackoverflow.com/questions/2814742/how-to-order-by-column-with-null-values-last-in-entity-framework + //so we just do + /* + var result = context.Users.OrderBy(u => u.LastName == null) + .ThenBy(u => u.LastName) + .ThenBy(u => u.FirstName == null) + .ThenBy(u => u.FirstName); + + //works because false sorts before true + */ + //but performance...? + //not all props are sortable via the frontend if (String.IsNullOrWhiteSpace(pagination.OrderByProp) == false) { @@ -883,11 +896,11 @@ namespace ClientServer.Controllers.Core.Exercises orderByFunc = p => p.IsReleased; orderByProp = "IsReleased".ToLower(); } -// else if (pagination.OrderByProp.ToLower() == "ReleasedAt".ToLower()) -// { -// orderByFunc = p => p.ReleasedAt; -// orderByProp = "ReleasedAt".ToLower(); -// } + else if (pagination.OrderByProp.ToLower() == "ReleasedAt".ToLower()) + { + orderByFunc = p => p.ReleasedAt; + orderByProp = "ReleasedAt".ToLower(); + } else if (pagination.OrderByProp.ToLower() == "IsOnlyVisibleToMe".ToLower()) { orderByFunc = p => p; @@ -898,11 +911,11 @@ namespace ClientServer.Controllers.Core.Exercises orderByFunc = p => p.IsVisibleToAllAfterRelease; orderByProp = "IsVisibleToAllAfterRelease".ToLower(); } -// else if (pagination.OrderByProp.ToLower() == "AutomaticEndAt".ToLower()) -// { -// orderByFunc = p => p.AutomaticEndAt; -// orderByProp = "AutomaticEndAt".ToLower(); -// } + else if (pagination.OrderByProp.ToLower() == "AutomaticEndAt".ToLower()) + { + orderByFunc = p => p.AutomaticEndAt; + orderByProp = "AutomaticEndAt".ToLower(); + } else if (pagination.OrderByProp.ToLower() == "solutionsCount".ToLower()) { orderByFunc = p => p.ExerciseReleaseWithUserAsParticipations.Count; @@ -928,7 +941,7 @@ namespace ClientServer.Controllers.Core.Exercises GeneratedCode = p.GeneratedCode, //TODO PERFORMANCE does this really slows down performance??... this needs to be executed in the memory (i think so) //if no performance impact enable this and remove the loop below - //AutomaticStartAt = DateTimeHelper.SetKind(p.AutomaticStartAt, DateTimeKind.Unspecified), +// AutomaticStartAt = DateTimeHelper.SetKind(p.AutomaticStartAt, DateTimeKind.Unspecified), //AutomaticEndAt = DateTimeHelper.SetKind(p.AutomaticEndAt, DateTimeKind.Unspecified), //ReleasedAt = DateTimeHelper.SetKind(p.ReleasedAt, DateTimeKind.Unspecified), AutomaticStartAt = p.AutomaticStartAt, -- GitLab