diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-05-07 21:26:06 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-05-07 21:26:06 +0300 |
| commit | 98c2921a8cf655da3962edafe91bbccc89632e6d (patch) | |
| tree | 95419d7651d8bcb8e3b2a58af884231c0e91cb0f /Software/Visual_Studio | |
| parent | 070db71577b05f72e7531d0e530a4ef5bd1d128a (diff) | |
| download | Tango-98c2921a8cf655da3962edafe91bbccc89632e6d.tar.gz Tango-98c2921a8cf655da3962edafe91bbccc89632e6d.zip | |
Roles & Permissions !
Diffstat (limited to 'Software/Visual_Studio')
13 files changed, 519 insertions, 135 deletions
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/MainViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/MainViewVM.cs index ef22d0bdc..49345e413 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/MainViewVM.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; +using Tango.BL.Enumerations; using Tango.FSE.Common; using Tango.FSE.Common.Navigation; using Tango.FSE.Stubs.Views; @@ -29,16 +30,19 @@ namespace Tango.FSE.Stubs.ViewModels Image = ResourceHelper.GetImageFromResources("Images/test_runner.png"), }); - NavigationManager.MenuItems.Add(new NavigationMenuItem(() => - { - NavigationManager.NavigateTo<StubsModule>(nameof(TestDesignerView)); - }) + if (AuthenticationProvider.CurrentUser.HasPermission(Permissions.FSE_RunTestDesigner)) { - Name = "Test Designer", - Index = 7, - Description = "Create and test new test runner projects.", - Image = ResourceHelper.GetImageFromResources("Images/test_designer.png"), - }); + NavigationManager.MenuItems.Add(new NavigationMenuItem(() => + { + NavigationManager.NavigateTo<StubsModule>(nameof(TestDesignerView)); + }) + { + Name = "Test Designer", + Index = 7, + Description = "Create and test new test runner projects.", + Image = ResourceHelper.GetImageFromResources("Images/test_designer.png"), + }); + } }); } } diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/TestDesignerViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/TestDesignerViewVM.cs index 3a64437c6..8eb71490c 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/TestDesignerViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/TestDesignerViewVM.cs @@ -13,6 +13,7 @@ using System.Windows; using System.Windows.Input; using System.Windows.Threading; using Tango.BL.Entities; +using Tango.BL.Enumerations; using Tango.Core; using Tango.Core.Commands; using Tango.Core.ExtensionMethods; @@ -218,10 +219,10 @@ namespace Tango.FSE.Stubs.ViewModels AddLibraryCommand = new RelayCommand(AddNewLibrary); ClearOutputCommand = new RelayCommand(Clear); DeleteLibraryCommand = new RelayCommand<Script>(DeleteLibrary); - PublishProjectCommand = new RelayCommand(PublishProject); + PublishProjectCommand = new RelayCommand(PublishProject,() => CurrentUser.HasPermission(Permissions.FSE_PublishTestProjects)); LoadPublishedProjectCommand = new RelayCommand(LoadPublishedProject); UnPublishProjectCommand = new RelayCommand(UnPublishProject); - TogglePublishPanelCommand = new RelayCommand(() => IsPublishPanelOpened = !IsPublishPanelOpened); + TogglePublishPanelCommand = new RelayCommand(() => IsPublishPanelOpened = !IsPublishPanelOpened, () => CurrentUser.HasPermission(Permissions.FSE_PublishTestProjects)); RenameLibraryCommand = new RelayCommand<Script>(RenameLibrary); CreateItemCommand = new RelayCommand<CreateItem>(AutoCreateItem); DisplayResultGridCommand = new RelayCommand<Result>(DisplayResultGrid); diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/AuthorizationException.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/AuthorizationException.cs new file mode 100644 index 000000000..301c2482b --- /dev/null +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/AuthorizationException.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.FSE.BL +{ + public class AuthorizationException : Exception + { + public AuthorizationException() : base("Insufficient privileges to perform the specified action.") + { + + } + + public AuthorizationException(String message) : base(message) + { + + } + } +} diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/PublishedTestProjectsService.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/PublishedTestProjectsService.cs index a8b5d9f0b..1f8476480 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/PublishedTestProjectsService.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/PublishedTestProjectsService.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using Tango.BL; using Tango.BL.Entities; +using Tango.BL.Enumerations; using Tango.FSE.BL.CacheEntities; using Z.EntityFramework.Plus; @@ -106,6 +107,11 @@ namespace Tango.FSE.BL.Services { return Task.Factory.StartNew<PublishedTestProject>(() => { + if (!CurrentUser.HasPermission(Permissions.FSE_PublishTestProjects)) + { + throw new AuthorizationException(); + } + if (!ConnectivityProvider.CheckOnline()) { throw new InternetConnectionException(); diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj b/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj index 98addeeaa..e548b03db 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj @@ -80,6 +80,7 @@ </Reference> </ItemGroup> <ItemGroup> + <Compile Include="AuthorizationException.cs" /> <Compile Include="CacheEntities\CachedEventType.cs" /> <Compile Include="CacheEntities\CachedPublishedTestProject.cs" /> <Compile Include="EntityRepositoryBase.cs" /> diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/Authorization/AuthorizationHelper.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/Authorization/AuthorizationHelper.cs new file mode 100644 index 000000000..7ef470ad1 --- /dev/null +++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/Authorization/AuthorizationHelper.cs @@ -0,0 +1,172 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using Tango.BL.Enumerations; +using Tango.Core.DI; +using Tango.FSE.Common.Authentication; + +namespace Tango.FSE.Common.Authorization +{ + public static class AuthorizationHelper + { + private static IAuthenticationProvider _authenticationProvider; + private static List<FrameworkElement> _elements; + private static bool _initialized; + + static AuthorizationHelper() + { + _elements = new List<FrameworkElement>(); + } + + #region Mode + + /// <summary> + /// Determined the resolution mode for the trigger. + /// </summary> + public static readonly DependencyProperty ModeProperty = + DependencyProperty.RegisterAttached("Mode", + typeof(BlockingMode?), typeof(AuthorizationHelper), + new FrameworkPropertyMetadata(null, Invalidate)); + + /// <summary> + /// Sets the Mode attached property. + /// </summary> + /// <param name="element">The element.</param> + /// <param name="value">if set to <c>true</c> [value].</param> + public static void SetMode(FrameworkElement element, BlockingMode? value) + { + element.SetValue(ModeProperty, value); + } + + /// <summary> + /// Gets the Mode attached property. + /// </summary> + /// <param name="element">The element.</param> + /// <returns></returns> + public static BlockingMode? GetMode(FrameworkElement element) + { + return (BlockingMode?)element.GetValue(ModeProperty); + } + + #endregion + + #region Permission + + /// <summary> + /// Determined the resolution Permission for the trigger. + /// </summary> + public static readonly DependencyProperty PermissionProperty = + DependencyProperty.RegisterAttached("Permission", + typeof(Permissions?), typeof(AuthorizationHelper), + new FrameworkPropertyMetadata(null, Invalidate)); + + /// <summary> + /// Sets the Permission attached property. + /// </summary> + /// <param name="element">The element.</param> + /// <param name="value">if set to <c>true</c> [value].</param> + public static void SetPermission(FrameworkElement element, Permissions? value) + { + element.SetValue(PermissionProperty, value); + } + + /// <summary> + /// Gets the Permission attached property. + /// </summary> + /// <param name="element">The element.</param> + /// <returns></returns> + public static Permissions? GetPermission(FrameworkElement element) + { + return (Permissions?)element.GetValue(PermissionProperty); + } + + #endregion + + private static void Invalidate(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + FrameworkElement element = d as FrameworkElement; + + if (element != null) + { + if (!_initialized) + { + _initialized = true; + + TangoIOC.Default.GetInstanceWhenAvailable<IAuthenticationProvider>((x) => + { + _authenticationProvider = x; + _authenticationProvider.CurrentUserChanged += _authenticationProvider_CurrentUserChanged; + }); + } + + Invalidate(element); + } + } + + private static void Invalidate(FrameworkElement element) + { + if (!_elements.Contains(element)) + { + _elements.Add(element); + element.Unloaded += Element_Unloaded; + } + + var currentUser = _authenticationProvider.CurrentUser; + var permission = GetPermission(element); + var mode = GetMode(element); + + if (currentUser != null && permission != null && mode != null) + { + bool hasPermission = currentUser.HasPermission(permission.Value); + + if (!hasPermission) + { + if (mode == BlockingMode.Collapsed) + { + element.Visibility = Visibility.Collapsed; + } + else if (mode == BlockingMode.Hidden) + { + element.Visibility = Visibility.Hidden; + } + else if (mode == BlockingMode.Disabled) + { + element.IsEnabled = false; + } + } + else + { + if (mode == BlockingMode.Collapsed || mode == BlockingMode.Hidden) + { + element.Visibility = Visibility.Visible; + } + else if (mode == BlockingMode.Disabled) + { + element.IsEnabled = true; + } + } + } + } + + private static void Element_Unloaded(object sender, RoutedEventArgs e) + { + FrameworkElement element = sender as FrameworkElement; + + if (element != null) + { + element.Unloaded -= Element_Unloaded; + } + } + + private static void _authenticationProvider_CurrentUserChanged(object sender, Tango.BL.Entities.User e) + { + foreach (var element in _elements.ToList()) + { + Invalidate(element); + } + } + } +} diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/Authorization/BlockingMode.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/Authorization/BlockingMode.cs new file mode 100644 index 000000000..b128a75b3 --- /dev/null +++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/Authorization/BlockingMode.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.FSE.Common.Authorization +{ + public enum BlockingMode + { + Disabled, + Hidden, + Collapsed + } +} diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/FSEViewModel.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/FSEViewModel.cs index dbded7041..c4b27e530 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.Common/FSEViewModel.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/FSEViewModel.cs @@ -64,11 +64,25 @@ namespace Tango.FSE.Common [TangoInject] public IFSEApplicationManager ApplicationManager { get; set; } + private IAuthenticationProvider _authenticationProvider; /// <summary> /// Gets or sets the authentication provider. /// </summary> [TangoInject] - public IAuthenticationProvider AuthenticationProvider { get; set; } + public IAuthenticationProvider AuthenticationProvider + { + get { return _authenticationProvider; } + set + { + _authenticationProvider = value; + RaisePropertyChangedAuto(); + if (_authenticationProvider != null) + { + _authenticationProvider.CurrentUserChanged += OnCurrentUserChanged; + } + } + } + /// <summary> /// Gets or sets the navigation manager. @@ -219,6 +233,15 @@ namespace Tango.FSE.Common private set { _settings = value; } } + /// <summary> + /// Gets the current user. + /// </summary> + public User CurrentUser + { + get { return AuthenticationProvider.CurrentUser; } + } + + private bool _isVisible; /// <summary> /// Gets or sets a value indicating whether this <see cref="FSEViewModel"/> view is visible. @@ -381,8 +404,17 @@ namespace Tango.FSE.Common protected override void RaisePropertyChangedAuto([CallerMemberName] string caller = null) { base.RaisePropertyChangedAuto(caller); + } + + /// <summary> + /// Raises the property changed event. + /// </summary> + /// <param name="propName">Name of the property.</param> + protected override void RaisePropertyChanged(string propName) + { + base.RaisePropertyChanged(propName); - if (caller == nameof(IsFree)) + if (propName == nameof(IsFree)) { if (IsFree) { @@ -394,6 +426,16 @@ namespace Tango.FSE.Common } } } + + /// <summary> + /// Called on <see cref="IAuthenticationProvider.CurrentUserChanged"/>. + /// </summary> + /// <param name="sender">The sender.</param> + /// <param name="user">The user.</param> + protected virtual void OnCurrentUserChanged(object sender, User user) + { + InvalidateRelayCommands(); + } } /// <summary> diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/Tango.FSE.Common.csproj b/Software/Visual_Studio/FSE/Tango.FSE.Common/Tango.FSE.Common.csproj index 0d89c64ba..6a6970209 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.Common/Tango.FSE.Common.csproj +++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/Tango.FSE.Common.csproj @@ -99,6 +99,8 @@ <ItemGroup> <Compile Include="Authentication\AuthenticationResult.cs" /> <Compile Include="Authentication\IAuthenticationProvider.cs" /> + <Compile Include="Authorization\AuthorizationHelper.cs" /> + <Compile Include="Authorization\BlockingMode.cs" /> <Compile Include="AutoComplete\AutoCompleteSource.cs" /> <Compile Include="Behaviors\CircularProgressBarBehavior.cs" /> <Compile Include="Behaviors\StyleBehavior.cs" /> diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs b/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs index 75323af4a..ae77dbbbf 100644 --- a/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs +++ b/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs @@ -20,10 +20,16 @@ namespace Tango.BL.Enumerations { /// <summary> - /// (Allows loading the Users & Roles module in machine studio) + /// (Allows loading the tech board module in Machine Studio) /// </summary> - [Description("Allows loading the Users & Roles module in machine studio")] - RunUsersAndRolesModule = 10, + [Description("Allows loading the tech board module in Machine Studio")] + RunTechBoardModule = 0, + + /// <summary> + /// (Allows loading the research module in Machine Studio) + /// </summary> + [Description("Allows loading the research module in Machine Studio")] + RunResearchModule = 1, /// <summary> /// (Allows loading the database module in Machine Studio) @@ -32,16 +38,22 @@ namespace Tango.BL.Enumerations RunDataBaseModule = 2, /// <summary> + /// (Allows loading the synchronization module in machine studio) + /// </summary> + [Description("Allows loading the synchronization module in machine studio")] + RunSynchronizationModule = 3, + + /// <summary> /// (Allows loading the machine designer module in Machine Studio) /// </summary> [Description("Allows loading the machine designer module in Machine Studio")] RunMachineDesignerModule = 4, /// <summary> - /// (Allows loading the ColorLab module in Machine Studio) + /// (Allows loading the data capture module in Machine Studio) /// </summary> - [Description("Allows loading the ColorLab module in Machine Studio")] - RunColorLabModule = 9, + [Description("Allows loading the data capture module in Machine Studio")] + RunDataCaptureModule = 5, /// <summary> /// (Allows the execution of Machine Studio) @@ -62,40 +74,34 @@ namespace Tango.BL.Enumerations RunStubsModule = 8, /// <summary> - /// (Allows running the PPC software.) - /// </summary> - [Description("Allows running the PPC software.")] - RunPPC = 15, - - /// <summary> - /// (Allows loading the tech board module in Machine Studio) + /// (Allows loading the ColorLab module in Machine Studio) /// </summary> - [Description("Allows loading the tech board module in Machine Studio")] - RunTechBoardModule = 0, + [Description("Allows loading the ColorLab module in Machine Studio")] + RunColorLabModule = 9, /// <summary> - /// (Allows loading the research module in Machine Studio) + /// (Allows loading the Users & Roles module in machine studio) /// </summary> - [Description("Allows loading the research module in Machine Studio")] - RunResearchModule = 1, + [Description("Allows loading the Users & Roles module in machine studio")] + RunUsersAndRolesModule = 10, /// <summary> - /// (Allows loading the synchronization module in machine studio) + /// (Allows openning the machine studio developer console) /// </summary> - [Description("Allows loading the synchronization module in machine studio")] - RunSynchronizationModule = 3, + [Description("Allows openning the machine studio developer console")] + RunDeveloperConsole = 11, /// <summary> - /// (Allows loading the data capture module in Machine Studio) + /// (Allows loading the RML module in Machine Studio) /// </summary> - [Description("Allows loading the data capture module in Machine Studio")] - RunDataCaptureModule = 5, + [Description("Allows loading the RML module in Machine Studio")] + RunRMLModule = 14, /// <summary> - /// (Allows openning the machine studio developer console) + /// (Allows running the PPC software.) /// </summary> - [Description("Allows openning the machine studio developer console")] - RunDeveloperConsole = 11, + [Description("Allows running the PPC software.")] + RunPPC = 15, /// <summary> /// (Allows running the statistics module in Machine Studio.) @@ -104,12 +110,6 @@ namespace Tango.BL.Enumerations RunStatisticsModule = 16, /// <summary> - /// (Allows loading the RML module in Machine Studio) - /// </summary> - [Description("Allows loading the RML module in Machine Studio")] - RunRMLModule = 14, - - /// <summary> /// (Allows running the logging module in Machine Studio.) /// </summary> [Description("Allows running the logging module in Machine Studio.")] @@ -128,6 +128,12 @@ namespace Tango.BL.Enumerations RunHardwareVersionsModule = 19, /// <summary> + /// (Allows publishing of new PPC application versions.) + /// </summary> + [Description("Allows publishing of new PPC application versions.")] + PublishPPCVersions = 23, + + /// <summary> /// (Allows running the ColorCapture module in Machine Studio) /// </summary> [Description("Allows running the ColorCapture module in Machine Studio")] @@ -146,10 +152,82 @@ namespace Tango.BL.Enumerations FSE_RunFSE = 1000, /// <summary> - /// (Allows publishing of new PPC application versions.) + /// (Allows connecting to machines from all organizations) /// </summary> - [Description("Allows publishing of new PPC application versions.")] - PublishPPCVersions = 23, + [Description("Allows connecting to machines from all organizations")] + FSE_ConnectAnyMachine = 1001, + + /// <summary> + /// (Allows the management of the organization users) + /// </summary> + [Description("Allows the management of the organization users")] + FSE_ManageOrganizationUsersAndRoles = 1002, + + /// <summary> + /// (Allows the management of all organizations users) + /// </summary> + [Description("Allows the management of all organizations users")] + FSE_ManageAllOrganizationsUsersAndRoles = 1003, + + /// <summary> + /// (Allows running the test designer module) + /// </summary> + [Description("Allows running the test designer module")] + FSE_RunTestDesigner = 1004, + + /// <summary> + /// (Allows publishing test projects) + /// </summary> + [Description("Allows publishing test projects")] + FSE_PublishTestProjects = 1005, + + /// <summary> + /// (Allows starting remote desktop sessions) + /// </summary> + [Description("Allows starting remote desktop sessions")] + FSE_RemoteDesktopView = 1006, + + /// <summary> + /// (Allows remote desktop session mouse/keyboard control and extra actions) + /// </summary> + [Description("Allows remote desktop session mouse/keyboard control and extra actions")] + FSE_RemoteDesktopControl = 1007, + + /// <summary> + /// (Allows read access to the PPC file system) + /// </summary> + [Description("Allows read access to the PPC file system")] + FSE_PPCFileSystemRead = 1008, + + /// <summary> + /// (Allows write access to the PPC file system) + /// </summary> + [Description("Allows write access to the PPC file system")] + FSE_PPCFileSystemWrite = 1009, + + /// <summary> + /// (Allows read access to the firmware file system) + /// </summary> + [Description("Allows read access to the firmware file system")] + FSE_FirmwareFileSystemRead = 1010, + + /// <summary> + /// (Allows write access to the firmware file system) + /// </summary> + [Description("Allows write access to the firmware file system")] + FSE_FirmwareFileSystemWrite = 1011, + + /// <summary> + /// (Allows generating tup/tfp packages) + /// </summary> + [Description("Allows generating tup/tfp packages")] + FSE_RemoteUpgradeOffline = 1012, + + /// <summary> + /// (Allows performing direct remote upgrade) + /// </summary> + [Description("Allows performing direct remote upgrade")] + FSE_RemoteUpgradeOnline = 1013, } } diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/Roles.cs b/Software/Visual_Studio/Tango.BL/Enumerations/Roles.cs index 3c53bcc87..02e9d41a8 100644 --- a/Software/Visual_Studio/Tango.BL/Enumerations/Roles.cs +++ b/Software/Visual_Studio/Tango.BL/Enumerations/Roles.cs @@ -104,10 +104,52 @@ namespace Tango.BL.Enumerations PPCPublisher = 13, /// <summary> - /// (Basic FSE Permissions) + /// (Technician) /// </summary> - [Description("Basic FSE Permissions")] - FSE_User = 1000, + [Description("Technician")] + FSETechnician = 1000, + + /// <summary> + /// (Advanced Technician) + /// </summary> + [Description("Advanced Technician")] + FSEAdvancedTechnician = 1001, + + /// <summary> + /// (Administrator) + /// </summary> + [Description("Administrator")] + FSEAdministrator = 1002, + + /// <summary> + /// (Twine Technician) + /// </summary> + [Description("Twine Technician")] + FSETwineTechnician = 1003, + + /// <summary> + /// (Twine Administrator) + /// </summary> + [Description("Twine Administrator")] + FSETwineAdministrator = 1004, + + /// <summary> + /// (Twine Developer) + /// </summary> + [Description("Twine Developer")] + FSETwineDeveloper = 1005, + + /// <summary> + /// (Twine Test Designer) + /// </summary> + [Description("Twine Test Designer")] + FSETwineTestDesigner = 1006, + + /// <summary> + /// (Twine Test Publisher) + /// </summary> + [Description("Twine Test Publisher")] + FSETwineTestPublisher = 1007, } } diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx index ca3df9082..46fc13b0f 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx @@ -860,7 +860,7 @@ <Property Name="GUID" Type="varchar" MaxLength="36" Nullable="false" /> <Property Name="LAST_UPDATED" Type="datetime2" Precision="3" Nullable="false" /> <Property Name="CODE" Type="int" Nullable="false" /> - <Property Name="NAME" Type="nvarchar" MaxLength="40" Nullable="false" /> + <Property Name="NAME" Type="nvarchar" MaxLength="60" Nullable="false" /> <Property Name="DESCRIPTION" Type="nvarchar" MaxLength="100" Nullable="false" /> </EntityType> <EntityType Name="PROCESS_PARAMETERS_TABLES"> @@ -4285,7 +4285,7 @@ <Property Name="GUID" Type="String" Nullable="false" MaxLength="36" FixedLength="false" Unicode="false" /> <Property Name="LAST_UPDATED" Type="DateTime" Nullable="false" Precision="3" /> <Property Name="CODE" Type="Int32" Nullable="false" /> - <Property Name="NAME" Type="String" Nullable="false" MaxLength="40" FixedLength="false" Unicode="true" /> + <Property Name="NAME" Type="String" Nullable="false" MaxLength="60" FixedLength="false" Unicode="true" /> <Property Name="DESCRIPTION" Type="String" Nullable="false" MaxLength="100" FixedLength="false" Unicode="true" /> <NavigationProperty Name="ROLES_PERMISSIONS" Relationship="RemoteModel.FK_ROLES_PERMISSIONS_PERMISSIONS" FromRole="PERMISSION" ToRole="ROLES_PERMISSIONS" /> </EntityType> diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram index fa97977f8..767fc9d32 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram @@ -5,88 +5,88 @@ <!-- Diagram content (shape and connector positions) --> <edmx:Diagrams> <Diagram DiagramId="f9ae01d708754bbd997add25a4bacc79" Name="Diagram1" ZoomLevel="97"> - <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="42.5" /> - <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="4.625" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="1.5" PointY="65.375" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="62.375" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="1.5" PointY="59.5" /> - <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="15.75" PointY="17" /> - <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="6" PointY="33.125" /> - <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="8.25" PointY="19.875" /> - <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="12.75" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="1.5" PointY="42.625" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="0.75" PointY="37.125" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="3" PointY="35.875" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="5.25" PointY="19.75" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="12" /> - <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="3.75" PointY="65" /> - <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="27.625" /> - <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="3.75" PointY="29" /> - <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="6" PointY="28.375" /> - <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="72.5" /> - <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="9" PointY="56.25" /> - <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="32.75" /> - <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="29.875" /> + <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="8.875" /> + <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="4.5" PointY="30" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="4.5" PointY="60.375" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="67.5" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="4.5" PointY="73.375" /> + <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="15.75" PointY="17.625" /> + <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="7.75" PointY="39.125" /> + <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="5.25" PointY="24.5" /> + <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="13.5" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="1.5" PointY="2.375" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="0.75" PointY="8.875" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="3" PointY="7.625" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="5.25" PointY="16.5" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="8.5" /> + <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="6.75" PointY="65.875" /> + <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="4.5" PointY="34" /> + <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="32.375" /> + <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="5.5" PointY="43.375" /> + <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="7.75" PointY="42.75" /> + <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="70.5" /> + <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="9" PointY="82.625" /> + <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="33.5" /> + <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="24.75" /> <EntityTypeShape EntityType="RemoteModel.FSE_VERSIONS" Width="1.5" PointX="11.25" PointY="28.25" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="1.5" PointY="79.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="3.75" PointY="74.5" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="4.5" PointY="78.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="6.75" PointY="71.5" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="6.5" PointY="57.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="8.75" PointY="65.75" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="7.5" PointY="79.75" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="9.75" PointY="71.5" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="9.5" PointY="61.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="11.75" PointY="63.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="4.5" PointY="82.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="6.75" PointY="75.5" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="68.25" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="1.5" PointY="75.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="3.75" PointY="70.625" /> - <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="6" PointY="36.125" /> - <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="8.25" PointY="37.5" /> - <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="13.75" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="16.375" /> - <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="16.125" /> - <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="6" PointY="10.125" /> - <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="5.25" PointY="24" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="31.75" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="3.75" PointY="56.125" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="6" PointY="61" /> - <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="11.25" PointY="48.5" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="24" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="27" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="20.25" /> - <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="6" PointY="42.625" /> - <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="3.75" PointY="2.75" /> - <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="9.125" /> - <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="46.625" /> - <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="49.25" /> - <EntityTypeShape EntityType="RemoteModel.PUBLISHED_TEST_PROJECTS" Width="1.5" PointX="8.75" PointY="1" /> - <EntityTypeShape EntityType="RemoteModel.PUBLISHED_TEST_PROJECTS_VERSIONS" Width="1.5" PointX="11" PointY="1" /> - <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="15.25" /> - <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="5.25" PointY="15.875" /> - <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="12" PointY="13" /> - <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="13.125" /> - <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="13.5" PointY="20" /> - <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="6" PointY="3" /> - <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="14.25" PointY="27.375" /> - <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="8.25" PointY="16.25" /> - <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="3" PointY="9.25" /> - <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="11.25" PointY="37.875" /> - <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="5.75" PointY="6.75" /> - <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="8.75" PointY="4.75" /> - <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="14.25" PointY="43.125" /> - <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="10.75" PointY="4.75" /> - <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="14.75" PointY="8.75" /> - <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="15.75" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="15.75" PointY="3.75" /> - <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="16.75" PointY="8.75" /> - <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="17.75" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="30.75" /> - <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="14.25" PointY="32.125" /> - <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="24.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="9.5" PointY="57.875" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="11.75" PointY="58.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="12.5" PointY="54.875" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="14.75" PointY="56.625" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="9.5" PointY="71.875" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="11.75" PointY="62.75" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="12.5" PointY="50.75" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="14.75" PointY="60.625" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="9.5" PointY="87.875" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="11.75" PointY="69" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="4.5" PointY="76.875" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="6.75" PointY="71.625" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="63.25" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="4.5" PointY="56.875" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="6.75" PointY="61.625" /> + <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="7.75" PointY="79.125" /> + <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="10" PointY="52.125" /> + <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="16.75" PointY="5.5" /> + <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="17.125" /> + <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="30.625" /> + <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="3" PointY="38.5" /> + <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="5.25" PointY="20.75" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="12.75" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="6.75" PointY="57" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="9" PointY="61.875" /> + <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="11.25" PointY="35" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="21" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="16.875" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="27.75" /> + <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="7.75" PointY="76" /> + <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="6.75" PointY="31.875" /> + <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="44" /> + <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="47.375" /> + <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="50" /> + <EntityTypeShape EntityType="RemoteModel.PUBLISHED_TEST_PROJECTS" Width="1.5" PointX="13.75" PointY="1.625" /> + <EntityTypeShape EntityType="RemoteModel.PUBLISHED_TEST_PROJECTS_VERSIONS" Width="1.5" PointX="16" PointY="1.625" /> + <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="16" /> + <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="8.25" PointY="16.5" /> + <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="9" PointY="12.875" /> + <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="13" /> + <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="13.5" PointY="20.75" /> + <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="6" PointY="6.75" /> + <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="11.25" PointY="0.75" /> + <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="8.25" PointY="21" /> + <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="6" PointY="11" /> + <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="11.25" PointY="39.25" /> + <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="3.75" PointY="1.5" /> + <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="5.75" PointY="1.5" /> + <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="14.25" PointY="29.5" /> + <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="13.75" PointY="5.5" /> + <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="13.75" PointY="9.5" /> + <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="16.75" PointY="13.5" /> + <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="17.75" PointY="16.5" /> + <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="18.75" PointY="1.5" /> + <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="18.75" PointY="6.5" /> + <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="2.625" /> + <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="11.25" PointY="4" /> + <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="25" /> <AssociationConnector Association="RemoteModel.FK_ACTION_LOGS_USERS" /> <AssociationConnector Association="RemoteModel.FK_ORGANIZATIONS_ADDRESSES" /> <AssociationConnector Association="RemoteModel.FK_USERS_ADDRESSES" /> |
