Correzione controller

Aggiunta gestione del passaggio da prod a proj con scelta di questultimo
This commit is contained in:
Emmanuele Sassi
2021-06-17 11:35:24 +02:00
parent 3b368ac504
commit f24dcd0bc5
4 changed files with 76 additions and 53 deletions
@@ -54,7 +54,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
protected List<int> 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
@@ -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
@@ -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.
''' </summary>
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
@@ -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)