Imports EgtUILib Imports EgtWPFLib5 Public Class CurrMachiningPanelVM Inherits VMBase #Region "FIELDS & PROPERTIES" Private m_CurrMachining As CurrMachining Public ReadOnly Property CurrMachining As CurrMachining Get Return m_CurrMachining End Get End Property Friend Sub SetCurrMachining(CurrMachining As CurrMachining) m_CurrMachining = CurrMachining NotifyPropertyChanged(NameOf(CurrMachining)) Map.refTopPanelVM.UpdateCurrMachining() End Sub ' Definizione comandi Private m_cmdOk As ICommand Private m_cmdCancel As ICommand Private m_cmdSaveInDb As ICommand #End Region ' FIELDS & PROPERTIES #Region "CONSTRUCTORS" Sub New() ' Creo riferimento a questa classe in Map Map.SetRefCurrMachiningPanelVM(Me) End Sub #End Region ' CONSTRUCTORS Friend Sub ReadMachParamFromSelPart() If IsNothing(Map.refTopPanelVM.SelPart) Then Return Dim nData As Integer = 0 m_CurrMachining = New CurrMachining(Map.refTopPanelVM.SelPart.nPartId) SetCurrMachining(m_CurrMachining) ' aggiorno parametri mostrati nella barra NotifyPropertyChanged(NameOf(CurrMachining)) Map.refTopPanelVM.UpdateCurrMachining() End Sub #Region "COMMANDS" #Region "Ok" Public ReadOnly Property Ok_Command As ICommand Get If m_cmdOk Is Nothing Then m_cmdOk = New Command(AddressOf Ok) End If Return m_cmdOk End Get End Property Public Sub Ok() ' scrivo i parametri modificati m_CurrMachining.WriteCurrParamInPart(Map.refTopPanelVM.SelPart.nPartId) ' ripristino modalita' standard Map.refTopPanelVM.SelPage = Pages.MODIFY End Sub #End Region ' Ok #Region "Cancel" Public ReadOnly Property Cancel_Command As ICommand Get If m_cmdCancel Is Nothing Then m_cmdCancel = New Command(AddressOf Cancel) End If Return m_cmdCancel End Get End Property Public Sub Cancel() ' ripristino i parametri modificati m_CurrMachining.ResetModification() ' ripristino modalita' standard Map.refTopPanelVM.SelPage = Pages.MODIFY End Sub #End Region ' Cancel #Region "SaveInDb" Public ReadOnly Property SaveInDb_Command As ICommand Get If m_cmdSaveInDb Is Nothing Then m_cmdSaveInDb = New Command(AddressOf SaveInDb) End If Return m_cmdSaveInDb End Get End Property Public Sub SaveInDb() If IsNothing(m_CurrMachining) Then Return ' apro finestra di scelta nome Dim SaveInDbWndVM As New MachSaveInDbWndVM(Map.refTopPanelVM.SelMachining.sName) Dim SaveInDbWndV As New MachSaveInDbWndV(Application.Current.MainWindow, SaveInDbWndVM) If SaveInDbWndV.ShowDialog Then ' recupero primo indice libero Dim nIndex As Integer = 1 Dim sGUID As String = "" While ReadMachiningParamString(nIndex, MAC_GUID, "", sGUID) > 0 nIndex += 1 End While Dim sNewMachGUID As Guid = Guid.NewGuid() WriteMachiningParam(nIndex, MAC_GUID, sNewMachGUID.ToString()) WriteMachiningParam(nIndex, MAC_NAME, SaveInDbWndVM.sName) ' creo categoria materiali con attivo materiale corrente Dim MaterialCathegory As New MachiningCathegory(MachiningCathegory.Cathegories.MATERIALS, 0) Dim SelMaterialParam As MaterialMachiningParam = MaterialCathegory.MachiningParamList.FirstOrDefault(Function(x As MaterialMachiningParam) x.sGUID = Map.refTopPanelVM.SelMaterial.sGUID) If Not IsNothing(SelMaterialParam) Then SelMaterialParam.bValue = True End If ' aggiungo categoria materiali a lavorazione corrente m_CurrMachining.CathegoryList.Add(MaterialCathegory) ' scrivo parametri nuova lavorazione in Db For Each Cathegory In m_CurrMachining.CathegoryList Cathegory.WriteParamOnDb(nIndex) Next ' ricarico lista lavorazioni top panel e db Map.refTopPanelVM.InitMachiningsList() Map.refMachiningDbVM.Init() ' seleziono quella appena creata Map.refTopPanelVM.SelMachining = Map.refTopPanelVM.MachiningList.FirstOrDefault(Function(x) x.sGUID = sNewMachGUID) Map.refTopPanelVM.NotifyPropertyChanged(NameOf(Map.refTopPanelVM.SelMachining)) End If End Sub #End Region ' SaveInDb #End Region ' COMMANDS End Class