59253eb4de
- Cambiata gestione tipo progetto e macchina associata
155 lines
6.9 KiB
VB.net
155 lines
6.9 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.IO
|
|
Imports EgtBEAMWALL.Core
|
|
Imports EgtBEAMWALL.Core.ConstBeam
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class OpenProjectFileDialogVM
|
|
Inherits Core.OpenProjectFileDialogVM
|
|
|
|
#Region "METHODS"
|
|
|
|
Public Overrides Function Init(ProjectType As ProjectType, Optional CurrProjectList As List(Of ProjectFileVM) = Nothing) As Boolean?
|
|
m_ProjectType = ProjectType
|
|
' carico colonne
|
|
LoadColumns(ProjectType)
|
|
NotifyPropertyChanged(NameOf(SearchColumnList))
|
|
m_SelSearchColumn = m_SearchColumnList(0)
|
|
' carico lista progetti
|
|
If IsNothing(CurrProjectList) OrElse CurrProjectList.Count = 0 Then
|
|
' leggo da db
|
|
If ProjectType = ProjectType.PROJ Then
|
|
Dim DbProjectList As New List(Of ProjFileM)
|
|
DbProjectList = DbControllers.m_ProjController.GetLastDesc(50)
|
|
For Each Project In DbProjectList
|
|
m_ProjectList.Add(New ProjFileVM(Project))
|
|
Next
|
|
ElseIf ProjectType = ProjectType.PROD Then
|
|
Dim DbProjectList As New List(Of ProdFileM)
|
|
DbProjectList = DbControllers.m_ProdController.GetLastDesc(50)
|
|
For Each Project In DbProjectList
|
|
m_ProjectList.Add(New ProdFileVM(Project))
|
|
Next
|
|
End If
|
|
Else
|
|
m_ProjectList = New ObservableCollection(Of ProjectFileVM)(CurrProjectList)
|
|
NotifyPropertyChanged(NameOf(ProjectList))
|
|
End If
|
|
m_ProjectList_View = CollectionViewSource.GetDefaultView(m_ProjectList)
|
|
m_ProjectList_View.Filter = AddressOf ProjectFilter
|
|
End Function
|
|
|
|
Public Overrides Sub Delete()
|
|
If IsNothing(SelProject) Then Return
|
|
' recupero indice per riselezionare
|
|
Dim ProjListIndex As Integer = m_ProjectList.IndexOf(SelProject)
|
|
If m_ProjectType = ProjectType.PROJ Then
|
|
' verifico se proj selezionato e' il corrente
|
|
If Not IsNothing(Map.refProjManagerVM.CurrProj) AndAlso SelProject.nProjId = Map.refProjManagerVM.CurrProj.nProjId Then
|
|
MessageBox.Show(EgtMsg(61872), EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return
|
|
End If
|
|
' verifico se proj selezionato ha prod
|
|
If SelProject.nProdId > 0 Then
|
|
MessageBox.Show(EgtMsg(61873), EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return
|
|
End If
|
|
Map.refProjManagerVM.m_MruFiles.Remove(SelProject.sProjPath)
|
|
Map.refProjManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames))
|
|
' cancello progetto
|
|
DbControllers.m_ProjController.DeleteProj(SelProject.nProjId)
|
|
' cancello cartella del Proj
|
|
Try
|
|
Directory.Delete(SelProject.sProjDirPath, True)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error in deleting directory " & SelProject.sProjDirPath)
|
|
End Try
|
|
' aggiorno lista progetti
|
|
m_ProjectList.Clear()
|
|
Dim DbProjectList As New List(Of ProjFileM)
|
|
DbProjectList = DbControllers.m_ProjController.GetLastDesc(50)
|
|
For Each Project In DbProjectList
|
|
m_ProjectList.Add(New ProjFileVM(Project))
|
|
Next
|
|
ElseIf m_ProjectType = ProjectType.PROD Then
|
|
' verifico se prod selezionato e' il corrente
|
|
If Not IsNothing(Map.refProdManagerVM.CurrProd) AndAlso SelProject.nProdId = Map.refProdManagerVM.CurrProd.nProdId Then
|
|
MessageBox.Show(EgtMsg(61872), EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return
|
|
End If
|
|
' verifico se ci sono grezzi mandati al supervisore
|
|
If DbControllers.m_ProdController.IsAnyInSupervisor(SelProject.nProdId) Then
|
|
MessageBox.Show(EgtMsg(61874), EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return
|
|
End If
|
|
Map.refProdManagerVM.m_MruFiles.Remove(SelProject.sProdPath)
|
|
Map.refProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProdManagerVM.MruFileNames))
|
|
' cancello progetto
|
|
DbControllers.m_ProdController.DeleteProd(SelProject.nProdId)
|
|
' riporto prod in proj
|
|
Dim nCurrCtx As Integer = EgtGetCurrentContext()
|
|
Dim nTempCtx As Integer = EgtInitContext()
|
|
If nTempCtx <> 0 Then
|
|
' inizializzo gestore lavorazioni
|
|
EgtInitMachMgr(Map.refMainWindowVM.MainWindowM.sMachinesRoot, Map.refMainWindowVM.MainWindowM.sToolMakersDir)
|
|
EgtOpenFile(SelProject.sProdPath)
|
|
' cancello tutti i gruppi di lavorazione
|
|
Dim nMachGroupId As Integer = EgtGetFirstMachGroup()
|
|
While nMachGroupId <> GDB_ID.NULL
|
|
EgtSetCurrMachGroup(nMachGroupId)
|
|
Dim nRawPartId As Integer = EgtGetFirstRawPart()
|
|
While nRawPartId <> GDB_ID.NULL
|
|
Dim nPartId As Integer = EgtGetFirstPartInRawPart(nRawPartId)
|
|
While nPartId <> GDB_ID.NULL
|
|
EgtRemovePartFromRawPart(nPartId)
|
|
' elimino pezzo copia
|
|
EgtErase(nPartId)
|
|
nPartId = EgtGetFirstPartInRawPart(nRawPartId)
|
|
End While
|
|
nRawPartId = EgtGetNextRawPart(nRawPartId)
|
|
End While
|
|
EgtRemoveMachGroup(nMachGroupId)
|
|
nMachGroupId = EgtGetFirstMachGroup()
|
|
End While
|
|
' lo salvo in tutti i proj correlati
|
|
Dim ProdFile As ProdFileVM = DirectCast(SelProject, ProdFileVM)
|
|
For Each nProjId In ProdFile.nProjIdList
|
|
EgtSaveFile(ProdFile.GetProjPath(nProjId), NGE.CMPTEXT)
|
|
Next
|
|
' torno sul contesto corrente
|
|
EgtSetCurrentContext(nCurrCtx)
|
|
EgtDeleteContext(nTempCtx)
|
|
End If
|
|
' se proj corrente era il prod cancellato, aggiorno proj corrente
|
|
If Not IsNothing(Map.refProjManagerVM.CurrProj) AndAlso Map.refProjManagerVM.CurrProj.nProdId = SelProject.nProdId Then
|
|
Map.refProjManagerVM.UpdateCurrProj()
|
|
End If
|
|
' cancello cartella del Prod
|
|
Try
|
|
Directory.Delete(SelProject.sProdDirPath, True)
|
|
Catch ex As Exception
|
|
EgtOutLog("Error in deleting directory " & SelProject.sProdDirPath)
|
|
End Try
|
|
' aggiorno lista progetti
|
|
m_ProjectList.Clear()
|
|
Dim DbProjectList As New List(Of ProdFileM)
|
|
DbProjectList = DbControllers.m_ProdController.GetLastDesc(50)
|
|
For Each Project In DbProjectList
|
|
m_ProjectList.Add(New ProdFileVM(Project))
|
|
Next
|
|
End If
|
|
' ripristino selezionato
|
|
If ProjListIndex >= 0 AndAlso ProjListIndex <= m_ProjectList.Count - 1 Then
|
|
SelProject = m_ProjectList(ProjListIndex)
|
|
NotifyPropertyChanged(NameOf(SelProject))
|
|
End If
|
|
' reset dei controller per tornare in sync
|
|
DbControllers.m_ProjController.ResetController()
|
|
DbControllers.m_ProdController.ResetController()
|
|
End Sub
|
|
|
|
#End Region ' METHODS
|
|
|
|
End Class
|