Imports System.Collections.ObjectModel Imports System.IO Imports EgtBEAMWALL.Core Imports EgtBEAMWALL.Core.ConstBeam Imports EgtBEAMWALL.DataLayer.DatabaseModels Imports EgtUILib Imports EgtWPFLib5 Public Class SupervisorManagerVM Inherits VMBase #Region "FIELDS & PROPERTIES" Private m_SupervisorManager_IsEnabled As Boolean = True Public ReadOnly Property SupervisorManager_IsEnabled As Boolean Get Return m_SupervisorManager_IsEnabled End Get End Property Private m_CurrProd As ProdFileVM Friend Property CurrProd As ProdFileVM Get Return m_CurrProd End Get Set(value As ProdFileVM) m_CurrProd = value End Set End Property Private m_bLoadingProd As Boolean = False Public Property bLoadingProd As Boolean Get Return m_bLoadingProd End Get Set(value As Boolean) m_bLoadingProd = value End Set End Property ' Definizione comandi Private m_cmdOpen As ICommand 'Private m_cmdSave As ICommand 'Private m_cmdGoToProj As ICommand '#Region "ToolTip" ' 'Proprietà ToolTip ' Public ReadOnly Property OpenToolTip As String ' Get ' Return EgtMsg(MSG_TOPCOMMANDBAR + 2) ' End Get ' End Property ' Public ReadOnly Property SaveToolTip As String ' Get ' Return EgtMsg(MSG_TOPCOMMANDBAR + 3) ' End Get ' End Property '#End Region ' ToolTip #End Region ' Fields & Properties #Region "CONSTRUCTOR" Sub New() ' Creo riferimento a questa classe in Map Map.SetRefSupervisorManagerVM(Me) End Sub #End Region ' CONSTRUCTOR #Region "METHODS" Public Function SetCurrProd(nProdId As Integer) As Boolean Dim Currprod As ProdFileM = DbControllers.m_ProdController.FindCoreByProdId(nProdId) If IsNothing(Currprod) Then Return False m_CurrProd = New ProdFileVM(Currprod) Return True End Function Friend Sub SetSupervisorManagerIsEnabled(bIsEnabled As Boolean) m_SupervisorManager_IsEnabled = bIsEnabled NotifyPropertyChanged(NameOf(SupervisorManager_IsEnabled)) End Sub #End Region ' METHODS #Region "COMMANDS" #Region "OpenCommand" ''' ''' Returns a command that do Open. ''' Public ReadOnly Property OpenCommand As ICommand Get If m_cmdOpen Is Nothing Then m_cmdOpen = New Command(AddressOf Open) End If Return m_cmdOpen End Get End Property ''' ''' Execute the Open. This method is invoked by the OpenCommand. ''' Friend Sub Open() OpenProject() End Sub Friend Sub OpenProject() '' verifico se progetto modificato, e chiedo se salvare 'ProdFileVM.VerifyProjectModification(CurrProd) Dim sFilePath As String = "" ' se la string è vuota Dim TempCurrProd As ProdFileVM Dim OpenProjectFileDialogVM As OpenProjectFileDialogVM = Nothing ' apro dialogo di scelta file OpenProjectFileDialogVM = New OpenProjectFileDialogVM Dim OpenFile As New OpenProjectFileDialogV(Application.Current.MainWindow, OpenProjectFileDialogVM) Dim DialogResult As Boolean? = OpenFile.EgtShowDialog(ProjectType.PROD) If IsNothing(DialogResult) OrElse Not DialogResult Then Return sFilePath = OpenProjectFileDialogVM.SelProject.sProdPath TempCurrProd = OpenProjectFileDialogVM.SelProject m_bLoadingProd = True If File.Exists(sFilePath) Then If Map.refSceneHostVM.MainController.OpenProject(sFilePath, False) Then m_CurrProd = TempCurrProd Map.refMainWindowVM.UpdateTitle() 'If Map.refMachGroupPanelVM.InitMachGroupList() Then ' m_CurrProd = TempCurrProd ' Map.refMainWindowVM.SetTitle(CurrProd.nProdId.ToString("0000") & " - EgtBEAMWALL") 'Else 'MessageBox.Show("Impossibile aprire gruppi di lavorazione del file!!") 'Map.refSceneHostVM.MainController.NewProject() 'Map.refMainWindowVM.SetTitle("New - EgtBEAMWALL") 'End If Else MessageBox.Show("Impossibile aprire il file!!") Map.refSceneHostVM.MainController.NewProject() Map.refMainWindowVM.SetTitle("New - EgtBEAMWALL") End If Else MessageBox.Show("File non trovato!!") Map.refSceneHostVM.MainController.NewProject() Map.refMainWindowVM.SetTitle("New - EgtBEAMWALL") End If Map.refProjectVM.SupervisorMachGroupPanelVM = New SupervisorMachGroupPanelVM(MachGroupPanelM.CreateNewMachGroupPanel()) ' apro sessione di comunicazione e fisso indice a 0 DbControllers.m_StatusMapController.StartProd(Map.refSupervisorManagerVM.CurrProd.nProdId, m_SupervisorId) Map.refSupervisorManagerVM.CurrProd.SetModificationIndex(0) ' recupero elementi modificati Dim MachGroupList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetFrom(0) ' carico dictionary di tutti i Machgroup For Each MachGroup In MachGroupList If Not Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.ContainsKey(MachGroup.ItemId) Then Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.Add(MachGroup.ItemId, {0, 0}) End If Next ' carico solo elementi passati al supervisore Dim TempList As List(Of DataLayer.DatabaseModels.MachGroupModel) = DbControllers.m_MachGroupController.GetByProdSupervisor(Map.refSupervisorManagerVM.CurrProd.nProdId, m_SupervisorId) For Each DBMachGroup In TempList Dim MachGroup As MyMachGroupVM = Map.refProjectVM.ProdMachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = DBMachGroup.MachGroupId) ' leggo dati da Db MachGroup.dtStartTime = DBMachGroup.DtStart MachGroup.dtEndTime = DBMachGroup.DtEnd MachGroup.MyMachGroupM.SetProductionState(DBMachGroup.State) For Each Part In MachGroup.PartVMList Dim DBPart As PartModel = DbControllers.m_PartController.FindByPartId(Part.nPartId) Part.dtStartTime = DBPart.DtStart Part.dtEndTime = DBPart.DtEnd Part.nProduction_State = DBPart.State Next Map.refProjectVM.SupervisorMachGroupPanelVM.AddMachGroupToSupervisor(MachGroup) Next Map.refProjectVM.SupervisorMachGroupPanelVM.NotifyPropertyChanged(NameOf(Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList)) m_bLoadingProd = False End Sub #End Region ' OpenCommand #End Region ' Commands End Class