From 8935353e38291541b7e82648e23c00dd5dd3294c Mon Sep 17 00:00:00 2001 From: ig Date: Thu, 9 Mar 2023 11:12:56 +0100 Subject: [PATCH] Introduce Ancestors, GetParent --- csharp/App/Backend/Database/User.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/csharp/App/Backend/Database/User.cs b/csharp/App/Backend/Database/User.cs index 3782a36d0..081a162a2 100644 --- a/csharp/App/Backend/Database/User.cs +++ b/csharp/App/Backend/Database/User.cs @@ -30,14 +30,25 @@ public partial class Db public Boolean IsParentOfChild(User parent, User child) { - return child - .Unfold(GetParent) + return Ancestors(child) .Any(u => u.Id == parent.Id); } + private IEnumerable Ancestors(User child) + { + return child.Unfold(GetParent); + } + public User? GetParent(User u) { - return GetUserById(u.ParentId); + return IsRoot(u) + ? null + : GetUserById(u.ParentId); + } + + public static Boolean IsRoot(User u) + { + return u.ParentId == 0; // root has ParentId 0 by definition } public User? GetUserByEmail(String email) => Users.FirstOrDefault(u => u.Email == email);