Przeglądaj źródła

Added Script to initialise postedStatus

Kenric Nugteren 1 rok temu
rodzic
commit
5eaa72bfa0

+ 18 - 0
prs.desktop/Grids/TimesheetGrid.cs

@@ -7,12 +7,18 @@ using System.Windows.Controls;
 using System.Windows.Media.Imaging;
 using Comal.Classes;
 using InABox.Clients;
+using InABox.Configuration;
 using InABox.Core;
 using InABox.DynamicGrid;
 using InABox.WPF;
 
 namespace PRSDesktop
 {
+    public class TimeSheetGridSettings : IUserConfigurationSettings
+    {
+        public CoreFilterDefinition CurrentFilter { get; set; }
+    }
+
     public class TimesheetGrid : DynamicDataGrid<TimeSheet>
     {
         private readonly BitmapImage leave = PRSDesktop.Resources.leave.AsBitmapImage();
@@ -24,10 +30,15 @@ namespace PRSDesktop
         private readonly BitmapImage warning = PRSDesktop.Resources.warning.AsBitmapImage();
         private static readonly BitmapImage? refresh = PRSDesktop.Resources.refresh.AsBitmapImage();
 
+        private TimeSheetGridSettings _settings;
+
         protected override void Init()
         {
             base.Init();
 
+            _settings = new UserConfiguration<TimeSheetGridSettings>().Load();
+            SelectFilter(_settings.CurrentFilter, false);
+
             ActionColumns.Add(new DynamicMenuColumn(BuildMenu) { Position = DynamicActionColumnPosition.Start });
             ActionColumns.Add(new DynamicMapColumn<TimeSheet>(this, x => x.StartLocation));
             //HiddenColumns.Add(x => x.StartLocation.Timestamp);
@@ -505,5 +516,12 @@ namespace PRSDesktop
 
             return result;
         }
+
+        protected override void FilterSelected(CoreFilterDefinition filter)
+        {
+            base.FilterSelected(filter);
+            _settings.CurrentFilter = filter;
+            new UserConfiguration<TimeSheetGridSettings>().Save(_settings);
+        }
     }
 }

+ 1 - 0
prs.shared/Database Update Scripts/DatabaseUpdateScripts.cs

@@ -32,6 +32,7 @@ namespace PRS.Shared
             DataUpdater.RegisterUpdateScript<Update_7_21>();
             DataUpdater.RegisterUpdateScript<Update_7_24a>();
             DataUpdater.RegisterUpdateScript<Update_7_30>();
+            DataUpdater.RegisterUpdateScript<Update_7_31>();
         }
     }
 }

+ 45 - 0
prs.shared/Database Update Scripts/Update_7_31.cs

@@ -0,0 +1,45 @@
+using Comal.Classes;
+using FastReport.DevComponents.DotNetBar;
+using InABox.Core;
+using InABox.Database;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PRS.Shared
+{
+    public class Update_7_31 : DatabaseUpdateScript
+    {
+        public override VersionNumber Version => new VersionNumber(7, 31);
+
+        private static void Migrate<T>()
+            where T : Entity, IPersistent, IPostable, new()
+        {
+            List<T> items;
+            do
+            {
+                items = DbFactory.Provider.Query<T>(
+                    new Filter<T>(x => x.PostedStatus).IsEqualTo(null),
+                    new Columns<T>(x => x.ID).Add(x => x.PostedStatus), top: 1000).ToObjects<T>().ToList();
+                foreach (var item in items)
+                {
+                    item.PostedStatus = PostedStatus.NeverPosted;
+                    item.OriginalValues.TryAdd("PostedStatus", null);
+                }
+                DbFactory.Provider.Save(items);
+                Logger.Send(LogType.Information, "", $"{items.Count} {typeof(T).Name}s processed");
+            } while (items.Count > 0);
+        }
+
+        public override bool Update()
+        {
+            Migrate<Bill>();
+            Migrate<Invoice>();
+            Migrate<PurchaseOrder>();
+            Migrate<TimeSheet>();
+            return true;
+        }
+    }
+}