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"

   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)
         Select Case EgtBEAMWALL.Core.EgtMessageBoxV.Show(Application.Current.MainWindow, EgtMsg(61875), "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
            Case MessageBoxResult.Yes
               ' salvo proj
               If Not IsNothing(Map.refProjManagerVM) Then
                  Map.refProjManagerVM.Save()
               ElseIf Not IsNothing(Map.refOnlyProdManagerVM) Then
                  Map.refOnlyProdManagerVM.Save()
               End If
               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
                  If Not IsNothing(Map.refProjManagerVM) Then
                     Map.refProjManagerVM.m_MruFiles.Remove(CurrProject.sProjPath)
                     Map.refProjManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames))
                  ElseIf Not IsNothing(Map.refOnlyProdManagerVM) Then
                     Map.refOnlyProdManagerVM.m_MruFiles.Remove(CurrProject.sProjPath)
                     Map.refOnlyProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames))
                  End If

                  ' CheckMe impostata come cancellazione FISICA dal DB...
                  DbControllers.m_ProjController.DeleteProj(CurrProject.nProjId, False)
                  If Not IsNothing(Map.refProjManagerVM) Then
                     ProjectManagerVM.CurrProj = Nothing
                  ElseIf Not IsNothing(Map.refOnlyProdManagerVM) Then
                     ProjectManagerVM.CurrProj = Nothing
                  End If
                  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