Imports System.Collections.ObjectModel Imports System.IO Imports EgtUILib Imports EgtWPFLib5 Public Class ProdManagerVM Inherits VMBase #Region "FIELDS & PROPERTIES" Private m_CurrProd As ProjectFile Friend Property CurrProd As ProjectFile Get Return m_CurrProd End Get Set(value As ProjectFile) m_CurrProd = value End Set End Property ' indice ultimo progetto Private m_nLastProdId As Integer Friend ReadOnly Property nLastProdId As Integer Get Return m_nLastProdId End Get End Property ' Definizione comandi Private m_cmdOpen As ICommand Private m_cmdSave As ICommand Private m_cmdGoToProj As ICommand #Region "ToolTip" 'Proprietà ToolTip Public ReadOnly Property OpenToolTip As String Get Return EgtMsg(MSG_TOPCOMMANDBAR + 2) End Get End Property Public ReadOnly Property SaveToolTip As String Get Return EgtMsg(MSG_TOPCOMMANDBAR + 3) End Get End Property #End Region ' ToolTip #End Region ' Fields & Properties #Region "CONSTRUCTOR" Sub New() ' Creo riferimento a questa classe in Map Map.SetRefProdManagerVM(Me) ' Leggo ultimo indice di progetto m_nLastProdId = GetMainPrivateProfileInt(S_GENERAL, K_PRODSINDEX, 1) End Sub #End Region ' CONSTRUCTOR #Region "COMMANDS" #Region "OpenCommand" ''' ''' Returns a command that do Open. ''' Public ReadOnly Property OpenCommand As ICommand Get If m_cmdOpen Is Nothing Then m_cmdOpen = New Command(AddressOf Open) End If Return m_cmdOpen End Get End Property ''' ''' Execute the Open. This method is invoked by the OpenCommand. ''' Friend Sub Open() OpenProject(String.Empty) End Sub Friend Sub OpenProject(sFilePath As String) ' verifico se progetto modificato, e chiedo se salvare ProjectFile.VerifyProjectModification(CurrProd, ProjectType.PROD) ' se la string è vuota Dim TempCurrProd As ProjectFile Dim OpenProjectFileDialogVM As OpenProjectFileDialogVM = Nothing If String.IsNullOrEmpty(sFilePath) Then ' apro dialogo di scelta file OpenProjectFileDialogVM = New OpenProjectFileDialogVM Dim OpenFile As New OpenProjectFileDialogV(Application.Current.MainWindow, OpenProjectFileDialogVM) Dim DialogResult As Boolean? = OpenFile.EgtShowDialog(ProjectType.PROD) If IsNothing(DialogResult) OrElse Not DialogResult Then Return sFilePath = OpenProjectFileDialogVM.SelProject.sProdPath TempCurrProd = OpenProjectFileDialogVM.SelProject Else Dim nProjId As Integer = 0 Dim nProdId As Integer = 0 Dim sBTLFileName As String = "" If ProjectFile.VerifyProjectFile(ProjectType.PROD, Path.GetFileNameWithoutExtension(sFilePath), nProjId, nProdId, sBTLFileName) Then TempCurrProd = New ProjectFile(ProjectType.PROD, nProjId, nProdId, sBTLFileName) Else MessageBox.Show("Error in file name!!") Return End If End If If File.Exists(sFilePath) Then If Map.refSceneHostVM.MainController.OpenProject(sFilePath, False) Then If Map.refMachGroupPanelVM.InitMachGroupList() Then m_CurrProd = TempCurrProd Map.refMainWindowVM.SetTitle(CurrProd.nProdId.ToString("0000") & " - EgtBEAMWALL") Else MessageBox.Show("Impossibile aprire gruppi di lavorazione del file!!") Map.refSceneHostVM.MainController.NewProject() Map.refMainWindowVM.SetTitle("New - EgtBEAMWALL") End If Else MessageBox.Show("Impossibile aprire il file!!") Map.refSceneHostVM.MainController.NewProject() Map.refMainWindowVM.SetTitle("New - EgtBEAMWALL") End If Else MessageBox.Show("File non trovato!!") Map.refSceneHostVM.MainController.NewProject() Map.refMainWindowVM.SetTitle("New - EgtBEAMWALL") End If End Sub #End Region ' OpenCommand #Region "SaveCommand" ''' ''' Returns a command that do Save. ''' Public ReadOnly Property SaveCommand As ICommand Get If m_cmdSave Is Nothing Then m_cmdSave = New Command(AddressOf Save) End If Return m_cmdSave End Get End Property ''' ''' Execute the Save. This method is invoked by the SaveCommand. ''' Public Sub Save() Map.refSceneHostVM.SaveProject() Map.refMainWindowVM.SetTitle(CurrProd.nProdId.ToString("0000") & " - EgtBEAMWALL") Dim MyMachGroupList As New List(Of Core.MyMachGroup) For Each MachGroup In Map.refProjectVM.MachGroupPanelVM.MachGroupList If Map.refMachinePanelVM.SelectedMachine.nType = MachineType.BEAM Then MyMachGroupList.Add(New Core.BeamMachGroup(MachGroup.Id, MachGroup.Name, MachGroup.Machine)) ElseIf Map.refMachinePanelVM.SelectedMachine.nType = MachineType.WALL Then MyMachGroupList.Add(New Core.WallMachGroup(MachGroup.Id, MachGroup.Name, MachGroup.Machine)) End If Next 'If Map.refMachinePanelVM.SelectedMachine.nType = MachineType.BEAM Then ' MyMachGroupList = Map.refProjectVM.MachGroupPanelVM.MachGroupList.Select(Function(x) New Core.BeamMachGroup(x.Id, x.Name, x.Machine)).ToList() 'ElseIf Map.refMachinePanelVM.SelectedMachine.nType = MachineType.wall Then ' MyMachGroupList = Map.refProjectVM.MachGroupPanelVM.MachGroupList.Select(Function(x) New Core.WallMachGroup(x.Id, x.Name, x.Machine)) 'End If DbControllers.m_ProdController.UpdateMachGroup(CurrProd.nProdId, MyMachGroupList.ToList()) ' se nuovo progetto, incremento l'indice di progetto If m_CurrProd.NewProd Then m_nLastProdId = m_nLastProdId + 1 WriteMainPrivateProfileString(S_GENERAL, K_PRODSINDEX, (m_nLastProdId).ToString()) m_CurrProd.NewProd = False End If End Sub #End Region ' SaveCommand #Region "GoToProj" ''' ''' Returns a command that do Open. ''' Public ReadOnly Property GoToProj_Command As ICommand Get If m_cmdGoToProj Is Nothing Then m_cmdGoToProj = New Command(AddressOf GoToProj) End If Return m_cmdGoToProj End Get End Property ''' ''' Execute the Open. This method is invoked by the OpenCommand. ''' Friend Sub GoToProj() ' verifico se salvare progetto corrente ProjectFile.VerifyProjectModification(Map.refProdManagerVM.CurrProd, ProjectType.PROD) ' recupero Proj associato da Db Dim DbProjList As List(Of DataLayer.DatabaseModels.ProjModel) = DbControllers.m_ProjController.GetByProdAsc(m_CurrProd.nProdId) Dim nProjId As Integer = 0 Dim sBTLFileName As String = "" If Not IsNothing(DbProjList) AndAlso DbProjList.Count > 0 AndAlso DbProjList(0).ProjId > 0 Then nProjId = DbProjList(0).ProjId sBTLFileName = DbProjList(0).BTLFileName End If '' cerco proj associato 'Dim ProjList As New List(Of ProjectFile) '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() = File.Split(FILENAMESEPARATOR) ' If DataFromFileName.Count = 3 Then ' If Not String.IsNullOrEmpty(DataFromFileName(1)) Then ' Dim nTempProdId As Integer = 0 ' Integer.TryParse(DataFromFileName(1), nTempProdId) ' If nTempProdId = CurrProd.nProdId Then ' ProjList.Add(New ProjectFile(ProjectType.PROJ, Path.GetFileNameWithoutExtension(File))) ' End If ' End If ' End If ' End If ' End If ' Next 'Next 'If ProjList.Count = 0 Then Return '' se c'è più di un proj 'Dim Proj As ProjectFile 'If ProjList.Count > 1 Then ' ' apro dialogo di scelta file ' Dim OpenProjectFileDialogVM As New OpenProjectFileDialogVM ' Dim OpenFile As New OpenProjectFileDialogV(Application.Current.MainWindow, OpenProjectFileDialogVM) ' Dim DialogResult As Boolean? = OpenFile.EgtShowDialog(ProjectType.PROJ, ProjList) ' If IsNothing(DialogResult) OrElse Not DialogResult Then Return ' Proj = OpenProjectFileDialogVM.SelProject 'Else ' Proj = ProjList(0) 'End If ' apro progetto proj Map.refProjManagerVM.CurrProj = New ProjectFile(ProjectType.PROJ, nProjId, m_CurrProd.nProdId, sBTLFileName) ' vado in pagina proj Map.refMainMenuVM.SetSelPage(Pages.VIEW, False) End Sub #End Region ' GoToProj #End Region ' Commands End Class