Imports System.Collections.ObjectModel Imports System.IO Imports System.Windows.Forms Imports EgtBEAMWALL.Core Imports EgtBEAMWALL.Optimizer.MainMenuVM Imports EgtUILib Imports EgtWPFLib5 Imports Newtonsoft.Json Public Class GeneralParametersWndVM Inherits VMBase #Region "FIELDS & PROPERTIES" Friend Event m_CloseWindow(bDialogResult As Boolean) Private m_GeneralParametersList As New ObservableCollection(Of ProjectParameters) Public Property GeneralParametersList As ObservableCollection(Of ProjectParameters) Get Return m_GeneralParametersList End Get Set(value As ObservableCollection(Of ProjectParameters)) m_GeneralParametersList = value NotifyPropertyChanged(NameOf(GeneralParametersList)) End Set End Property Private m_bSaveGeneralParameters As Boolean Public Property bSaveGeneralParameters As Boolean Get Return m_bSaveGeneralParameters End Get Set(value As Boolean) m_bSaveGeneralParameters = value If m_bSaveGeneralParameters Then SetGeneralParametersIsEnable(True) Else SetGeneralParametersIsEnable(False) Dim sStrategiesDirPath As String = Map.refMainWindowVM.MainWindowM.GetStrategiesDirPath(Map.refStrategyManagerVM.SelStrategyType.Id) Dim sGeneralParametersFilePath As String = sStrategiesDirPath & "\" & GENERALPARAMETERS_FILE & ".json" If File.Exists(sGeneralParametersFilePath) Then Dim sReadedFiles As String = File.ReadAllText(sGeneralParametersFilePath) Dim JsonGeneralParametersList As List(Of JsonGeneralParameters) = JsonConvert.DeserializeObject(Of List(Of JsonGeneralParameters))(sReadedFiles) m_GeneralParametersList = New ObservableCollection(Of ProjectParameters)((From JsonGeneralParameter In JsonGeneralParametersList Select JsonGeneralParameter.Deserialize(Map.refStrategyManagerVM.SelStrategyType.Id)).ToList()) End If End If NotifyPropertyChanged(NameOf(bSaveGeneralParameters)) End Set End Property Friend Sub SetbSaveGeneralParameters(value As Boolean) m_bSaveGeneralParameters = value NotifyPropertyChanged(NameOf(bSaveGeneralParameters)) End Sub Private m_GeneralParametersIsEnable As Boolean = False Public ReadOnly Property GeneralParametersIsEnable As Boolean Get Return m_GeneralParametersIsEnable End Get End Property Friend Sub SetGeneralParametersIsEnable(value As Boolean) m_GeneralParametersIsEnable = value NotifyPropertyChanged(NameOf(GeneralParametersIsEnable)) End Sub Private m_StrategySetupList As New ObservableCollection(Of String) Public ReadOnly Property StrategySetupList As ObservableCollection(Of String) Get Return m_StrategySetupList End Get End Property Private m_SelStrategySetup As String Public Property SelStrategySetup As String Get Return m_SelStrategySetup End Get Set(value As String) m_SelStrategySetup = value NotifyPropertyChanged(NameOf(SelStrategySetup)) End Set End Property ' Definizione Comandi Private m_cmdOk_Command As ICommand #End Region ' Fields & Properties #Region "CONSTRUCTOR" Sub New() ' leggo cartella dei setup delle strategie Dim AISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(ProjectManagerVM.CurrProd.nType, True) Dim AISetupPaths As String() = Directory.GetFiles(AISetupDirPath) For Each AiSetup In AISetupPaths m_StrategySetupList.Add(Path.GetFileNameWithoutExtension(AiSetup)) Next Dim sStrategiesDirPath As String = Map.refMainWindowVM.MainWindowM.GetStrategiesDirPath(Map.refStrategyManagerVM.SelStrategyType.Id) Dim sGeneralParametersFilePath As String = sStrategiesDirPath & "\" & GENERALPARAMETERS_FILE & ".json" If File.Exists(sGeneralParametersFilePath) Then Dim sReadedFiles As String = File.ReadAllText(sGeneralParametersFilePath) Dim JsonGeneralParametersList As List(Of JsonGeneralParameters) = JsonConvert.DeserializeObject(Of List(Of JsonGeneralParameters))(sReadedFiles) m_GeneralParametersList = New ObservableCollection(Of ProjectParameters)((From JsonGeneralParameter In JsonGeneralParametersList Select JsonGeneralParameter.Deserialize(Map.refStrategyManagerVM.SelStrategyType.Id)).ToList()) For Each GenericItem As ProjectParameters In m_GeneralParametersList Select Case GenericItem.sMinUserLevel Case UserLevel.ADVANCED Map.refMainMenuVM.UserLevelGenericVisibility(GenericItem, If(Map.refMainMenuVM.UserAdmin_IsChecked, Visibility.Visible, Visibility.Collapsed)) Case Else If Not Map.refMainMenuVM.UserAdmin_IsChecked Then Map.refMainMenuVM.UserLevelGenericVisibility(GenericItem, If(GenericItem.sMinUserLevel = UserLevel.USER, Visibility.Visible, Visibility.Collapsed)) Map.refMainMenuVM.SetUnloackImage("pack://application:,,,/Resources/NewPage/padlock.png") End If End Select Next NotifyPropertyChanged(NameOf(GeneralParametersList)) End If ' Leggo info se presenti Dim nBTLInfoLayerId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, PROJECTINFO) Dim sInfo As String = String.Empty EgtGetInfo(nBTLInfoLayerId, "AISETUP", m_SelStrategySetup) If Not IsNothing(m_SelStrategySetup) Then nBTLInfoLayerId = EgtGetFirstNameInGroup(GDB_ID.ROOT, BTLINFO) EgtGetInfo(nBTLInfoLayerId, "AISETUP", m_SelStrategySetup) End If For Each GeneralParameter In m_GeneralParametersList Select Case GeneralParameter.GetType() Case GetType(BooleanGenericParameter) SetbSaveGeneralParameters(True) SetGeneralParametersIsEnable(True) Dim sTmpBoolValue As Boolean = DirectCast(GeneralParameter, BooleanGenericParameter).bValue If Not EgtGetInfo(nBTLInfoLayerId, GeneralParameter.sNameNge, DirectCast(GeneralParameter, BooleanGenericParameter).bValue) Then SetbSaveGeneralParameters(False) SetGeneralParametersIsEnable(False) DirectCast(GeneralParameter, BooleanGenericParameter).bValue = sTmpBoolValue Return End If Case GetType(DoubleGenericParameter) SetbSaveGeneralParameters(True) SetGeneralParametersIsEnable(True) Dim sTmpDoubleValue As String = DirectCast(GeneralParameter, DoubleGenericParameter).sValue If Not EgtGetInfo(nBTLInfoLayerId, GeneralParameter.sNameNge, DirectCast(GeneralParameter, DoubleGenericParameter).sValue) Then SetbSaveGeneralParameters(False) SetGeneralParametersIsEnable(False) DirectCast(GeneralParameter, DoubleGenericParameter).sValue = sTmpDoubleValue Return End If Case GetType(ComboGenericParameter) SetbSaveGeneralParameters(True) SetGeneralParametersIsEnable(True) Dim sTmpComboValue As String = DirectCast(GeneralParameter, ComboGenericParameter).SelValue.sValue If Not EgtGetInfo(nBTLInfoLayerId, GeneralParameter.sNameNge, DirectCast(GeneralParameter, ComboGenericParameter).SelValue.sValue) Then DirectCast(GeneralParameter, ComboGenericParameter).SelValue.sValue = sTmpComboValue SetbSaveGeneralParameters(False) SetGeneralParametersIsEnable(False) Return End If Case GetType(StringGenericParameter) SetbSaveGeneralParameters(True) SetGeneralParametersIsEnable(True) Dim sTmpStringValue As String = DirectCast(GeneralParameter, StringGenericParameter).sValue If Not EgtGetInfo(nBTLInfoLayerId, GeneralParameter.sNameNge, DirectCast(GeneralParameter, StringGenericParameter).sValue) Then SetbSaveGeneralParameters(False) SetGeneralParametersIsEnable(False) DirectCast(GeneralParameter, StringGenericParameter).sValue = sTmpStringValue Return End If Case GetType(ListGenericParameter) SetbSaveGeneralParameters(True) SetGeneralParametersIsEnable(True) For Each Item As ToolParameter In DirectCast(GeneralParameter, ListGenericParameter).ListValue If Item.bIsActive Then sInfo &= Item.sUUID & "," & Item.sName & ";" Dim sTmpInfo As String = sInfo If Not EgtGetInfo(nBTLInfoLayerId, GeneralParameter.sNameNge, sInfo) Then SetbSaveGeneralParameters(False) SetGeneralParametersIsEnable(False) sInfo = sTmpInfo Return End If End If Next End Select Next End Sub #End Region ' Constructor #Region "COMMANDS" #Region "Ok_Command" Public ReadOnly Property Ok_Command As ICommand Get If m_cmdOk_Command Is Nothing Then m_cmdOk_Command = New Command(AddressOf Ok) End If Return m_cmdOk_Command End Get End Property Public Sub Ok() Dim sInfo As String = String.Empty Dim nBTLInfoLayerId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, PROJECTINFO) If m_bSaveGeneralParameters Then EgtSetInfo(nBTLInfoLayerId, "AISETUP", m_SelStrategySetup) For Each GeneralParameter In m_GeneralParametersList Select Case GeneralParameter.GetType() Case GetType(BooleanGenericParameter) EgtSetInfo(nBTLInfoLayerId, GeneralParameter.sNameNge, DirectCast(GeneralParameter, BooleanGenericParameter).bValue) Case GetType(DoubleGenericParameter) EgtSetInfo(nBTLInfoLayerId, GeneralParameter.sNameNge, DirectCast(GeneralParameter, DoubleGenericParameter).sValue) Case GetType(ComboGenericParameter) EgtSetInfo(nBTLInfoLayerId, GeneralParameter.sNameNge, DirectCast(GeneralParameter, ComboGenericParameter).SelValue.sValue) Case GetType(StringGenericParameter) EgtSetInfo(nBTLInfoLayerId, GeneralParameter.sNameNge, DirectCast(GeneralParameter, StringGenericParameter).sValue) Case GetType(ListGenericParameter) For Each Item As ToolParameter In DirectCast(GeneralParameter, ListGenericParameter).ListValue If Item.bIsActive Then sInfo &= Item.sUUID & "," & Item.sName & ";" EgtSetInfo(nBTLInfoLayerId, GeneralParameter.sNameNge, sInfo) End If Next End Select Next Else EgtRemoveInfo(nBTLInfoLayerId, "AISETUP") For Each GeneralParameter In m_GeneralParametersList Select Case GeneralParameter.GetType() Case GetType(BooleanGenericParameter) EgtRemoveInfo(nBTLInfoLayerId, GeneralParameter.sNameNge) Case GetType(DoubleGenericParameter) EgtRemoveInfo(nBTLInfoLayerId, GeneralParameter.sNameNge) Case GetType(ComboGenericParameter) EgtRemoveInfo(nBTLInfoLayerId, GeneralParameter.sNameNge) Case GetType(StringGenericParameter) EgtRemoveInfo(nBTLInfoLayerId, GeneralParameter.sNameNge) Case GetType(ListGenericParameter) For Each Item As ToolParameter In DirectCast(GeneralParameter, ListGenericParameter).ListValue If Item.bIsActive Then sInfo &= Item.sUUID & "," & Item.sName & ";" EgtRemoveInfo(nBTLInfoLayerId, GeneralParameter.sNameNge) End If Next End Select Next End If Map.refOnlyProdManagerVM.Save() ' Chiudo finestra RaiseEvent m_CloseWindow(DialogResult.OK) End Sub #End Region ' Ok_Command #End Region ' Commands End Class