diff --git a/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs b/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs index f581dbc9..225b5d1e 100644 --- a/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs +++ b/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs @@ -54,7 +54,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers protected List ProjIdByProd(int ProdId) { - return DbManager.obj.ProjCtr.GetByProdAsc(ProdId).Select(y => y.ProjId).ToList(); + return DbManager.obj.ProjCtr.GetByProdAsc(ProdId).Select(y => y.nProjId).ToList(); } #endregion Protected Methods @@ -84,7 +84,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers .FirstOrDefault(); // lo aggiorno - currProj.ProjDbId = currProd.ProdDbId; + currProj.ProdDbId = currProd.ProdDbId; currProj.Locked = true; // salvo diff --git a/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb b/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb index 3d1de6f1..ead43ef5 100644 --- a/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb @@ -145,12 +145,12 @@ Public Class OpenProjectFileDialogVM Private m_cmdProjectDoubleClick As ICommand Private m_cmdDelete As ICommand - Public Function Init(ProjectType As ProjectType, Optional ProjectList As List(Of ProjectFileVM) = Nothing) As Boolean? + Public Function Init(ProjectType As ProjectType, Optional CurrProjectList As List(Of ProjectFileVM) = Nothing) As Boolean? m_ProjectType = ProjectType ' carico colonne LoadColumns(ProjectType) ' carico lista progetti - If IsNothing(ProjectList) OrElse ProjectList.Count = 0 Then + If IsNothing(CurrProjectList) OrElse CurrProjectList.Count = 0 Then ' leggo da db If ProjectType = ProjectType.PROJ Then Dim DbProjectList As New List(Of ProjFileM) @@ -166,7 +166,8 @@ Public Class OpenProjectFileDialogVM Next End If Else - m_ProjectList = New ObservableCollection(Of ProjectFileVM)(ProjectList) + m_ProjectList = New ObservableCollection(Of ProjectFileVM)(CurrProjectList) + NotifyPropertyChanged(NameOf(ProjectList)) End If End Function diff --git a/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerVM.vb index aeb4e0f5..978600d1 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerVM.vb @@ -136,11 +136,11 @@ Public Class ProdManagerVM Dim OpenProjectFileDialogVM As OpenProjectFileDialogVM = Nothing ' 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 + 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 If File.Exists(sFilePath) Then If Map.refSceneHostVM.MainController.OpenProject(sFilePath, False) Then m_CurrProd = TempCurrProd @@ -181,7 +181,7 @@ Public Class ProdManagerVM Map.refSceneHostVM.SaveProject() Map.refMainWindowVM.UpdateTitle() Dim MyMachGroupList As New List(Of MyMachGroupM) - If Not IsNothing( Map.refProjectVM.MachGroupPanelVM) Then + If Not IsNothing(Map.refProjectVM.MachGroupPanelVM) Then For Each MachGroup In Map.refProjectVM.MachGroupPanelVM.m_MyMachGroupPanelM.MachGroupMList MyMachGroupList.Add(MachGroup) Next @@ -216,14 +216,32 @@ Public Class ProdManagerVM ''' Execute the Open. This method is invoked by the OpenCommand. ''' Friend Sub GoToProj() - ' recupero Proj associato da Db - Dim DbProjList As List(Of DataLayer.DatabaseModels.ProjModel) = DbControllers.m_ProjController.GetByProdAsc(m_CurrProd.nProdId) + ' recupero Proj associati da Db + Dim ProjFileMList As List(Of ProjFileM) = DbControllers.m_ProjController.GetByProdAsc(m_CurrProd.nProdId) Dim nProjId As Integer = 0 - If Not IsNothing(DbProjList) AndAlso DbProjList.Count > 0 AndAlso DbProjList(0).ProjId > 0 Then - nProjId = DbProjList(0).ProjId - End If ' verifico se salvare progetto corrente If Not ProdFileVM.VerifyProjectModification(Map.refProdManagerVM.CurrProd) Then Return + ' se piu' di uno + If IsNothing(ProjFileMList) Then + Return + ElseIf ProjFileMList.Count = 1 AndAlso ProjFileMList(0).nProjId > 0 Then + nProjId = ProjFileMList(0).nProjId + ElseIf ProjFileMList.Count > 1 Then + Dim ProjFileVMList As New List(Of ProjectFileVM) + For Each Project In ProjFileMList + ProjFileVMList.Add(New ProjFileVM(Project)) + Next + ' apro finestra di scelta + Dim OpenProjectFileDialogVM As New OpenProjectFileDialogVM + Dim ChooseProjFileDialog As New OpenProjectFileDialogV(Application.Current.MainWindow, OpenProjectFileDialogVM) + Dim DialogResult As Boolean? = ChooseProjFileDialog.EgtShowDialog(ProjectType.PROJ, ProjFileVMList) + If IsNothing(DialogResult) OrElse Not DialogResult Then Return + ' se proj selezionato + If Not IsNothing(OpenProjectFileDialogVM.SelProject.nProdId) AndAlso OpenProjectFileDialogVM.SelProject.nProdId > 0 Then + nProjId = OpenProjectFileDialogVM.SelProject.nProjId + End If + Else Return + End If ' apro progetto proj Map.refProjManagerVM.SetCurrProj(nProjId) ' vado in pagina proj diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb index 9a7ced2d..29e90cf7 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb @@ -458,45 +458,49 @@ Public Class ProjManagerVM If nProdId > 0 Then Map.refProdManagerVM.SetCurrProd(nProdId) Else - ' chiedo se aggiungere ad ottimizzazione già presente o creare nuova - Select Case MessageBox.Show("Aggiungere ad ottimizzazione già esistente?", "", MessageBoxButton.YesNoCancel, MessageBoxImage.Information) - Case MessageBoxResult.No - 'creo nuova ottimizzazione da progetto corrente - NewProdFromProj() - Case MessageBoxResult.Yes - ' chiedo in quale ottimizzazione aggiungere il progetto corrente - Dim OpenProjectFileDialogVM As New OpenProjectFileDialogVM - Dim ChooseProdFileDialog As New OpenProjectFileDialogV(Application.Current.MainWindow, OpenProjectFileDialogVM) - Dim DialogResult As Boolean? = ChooseProdFileDialog.EgtShowDialog(ProjectType.PROD) - If IsNothing(DialogResult) OrElse Not DialogResult Then Return - ' se prod selezionato - If Not IsNothing(OpenProjectFileDialogVM.SelProject.nProdId) AndAlso OpenProjectFileDialogVM.SelProject.nProdId > 0 Then - Dim nCurrCtx As Integer = EgtGetCurrentContext() - Dim nTempCtx As Integer = EgtInitContext() - Dim bOk As Boolean = nTempCtx <> 0 - If bOk Then - ' inizializzo gestore lavorazioni - bOk = EgtInitMachMgr(Map.refMainWindowVM.MainWindowM.sMachinesRoot, Map.refMainWindowVM.MainWindowM.sToolMakersDir) - ' apro il prod - bOk = bOk AndAlso EgtOpenFile(OpenProjectFileDialogVM.SelProject.sProdPath) - ' inserisco proj nel prod selezionato - bOk = bOk AndAlso EgtInsertFile(Map.refProjManagerVM.CurrProj.sProjPath) - ' sposto i pezzi per non averli sovrapposti + 'creo nuova ottimizzazione da progetto corrente + NewProdFromProj() + '' chiedo se aggiungere ad ottimizzazione già presente o creare nuova + 'Select Case MessageBox.Show("Aggiungere ad ottimizzazione già esistente?", "", MessageBoxButton.YesNoCancel, MessageBoxImage.Information) + ' Case MessageBoxResult.No + ' 'creo nuova ottimizzazione da progetto corrente + ' NewProdFromProj() + ' Case MessageBoxResult.Yes + ' ' chiedo in quale ottimizzazione aggiungere il progetto corrente + ' Dim OpenProjectFileDialogVM As New OpenProjectFileDialogVM + ' Dim ChooseProdFileDialog As New OpenProjectFileDialogV(Application.Current.MainWindow, OpenProjectFileDialogVM) + ' Dim DialogResult As Boolean? = ChooseProdFileDialog.EgtShowDialog(ProjectType.PROD) + ' If IsNothing(DialogResult) OrElse Not DialogResult Then Return + ' ' se prod selezionato + ' If Not IsNothing(OpenProjectFileDialogVM.SelProject.nProdId) AndAlso OpenProjectFileDialogVM.SelProject.nProdId > 0 Then + ' Dim nCurrCtx As Integer = EgtGetCurrentContext() + ' Dim nTempCtx As Integer = EgtInitContext() + ' Dim bOk As Boolean = nTempCtx <> 0 + ' If bOk Then + ' ' inizializzo gestore lavorazioni + ' bOk = EgtInitMachMgr(Map.refMainWindowVM.MainWindowM.sMachinesRoot, Map.refMainWindowVM.MainWindowM.sToolMakersDir) + ' ' apro il prod + ' bOk = bOk AndAlso EgtOpenFile(OpenProjectFileDialogVM.SelProject.sProdPath) + ' ' inserisco proj nel prod selezionato + ' bOk = bOk AndAlso EgtInsertFile(Map.refProjManagerVM.CurrProj.sProjPath) + ' ' sposto i pezzi per non averli sovrapposti - bOk = bOk AndAlso EgtSaveFile(OpenProjectFileDialogVM.SelProject.sProdPath, NGE.CMPTEXT) - ' torno sul contesto corrente - EgtSetCurrentContext(nCurrCtx) - EgtDeleteContext(nTempCtx) - End If - If bOk Then - ' imposto currprod - Map.refProdManagerVM.SetCurrProd(OpenProjectFileDialogVM.SelProject.nProdId) - End If - End If - Case MessageBoxResult.Cancel - Return - End Select + ' bOk = bOk AndAlso EgtSaveFile(OpenProjectFileDialogVM.SelProject.sProdPath, NGE.CMPTEXT) + ' ' torno sul contesto corrente + ' EgtSetCurrentContext(nCurrCtx) + ' EgtDeleteContext(nTempCtx) + ' End If + ' If bOk Then + ' ' riporto aggiunta proj a prod su Db + ' DbControllers.m_ProdController.AddProj(OpenProjectFileDialogVM.SelProject.nProdId, Map.refProjManagerVM.CurrProj.nProjId) + ' ' imposto currprod + ' Map.refProdManagerVM.SetCurrProd(OpenProjectFileDialogVM.SelProject.nProdId) + ' End If + ' End If + ' Case MessageBoxResult.Cancel + ' Return + 'End Select End If ' vado in pagina prod Map.refMainMenuVM.SetSelPage(Pages.MACHINING, False)