- aggiunta proprieta proj su pezzi
- aggiunto progetto Optimizer
This commit is contained in:
@@ -0,0 +1,240 @@
|
||||
Imports System.Collections.ObjectModel
|
||||
Imports System.IO
|
||||
Imports EgtBEAMWALL.Core
|
||||
Imports EgtBEAMWALL.Core.ConstBeam
|
||||
Imports EgtUILib
|
||||
Imports EgtWPFLib5
|
||||
|
||||
Public Class OpenProjectFileDialogVM
|
||||
Inherits Core.OpenProjectFileDialogVM
|
||||
|
||||
#Region "METHODS"
|
||||
|
||||
Public Overrides Function Init(ProjectType As ProjectType, Optional CurrProjectList As List(Of ProjectFileVM) = Nothing, Optional GoToProd As Boolean = False) As Boolean?
|
||||
m_ProjectType = ProjectType
|
||||
m_GoToProd = GoToProd
|
||||
' carico colonne
|
||||
LoadColumns(ProjectType)
|
||||
NotifyPropertyChanged(NameOf(FilterTypeList))
|
||||
m_SelFilterType = m_FilterTypeList(0)
|
||||
' carico lista progetti
|
||||
If IsNothing(CurrProjectList) OrElse CurrProjectList.Count = 0 Then
|
||||
SetFixedProjectList(False)
|
||||
RefreshProjectList()
|
||||
Else
|
||||
SetFixedProjectList(True)
|
||||
m_ProjectList = New ObservableCollection(Of ProjectFileVM)(CurrProjectList)
|
||||
NotifyPropertyChanged(NameOf(ProjectList))
|
||||
End If
|
||||
m_ProjectList_View = CollectionViewSource.GetDefaultView(m_ProjectList)
|
||||
m_ProjectList_View.Filter = AddressOf ProjectFilter
|
||||
End Function
|
||||
|
||||
Public Overrides Sub RefreshProjectList()
|
||||
m_ProjectList.Clear()
|
||||
' calcolo periodo e righe
|
||||
Dim dtStart As DateTime
|
||||
Dim dtEnd As DateTime
|
||||
Dim nRowQuantity As Integer = 20
|
||||
Select Case SelRowQuantity
|
||||
Case RowQuantities.FIFTY
|
||||
nRowQuantity = 50
|
||||
Case RowQuantities.HUNDRED
|
||||
nRowQuantity = 100
|
||||
Case RowQuantities.HUNDREDANDFIFTY
|
||||
nRowQuantity = 150
|
||||
End Select
|
||||
Select Case m_SelDayType
|
||||
Case DayTypes.LASTMONTH
|
||||
dtEnd = DateTime.Today + TimeSpan.FromDays(1)
|
||||
dtStart = dtEnd - TimeSpan.FromDays(30.5)
|
||||
Case DayTypes.LAST3MONTHS
|
||||
dtEnd = DateTime.Today + TimeSpan.FromDays(1)
|
||||
dtStart = dtEnd - TimeSpan.FromDays(30.5 * 3)
|
||||
Case DayTypes.LAST6MONTHS
|
||||
dtEnd = DateTime.Today + TimeSpan.FromDays(1)
|
||||
dtStart = dtEnd - TimeSpan.FromDays(30.5 * 6)
|
||||
Case DayTypes.PERIOD
|
||||
dtEnd = dtEndDate + TimeSpan.FromDays(1)
|
||||
dtStart = dtStartDate
|
||||
End Select
|
||||
' leggo da db
|
||||
If m_ProjectType = ProjectType.PROJ Then
|
||||
Dim DbProjectList As New List(Of ProjFileM)
|
||||
' CheckMe: lasciato come prima, anche NON attivi (cancellazione logica)
|
||||
If m_SelBTLDateType = BTLDateTypes.CREATEDATE Then
|
||||
DbProjectList = DbControllers.m_ProjController.GetLastDesc(dtStart, dtEnd, nRowQuantity, True)
|
||||
Else
|
||||
DbProjectList = DbControllers.m_ProjController.GetLastByExpDesc(dtStart, dtEnd, nRowQuantity, False)
|
||||
End If
|
||||
If m_GoToProd Then
|
||||
For Each Project In DbProjectList
|
||||
' recupero path per verificare esista
|
||||
If IsNothing(Project.nProdId) OrElse Project.nProdId = 0 Then Continue For
|
||||
Dim sPath As String = Map.refMainWindowVM.MainWindowM.sProdsDir & "\" & Project.nProdId.ToString("0000") & "\" & Project.nProdId.ToString("0000") & ".nge"
|
||||
If Project.sMachine = ProjectManagerVM.CurrProj.sMachine AndAlso
|
||||
Project.nType = ProjectManagerVM.CurrProj.nType Then
|
||||
If File.Exists(sPath) Then
|
||||
m_ProjectList.Add(New ProjFileVM(Project))
|
||||
Else
|
||||
DbControllers.m_ProdController.DeleteProd(Project.nProdId, True)
|
||||
EgtOutLog("Found project on Db without the folder and erased it! Prod number " & Project.nProdId.ToString("0000"))
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
Else
|
||||
For Each Project In DbProjectList
|
||||
' recupero path per verificare esista
|
||||
If IsNothing(Project.nProjId) OrElse Project.nProjId = 0 Then Continue For
|
||||
Dim sPath As String = Map.refMainWindowVM.MainWindowM.sProjsDir & "\" & Project.nProjId.ToString("0000") & "\" & Project.nProjId.ToString("0000") & ".nge"
|
||||
If File.Exists(sPath) Then
|
||||
m_ProjectList.Add(New ProjFileVM(Project))
|
||||
Else
|
||||
' CheckMe impostata come cancellazione FISICA dal DB...
|
||||
DbControllers.m_ProjController.DeleteProj(Project.nProjId, False)
|
||||
EgtOutLog("Found project on Db without the folder and erased it! Proj number " & Project.nProjId.ToString("0000"))
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
ElseIf m_ProjectType = ProjectType.PROD Then
|
||||
Dim DbProjectList As New List(Of ProdFileM)
|
||||
DbProjectList = DbControllers.m_ProdController.GetLastDesc(dtStart, dtEnd, nRowQuantity, True)
|
||||
For Each Project In DbProjectList
|
||||
' recupero path per verificare esista
|
||||
If IsNothing(Project.nProdId) OrElse Project.nProdId = 0 Then Continue For
|
||||
Dim sPath As String = Map.refMainWindowVM.MainWindowM.sProdsDir & "\" & Project.nProdId.ToString("0000") & "\" & Project.nProdId.ToString("0000") & ".nge"
|
||||
If File.Exists(sPath) Then
|
||||
m_ProjectList.Add(New ProdFileVM(Project))
|
||||
Else
|
||||
DbControllers.m_ProdController.DeleteProd(Project.nProdId, True)
|
||||
EgtOutLog("Found project on Db without the folder and erased it! Prod number " & Project.nProdId.ToString("0000"))
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Delete()
|
||||
If IsNothing(SelProject) Then Return
|
||||
' recupero indice per riselezionare
|
||||
Dim ProjListIndex As Integer = m_ProjectList.IndexOf(SelProject)
|
||||
If m_ProjectType = ProjectType.PROJ Then
|
||||
' verifico se proj selezionato e' il corrente
|
||||
If Not IsNothing(ProjectManagerVM.CurrProj) AndAlso SelProject.nProjId = ProjectManagerVM.CurrProj.nProjId Then
|
||||
MessageBox.Show(EgtMsg(61872), EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Warning)
|
||||
Return
|
||||
End If
|
||||
' verifico se proj selezionato ha prod
|
||||
If SelProject.nProdId > 0 Then
|
||||
MessageBox.Show(EgtMsg(61873), EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Warning)
|
||||
Return
|
||||
End If
|
||||
Map.refProjManagerVM.m_MruFiles.Remove(SelProject.sProjPath)
|
||||
Map.refProjManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames))
|
||||
' cancello progetto
|
||||
' CheckMe impostata come cancellazione FISICA dal DB...
|
||||
DbControllers.m_ProjController.DeleteProj(SelProject.nProjId, False)
|
||||
' cancello cartella del Proj
|
||||
Try
|
||||
Directory.Delete(SelProject.sProjDirPath, True)
|
||||
Catch ex As Exception
|
||||
EgtOutLog("Error in deleting directory " & SelProject.sProjDirPath)
|
||||
End Try
|
||||
' aggiorno lista progetti
|
||||
m_ProjectList.Clear()
|
||||
Dim DbProjectList As New List(Of ProjFileM)
|
||||
DbProjectList = DbControllers.m_ProjController.GetLastDesc(50, False)
|
||||
For Each Project In DbProjectList
|
||||
m_ProjectList.Add(New ProjFileVM(Project))
|
||||
Next
|
||||
ElseIf m_ProjectType = ProjectType.PROD Then
|
||||
' verifico se prod selezionato e' il corrente
|
||||
If Not IsNothing(ProjectManagerVM.CurrProd) AndAlso SelProject.nProdId = ProjectManagerVM.CurrProd.nProdId Then
|
||||
MessageBox.Show(EgtMsg(61872), EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Warning)
|
||||
Return
|
||||
End If
|
||||
' verifico se ci sono grezzi mandati al supervisore
|
||||
If DbControllers.m_ProdController.IsAnyInSupervisor(SelProject.nProdId) Then
|
||||
MessageBox.Show(EgtMsg(61874), EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Warning)
|
||||
Return
|
||||
End If
|
||||
Map.refProdManagerVM.m_MruFiles.Remove(SelProject.sProdPath)
|
||||
Map.refProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProdManagerVM.MruFileNames))
|
||||
' cancello progetto
|
||||
DbControllers.m_ProdController.DeleteProd(SelProject.nProdId, True)
|
||||
' riporto prod in proj
|
||||
Dim nCurrCtx As Integer = EgtGetCurrentContext()
|
||||
Dim nTempCtx As Integer = EgtInitContext()
|
||||
If nTempCtx <> 0 Then
|
||||
' inizializzo gestore lavorazioni
|
||||
EgtInitMachMgr(Map.refMainWindowVM.MainWindowM.sMachinesRoot, Map.refMainWindowVM.MainWindowM.sToolMakersDir)
|
||||
' apro, ripulisco e salvo il progetto in tutti i proj correlati
|
||||
Dim ProdFile As ProdFileVM = DirectCast(SelProject, ProdFileVM)
|
||||
For Each nProjId In ProdFile.nProjIdList
|
||||
EgtOpenFile(SelProject.sProdPath)
|
||||
' cancello tutti i gruppi di lavorazione
|
||||
Dim nMachGroupId As Integer = EgtGetFirstMachGroup()
|
||||
While nMachGroupId <> GDB_ID.NULL
|
||||
EgtSetCurrMachGroup(nMachGroupId)
|
||||
Dim nRawPartId As Integer = EgtGetFirstRawPart()
|
||||
While nRawPartId <> GDB_ID.NULL
|
||||
Dim nPartId As Integer = EgtGetFirstPartInRawPart(nRawPartId)
|
||||
While nPartId <> GDB_ID.NULL
|
||||
EgtRemovePartFromRawPart(nPartId)
|
||||
' elimino pezzo copia
|
||||
EgtErase(nPartId)
|
||||
nPartId = EgtGetFirstPartInRawPart(nRawPartId)
|
||||
End While
|
||||
nRawPartId = EgtGetNextRawPart(nRawPartId)
|
||||
End While
|
||||
EgtRemoveMachGroup(nMachGroupId)
|
||||
nMachGroupId = EgtGetFirstMachGroup()
|
||||
End While
|
||||
' cancello tutti i gruppi che sono di un progetto diverso da questo
|
||||
Dim nGroupId As Integer = EgtGetFirstInGroup(GDB_ID.ROOT)
|
||||
While nGroupId <> GDB_ID.NULL
|
||||
Dim nGroupProjId As Integer = GDB_ID.NULL
|
||||
Dim nNextGroupId As Integer = EgtGetNext(nGroupId)
|
||||
If EgtGetInfo(nGroupId, BTL_PRT_PROJ, nGroupProjId) Then
|
||||
If nGroupProjId <> nProjId Then
|
||||
EgtErase(nGroupId)
|
||||
End If
|
||||
End If
|
||||
nGroupId = nNextGroupId
|
||||
End While
|
||||
EgtSaveFile(ProdFile.GetProjPath(nProjId), NGE.CMPTEXT)
|
||||
Next
|
||||
' torno sul contesto corrente
|
||||
EgtSetCurrentContext(nCurrCtx)
|
||||
EgtDeleteContext(nTempCtx)
|
||||
End If
|
||||
' se proj corrente era il prod cancellato, aggiorno proj corrente
|
||||
If Not IsNothing(ProjectManagerVM.CurrProj) AndAlso ProjectManagerVM.CurrProj.nProdId = SelProject.nProdId Then
|
||||
Map.refProjManagerVM.UpdateCurrProj()
|
||||
End If
|
||||
' cancello cartella del Prod
|
||||
Try
|
||||
Directory.Delete(SelProject.sProdDirPath, True)
|
||||
Catch ex As Exception
|
||||
EgtOutLog("Error in deleting directory " & SelProject.sProdDirPath)
|
||||
End Try
|
||||
' aggiorno lista progetti
|
||||
m_ProjectList.Clear()
|
||||
Dim DbProjectList As New List(Of ProdFileM)
|
||||
DbProjectList = DbControllers.m_ProdController.GetLastDesc(50, False)
|
||||
For Each Project In DbProjectList
|
||||
m_ProjectList.Add(New ProdFileVM(Project))
|
||||
Next
|
||||
End If
|
||||
' ripristino selezionato
|
||||
If ProjListIndex >= 0 AndAlso ProjListIndex <= m_ProjectList.Count - 1 Then
|
||||
SelProject = m_ProjectList(ProjListIndex)
|
||||
NotifyPropertyChanged(NameOf(SelProject))
|
||||
End If
|
||||
' reset dei controller per tornare in sync
|
||||
DbControllers.m_ProjController.ResetController()
|
||||
DbControllers.m_ProdController.ResetController()
|
||||
End Sub
|
||||
|
||||
#End Region ' METHODS
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user