Przeglądaj źródła

Added some code to subscriber set so that it doesn't unnecessarily save things

Kenric Nugteren 1 rok temu
rodzic
commit
1176d5dca0

+ 30 - 3
prs.classes/Entities/Kanban/ClientKanbanSubscriberSet.cs

@@ -56,12 +56,21 @@ namespace Comal.Classes
 
         public void EnsureManager(Guid kanbanid, Guid employeeid)
         {
+            if(employeeid == Guid.Empty)
+            {
+                return;
+            }
             var manager = EnsureSubscriber(kanbanid, employeeid);
 
             // No-one else can be a manager
             var others = _subscribers.Where(x => Equals(x.Kanban.ID, kanbanid)).ToArray();
             foreach (var other in others)
-                other.Manager = false;
+            {
+                if(other != manager)
+                {
+                    other.Manager = false;
+                }
+            }
 
             // only this one!
             manager.Manager = true;
@@ -69,12 +78,21 @@ namespace Comal.Classes
 
         public void EnsureAssignee(Guid kanbanid, Guid employeeid)
         {
+            if (employeeid == Guid.Empty)
+            {
+                return;
+            }
             var assignee = EnsureSubscriber(kanbanid, employeeid);
 
             // No-one else can be a assignee
             var others = _subscribers.Where(x => Equals(x.Kanban.ID, kanbanid)).ToArray();
             foreach (var other in others)
-                other.Assignee = false;
+            {
+                if (other != assignee)
+                {
+                    other.Assignee = false;
+                }
+            }
 
             // only this one!
             assignee.Assignee = true;
@@ -82,12 +100,21 @@ namespace Comal.Classes
 
         public void EnsureObserver(Guid kanbanid, Guid employeeid)
         {
+            if (employeeid == Guid.Empty)
+            {
+                return;
+            }
             var observer = EnsureSubscriber(kanbanid, employeeid);
 
             // Employee can only be an observer once
             var subscribers = _subscribers.Where(x => Equals(x.Kanban.ID, kanbanid) && Equals(x.Employee.ID, employeeid)).ToArray();
             foreach (var subscriber in subscribers)
-                subscriber.Observer = false;
+            {
+                if (subscriber != observer)
+                {
+                    subscriber.Observer = false;
+                }
+            }
 
             observer.Observer = true;
         }