325 lines
17 KiB
VB.net
325 lines
17 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.IO
|
|
Imports EgtBEAMWALL.Core
|
|
Imports EgtBEAMWALL.Core.ConstBeam
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class NewOpenProjectFileDialogVM
|
|
Inherits Core.NewOpenProjectFileDialogVM
|
|
|
|
Public Overrides ReadOnly Property DayTypeList As List(Of String)
|
|
Get
|
|
Dim CurrDayTypeList As New List(Of String)({EgtMsg(62532), EgtMsg(62533), EgtMsg(62534), EgtMsg(62531)})
|
|
If Map.refMainWindowVM.MainWindowM.nUserLevel > 5 Then
|
|
CurrDayTypeList.Add("Always")
|
|
End If
|
|
Return CurrDayTypeList
|
|
End Get
|
|
End Property
|
|
|
|
#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
|
|
ProdItem.m_delUpdateNameInDb = AddressOf DbControllers.m_ProdController.UpdateDescription
|
|
|
|
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
|
|
UpdatePageList()
|
|
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.TEN
|
|
nRowQuantity = 10
|
|
Case RowQuantities.TWENTY
|
|
nRowQuantity = 20
|
|
Case RowQuantities.THIRTY
|
|
nRowQuantity = 30
|
|
End Select
|
|
Select Case m_SelDayType
|
|
Case DayTypes.LASTMONTH
|
|
dtEnd = DateTime.Today.AddDays(1)
|
|
dtStart = dtEnd.AddMonths(-1)
|
|
Case DayTypes.LAST3MONTHS
|
|
dtEnd = DateTime.Today.AddDays(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
|
|
Case DayTypes.ALWAYS
|
|
dtEnd = DateTime.Today + TimeSpan.FromDays(1)
|
|
dtStart = New DateTime(2020, 1, 1)
|
|
End Select
|
|
' leggo da db
|
|
If m_ProjectType = ProjectType.PROJ Then
|
|
'Dim DbProjList As New List(Of ProjFileM)
|
|
'If m_SelBTLDateType = BTLDateTypes.CREATEDATE Then
|
|
' DbProjList = DbControllers.m_ProjController.GetLastDesc(dtStart, dtEnd, 100000, True, bViewArchived)
|
|
' 'DbProjList = DbControllers.m_ProjController.GetLastDesc(dtStart, dtEnd, nRowQuantity * 3, True, bViewArchived)
|
|
'Else
|
|
' DbProjList = DbControllers.m_ProjController.GetLastByExpDesc(dtStart, dtEnd, nRowQuantity * 3, True, bViewArchived)
|
|
'End If
|
|
'For Each Project In DbProjList
|
|
' 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(New ProjFileVM(Project)))
|
|
' End If
|
|
'Next
|
|
m_ProjectList = New ObservableCollection(Of Core.ProdItem)(DbControllers.m_ProdController.GetLastDescFull(dtStart, dtEnd, nRowQuantity * 3, True, bViewArchived))
|
|
'Dim sMachine As String = ""
|
|
'Dim sBtlFileName As String = ""
|
|
'Dim sListName As String = ""
|
|
'Dim bIsCreationDate As Boolean = True
|
|
'If SelFilterType.Id = FilterTypes.ID Then
|
|
' ' sMachine = SearchText
|
|
'ElseIf SelFilterType.Id = FilterTypes.BTLFILENAME Then
|
|
' sBtlFileName = SearchText
|
|
'ElseIf SelFilterType.Id = FilterTypes.LISTNAME Then
|
|
' sListName = SearchText
|
|
'ElseIf SelFilterType.Id = FilterTypes.MACHINE Then
|
|
' sMachine = SearchText
|
|
'End If
|
|
'm_ProjectList = New ObservableCollection(Of Core.ProdItem)(DbControllers.m_ProdController.GetLastDescFull(dtStart, dtEnd, bIsCreationDate, nRowQuantity * 3, True, sMachine, sBtlFileName, sListName, bViewArchived))
|
|
NotifyPropertyChanged(NameOf(ProjectList))
|
|
ElseIf m_ProjectType = ProjectType.PROD Then
|
|
Dim DbProdList As New List(Of ProdFileM)
|
|
DbProdList = DbControllers.m_ProdController.GetLastDesc(dtStart, dtEnd, nRowQuantity, True, bViewArchived)
|
|
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)))
|
|
'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
|
|
' recupero i proj
|
|
Dim ProjList As New List(Of ProjectFileVM)
|
|
For Each ProjFileId In Project.nProjIdList
|
|
Dim ProjFileM As ProjectFileM = DbControllers.m_ProjController.FindByProjIdConv(ProjFileId)
|
|
ProjList.Add(New ProjFileVM(ProjFileM))
|
|
Next
|
|
m_ProjectList.Add(New ProdItem(New ProdFileVM(Project), ProjList))
|
|
'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 Function UpdatePageList() As Boolean
|
|
Dim FilteredList As IEnumerable(Of Core.ProdItem) = m_ProjectList.Where(Function(x)
|
|
If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso
|
|
((m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso x.ProjFileList.Any(Function(y) DirectCast(y, ProjFileVM).sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
|
|
(m_SelFilterType.Id = FilterTypes.LISTNAME AndAlso x.ProjFileList.Any(Function(y) DirectCast(y, ProjFileVM).sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
|
|
(m_SelFilterType.Id = FilterTypes.MACHINE AndAlso x.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then Return False
|
|
Return True
|
|
End Function)
|
|
Dim nPageRowQty As Integer = 0
|
|
Select Case m_SelRowQuantity
|
|
Case RowQuantities.TEN
|
|
nPageRowQty = 10
|
|
Case RowQuantities.TWENTY
|
|
nPageRowQty = 20
|
|
Case RowQuantities.THIRTY
|
|
nPageRowQty = 30
|
|
End Select
|
|
Dim nStart = (nPageIndex - 1) * nPageRowQty
|
|
Dim nEnd = Math.Min((nPageIndex * nPageRowQty), FilteredList.Count())
|
|
If nStart > FilteredList.Count() Then
|
|
Return False
|
|
End If
|
|
' FilteredList = FilteredList.OrderBy(Of ProdItem)()
|
|
m_PageList = New ObservableCollection(Of ProdItem)(FilteredList.Skip(nStart).Take(nPageRowQty).Select(Function(x) x))
|
|
'm_PageList.Clear()
|
|
'For Index = nStart To nEnd
|
|
' m_PageList.Add(FilteredList(Index))
|
|
'Next
|
|
NotifyPropertyChanged(NameOf(PageList))
|
|
Return True
|
|
|
|
'Dim bProjectOk As Boolean = True
|
|
''If TypeOf Proj Is ProjFileVM Then
|
|
'Dim CurrProj As ProdItem = DirectCast(PROJ, ProdItem)
|
|
'If m_SelFilterType.Id <> FilterTypes.NULL AndAlso (
|
|
' (m_SelFilterType.Id = BTLDateTypes.EXPORTDATE AndAlso Not CurrProj.ProjFileList.Any(Function(x) SearchDate.Contains(DirectCast(x, ProjFileVM).dtExportDate.Date))) OrElse
|
|
' (m_SelFilterType.Id = BTLDateTypes.CREATEDATE AndAlso Not SearchDate.Contains(CurrProj.dtCreateDate.Date))) Then bProjectOk = False
|
|
'If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso (
|
|
' (m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
|
|
' (m_SelFilterType.Id = FilterTypes.LISTNAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
|
|
' (m_SelFilterType.Id = FilterTypes.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
|
|
'ElseIf TypeOf Proj Is ProdFileVM Then
|
|
' Dim CurrProj As ProdFileVM = DirectCast(Proj, ProdFileVM)
|
|
' If m_SelFilterType.Id <> FilterTypes.NULL AndAlso (
|
|
' (m_SelFilterType.Id = BTLDateTypes.CREATEDATE AndAlso Not SearchDate.Contains(CurrProj.dtCreateDate.Date))) Then bProjectOk = False
|
|
' If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso (
|
|
' (m_SelFilterType.Id = FilterTypes.ID AndAlso CurrProj.sProdId.ToString.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
|
|
' (m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso CurrProj.sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
|
|
' (m_SelFilterType.Id = FilterTypes.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
|
|
'End If
|
|
' Return bProjectOk
|
|
End Function
|
|
|
|
Public Overrides Sub Archive()
|
|
If IsNothing(SelProject) Then Return
|
|
If Not IsNothing(SelProject.ProdFileVM) Then
|
|
' archivio il progetto
|
|
DbControllers.m_ProdController.UpdateArchived(SelProject.ProdFileVM.nProdId, Not SelProject.bIsArchived)
|
|
NotifyPropertyChanged(NameOf(Archive_Msg))
|
|
End If
|
|
' aggiorno lista progetti
|
|
RefreshProjectList()
|
|
End Sub
|
|
|
|
Public Overrides Sub Delete()
|
|
If IsNothing(SelProject) Then Return
|
|
' recupero indice per riselezionare
|
|
Dim ProjListIndex As Integer = m_ProjectList.IndexOf(SelProject)
|
|
' verifico se proj selezionato e' il corrente
|
|
If Not IsNothing(Map.refProjManagerVM.CurrProj) AndAlso SelProject.ProjFileList.Any(Function(x) x.nProjId = Map.refProjManagerVM.CurrProj.nProjId) Then
|
|
If m_ProjectType = ProjectType.PROJ AndAlso MessageBox.Show(EgtMsg(61872), EgtMsg(30009), MessageBoxButton.OKCancel, MessageBoxImage.Warning) = MessageBoxResult.Cancel Then
|
|
Return
|
|
Else
|
|
m_ChangeOpenedProjectOnCancel = True
|
|
End If
|
|
End If
|
|
' verifico se prod selezionato e' il corrente
|
|
If Not IsNothing(Map.refProdManagerVM.CurrProd) AndAlso SelProject.ProdFileVM.nProdId = Map.refProdManagerVM.CurrProd.nProdId Then
|
|
If m_ProjectType = ProjectType.PROD AndAlso MessageBox.Show(EgtMsg(61872), EgtMsg(30009), MessageBoxButton.OKCancel, MessageBoxImage.Warning) = MessageBoxResult.Cancel Then
|
|
Return
|
|
Else
|
|
m_ChangeOpenedProjectOnCancel = True
|
|
End If
|
|
End If
|
|
' rimuovo da lista ultimi progetti aperti
|
|
For Each Project In SelProject.ProjFileList
|
|
Map.refProjManagerVM.m_MruFiles.Remove(Project.sProjPath)
|
|
Next
|
|
Map.refProjManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames))
|
|
If Not IsNothing(SelProject.ProdFileVM) Then
|
|
Map.refProdManagerVM.m_MruFiles.Remove(SelProject.ProdFileVM.sProdPath)
|
|
Map.refProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProdManagerVM.MruFileNames))
|
|
End If
|
|
' cancello progetto
|
|
If Not IsNothing(SelProject.ProdFileVM) Then
|
|
DbControllers.m_ProdController.DeleteProd(SelProject.ProdFileVM.nProdId, True)
|
|
'' cancello cartella del Prod
|
|
'Try
|
|
' Directory.Delete(SelProject.ProdFileVM.sProdDirPath, True)
|
|
'Catch ex As Exception
|
|
' EgtOutLog("Error in deleting directory " & SelProject.ProdFileVM.sProdDirPath)
|
|
'End Try
|
|
End If
|
|
For Each Project In SelProject.ProjFileList
|
|
DbControllers.m_ProjController.DeleteProj(Project.nProjId, True)
|
|
'' cancello cartella del Proj
|
|
'Try
|
|
' Directory.Delete(Project.sProjDirPath, True)
|
|
'Catch ex As Exception
|
|
' EgtOutLog("Error in deleting directory " & Project.sProjDirPath)
|
|
'End Try
|
|
Next
|
|
' aggiorno lista progetti
|
|
RefreshProjectList()
|
|
' 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
|
|
|
|
Public Overrides Sub Cancel()
|
|
If m_ChangeOpenedProjectOnCancel Then
|
|
Dim bOpened As Boolean = False
|
|
If m_ProjectType = ProjectType.PROJ Then
|
|
For Each ProjectName In Map.refProjManagerVM.m_MruFiles.FileNames
|
|
If Not String.IsNullOrWhiteSpace(ProjectName) Then
|
|
Dim sProjId As String = Path.GetFileNameWithoutExtension(ProjectName)
|
|
If Not String.IsNullOrWhiteSpace(sProjId) Then
|
|
Dim nProjId As Integer = 0
|
|
Integer.TryParse(sProjId, nProjId)
|
|
Dim PjFileM = DbControllers.m_ProjController.FindByProjIdConv(nProjId)
|
|
Dim PjFileVM = New ProjFileVM(PjFileM)
|
|
Map.refProjManagerVM.OpenProject(PjFileVM)
|
|
bOpened = True
|
|
Exit For
|
|
End If
|
|
End If
|
|
Next
|
|
If Not bOpened Then
|
|
Map.refProjManagerVM.OpenProject(m_ProjectList(0).ProjFileList(0))
|
|
End If
|
|
ElseIf m_ProjectType = ProjectType.PROD Then
|
|
For Each ProjectName In Map.refProdManagerVM.m_MruFiles.FileNames
|
|
If Not String.IsNullOrWhiteSpace(ProjectName) Then
|
|
Dim sProdId As String = Path.GetFileNameWithoutExtension(ProjectName)
|
|
If Not String.IsNullOrWhiteSpace(sProdId) Then
|
|
Dim nProdId As Integer = 0
|
|
Integer.TryParse(sProdId, nProdId)
|
|
Dim PjFileM = DbControllers.m_ProdController.FindCoreByProdId(nProdId)
|
|
Dim PjFileVM = New ProdFileVM(PjFileM)
|
|
Map.refProdManagerVM.OpenProject(PjFileVM)
|
|
bOpened = True
|
|
Exit For
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
CloseWindow(False)
|
|
End Sub
|
|
|
|
#End Region ' METHODS
|
|
|
|
End Class
|