Files
egtbeamwall/EgtBEAMWALL.ViewerOptimizer/SupervisorCommThread/SupervisorComm.vb
T
2021-07-29 16:17:37 +02:00

179 lines
7.9 KiB
VB.net

Imports EgtBEAMWALL.Core
Imports EgtBEAMWALL.DataLayer.DatabaseModels
Public Class SupervisorComm
Sub New()
' imposto in Map
'Map.SetRefMachManaging(Me)
End Sub
Friend Sub Timer_Tick()
' se sono in pagina vista
If Map.refMainMenuVM.SelPage = Pages.VIEW Then
' se non c'e' un progetto attivo, esco
If IsNothing(Map.refProjManagerVM.CurrProj) Then Return
' verifico se c'e' un progetto aperto o in caricamento
'If IsNothing(Map.refProjManagerVM.CurrProj) OrElse Map.refProjManagerVM.bLoadingProj Then Return
' verifico se c'e' una sessione aperta sul progetto corrente
Dim nModificationIndex As Integer = -1
Dim ActiveSessionList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetProd()
For Each ActiveSession In ActiveSessionList
If ActiveSession.ItemId = Map.refProjManagerVM.CurrProj.nProdId Then
nModificationIndex = ActiveSession.Index
End If
Next
If nModificationIndex = -1 Then Return
' verifico se ci sono modifiche
If nModificationIndex <> Map.refProjManagerVM.CurrProj.nModificationIndex Then
' recupero elementi modificati
Dim MachGroupList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetFrom(Map.refProjManagerVM.CurrProj.nModificationIndex + 1)
Dim bReloadFile As Boolean = False
For Each MachGroupModification In MachGroupList
Select Case MachGroupModification.Operation
Case Core.StatusMapOpType.PartStart
' aggiorno stati dei pezzi e colore di visualizzazione
Case Core.StatusMapOpType.PartEnd
Case Core.StatusMapOpType.MachGroupRemovedFromSupervisor
Dim Machgroup As MyMachGroupVM = Map.refProjectVM.MachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = MachGroupModification.ItemId)
Machgroup.ResetSupervisorId()
End Select
Next
End If
' se arriva richiesta da supervisore di blocco e salvataggio
' verifico se ho aperto lo stesso progetto
' chiedo se salvare
' blocco interfaccia fino a notifica di sblocco
' se sono in pagina ottimizzatore
ElseIf Map.refMainMenuVM.SelPage = Pages.MACHINING Then
' se non c'e' un progetto attivo, esco
If IsNothing(Map.refProdManagerVM.CurrProd) Then Return
' verifico se c'e' un progetto aperto o in caricamento
'If IsNothing(Map.refProdManagerVM.CurrProd) OrElse Map.refProdManagerVM.bLoadingProd Then Return
' verifico se c'e' una sessione aperta sul progetto corrente
Dim nModificationIndex As Integer = -1
Dim ActiveSessionList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetProd()
For Each ActiveSession In ActiveSessionList
If ActiveSession.ItemId = Map.refProdManagerVM.CurrProd.nProdId Then
nModificationIndex = ActiveSession.Index
End If
Next
If nModificationIndex = -1 Then Return
' verifico se ci sono modifiche
If nModificationIndex <> Map.refProdManagerVM.CurrProd.nModificationIndex Then
' recupero elementi modificati
Dim MachGroupList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetFrom(Map.refProdManagerVM.CurrProd.nModificationIndex + 1)
Dim bReloadFile As Boolean = False
For Each MachGroupModification In MachGroupList
Select Case MachGroupModification.Operation
Case Core.StatusMapOpType.PartStart
Case Core.StatusMapOpType.PartEnd
Case Core.StatusMapOpType.MachGroupRemovedFromSupervisor
Dim Machgroup As MyMachGroupVM = Map.refProjectVM.MachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = MachGroupModification.ItemId)
Machgroup.ResetSupervisorId()
End Select
Next
' se arriva richiesta da supervisore di blocco e salvataggio
' verifico se ho aperto lo stesso progetto
' se si, chiedo se salvare
' blocco interfaccia fino a notifica di sblocco
End If
End If
' se c'e' un progetto aperto o in caricamento
'If IsNothing(Map.refProdManagerVM.CurrProd) OrElse Map.refProdManagerVM.bLoadingProd Then Return
'' recupero indice modifica del prod
'Dim nModificationIndex As Integer = 0
'Dim ActiveSessionList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetProd()
'For Each ActiveSession In ActiveSessionList
' If ActiveSession.ItemId = Map.refSupervisorManagerVM.CurrProd.nProdId Then
' nModificationIndex = ActiveSession.Index
' End If
'Next
'' se indice letto diverso da indice gia' presente
'If nModificationIndex <> Map.refSupervisorManagerVM.CurrProd.nModificationIndex Then
' ' recupero elementi modificati
' Dim MachGroupList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetFrom(Map.refSupervisorManagerVM.CurrProd.nModificationIndex + 1)
' Dim bReloadFile As Boolean = False
' For Each MachGroupModification In MachGroupList
' Select Case MachGroupModification.Operation
' Case Core.StatusMapOpType.MachGroupAdd
' Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.Add(MachGroupModification.ItemId, {MachGroupModification.Index, MachGroupModification.Index})
' Case Core.StatusMapOpType.MachGroupMod
' Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList(MachGroupModification.ItemId)(0) = MachGroupModification.Index
' Case Core.StatusMapOpType.MachGroupRem
' Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.Remove(MachGroupModification.ItemId)
' Case Core.StatusMapOpType.MachGroupAssignedToSupervisor
' Dim MachgroupIndexes As Integer() = Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList(MachGroupModification.ItemId)
' ' se indice di aggiornamento file diverso da indice ultima modifica
' If MachgroupIndexes(0) <> MachgroupIndexes(1) Then
' ' devo ricaricare il file
' bReloadFile = True
' ' ricarico il progetto
' Map.refProjectVM.SupervisorMachGroupPanelVM.ReloadProjectFile()
' End If
' ' lo aggiungo alla lista di MachGroup
' Map.refProjectVM.SupervisorMachGroupPanelVM.AddMachGroupToSupervisor(Map.refProjectVM.ProdMachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = MachGroupModification.ItemId))
' End Select
' Next
' ' se devo ricaricare il file
' If bReloadFile Then
' ' aggiorno indici in dictionary
' For Each MachGroupModification In Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.Where(Function(x) x.Value(0) <> x.Value(1))
' MachGroupModification.Value(1) = MachGroupModification.Value(0)
' Next
' ' ricarico il progetto
' 'Map.refProjectVM.SupervisorMachGroupPanelVM.ReloadProjectFile()
' End If
' ' aggiorno indice del prod
' Map.refSupervisorManagerVM.CurrProd.SetModificationIndex(nModificationIndex)
'End If
'' verifico se e' aperto in qualche ottimizzatore
''DbControllers.m_ProdController.
''Map.refSupervisorManagerVM.CurrProd.bIsLocked
'' verifico se la mappa messaggi ha indice maggiore del mio
'' ricarico il progetto
'' aggiorno eventuali nuovi machgroup
'' se devo ripartire a meta' di una barra
'' mando messaggio di blocco dell'ottimizzatore
End Sub
End Class