Imports System.IO Imports EgtBEAMWALL.Core Imports EgtUILib Public Class ProjFileVM Inherits ProjectFileVM Public ReadOnly Property ProjFileM As ProjFileM Get Return m_ProjectFileM End Get End Property Public Overrides ReadOnly Property nProjId As Integer Get Return ProjFileM.nProjId End Get End Property Public Overrides ReadOnly Property nProdId As Integer Get Return ProjFileM.nProdId End Get End Property Friend Overrides ReadOnly Property sProjDirPath As String Get If IsNothing(ProjFileM.nProjId) OrElse ProjFileM.nProjId = 0 Then Return String.Empty Return refMainWindowVM.MainWindowM.sProjsDir & "\" & nProjId.ToString("0000") End Get End Property Friend Overrides ReadOnly Property sProjPath As String Get Dim sPath As String = String.Empty If IsNothing(ProjFileM.nProjId) OrElse ProjFileM.nProjId = 0 Then Return String.Empty sPath = refMainWindowVM.MainWindowM.sProjsDir & "\" & nProjId.ToString("0000") & "\" & nProjId.ToString("0000") & ".nge" Return sPath End Get End Property Friend Overrides ReadOnly Property sProdDirPath As String Get Dim sPath As String = String.Empty If IsNothing(ProjFileM.nProdId) OrElse ProjFileM.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(ProjFileM.nProdId) OrElse ProjFileM.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 ProjFileM.bIsNew End Get Set(value As Boolean) ProjFileM.bIsNew = value End Set End Property Public ReadOnly Property sBTLFileName As String Get Return ProjFileM.sBTLFileName End Get End Property Public ReadOnly Property sListName As String Get Return ProjFileM.sListName End Get End Property Public ReadOnly Property dtExportDate As DateTime Get Return ProjFileM.dtExportDate End Get End Property #Region "CONSTRUCTORS" Sub New(ProjectFileM As ProjFileM) m_ProjectFileM = ProjectFileM 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 #Region "METHODS" Public Sub SetBTLFileName(BTLFileName As String) ProjFileM.sBTLFileName = BTLFileName End Sub ' 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 ProjFileVM, Type As ProjectType) As Boolean If IsNothing(CurrProject) Then Return False Dim sProjectDirPath As String = "" sProjectDirPath = CurrProject.sProjDirPath ' 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.refProjManagerVM.Save() Return True Else EgtResetModified() Return False End If Else If CurrProject.bIsNew Then ' lo elimino If Directory.Exists(sProjectDirPath) Then Directory.Delete(sProjectDirPath, True) End If DbControllers.m_ProjController.DeleteProj(CurrProject.nProjId) If Type = ProjectType.PROD AndAlso CurrProject.nProdId = Map.refProjManagerVM.CurrProj.nProdId Then End If Map.refProjManagerVM.CurrProj = Nothing EgtResetModified() Return False End If DbControllers.m_ProjController.LockByProjId(CurrProject.nProjId, False) Return True End Function Friend Shared Function PostVerifyProjectModification(CurrProject As ProjFileVM, Type As ProjectType) As Boolean End Function #End Region ' METHODS End Class