Преглед на файлове

Made OrgChartSettings global, and removed old security tokens

Kenric Nugteren преди 1 година
родител
ревизия
87b9480f74

+ 0 - 18
prs.classes/SecurityDescriptors/HumanResources_Descriptors.cs

@@ -22,24 +22,6 @@ namespace Comal.Classes
     {
     }
 
-    [Caption("View Org Charts (Employee)")]
-    [SecurityDescriptorScope(SecurityDescriptorScope.Global)]
-    public class CanViewOrgChartByEmployee : EnabledSecurityDescriptor<HumanResourcesLicense, Employee>
-    {
-    }
-
-    [Caption("View Org Charts (Position)")]
-    [SecurityDescriptorScope(SecurityDescriptorScope.Global)]
-    public class CanViewOrgChartByPosition : EnabledSecurityDescriptor<HumanResourcesLicense, Employee, EmployeePosition>
-    {
-    }
-
-    [Caption("View Org Charts (Job Role)")]
-    [SecurityDescriptorScope(SecurityDescriptorScope.Global)]
-    public class CanViewOrgChartByRole : EnabledSecurityDescriptor<HumanResourcesLicense, Employee, EmployeeRole>
-    {
-    }
-
     [Caption("Edit Org Chart Structure")]
     public class CanEditOrgChart : EnabledSecurityDescriptor<HumanResourcesLicense, Employee>
     {

+ 5 - 1
prs.desktop/Grids/EmployeePositionGrid.cs

@@ -1,4 +1,5 @@
 using Comal.Classes;
+using InABox.Configuration;
 using InABox.Core;
 using InABox.DynamicGrid;
 
@@ -8,7 +9,10 @@ namespace PRSDesktop
     {
         protected override BaseEditor? GetEditor(object item, DynamicGridColumn column)
         {
-            if (column.ColumnName.StartsWith("OrgChart.") && !Security.IsAllowed<CanViewOrgChartByPosition>())
+            if (!Security.IsAllowed<CanEditOrgChart>())
+                return new NullEditor();
+            var orgChartSettings = new GlobalConfiguration<OrgChartSettings>().Load();
+            if (column.ColumnName.StartsWith($"{nameof(Role.OrgChart)}.") && orgChartSettings.Layout != OrgChartLayout.Position)
                 return new NullEditor();
             return base.GetEditor(item, column);
         }

+ 5 - 1
prs.desktop/Grids/RoleGrid.cs

@@ -1,4 +1,5 @@
 using Comal.Classes;
+using InABox.Configuration;
 using InABox.Core;
 using InABox.DynamicGrid;
 
@@ -8,7 +9,10 @@ namespace PRSDesktop
     {
         protected override BaseEditor? GetEditor(object item, DynamicGridColumn column)
         {
-            if (column.ColumnName.StartsWith("OrgChart.") && !Security.IsAllowed<CanViewOrgChartByRole>())
+            if(!Security.IsAllowed<CanEditOrgChart>())
+                return new NullEditor();
+            var orgChartSettings = new GlobalConfiguration<OrgChartSettings>().Load();
+            if (column.ColumnName.StartsWith($"{nameof(Role.OrgChart)}.") && orgChartSettings.Layout != OrgChartLayout.Role)
                 return new NullEditor();
             return base.GetEditor(item, column);
         }

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

@@ -994,12 +994,8 @@ namespace PRSDesktop
             SetVisibility(LeaveRequestsButton, Security.CanView<LeaveRequest>() && Security.IsAllowed<ViewDesktopLeaveRequestsScreen>());
             SetVisibility(OrgChartButton,
                 ClientFactory.IsSupported<Employee>()
-                && (
-                Security.IsAllowed<CanViewOrgChartByEmployee>()
-                    || Security.IsAllowed<CanViewOrgChartByPosition>()
-                    || Security.IsAllowed<CanViewOrgChartByRole>()
-                    )
-                && Security.IsAllowed<ViewDesktopOrgChartScreen>()
+                && 
+                Security.IsAllowed<ViewDesktopOrgChartScreen>()
             );
             SetVisibility(MeetingsButton, Security.IsAllowed<ViewDesktopMeetingsScreen>());
 

+ 5 - 1
prs.desktop/Panels/Employees/EmployeeGrid.cs

@@ -9,6 +9,7 @@ using System.Windows.Media.Imaging;
 using Comal.Classes;
 using FastReport.DataVisualization.Charting;
 using InABox.Clients;
+using InABox.Configuration;
 using InABox.Core;
 using InABox.DynamicGrid;
 using InABox.WPF;
@@ -228,7 +229,10 @@ namespace PRSDesktop
 
         protected override BaseEditor? GetEditor(object item, DynamicGridColumn column)
         {
-            if (column.ColumnName.StartsWith("OrgChart.") && !Security.IsAllowed<CanViewOrgChartByEmployee>())
+            if (!Security.IsAllowed<CanEditOrgChart>())
+                return new NullEditor();
+            var orgChartSettings = new GlobalConfiguration<OrgChartSettings>().Load();
+            if (column.ColumnName.StartsWith($"{nameof(Role.OrgChart)}.") && orgChartSettings.Layout != OrgChartLayout.Employee)
                 return new NullEditor();
             return base.GetEditor(item, column);
         }

+ 0 - 12
prs.desktop/Panels/OrgChart/OrgChartPanel.xaml

@@ -26,18 +26,6 @@
                 Margin="0">
             <DockPanel Margin="2">
 
-                <Label x:Name="LayoutLabel" Content="Layout:" DockPanel.Dock="Left" VerticalContentAlignment="Center" />
-                <ComboBox x:Name="Layout" DockPanel.Dock="Left" Width="100" VerticalContentAlignment="Center"
-                          SelectedIndex="0" SelectionChanged="Layout_SelectionChanged" />
-
-                <Label Content="Appearance:" DockPanel.Dock="Left" VerticalContentAlignment="Center" Margin="10,0,0,0" />
-                <ComboBox x:Name="Appearance" DockPanel.Dock="Left" Width="100" VerticalContentAlignment="Center"
-                          SelectedIndex="0" SelectionChanged="Appearance_SelectionChanged">
-                    <ComboBoxItem Content="Vertical" />
-                    <ComboBoxItem Content="Horizontal" />
-                    <ComboBoxItem Content="Radial" />
-                </ComboBox>
-
                 <Label Content="Zoom:" DockPanel.Dock="Left" VerticalContentAlignment="Center" Margin="10,0,0,0" />
                 <Slider x:Name="Zoom" DockPanel.Dock="Left" Minimum="25" Value="100" Maximum="400" Interval="1"
                         ValueChanged="Zoom_ValueChanged" Width="200" VerticalAlignment="Center" />

+ 21 - 50
prs.desktop/Panels/OrgChart/OrgChartPanel.xaml.cs

@@ -18,6 +18,7 @@ using InABox.WPF;
 using Microsoft.Win32;
 using Syncfusion.UI.Xaml.Diagram;
 using System.ComponentModel;
+using NPOI.SS.Formula.Functions;
 
 namespace PRSDesktop
 {
@@ -33,41 +34,35 @@ namespace PRSDesktop
         public OrgChartPanel()
         {
             InitializeComponent();
-            if (Security.IsAllowed<CanViewOrgChartByEmployee>())
-                Layout.Items.Add("Employees");
-            if (Security.IsAllowed<CanViewOrgChartByPosition>())
-                Layout.Items.Add("Positions");
-            if (Security.IsAllowed<CanViewOrgChartByRole>())
-                Layout.Items.Add("Job Roles");
-            Layout.Visibility = Layout.Items.Count > 1 ? Visibility.Visible : Visibility.Collapsed;
-            LayoutLabel.Visibility = Layout.Visibility;
         }
 
         public event DataModelUpdateEvent? OnUpdateDataModel;
 
         public bool IsReady { get; set; }
 
-        private void SaveSettings()
-        {
-            //_settings.Zoom = Zoom.Value;
-            _settings.Appearance = (OrgChartAppearance)Appearance.SelectedIndex;
-
-            _settings.Layout = Equals(Layout.SelectedValue, "Employees")
-                ? OrgChartLayout.Employee
-                : Equals(Layout.SelectedValue, "Positions")
-                    ? OrgChartLayout.Position
-                    : OrgChartLayout.Role;
-
-
-            Task.Run(
-                () => { new UserConfiguration<OrgChartSettings>().Save(_settings); }
-            );
-        }
-
         #region IPanel Support
 
         public void CreateToolbarButtons(IPanelHost host)
         {
+            if (Security.IsAllowed<CanEditOrgChart>())
+            {
+                host.CreateSetupAction(new PanelAction
+                {
+                    Caption = "Org Chart Settings",
+                    OnExecute = OrgChartSettings_Click
+                });
+            }
+        }
+
+        private void OrgChartSettings_Click(PanelAction obj)
+        {
+            var settings = new GlobalConfiguration<OrgChartSettings>().Load();
+            var grid = new DynamicItemsListGrid<OrgChartSettings>();
+            if (grid.EditItems(new OrgChartSettings[] { settings }))
+            {
+                new GlobalConfiguration<OrgChartSettings>().Save(settings);
+                _settings = settings;
+            }
         }
 
         public Dictionary<string, object[]> Selected()
@@ -81,17 +76,9 @@ namespace PRSDesktop
 
         public void Setup()
         {
-            _settings = new UserConfiguration<OrgChartSettings>().Load();
+            _settings = new GlobalConfiguration<OrgChartSettings>().Load();
 
-            Appearance.SelectedIndex = (int)_settings.Appearance;
             model.Appearance = _settings.Appearance;
-
-            var layout = _settings.Layout == OrgChartLayout.Employee
-                ? "Employees"
-                : _settings.Layout == OrgChartLayout.Position
-                    ? "Positions"
-                    : "Job Roles";
-            Layout.SelectedValue = Layout.Items.Contains(layout) ? layout : Layout.Items[0];
             model.Layout = _settings.Layout;
 
             //Zoom.Value = _settings.Zoom;
@@ -567,22 +554,6 @@ namespace PRSDesktop
             }
         }
 
-        private void Appearance_SelectionChanged(object sender, SelectionChangedEventArgs e)
-        {
-            if (model.Active)
-                SaveSettings();
-
-            model.Appearance = (OrgChartAppearance)Appearance.SelectedIndex;
-        }
-
-        private void Layout_SelectionChanged(object sender, SelectionChangedEventArgs e)
-        {
-            if (model.Active)
-                SaveSettings();
-
-            model.Layout = _settings != null ? _settings.Layout : OrgChartLayout.Employee;
-        }
-
         #endregion
     }
 }

+ 4 - 1
prs.desktop/Panels/OrgChart/OrgChartSettings.cs

@@ -1,11 +1,14 @@
 using InABox.Configuration;
+using InABox.Core;
 
 namespace PRSDesktop
 {
-    public class OrgChartSettings : IUserConfigurationSettings
+    public class OrgChartSettings : BaseObject, IGlobalConfigurationSettings
     {
+        [EnumLookupEditor(typeof(OrgChartAppearance))]
         public OrgChartAppearance Appearance { get; set; }
 
+        [EnumLookupEditor(typeof(OrgChartLayout))]
         public OrgChartLayout Layout { get; set; }
         //public double Zoom { get; set; }
     }