浏览代码

The user can't change kanban.employeeID anymore unless they have access. Task panel double refresh fixed

Kenric Nugteren 2 年之前
父节点
当前提交
5017dea5ca

+ 1 - 1
prs.desktop/Grids/KanbanGrid.cs

@@ -61,7 +61,7 @@ namespace PRSDesktop
                     enabled = kanban.ID == Guid.Empty || (bFullControl && !kanban.Private);
                     break;
                 case "EmployeeLink.ID":
-                    enabled = !kanban.Private;
+                    enabled = bFullControl && !kanban.Private;
                     break;
                 case "ManagerLink.ID":
                     enabled = bFullControl && !kanban.Private;

+ 2 - 0
prs.desktop/Panels/Tasks/ITaskControl.cs

@@ -28,6 +28,8 @@ namespace PRSDesktop
 
         KanbanReferences[] GetReferences(IEnumerable<TaskModel> models);
         bool EditReferences(IEnumerable<TaskModel> models);
+
+        bool CanChangeTasks(IEnumerable<TaskModel> models);
     }
 
     public interface ITaskControl

+ 1 - 1
prs.desktop/Panels/Tasks/TaskPanel.xaml.cs

@@ -106,7 +106,7 @@ namespace PRSDesktop
             item.Click += (o, e) => ChangeStatus(control, o, e, status);
             menu.Items.Add(item);
         }
-        private bool CanChangeTasks(TaskModel[] models)
+        public bool CanChangeTasks(IEnumerable<TaskModel> models)
         {
             foreach (var task in models)
             {

+ 12 - 7
prs.desktop/Panels/Tasks/TasksByStatusControl.xaml.cs

@@ -257,10 +257,12 @@ namespace PRSDesktop
             }
         }
 
+        private static bool UpdatingEmployees = false;
+
         private void Employees_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
-            //if (!IsReady)
-            //    return;
+            if (UpdatingEmployees)
+                return;
 
             if (e.AddedItems.Count == 0)
             {
@@ -401,6 +403,9 @@ namespace PRSDesktop
                 var thumbnails = active
                     .Select(r => r.EntityLinkID<Employee, ImageDocumentLink>(x => x.Thumbnail) ?? Guid.Empty)
                     .Where(x => x != Guid.Empty).ToArray();
+                Employees.ItemsSource = _employeelist;
+                Employees.SelectedItem = _employeelist.First();
+                EmployeeID = _employeelist.First().ID;
                 if (thumbnails.Any())
                     new Client<Document>().Query(
                         new Filter<Document>(x => x.ID).InList(thumbnails),
@@ -412,17 +417,13 @@ namespace PRSDesktop
                                 ProcessThumbnails(data);
                         }
                     );
-                else
-                {
-                    Employees.ItemsSource = _employeelist;
-                    Employees.SelectedItem = _employeelist.First();
-                }
             }
             else
             {
                 EmployeeListColumn.Width = new GridLength(0.0F, GridUnitType.Pixel);
                 Employees.ItemsSource = _employeelist;
                 Employees.SelectedItem = _employeelist.First();
+                EmployeeID = _employeelist.First().ID;
             }
         }
 
@@ -441,8 +442,12 @@ namespace PRSDesktop
                     }
                 }
 
+                UpdatingEmployees = true;
+                Employees.ItemsSource = null;
                 Employees.ItemsSource = _employeelist;
                 Employees.SelectedItem = _employeelist.First();
+                EmployeeID = _employeelist.First().ID;
+                UpdatingEmployees = false;
             });
         }
 

+ 2 - 2
prs.desktop/Panels/Tasks/TasksByUserControl.xaml.cs

@@ -581,8 +581,8 @@ namespace PRSDesktop
 
         private void Kanban_CardDragStart(object sender, KanbanDragStartEventArgs e)
         {
-            var models = SelectedModels(e.SelectedCard.Content as TaskModel);
-            if (models.Any(x => x.Locked || x.EmployeeID != Guid.Parse(x.Category.ToString())))
+            var models = SelectedModels(e.SelectedCard.Content as TaskModel).ToList();
+            if (models.Any(x => x.Locked || x.EmployeeID != Guid.Parse(x.Category.ToString())) || !Host.CanChangeTasks(models))
                 e.IsCancel = true;
         }