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