Files
egtbeamwall/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProdFileVM.vb
T
Emmanuele Sassi e14101134c - gestione qty grezzi in nesting travi e pareti
- cancellazione progetti (proj, prod, assegnazioni al supervisor)
2021-05-19 16:36:19 +02:00

213 lines
8.1 KiB
VB.net

Imports System.IO
Imports EgtBEAMWALL.Core
Imports EgtUILib
Public Class ProdFileVM
Inherits ProjectFileVM
Public ReadOnly Property ProdFileM As ProdFileM
Get
Return m_ProjectFileM
End Get
End Property
Public ReadOnly Property nProjIdList As List(Of Integer)
Get
Return ProdFileM.nProjIdList
End Get
End Property
Public Overrides ReadOnly Property nProdId As Integer
Get
Return ProdFileM.nProdId
End Get
End Property
Friend Overrides ReadOnly Property sProdDirPath As String
Get
Dim sPath As String = String.Empty
If IsNothing(ProdFileM.nProdId) OrElse ProdFileM.nProdId = 0 Then Return String.Empty
Return refMainWindowVM.MainWindowM.sProdsDir & "\" & nProdId.ToString("0000")
End Get
End Property
Friend Overrides ReadOnly Property sProdPath As String
Get
Dim sPath As String = String.Empty
If IsNothing(ProdFileM.nProdId) OrElse ProdFileM.nProdId = 0 Then Return String.Empty
Return refMainWindowVM.MainWindowM.sProdsDir & "\" & nProdId.ToString("0000") & "\" & nProdId.ToString("0000") & ".nge"
End Get
End Property
Public Overrides Property bIsNew As Boolean
Get
Return ProdFileM.bIsNew
End Get
Set(value As Boolean)
ProdFileM.bIsNew = value
End Set
End Property
Public ReadOnly Property sName As String
Get
Return ProdFileM.sName
End Get
End Property
#Region "CONSTRUCTORS"
Sub New(ProdFileM As ProdFileM)
m_ProjectFileM = ProdFileM
End Sub
'Sub New(nProjectType As ProjectType, ProjectFileName As String)
' m_nProjectType = nProjectType
' If m_nProjectType = ProjectType.PROJ Then
' Dim DataFromFileName As String() = ProjectFileName.Split(FILENAMESEPARATOR)
' If Not String.IsNullOrEmpty(DataFromFileName(0)) Then
' Integer.TryParse(DataFromFileName(0), m_nProjId)
' End If
' If Not String.IsNullOrEmpty(DataFromFileName(1)) Then
' Integer.TryParse(DataFromFileName(1), m_nProdId)
' Else
' m_nProdId = 0
' End If
' If Not String.IsNullOrEmpty(DataFromFileName(2)) Then
' m_BTLFileName = DataFromFileName(2)
' End If
' ElseIf m_nProjectType = ProjectType.PROD Then
' Integer.TryParse(ProjectFileName, m_nProdId)
' End If
'End Sub
'Sub New(nProjectType As ProjectType, nProjId As Integer, nProdId As Integer, sBTLFileName As String)
' MyBase.New(nProjectType, nProjId, nProdId, sBTLFileName)
'End Sub
#End Region ' CONSTRUCTORS
' 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 Boolean
If IsNothing(CurrProject) Then Return False
Dim bNewProject As Boolean = False
Dim sProjectDirPath As String = ""
sProjectDirPath = CurrProject.sProdDirPath
' verifico se progetto modificato, e chiedo se salvare
If EgtGetModified() Then
If MessageBox.Show("Salvare le modifiche apportate al progetto?", "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
' salvo proj
Map.refProdManagerVM.Save()
Return True
Else
EgtResetModified()
Return False
End If
Else If CurrProject.bIsNew Then
' lo elimino
Directory.Delete(sProjectDirPath, True)
DbControllers.m_ProdController.DeleteProd(CurrProject.nProdId)
If CurrProject.nProdId = Map.refProjManagerVM.CurrProj.nProdId Then
' reset prod in path proj
Map.refProjManagerVM.UpdateCurrProj()
End If
Map.refProdManagerVM.CurrProd = Nothing
EgtResetModified()
Return False
End If
DbControllers.m_ProdController.LockByProdId(CurrProject.nProdId, False)
Return True
End Function
End Class