瀏覽代碼

Added notes to In/Out board

Kenric Nugteren 4 月之前
父節點
當前提交
07d4527f4f

+ 2 - 1
prs.desktop/MainWindow.xaml.cs

@@ -2815,7 +2815,8 @@ public partial class MainWindow : IPanelHostControl
             .ToObjects<Kanban>().FirstOrDefault();
         if (item is null) return;
 
-        DynamicGridUtils.EditEntity(item);
+        var grid = DynamicGridUtils.CreateDynamicGrid<Kanban>(typeof(DynamicGrid<>));
+        grid.EditItemsNonModal(ISubPanelHost.Global, [item], (items, saved) => { });
     }
 
     private Assignment? _kanbantrackingassignment = null;

+ 5 - 0
prs.desktop/Panels/Attendance/AttendancePanel.xaml

@@ -96,6 +96,11 @@
                                 <MenuItem x:Name="ClockOnOff" Header="Clock Employee On" Click="ClockOnOff_Click"
                                           Tag="{Binding}" />
                                 <Separator />
+                                <MenuItem x:Name="AddNote" Header="Add Note" Click="AddNote_Click"
+                                          Tag="{Binding}" />
+                                <MenuItem x:Name="EditNotes" Header="Edit Notes" Click="EditNotes_Click"
+                                          Tag="{Binding}" />
+                                <Separator />
                                 <MenuItem x:Name="ShowOnInOut" Header="Show On In/Out Board" Click="ShowOnInOut_Click"
                                           Tag="{Binding}" />
                                 <MenuItem x:Name="RemoveFromInOut" Header="Remove From In/Out Board"

+ 63 - 3
prs.desktop/Panels/Attendance/AttendancePanel.xaml.cs

@@ -15,6 +15,7 @@ using InABox.Wpf;
 using PRS.Shared;
 using Syncfusion.UI.Xaml.Kanban;
 using System.ComponentModel;
+using PRSDesktop.Panels.Timesheets;
 
 namespace PRSDesktop
 {
@@ -537,10 +538,32 @@ namespace PRSDesktop
             else
                 onoff.Header = "Clock Employee Out of PRS";
 
-            var show = menu.Items[4] as MenuItem;
+            var addNote = (menu.Items[4] as MenuItem)!;
+            var editNotes = (menu.Items[5] as MenuItem)!;
+            if (Security.CanEdit<EmployeeNote>())
+            {
+                addNote.Visibility = Visibility.Visible;
+                editNotes.Visibility = Visibility.Visible;
+                editNotes.Header = "Edit Notes";
+            }
+            else
+            {
+                addNote.Visibility = Visibility.Collapsed;
+                if (Security.CanView<EmployeeNote>())
+                {
+                    editNotes.Visibility = Visibility.Visible;
+                    editNotes.Header = "View Notes";
+                }
+                else
+                {
+                    editNotes.Visibility = Visibility.Collapsed;
+                }
+            }
+
+            var show = menu.Items[7] as MenuItem;
             show.Visibility = !model.Active ? Visibility.Visible : Visibility.Collapsed;
 
-            var hide = menu.Items[5] as MenuItem;
+            var hide = menu.Items[8] as MenuItem;
             hide.Visibility = model.Active ? Visibility.Visible : Visibility.Collapsed;
         }
 
@@ -676,7 +699,7 @@ namespace PRSDesktop
             if (row != null)
             {
                 var emp = new Employee { ID = id, ShowOnInOutBoard = include };
-                new Client<Employee>().Save(emp, include ? "Added To" : "Removed From" + " In/Out Board", (o, e) => { });
+                Client.Save(emp, include ? "Added To" : "Removed From" + " In/Out Board", (o, e) => { });
                 row.Set<Employee, bool>(x => x.ShowOnInOutBoard, include);
                 model.Active = include;
             }
@@ -689,5 +712,42 @@ namespace PRSDesktop
             UpdateInOutStatus(model, false);
             FilterKanbans();
         }
+
+        private void AddNote_Click(object sender, RoutedEventArgs e)
+        {
+            if (sender is not FrameworkElement el || el.Tag is not AttendanceKanban model) return;
+
+            var employeeID = Guid.Parse(model.ID);
+            var note = "";
+            if(TextBoxDialog.Execute("Edit note:", ref note))
+            {
+                var employeeNote = new EmployeeNote
+                {
+                    Note = note,
+                    Date = DateTime.Now
+                };
+                employeeNote.Employee.ID = employeeID;
+                Client.Save(employeeNote, "");
+            }
+        }
+
+        private void EditNotes_Click(object sender, RoutedEventArgs e)
+        {
+            if (sender is not FrameworkElement el || el.Tag is not AttendanceKanban model) return;
+
+            var employeeID = Guid.Parse(model.ID);
+
+            var grid = new TimesheetNotesGrid
+            {
+                EmployeeID = employeeID,
+                Date = DateTime.Today
+            };
+            grid.Refresh(true, true);
+            var dlg = new DynamicContentDialog(grid, buttonsVisible: false)
+            {
+                Title = "Edit Notes"
+            };
+            dlg.ShowDialog();
+        }
     }
 }

+ 1 - 1
prs.desktop/Panels/Suppliers/Bills/SupplierBills.cs

@@ -107,7 +107,7 @@ public class SupplierBills : DynamicDataGrid<Bill>
         var bill = row.ToObject<Bill>();
 
         var grid = new SupplierBillApprovalGrid(bill);
-        var dlg = new DynamicContentDialog(grid, buttonsvisible: false)
+        var dlg = new DynamicContentDialog(grid, buttonsVisible: false)
         {
             Title = "Manage Approvals"
         };

+ 8 - 1
prs.desktop/Panels/Timesheets/TimesheetAssignmentGrid.cs

@@ -25,7 +25,14 @@ internal class TimesheetAssignmentGrid : DynamicDataGrid<Assignment>, ISpecificG
     {
         var item = base.CreateItem();
         item.EmployeeLink.ID = EmployeeID;
-        item.Date = Date;
+        if(Date.Date == DateTime.Today)
+        {
+            item.Date = DateTime.Now;
+        }
+        else
+        {
+            item.Date = Date;
+        }
         return item;
     }
 

+ 8 - 1
prs.desktop/Panels/Timesheets/TimesheetNotesGrid.cs

@@ -25,7 +25,14 @@ internal class TimesheetNotesGrid : DynamicDataGrid<EmployeeNote>, ISpecificGrid
     {
         var item = base.CreateItem();
         item.Employee.ID = EmployeeID;
-        item.Date = Date;
+        if(Date.Date == DateTime.Today)
+        {
+            item.Date = DateTime.Now;
+        }
+        else
+        {
+            item.Date = Date;
+        }
         return item;
     }