Переглянути джерело

Added drag-drop for calendar assignments

Kenric Nugteren 2 тижнів тому
батько
коміт
cbd828bbff

+ 20 - 1
prs.desktop/Components/Calendar/Appointments/AssignmentAppointment.cs

@@ -69,7 +69,26 @@ namespace PRSDesktop
 
         public override bool CanAdjust => true;
 
-        public override DateTime Date => Model.Date;
+        public override DateTime Date
+        {
+            get => Model.Date;
+            set
+            {
+                Model.Date = value;
+                OnUpdate?.Invoke();
+            }
+        }
+
+        public override Employee? Employee
+        {
+            get => base.Employee;
+            set
+            {
+                base.Employee = value;
+                Model.EmployeeLink.ID = value?.ID ?? Guid.Empty;
+                OnUpdate?.Invoke();
+            }
+        }
 
         public event Action? OnUpdate;
         

+ 4 - 3
prs.desktop/Components/Calendar/Appointments/CalendarAppointment.cs

@@ -51,7 +51,8 @@ namespace PRSDesktop
         where T : notnull
     {
         private Employee? _employee;
-        public Employee? Employee
+        // Nullable because this assignment might be rendered on a column that doesn't exist.
+        public virtual Employee? Employee
         {
             get => _employee;
             set
@@ -92,7 +93,7 @@ namespace PRSDesktop
 
         public abstract TimeSpan StartTime { get; set; }
         public abstract TimeSpan EndTime { get; set; }
-        public abstract DateTime Date { get; }
+        public abstract DateTime Date { get; set; }
         public abstract bool CanAdjust { get; }
 
         private Func<T, string?> Colour;
@@ -100,7 +101,7 @@ namespace PRSDesktop
         public CalendarAppointment(T model, Employee employee, Func<T, string?> color)
         {
             Model = model;
-            Employee = employee;
+            _employee = employee;
 
             Colour = color;
             UpdateColour();

+ 7 - 1
prs.desktop/Components/Calendar/Appointments/LeaveRequestAppointment.cs

@@ -27,7 +27,13 @@ namespace PRSDesktop
             }
         }
 
-        public override DateTime Date => Block.Date;
+        public override DateTime Date
+        {
+            get => Block.Date;
+            set
+            {
+            }
+        }
 
         public override bool CanAdjust => false;
         

+ 7 - 1
prs.desktop/Components/Calendar/Appointments/StandardLeaveAppointment.cs

@@ -25,7 +25,13 @@ namespace PRSDesktop
             }
         }
 
-        public override DateTime Date => Block.Date;
+        public override DateTime Date
+        {
+            get => Block.Date;
+            set
+            {
+            }
+        }
 
         public override bool CanAdjust => false;
 

+ 7 - 1
prs.desktop/Components/Calendar/Appointments/TimeSheetAppointment.cs

@@ -25,7 +25,13 @@ namespace PRSDesktop
             }
         }
 
-        public override DateTime Date => Model.Date;
+        public override DateTime Date
+        {
+            get => Model.Date;
+            set
+            {
+            }
+        }
 
         public override bool CanAdjust => false;
         

+ 2 - 2
prs.desktop/Components/Calendar/Calendar.xaml

@@ -86,8 +86,8 @@
                                          BlockHeld="Calendar_BlockHeld"
                                          BlockRightClicked="Calendar_BlockRightClicked"
                                          ColumnWidthMode="ConstantColumns"
-                                         ColumnMapping="{Binding Employee}"
-                                         DateMapping="{Binding Date}"
+                                         ColumnMapping="{Binding Employee, Mode=TwoWay}"
+                                         DateMapping="{Binding Date, Mode=TwoWay}"
                                          StartTimeMapping="{Binding StartTime, Mode=TwoWay}"
                                          EndTimeMapping="{Binding EndTime, Mode=TwoWay}"
                                          CanAdjustMapping="{Binding CanAdjust}">