Imports System.IO
Imports EgtBEAMWALL.Core
Imports EgtUILib

Public Class ProjFileVM
   Inherits Core.ProjFileVM

   Public ReadOnly Property bIsEnabled As Boolean
      Get
         Return Not DbControllers.bNetwork OrElse Not bIsLocked
      End Get
   End Property

#Region "CONSTRUCTORS"

   Sub New(ProjectFileM As ProjFileM)
      MyBase.New(ProjectFileM)
      ' verifico valore description
      If Not IsNothing(ProjectFileM) AndAlso String.IsNullOrWhiteSpace(ProjectFileM.sDescription) Then
         DbControllers.m_ProjController.UpdateDescription(ProjectFileM.nProjId, ProjectFileM.sBTLFileName)
         ProjectFileM.sDescription = ProjectFileM.sBTLFileName
      End If
   End Sub

#End Region    ' CONSTRUCTORS

#Region "METHODS"

   '' 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 True
      Dim sProjectDirPath As String = ""
      sProjectDirPath = CurrProject.sProjDirPath
      ' verifico se progetto modificato, e chiedo se salvare
      If EgtGetModified() OrElse CurrProject.bIsNew OrElse Map.refCALCPanelVM.IsMachineModified() Then
         Select Case MessageBox.Show(EgtMsg(61875), "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
            Case MessageBoxResult.Yes
               ' salvo proj
               Map.refProjManagerVM.Save()
               Map.refCALCPanelVM.IsMachineApplied = False
            Case MessageBoxResult.Cancel
               Return False
            Case Else  ' No
               EgtResetModified()
               Map.refCALCPanelVM.RevertToOriginalMachine()
               Map.refCALCPanelVM.IsMachineApplied = False
               If CurrProject.bIsNew Then
                  ' lo elimino
                  If Directory.Exists(sProjectDirPath) Then
                     Directory.Delete(sProjectDirPath, True)
                  End If
                  Map.refProjManagerVM.m_MruFiles.Remove(CurrProject.sProjPath)
                        Map.refProjManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames))

                        ' CheckMe impostata come cancellazione FISICA dal DB...
                        DbControllers.m_ProjController.DeleteProj(CurrProject.nProjId, False)
                        Map.refProjManagerVM.CurrProj = Nothing
                  EgtResetModified()
                  Return True
               End If
         End Select
      Else
         EgtResetModified()
      End If
      DbControllers.m_ProjController.LockByProjId(CurrProject.nProjId, False, Map.refMainWindowVM.MainWindowM.GetKeyNumber())
      Return True
   End Function

#End Region    ' METHODS

End Class