Files
egtbeamwall/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProdFileVM.vb
T
2023-10-27 17:34:39 +02:00

182 lines
8.3 KiB
VB.net

Imports System.IO
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class ProdFileVM
Inherits Core.ProdFileVM
#Region "CONSTRUCTORS"
Sub New(ProdFileM As ProdFileM)
MyBase.New(ProdFileM)
' aggiungo nome btl
Dim sBTLFileName As String = ""
For Each CurrProj In nProjIdList
Dim TempProj As ProjFileM = DbControllers.m_ProjController.FindByProjIdConv(CurrProj)
If Not IsNothing(TempProj) Then sBTLFileName &= TempProj.sListName
Next
SetBTLFileName(sBTLFileName)
' verifico valore description
If Not IsNothing(ProdFileM) AndAlso String.IsNullOrWhiteSpace(ProdFileM.sName) Then
For Each CurrProj In nProjIdList
Dim TempProj As ProjFileM = DbControllers.m_ProjController.FindByProjIdConv(CurrProj)
If Not IsNothing(TempProj) AndAlso Not String.IsNullOrWhiteSpace(TempProj.sBTLFileName) Then
DbControllers.m_ProdController.UpdateDescription(ProdFileM.nProdId, TempProj.sBTLFileName)
ProdFileM.sName = TempProj.sBTLFileName
End If
Next
End If
End Sub
#End Region ' CONSTRUCTORS
Friend Function GetProjPath(nProjId As Integer)
Dim sPath As String = String.Empty
If nProjId = 0 Then Return String.Empty
Return refMainWindowVM.MainWindowM.sProjsDir & "\" & nProjId.ToString("0000") & "\" & nProjId.ToString("0000") & ".nge"
End Function
'' funzione che restituisce le parti di nome file
'Friend Shared Function VerifyProjectFile(nProjectType As ProjectType, ProjectFileName As String, ByRef nProjId As Integer, ByRef nProdId As Integer, ByRef sBTLFileName As String) As Boolean
' If nProjectType = ProjectType.PROJ Then
' Dim DataFromFileName As String() = ProjectFileName.Split(FILENAMESEPARATOR)
' If DataFromFileName.Count = 3 Then
' If Not String.IsNullOrEmpty(DataFromFileName(0)) Then
' Integer.TryParse(DataFromFileName(0), nProjId)
' Else Return False
' End If
' If Not String.IsNullOrEmpty(DataFromFileName(1)) Then
' Integer.TryParse(DataFromFileName(1), nProdId)
' Else
' nProdId = 0
' End If
' If Not String.IsNullOrEmpty(DataFromFileName(2)) Then
' sBTLFileName = DataFromFileName(2)
' End If
' Return True
' Else Return False
' End If
' ElseIf nProjectType = ProjectType.PROD Then
' Return Integer.TryParse(ProjectFileName, nProdId)
' Else Return False
' End If
'End Function
'' funzione che dato un nome file e il tipo restituisce il corretto numero di progetto
'Friend Shared Function GetProjectNumber(nProjectType As ProjectType, ProjectFileName As String, ByRef nProjId As Integer, ByRef nProdId As Integer, ByRef sBTLFileName As String) As Boolean
' If String.IsNullOrWhiteSpace(ProjectFileName) Then
' nProjId = 0
' nProdId = 0
' sBTLFileName = ""
' Return False
' ElseIf ProjectFileName.Contains(FILENAMESEPARATOR) Then
' Dim DataFromFileName As String() = ProjectFileName.Split(FILENAMESEPARATOR)
' If DataFromFileName.Count = 3 Then
' If Not String.IsNullOrEmpty(DataFromFileName(0)) Then
' Integer.TryParse(DataFromFileName(0), nProjId)
' Else Return False
' End If
' If Not String.IsNullOrEmpty(DataFromFileName(1)) Then
' Integer.TryParse(DataFromFileName(1), nProdId)
' Else
' nProdId = 0
' End If
' If Not String.IsNullOrEmpty(DataFromFileName(2)) Then
' sBTLFileName = DataFromFileName(2)
' End If
' Return True
' Else Return False
' End If
' ElseIf nProjectType = ProjectType.PROJ Then
' Dim ProjectFileNameProd As String = Integer.TryParse(ProjectFileName, nProdId)
' Dim nTempProjId As Integer = 0
' Dim nTempProdId As Integer = 0
' Dim sTempBTLFileName As String = ""
' ' ricavo lista cartelle proj
' Dim AllDirsInDir As IEnumerable(Of String) = IO.Directory.EnumerateDirectories(Map.refMainWindowVM.MainWindowM.sProjsDir)
' For Each Directory In AllDirsInDir
' Dim AllFilesInDir As IEnumerable(Of String) = IO.Directory.EnumerateFiles(Directory)
' For Each File In AllFilesInDir
' If Path.GetExtension(File).ToLower() = ".nge" Then
' If File.Contains(FILENAMESEPARATOR) Then
' Dim DataFromFileName As String() = ProjectFileName.Split(FILENAMESEPARATOR)
' If DataFromFileName.Count = 3 Then
' If Not String.IsNullOrEmpty(DataFromFileName(0)) Then
' Integer.TryParse(DataFromFileName(0), nTempProjId)
' Else Return False
' End If
' If Not String.IsNullOrEmpty(DataFromFileName(1)) Then
' Integer.TryParse(DataFromFileName(1), nTempProdId)
' Else
' nProdId = 0
' End If
' If Not String.IsNullOrEmpty(DataFromFileName(2)) Then
' sTempBTLFileName = DataFromFileName(2)
' End If
' If ProjectFileNameProd = nTempProdId Then
' nProjId = nTempProjId
' nProdId = nTempProdId
' sTempBTLFileName = sBTLFileName
' Return True
' End If
' Else Return False
' End If
' End If
' End If
' Next
' Next
' End If
' Return False
'End Function
Friend Shared Function VerifyProjectModification(CurrProject As ProdFileVM) As MessageBoxResult
If IsNothing(CurrProject) Then Return True
Dim bNewProject As Boolean = False
Dim sProjectDirPath As String = ""
sProjectDirPath = CurrProject.sProdDirPath
Dim VerifyResult As MessageBoxResult = MessageBoxResult.None
' verifico se progetto modificato, e chiedo se salvare
If EgtGetModified() OrElse CurrProject.bIsNew OrElse Map.refCALCPanelVM.IsMachineModified() Then
VerifyResult = MessageBox.Show(EgtMsg(61875), "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
Select Case VerifyResult
Case MessageBoxResult.Yes
' salvo proj
Map.refProdManagerVM.Save()
Case MessageBoxResult.Cancel
Return MessageBoxResult.Cancel
Case Else ' No
EgtResetModified()
Map.refCALCPanelVM.RevertToOriginalMachine()
If CurrProject.bIsNew Then
' lo elimino
Try
Directory.Delete(sProjectDirPath, True)
Catch ex As Exception
End Try
If Not IsNothing(Map.refProdManagerVM) Then
Map.refProdManagerVM.m_MruFiles.Remove(CurrProject.sProdPath)
Map.refProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProdManagerVM.MruFileNames))
ElseIf Not IsNothing(Map.refOnlyProdManagerVM) Then
Map.refOnlyProdManagerVM.m_MruFiles.Remove(CurrProject.sProdPath)
Map.refOnlyProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProdManagerVM.MruFileNames))
End If
DbControllers.m_ProdController.DeleteProd(CurrProject.nProdId, False)
If CurrProject.nProdId = Map.refProjManagerVM.CurrProj.nProdId OrElse CurrProject.nProdId = Map.refOnlyProdManagerVM.CurrProj.nProdId Then
' reset prod in path proj
Map.refProjManagerVM.UpdateCurrProj()
End If
Map.refProdManagerVM.CurrProd = Nothing
EgtResetModified()
Return MessageBoxResult.No
End If
End Select
Else
EgtResetModified()
End If
DbControllers.m_ProdController.ResetController()
DbControllers.m_ProdController.LockByProdId(CurrProject.nProdId, False, Map.refMainWindowVM.MainWindowM.GetKeyNumber())
Return VerifyResult
End Function
End Class