268 lines
9.7 KiB
VB.net
268 lines
9.7 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.IO
|
|
Imports EgtBEAMWALL.Core
|
|
Imports EgtBEAMWALL.Core.ConstBeam
|
|
Imports EgtBEAMWALL.DataLayer.DatabaseModels
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class ProdManagerVM
|
|
Inherits VMBase
|
|
|
|
#Region "FIELDS & PROPERTIES"
|
|
|
|
Private m_CurrProd As ProdFileVM
|
|
Friend Property CurrProd As ProdFileVM
|
|
Get
|
|
Return m_CurrProd
|
|
End Get
|
|
Set(value As ProdFileVM)
|
|
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 "METHODS"
|
|
|
|
Public Function SetCurrProd(nProdId As Integer) As Boolean
|
|
Dim Currprod As ProdModel = DbControllers.m_ProdController.FindByProdId(nProdId)
|
|
If IsNothing(Currprod) Then Return False
|
|
Map.refProdManagerVM.CurrProd = New ProdFileVM(ProdFileM.CreateProdFileM(Currprod.ProdId, New List(Of Integer), Date.Now(), ""))
|
|
Return True
|
|
End Function
|
|
|
|
#End Region ' METHODS
|
|
|
|
#Region "COMMANDS"
|
|
|
|
#Region "OpenCommand"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do Open.
|
|
''' </summary>
|
|
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
|
|
|
|
''' <summary>
|
|
''' Execute the Open. This method is invoked by the OpenCommand.
|
|
''' </summary>
|
|
Friend Sub Open()
|
|
OpenProject(String.Empty)
|
|
End Sub
|
|
|
|
Friend Sub OpenProject(sFilePath As String)
|
|
' verifico se progetto modificato, e chiedo se salvare
|
|
ProdFileVM.VerifyProjectModification(CurrProd, ProjectType.PROD)
|
|
' se la string è vuota
|
|
Dim TempCurrProd As ProjFileVM
|
|
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 ProjFileVM.VerifyProjectFile(ProjectType.PROD, Path.GetFileNameWithoutExtension(sFilePath), nProjId, nProdId, sBTLFileName) Then
|
|
TempCurrProd = New ProjectFileVM(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"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do Save.
|
|
''' </summary>
|
|
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
|
|
|
|
''' <summary>
|
|
''' Execute the Save. This method is invoked by the SaveCommand.
|
|
''' </summary>
|
|
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"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do Open.
|
|
''' </summary>
|
|
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
|
|
|
|
''' <summary>
|
|
''' Execute the Open. This method is invoked by the OpenCommand.
|
|
''' </summary>
|
|
Friend Sub GoToProj()
|
|
' verifico se salvare progetto corrente
|
|
ProjFileVM.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 ProjectFileVM(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
|