bf08cf4f86
-sistemato errore assemza chiave -aggiunto evidenziazione feature in trave
217 lines
9.9 KiB
VB.net
217 lines
9.9 KiB
VB.net
Imports System.IO
|
|
Imports EgtBEAMWALL.Core
|
|
Imports EgtBEAMWALL.Core.ConstBeam
|
|
Imports EgtUILib
|
|
|
|
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
|
|
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(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
|
|
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, 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
|
|
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 = ProjectManagerVM.CurrProj.sMachine AndAlso
|
|
Project.nType = ProjectManagerVM.CurrProj.nType Then
|
|
If File.Exists(sPath) Then
|
|
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))
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
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(ProjectManagerVM.CurrProj) AndAlso SelProject.ProjFileList.Any(Function(x) x.nProjId = ProjectManagerVM.CurrProj.nProjId) Then
|
|
Dim m_MessageBoxResult As MessageBoxResult = MessageBox.Show(Application.Current.MainWindow, EgtMsg(61872), EgtMsg(30009), MessageBoxButton.OKCancel, MessageBoxImage.Warning)
|
|
If m_ProjectType = ProjectType.PROJ AndAlso m_MessageBoxResult = MessageBoxResult.Cancel Then
|
|
Return
|
|
Else
|
|
m_ChangeOpenedProjectOnCancel = True
|
|
End If
|
|
End If
|
|
' verifico se prod selezionato e' il corrente
|
|
If Not IsNothing(ProjectManagerVM.CurrProd) AndAlso SelProject.ProdFileVM.nProdId = ProjectManagerVM.CurrProd.nProdId Then
|
|
Dim m_MessageBoxResult As MessageBoxResult = MessageBox.Show(Application.Current.MainWindow, EgtMsg(61872), EgtMsg(30009), MessageBoxButton.OKCancel, MessageBoxImage.Warning)
|
|
If m_ProjectType = ProjectType.PROD AndAlso m_MessageBoxResult = 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.refProdManagerVM.m_MruFiles.Remove(Project.sProjPath)
|
|
Next
|
|
Map.refProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProdManagerVM.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)
|
|
End If
|
|
For Each Project In SelProject.ProjFileList
|
|
DbControllers.m_ProjController.DeleteProj(Project.nProjId, True)
|
|
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.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
|