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