From 5a208976417c704c1c0297ad9d683ca0963a2f4e Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Tue, 19 Jul 2022 11:35:03 +0200 Subject: [PATCH] - Introdotta modalita' chiave operatore con opzione AnyDb - Gestito lock con abilitazione all'apertura dei file - Gestione nuovi campi Db per lock negli oggetti vb - Aggiunto id chiave su lock --- EgtBEAMWALL.Core/Constants/ConstGen.vb | 1 + .../OpenProjectFileDialogV.xaml | 1 + EgtBEAMWALL.Core/ProjectFileVM/ProdFileM.vb | 5 +- .../ProjectFileVM/ProjectFileM.vb | 20 +++ .../Controllers/ProdController.cs | 6 +- .../MainMenu/MainMenuVM.vb | 8 +- .../MainWindow/MainWindowM.vb | 31 +++- .../MainWindow/MainWindowVM.vb | 4 +- .../ProdManager/ProdManagerVM.vb | 2 +- .../ProjManager/ProjManagerVM.vb | 8 +- .../ProjectFileVM/ProdFileVM.vb | 2 +- .../ProjectFileVM/ProjFileVM.vb | 8 +- .../SceneHost/MySceneHostVM.vb | 4 +- .../Utility/DbControllers.vb | 141 ++++++++++-------- 14 files changed, 155 insertions(+), 86 deletions(-) diff --git a/EgtBEAMWALL.Core/Constants/ConstGen.vb b/EgtBEAMWALL.Core/Constants/ConstGen.vb index b0a6b75b..dd80f86e 100644 --- a/EgtBEAMWALL.Core/Constants/ConstGen.vb +++ b/EgtBEAMWALL.Core/Constants/ConstGen.vb @@ -41,6 +41,7 @@ Public Module ConstGen NESTING_AUTO = 4 SUPERVISOR = 8 NETWORK = 16 + ANY_DB = 32 End Enum ' File di log generale diff --git a/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml b/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml index 29904ebe..1ea88efc 100644 --- a/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml +++ b/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml @@ -154,6 +154,7 @@ --> diff --git a/EgtBEAMWALL.Core/ProjectFileVM/ProdFileM.vb b/EgtBEAMWALL.Core/ProjectFileVM/ProdFileM.vb index f5079e60..c11a78ab 100644 --- a/EgtBEAMWALL.Core/ProjectFileVM/ProdFileM.vb +++ b/EgtBEAMWALL.Core/ProjectFileVM/ProdFileM.vb @@ -27,7 +27,8 @@ Public Class ProdFileM Return New ProdFileM End Function - Public Shared Function CreateProdFileM(nProdId As Integer, nProjIdList As List(Of Integer), dtCreateProjDate As DateTime, sName As String, nType As BWType, sMachine As String) As ProdFileM + Public Shared Function CreateProdFileM(nProdId As Integer, nProjIdList As List(Of Integer), dtCreateProjDate As DateTime, sName As String, nType As BWType, + sMachine As String, sLockedBy As String, dtLock As DateTime) As ProdFileM Dim NewProjectFileM As New ProdFileM NewProjectFileM.m_nProdId = nProdId NewProjectFileM.m_nProjIdList = nProjIdList @@ -35,6 +36,8 @@ Public Class ProdFileM NewProjectFileM.m_sName = sName NewProjectFileM.m_nType = nType NewProjectFileM.m_sMachine = sMachine + NewProjectFileM.m_sLockedBy = sLockedBy + NewProjectFileM.m_dtLock = dtLock Return NewProjectFileM End Function diff --git a/EgtBEAMWALL.Core/ProjectFileVM/ProjectFileM.vb b/EgtBEAMWALL.Core/ProjectFileVM/ProjectFileM.vb index 53acaa6d..12786f45 100644 --- a/EgtBEAMWALL.Core/ProjectFileVM/ProjectFileM.vb +++ b/EgtBEAMWALL.Core/ProjectFileVM/ProjectFileM.vb @@ -74,6 +74,26 @@ Public Class ProjectFileM End Set End Property + Protected m_sLockedBy As String + Public Property sLockedBy As String + Get + Return m_sLockedBy + End Get + Set(value As String) + m_sLockedBy = value + End Set + End Property + + Protected m_dtLock As DateTime + Public Property dtLock As DateTime + Get + Return m_dtLock + End Get + Set(value As DateTime) + m_dtLock = value + End Set + End Property + #Region "CONSTRUCTORS" #End Region ' CONSTRUCTORS diff --git a/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs b/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs index af40a826..05f9e323 100644 --- a/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs +++ b/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs @@ -175,7 +175,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers { return null; } - return Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine); + return Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine, currProd.LockedBy, currProd.LockDate); } /// @@ -188,7 +188,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers List result = new List(); var dbResult = GetLastDbModelDesc(numRecord); // conversione - result = dbResult.Select(x => Core.ProdFileM.CreateProdFileM(x.ProdId, ProjIdByProd(x.ProdId), x.DtCreated, x.Description, x.PType, x.Machine)).ToList(); + result = dbResult.Select(x => Core.ProdFileM.CreateProdFileM(x.ProdId, ProjIdByProd(x.ProdId), x.DtCreated, x.Description, x.PType, x.Machine, x.LockedBy, x.LockDate)).ToList(); return result; } @@ -607,7 +607,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers /// protected Core.ProdFileM coreConv(ProdModel currProd) { - Core.ProdFileM answ = Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(currProd.ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine); + Core.ProdFileM answ = Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(currProd.ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine, currProd.LockedBy, currProd.LockDate); return answ; } diff --git a/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb b/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb index c00b0a63..fb82eda1 100644 --- a/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb @@ -257,7 +257,7 @@ Public Class MainMenuVM Map.refTopPanelVM.ManageQParamsRowVisibility(BWType.BEAM) Map.refPartInRawPartListVM.UpdateColumns(BWType.BEAM) End If - DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, True) + DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) Map.refProjManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames)) Else LoadingWndHelper.UpdateLoadingWnd(ActiveIds.GOTOPROJ, 2, EgtMsg(63005), 10, 100) ' Loading parts @@ -287,7 +287,7 @@ Public Class MainMenuVM End If ' aggiorno titolo Map.refMainWindowVM.UpdateTitle() - DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, True) + DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) Else Map.refSceneHostVM.MainController.NewProject() Map.refProjectVM.BTLStructureVM = Nothing @@ -337,7 +337,7 @@ Public Class MainMenuVM Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE) Map.refTopPanelVM.ManageQParamsRowVisibility(Map.refProjectVM.BTLStructureVM.nPROJTYPE <> BWType.BEAM) Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.nPROJTYPE) - DbControllers.m_ProdController.LockByProdId(Map.refProdManagerVM.CurrProd.nProdId, True) + DbControllers.m_ProdController.LockByProdId(Map.refProdManagerVM.CurrProd.nProdId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) Map.refProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProdManagerVM.MruFileNames)) End If Else @@ -371,7 +371,7 @@ Public Class MainMenuVM 'DbControllers.m_ProdController.ResetController() ' aggiorno titolo Map.refMainWindowVM.UpdateTitle() - DbControllers.m_ProdController.LockByProdId(Map.refProdManagerVM.CurrProd.nProdId, True) + DbControllers.m_ProdController.LockByProdId(Map.refProdManagerVM.CurrProd.nProdId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) ' seleziono prima barra Map.refProjectVM.MachGroupPanelVM.SelFirstMachGroup() Else diff --git a/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowM.vb b/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowM.vb index c7bc1996..b9efe14a 100644 --- a/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowM.vb @@ -3,6 +3,7 @@ Imports System.Math Imports EgtUILib Imports EgtWPFLib5 Imports EgtBEAMWALL.Core +Imports System.IO Public Class MainWindowM @@ -209,11 +210,6 @@ Public Class MainWindowM If GetMainPrivateProfileString(S_GENERAL, K_DATADIR, "", m_sDataDir) = 0 Then m_sDataDir = m_sDataRoot End If - m_sProjsDir = m_sDataDir & "\" & PROJS_DIR - m_sProdsDir = m_sDataDir & "\" & PRODS_DIR - m_sWarehouseDir = m_sDataDir & "\" & WAREHOUSE_DIR - ' imposto cartelle dei progetti - Core.ProjectFileVM.Init(sProjsDir, sProdsDir) ' Verifico indice di istanza ManageInstance() ' Imposto tipo di chiave @@ -372,6 +368,31 @@ Public Class MainWindowM Core.ProjectFileVM.Init(sProjsDir, sProdsDir) End Sub + Friend Sub UpdatePathForKey(sKey As String) + m_sProjsDir = m_sDataDir & "\" & sKey & "\" & PROJS_DIR + m_sProdsDir = m_sDataDir & "\" & sKey & "\" & PRODS_DIR + If Not Directory.Exists(m_sDataDir & "\" & sKey) Then + Directory.CreateDirectory(m_sDataDir & "\" & sKey & "\" & PROJS_DIR) + Directory.CreateDirectory(m_sDataDir & "\" & sKey & "\" & PRODS_DIR) + End If + m_sWarehouseDir = m_sDataDir & "\" & WAREHOUSE_DIR + ' imposto cartelle dei progetti + Core.ProjectFileVM.Init(sProjsDir, sProdsDir) + End Sub + + Friend Function GetKeyNumber() As Integer + Dim sKey As String = "" + Dim nKey As Integer = 0 + EgtGetKeyInfo(sKey) + sKey = sKey.Replace(" ", "") + If Not IsNothing(sKey) AndAlso sKey.Length > 11 Then + If Integer.TryParse(sKey.Substring(3, 6), nKey) AndAlso nKey > 0 Then + Return nKey + End If + End If + Return -1 + End Function + Friend Sub Close() ' Terminazione generale di EgtInterface EgtExit() diff --git a/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb b/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb index 1ed2b1c8..d5bccc62 100644 --- a/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb @@ -303,9 +303,9 @@ Public Class MainWindowVM If EgtGetCurrFilePath(sFilePath) Then WriteMainPrivateProfileString(S_GENERAL, K_LASTPROJ, sFilePath) ' tolgo lock da file aperto If Map.refMainMenuVM.SelPage = Pages.VIEW And Not IsNothing(Map.refProjManagerVM.CurrProj) Then - DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, False) + DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, False, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) ElseIf Map.refMainMenuVM.SelPage = Pages.MACHINING And Not IsNothing(Map.refProdManagerVM.CurrProd) Then - DbControllers.m_ProdController.LockByProdId(Map.refProdManagerVM.CurrProd.nProdId, False) + DbControllers.m_ProdController.LockByProdId(Map.refProdManagerVM.CurrProd.nProdId, False, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) End If ' Termino il Model m_MainWindowM.Close() diff --git a/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerVM.vb index 1c11ec8d..ecb93f84 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerVM.vb @@ -146,7 +146,7 @@ Public Class ProdManagerVM Friend Function InitNewProject(ByRef nProjId As Integer, ByRef nProdId As Integer, ByRef sProjectDir As String) As Boolean ' richiedo indice nuovo progetto - nProdId = DbControllers.m_ProdController.GetNextIndex(nProjId) + nProdId = DbControllers.m_ProdController.GetNextIndex(nProjId, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) If nProdId <= 0 Then Return False sProjectDir = refMainWindowVM.MainWindowM.sProdsDir & "\" & nProdId.ToString("0000") ' creo cartella nuovo progetto diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb index 54e7e2f0..e45cd8a6 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb @@ -238,7 +238,7 @@ Public Class ProjManagerVM ' se non ho ricevuto numero progetto da sovrascrivere If nProjId = 0 Then ' richiedo indice nuovo progetto - nProjId = DbControllers.m_ProjController.GetNextIndex() + nProjId = DbControllers.m_ProjController.GetNextIndex(Map.refMainWindowVM.MainWindowM.GetKeyNumber()) End If ' salvo data creazione progetto DbControllers.m_ProjController.Update(New ProjModel() With {.ProjId = nProjId, @@ -1587,7 +1587,7 @@ Public Class ProjManagerVM ' resetto stato new DbControllers.m_ProjController.ResetNew(nNewProjId) ' resetto lock - DbControllers.m_ProjController.LockByProjId(nNewProjId, False) + DbControllers.m_ProjController.LockByProjId(nNewProjId, False, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) DbControllers.m_ProjController.ResetController() Next ' se tutte le operazioni precedenti sono andate a buon fine @@ -1642,7 +1642,7 @@ Public Class ProjManagerVM If bOk Then ' aggiungo altri proj a prod For Each nProjId In NewProjIdList - DbControllers.m_ProdController.AddProj(nProdId, nProjId) + DbControllers.m_ProdController.AddProj(nProdId, nProjId, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) Next Else ' elimino da DB @@ -1657,7 +1657,7 @@ Public Class ProjManagerVM ' aggiorno pezzi su Db DbControllers.m_ProdController.UpdateMachGroup(nProdId, MyMachGroupList) ' resetto lock - DbControllers.m_ProdController.LockByProdId(nProdId, False) + DbControllers.m_ProdController.LockByProdId(nProdId, False, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) End If DbControllers.m_ProdController.ResetController() End If diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProdFileVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProdFileVM.vb index 2efa0aef..377d057e 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProdFileVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProdFileVM.vb @@ -156,7 +156,7 @@ Public Class ProdFileVM EgtResetModified() End If DbControllers.m_ProdController.ResetController() - DbControllers.m_ProdController.LockByProdId(CurrProject.nProdId, False) + DbControllers.m_ProdController.LockByProdId(CurrProject.nProdId, False, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) Return VerifyResult End Function diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb index 9a5aed24..742f5a88 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb @@ -5,6 +5,12 @@ Imports EgtUILib Public Class ProjFileVM Inherits Core.ProjFileVM + Public ReadOnly Property bIsEnabled As Boolean + Get + Return Not DbControllers.bNetwork OrElse Not bIsLocked + End Get + End Property + #Region "CONSTRUCTORS" Sub New(ProjectFileM As ProjFileM) @@ -141,7 +147,7 @@ Public Class ProjFileVM Else EgtResetModified() End If - DbControllers.m_ProjController.LockByProjId(CurrProject.nProjId, False) + DbControllers.m_ProjController.LockByProjId(CurrProject.nProjId, False, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) Return True End Function diff --git a/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb b/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb index 5b73bbc6..9b2948c5 100644 --- a/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb @@ -544,7 +544,7 @@ Public Class MySceneHostVM Map.refTopPanelVM.ManageQParamsRowVisibility(Map.refProjectVM.BTLStructureVM.BTLStructureM.nPROJTYPE <> BWType.BEAM) Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.BTLStructureM.nPROJTYPE) Map.refProjManagerVM.CurrProj = Map.refProjManagerVM.TempCurrProj - DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, True) + DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) ' carico lista macchine e macchina del progetto per il pulsante Reset Macchina del CALCPanel Map.refCALCPanelVM.LoadMachineList() ElseIf ProjectType = ProjectType.PROD Then @@ -563,7 +563,7 @@ Public Class MySceneHostVM Map.refTopPanelVM.ManageQParamsRowVisibility(Map.refProjectVM.BTLStructureVM.BTLStructureM.nPROJTYPE <> BWType.BEAM) Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.BTLStructureM.nPROJTYPE) If Not IsNothing(Map.refProdManagerVM.TempCurrProd) Then Map.refProdManagerVM.CurrProd = Map.refProdManagerVM.TempCurrProd - DbControllers.m_ProdController.LockByProdId(Map.refProdManagerVM.CurrProd.nProdId, True) + DbControllers.m_ProdController.LockByProdId(Map.refProdManagerVM.CurrProd.nProdId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber()) ' carico lista macchine e macchina del progetto per il pulsante Reset Macchina del CALCPanel Map.refCALCPanelVM.LoadMachineList() End If diff --git a/EgtBEAMWALL.ViewerOptimizer/Utility/DbControllers.vb b/EgtBEAMWALL.ViewerOptimizer/Utility/DbControllers.vb index bd7c9c7c..f4dc864d 100644 --- a/EgtBEAMWALL.ViewerOptimizer/Utility/DbControllers.vb +++ b/EgtBEAMWALL.ViewerOptimizer/Utility/DbControllers.vb @@ -5,76 +5,93 @@ Imports EgtBEAMWALL.ViewerOptimizer Public Module DbControllers - Friend m_SupervisorId As String = "1" - Private m_bNetwork As Boolean = False - Friend ReadOnly Property bNetwork As Boolean - Get - Return m_bNetwork - End Get - End Property + Friend m_SupervisorId As String = "1" + Private m_bNetwork As Boolean = False + Friend ReadOnly Property bNetwork As Boolean + Get + Return m_bNetwork + End Get + End Property - Public m_ProjController As DataLayer.Controllers.ProjController - Public m_ProdController As DataLayer.Controllers.ProdController - Public m_MachGroupController As DataLayer.Controllers.MachGroupController - Public m_StatusMapController As DataLayer.Controllers.StatusMapController - Public m_PartController As DataLayer.Controllers.PartController + Public m_ProjController As DataLayer.Controllers.ProjController + Public m_ProdController As DataLayer.Controllers.ProdController + Public m_MachGroupController As DataLayer.Controllers.MachGroupController + Public m_StatusMapController As DataLayer.Controllers.StatusMapController + Public m_PartController As DataLayer.Controllers.PartController - Sub Init() - End Sub + Sub Init() + End Sub - Sub New() + Sub New() - ' se demo--> server = db.steamware.net, nKey e sKey come le hai... + ' se demo--> server = db.steamware.net, nKey e sKey come le hai... - Dim sKey = "", sUser = "", sPwd = "" + Dim sKey = "", sUser = "", sPwd = "" - EgtGetKeyInfo(sKey) - sKey = sKey.Replace(" ", "") - If Not IsNothing(sKey) AndAlso sKey.Length > 11 Then - sUser = sKey.Substring(3, 6) - sPwd = sKey.Substring(10, sKey.Length - 10).Replace("(", "").Replace(")", "") - End If - Try - Dim DbAddress As String = "127.0.0.1" - Dim DbMasterKey As Integer = 0 - Dim sDbMasterKey As String = "" - Dim sSharedFolder As String = "" - If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) Then - GetMainPrivateProfileString(S_GENERAL, K_DBADDRESS, "", DbAddress) - DbMasterKey = GetMainPrivateProfileInt(S_GENERAL, K_DBMASTERKEY, 0) - If DbMasterKey > 0 Then - sDbMasterKey = DbMasterKey.ToString("000000") - End If - If String.IsNullOrWhiteSpace(DbAddress) OrElse DbMasterKey <= 0 Then - DbAddress = "127.0.0.1" - DbMasterKey = 0 - Else - m_bNetwork = True - End If + EgtGetKeyInfo(sKey) + sKey = sKey.Replace(" ", "") + If Not IsNothing(sKey) AndAlso sKey.Length > 11 Then + sUser = sKey.Substring(3, 6) + sPwd = sKey.Substring(10, sKey.Length - 10).Replace("(", "").Replace(")", "") + End If + Try + Dim DbAddress As String = "127.0.0.1" + Dim DbMasterKey As Integer = 0 + Dim sDbMasterKey As String = "" + Dim sSharedFolder As String = "" + If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) Then + GetMainPrivateProfileString(S_GENERAL, K_DBADDRESS, "", DbAddress) + DbMasterKey = GetMainPrivateProfileInt(S_GENERAL, K_DBMASTERKEY, 0) + If DbMasterKey > 0 Then + sDbMasterKey = DbMasterKey.ToString("000000") End If + If String.IsNullOrWhiteSpace(DbAddress) OrElse DbMasterKey <= 0 Then + DbAddress = "127.0.0.1" + DbMasterKey = 0 + Else + m_bNetwork = True + End If + End If + If Not m_bNetwork AndAlso Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.ANY_DB) Then + DbMasterKey = GetMainPrivateProfileInt(S_GENERAL, K_DBMASTERKEY, 0) + If DbMasterKey > 0 Then + sDbMasterKey = DbMasterKey.ToString("000000") + End If + ElseIf GetMainPrivateProfileInt(S_GENERAL, K_DBMASTERKEY, 0) = 0 Then + Dim nKey As Integer = 0 + If Integer.TryParse(sKey.Substring(3, 6), nKey) AndAlso nKey > 0 Then + WriteMainPrivateProfileString(S_GENERAL, K_DBMASTERKEY, nKey) + End If + End If DataLayer.DbConfig.InitDb(DbAddress, sUser, sPwd, sDbMasterKey) - DataLayer.DbConfig.SetupLogDir(Map.refMainWindowVM.MainWindowM.sTempDir) - DataLayer.DbConfig.CheckMigrateDb() - DataLayer.DbConfig.CheckUser(sUser, sPwd, Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK)) - If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) And bNetwork Then - ' imposto cartella condivisa - GetMainPrivateProfileString(S_GENERAL, K_SHAREDFOLDER, Map.refMainWindowVM.MainWindowM.sDataDir, sSharedFolder) - Map.refMainWindowVM.MainWindowM.UpdatePathForNetwork(sSharedFolder) - Dim sSupervisorMachName As String = "" - GetMainPrivateProfileString(S_MACH, K_SUPERVISORMACH, "", sSupervisorMachName) - If Not String.IsNullOrWhiteSpace(sSupervisorMachName) Then m_SupervisorId = sSupervisorMachName - End If - Catch ex As Exception - EgtOutLog("InitDb error: " & ex.ToString()) - MessageBox.Show(Application.Current.MainWindow, "Db connection error!!", "Error") - End - End Try + DataLayer.DbConfig.SetupLogDir(Map.refMainWindowVM.MainWindowM.sTempDir) + DataLayer.DbConfig.CheckMigrateDb() + DataLayer.DbConfig.CheckUser(sUser, sPwd, Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK)) + If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) And bNetwork Then + ' imposto cartella condivisa + GetMainPrivateProfileString(S_GENERAL, K_SHAREDFOLDER, Map.refMainWindowVM.MainWindowM.sDataDir, sSharedFolder) + Map.refMainWindowVM.MainWindowM.UpdatePathForNetwork(sSharedFolder) + Dim sSupervisorMachName As String = "" + GetMainPrivateProfileString(S_MACH, K_SUPERVISORMACH, "", sSupervisorMachName) + If Not String.IsNullOrWhiteSpace(sSupervisorMachName) Then m_SupervisorId = sSupervisorMachName + ElseIf Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.ANY_DB) Then + ' imposto cartella chiave master + Map.refMainWindowVM.MainWindowM.UpdatePathForKey(sDbMasterKey) + Else + ' imposto cartella chiave locale + Map.refMainWindowVM.MainWindowM.UpdatePathForKey(sKey.Substring(3, 6)) + End If + Catch ex As Exception + EgtOutLog("InitDb error: " & ex.ToString()) + MessageBox.Show(Application.Current.MainWindow, "Db connection error!!", "Error") + End + End Try - m_ProjController = New DataLayer.Controllers.ProjController - m_ProdController = New DataLayer.Controllers.ProdController - m_MachGroupController = New DataLayer.Controllers.MachGroupController - m_StatusMapController = New DataLayer.Controllers.StatusMapController - m_PartController = New DataLayer.Controllers.PartController - End Sub + m_ProjController = New DataLayer.Controllers.ProjController + m_ProdController = New DataLayer.Controllers.ProdController + m_MachGroupController = New DataLayer.Controllers.MachGroupController + m_StatusMapController = New DataLayer.Controllers.StatusMapController + m_PartController = New DataLayer.Controllers.PartController + End Sub End Module