Imports System.Collections.ObjectModel Imports System.IO Imports EgtBEAMWALL.Core Imports EgtBEAMWALL.Core.ConstBeam Imports EgtUILib Imports EgtWPFLib5 Public Class NewOpenProjectFileDialogVM Inherits Core.NewOpenProjectFileDialogVM #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 ' 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(GoToProd) Else SetFixedProjectList(True) NotifyPropertyChanged(NameOf(ProjectList)) End If m_ProjectList_View = CollectionViewSource.GetDefaultView(m_ProjectList) m_ProjectList_View.Filter = AddressOf ProjectFilter End Function Public Overrides Sub RefreshProjectList(Optional GoToProd As Boolean = False) 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(31) Case DayTypes.LAST3MONTHS dtEnd = DateTime.Today + TimeSpan.FromDays(1) dtStart = dtEnd - TimeSpan.FromDays(31 * 3) Case DayTypes.LAST6MONTHS dtEnd = DateTime.Today + TimeSpan.FromDays(1) dtStart = dtEnd - TimeSpan.FromDays(31 * 6) Case DayTypes.PERIOD dtStart = dtStartDate + TimeSpan.FromDays(1) dtEnd = dtEndDate End Select Dim DbProjList As New List(Of ProjFileM) ' CheckMe: lasciato come prima, anche NON attivi (cancellazione logica) If m_SelBTLDateType = BTLDateTypes.CREATEDATE Then DbProjList = DbControllers.m_ProjController.GetLastDesc(dtStart, dtEnd, nRowQuantity, True) Else DbProjList = DbControllers.m_ProjController.GetLastByExpDesc(dtStart, dtEnd, nRowQuantity, False) End If For Each Project In DbProjList ' recupero path per verificare esista If IsNothing(Project.nProjId) OrElse Project.nProjId = 0 Then Continue For ' verifico se ha prod If Not IsNothing(Project.nProdId) And Project.nProdId > 0 Then ' verifico se prod e' gia' stato creato Dim SameProdItem As ProdItem = m_ProjectList.FirstOrDefault(Function(x) Not IsNothing(x.ProdFileVM) AndAlso Not IsNothing(x.ProdFileVM.nProdId) AndAlso x.ProdFileVM.nProdId = Project.nProdId) If Not IsNothing(SameProdItem) Then SameProdItem.ProjFileList.Add(New ProjFileVM(Project)) Else ' recupero Prod Dim NewDbProd As ProdFileM = DbControllers.m_ProdController.FindCoreByProdId(Project.nProdId) If Not IsNothing(NewDbProd) Then m_ProjectList.Add(New ProdItem(New ProdFileVM(NewDbProd), New ProjFileVM(Project))) End If End If Else m_ProjectList.Add(New ProdItem(Nothing, New ProjFileVM(Project))) End If '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")) ' MessageBox.Show("Project file not found!", "Error!", MessageBoxButton.OK, MessageBoxImage.Error) 'End If Next ' leggo da db 'If m_ProjectType = ProjectType.PROJ Then ' Dim DbProjList As New List(Of ProjFileM) ' ' CheckMe: lasciato come prima, anche NON attivi (cancellazione logica) ' If m_SelBTLDateType = BTLDateTypes.CREATEDATE Then ' DbProjList = DbControllers.m_ProjController.GetLastDesc(dtStart, dtEnd, nRowQuantity, True) ' Else ' DbProjList = DbControllers.m_ProjController.GetLastByExpDesc(dtStart, dtEnd, nRowQuantity, False) ' End If ' For Each Project In DbProjList ' ' 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 'ElseIf m_ProjectType = ProjectType.PROD Then 'Dim DbProdList As New List(Of ProdFileM) ' DbProdList = DbControllers.m_ProdController.GetLastDesc(dtStart, dtEnd, nRowQuantity, True) ' If GoToProd Then ' For Each Project In DbProdList ' ' 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 = Map.refProjManagerVM.CurrProj.sMachine AndAlso ' Project.nType = Map.refProjManagerVM.CurrProj.nType Then ' If File.Exists(sPath) Then ' m_ProjectList.Add(New ProdItem(New ProdFileVM(Project), Nothing)) ' Else ' DbControllers.m_ProdController.DeleteProd(Project.nProdId) ' 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 DbProdList ' ' 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) ' EgtOutLog("Found project on Db without the folder and erased it! Prod number " & Project.nProdId.ToString("0000")) ' End If ' Next ' End If 'End If End Sub 'Public Overrides Sub RefreshProjectList(Optional GoToProd As Boolean = False) ' 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(31) ' Case DayTypes.LAST3MONTHS ' dtEnd = DateTime.Today + TimeSpan.FromDays(1) ' dtStart = dtEnd - TimeSpan.FromDays(31 * 3) ' Case DayTypes.LAST6MONTHS ' dtEnd = DateTime.Today + TimeSpan.FromDays(1) ' dtStart = dtEnd - TimeSpan.FromDays(31 * 6) ' Case DayTypes.PERIOD ' dtStart = dtStartDate + TimeSpan.FromDays(1) ' dtEnd = dtEndDate ' 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 ' 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 ' ElseIf m_ProjectType = ProjectType.PROD Then ' Dim DbProjectList As New List(Of ProdFileM) ' DbProjectList = DbControllers.m_ProdController.GetLastDesc(dtStart, dtEnd, nRowQuantity, True) ' If 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 = Map.refProjManagerVM.CurrProj.sMachine AndAlso ' Project.nType = Map.refProjManagerVM.CurrProj.nType Then ' If File.Exists(sPath) Then ' m_ProjectList.Add(New ProdFileVM(Project)) ' Else ' DbControllers.m_ProdController.DeleteProd(Project.nProdId) ' 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.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) ' EgtOutLog("Found project on Db without the folder and erased it! Prod number " & Project.nProdId.ToString("0000")) ' End If ' Next ' End If ' 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(Map.refProjManagerVM.CurrProj) AndAlso SelProject.nProjId = Map.refProjManagerVM.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(Map.refProdManagerVM.CurrProd) AndAlso SelProject.nProdId = Map.refProdManagerVM.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) ' ' 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(Map.refProjManagerVM.CurrProj) AndAlso Map.refProjManagerVM.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