Files
EgtPHOTOLib/OptionPanelSlab/OptionPanelSlabVM.vb
2022-07-08 13:53:03 +02:00

863 lines
31 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Class OptionPanelSlabVM
Inherits VMBase
Public Event SlabIsSelectedOFFICE(ByRef sender As Object, ByVal e As EventArgs)
Public sSlabId As String
Public sProjectAssigned As String
#Region "FIELDS & PROPERTIES"
Public ReadOnly Property SelSlab As Slab
Get
If IsNothing(PhotoMap.refProjectVM) Then Return Nothing
Return PhotoMap.refProjectVM.SelSlab
End Get
End Property
Private m_StateList As New List(Of IdNameStruct)
Public Property StateList As List(Of IdNameStruct)
Get
If IsNothing(PhotoMap.refProjectVM) Then Return Nothing
m_StateList = PhotoMap.refProjectVM.StateList
Return PhotoMap.refProjectVM.StateList
End Get
Set(value As List(Of IdNameStruct))
m_StateList = value
End Set
End Property
Private m_LastState As IdNameStruct
Private m_SelState As New IdNameStruct
Public Property SelState As IdNameStruct
Get
Return m_SelState
End Get
Set(value As IdNameStruct)
If Not SelSlab.SetStatus(value.Id) Then
Application.Current.Dispatcher.BeginInvoke(New Action(Sub()
m_SelState = m_LastState
NotifyPropertyChanged("SelState")
End Sub), System.Windows.Threading.DispatcherPriority.ContextIdle, Nothing)
Else
m_SelState = value
NotifyPropertyChanged("SelState")
End If
End Set
End Property
Public Sub SetSelState(CurrState As IdNameStruct)
m_SelState = CurrState
m_LastState = m_SelState
NotifyPropertyChanged("SelState")
End Sub
Public ReadOnly Property MaterialList As List(Of String)
Get
If IsNothing(PhotoMap.refProjectVM) Then Return Nothing
Return PhotoMap.refProjectVM.MaterialList
End Get
End Property
Public ReadOnly Property PhotoCommand_Visibility As Visibility
Get
If Not IsNothing(PhotoMap.refProjectVM) Then
Select Case PhotoMap.refProjectVM.SelProjectMode
Case ProjectSlabVM.ProjectModeOpt.DETAIL
Return Visibility.Collapsed
Case ProjectSlabVM.ProjectModeOpt.NEWSLAB
Return Visibility.Visible
End Select
End If
Return Visibility.Collapsed
End Get
End Property
Public ReadOnly Property Remove_Visibility As Visibility
Get
' se OmgaOFFICE nascondo il bottone
If MainData.bIsOmagOFFICE Then
Return Visibility.Collapsed
End If
' se OmagPHOTO
If Not IsNothing(PhotoMap.refProjectVM) Then
Select Case PhotoMap.refProjectVM.SelProjectMode
Case ProjectSlabVM.ProjectModeOpt.DETAIL
Return Visibility.Visible
Case ProjectSlabVM.ProjectModeOpt.NEWSLAB
Return Visibility.Collapsed
End Select
End If
Return Visibility.Collapsed
End Get
End Property
Public ReadOnly Property OkMsg_Visibility As Visibility
Get
' se OmgaOFFICE nascondo il bottone
If MainData.bIsOmagOFFICE Then
Return Visibility.Collapsed
End If
' se OmagPHOTO
Return Visibility.Visible
End Get
End Property
Public ReadOnly Property Select_Visibility As Visibility
Get
' se OmgaOFFICE nascondo il bottone
If MainData.bIsOmagOFFICE Then
Return Visibility.Visible
End If
' se OmagPHOTO
Return Visibility.Collapsed
End Get
End Property
Private m_Ok_IsEnabled As Boolean = True
Public Property Ok_IsEnabled As Boolean
Get
Return m_Ok_IsEnabled
End Get
Set(value As Boolean)
m_Ok_IsEnabled = value
NotifyPropertyChanged("Ok_IsEnabled")
End Set
End Property
Private m_Select_IsEnabled As Boolean = True
Public Property Select_IsEnabled As Boolean
Get
Return m_Select_IsEnabled
End Get
Set(value As Boolean)
m_Select_IsEnabled = value
NotifyPropertyChanged("Select_IsEnabled")
End Set
End Property
Private m_EnableParameters As Boolean = Not MainData.bIsOmagOFFICE
Public ReadOnly Property EnableParameters As Boolean
Get
Return m_EnableParameters
End Get
End Property
' la stampa delle etichette è abilitata solo dal programma OmagPHOTO
Public ReadOnly Property Print_Visibility As Visibility
Get
' se OmgaOFFICE nascondo il bottone
If MainData.bIsOmagOFFICE Then
Return Visibility.Collapsed
End If
' se OmagPHOTO
Return MainData.bVisibilityPrinter
End Get
End Property
#Region "Messages"
Public ReadOnly Property IdMsg As String
Get
Return EgtMsg(MSG_SLAB + 1)
End Get
End Property
Public ReadOnly Property BlockMsg As String
Get
Return "Blocco"
End Get
End Property
Public ReadOnly Property ImagePathMsg As String
Get
Return EgtMsg(MSG_SLAB + 2)
End Get
End Property
Public ReadOnly Property StateMsg As String
Get
Return EgtMsg(MSG_SLAB + 3)
End Get
End Property
Public ReadOnly Property ProjectAssignedToMsg As String
Get
Return EgtMsg(MSG_SLAB + 4)
End Get
End Property
Public ReadOnly Property MaterialMsg As String
Get
Return EgtMsg(MSG_RAWPARTPAGEUC + 9)
End Get
End Property
Public ReadOnly Property ThicknessMsg As String
Get
Return EgtMsg(MSG_RAWPARTPAGEUC + 5)
End Get
End Property
Public ReadOnly Property WarehousePositionMsg As String
Get
Return EgtMsg(MSG_SLAB + 5)
End Get
End Property
Public ReadOnly Property OkMsg As String
Get
If Not IsNothing(PhotoMap.refProjectVM) Then
Select Case PhotoMap.refProjectVM.SelProjectMode
Case ProjectSlabVM.ProjectModeOpt.DETAIL
Return EgtMsg(MSG_OPTIONPANEL + 1)
Case ProjectSlabVM.ProjectModeOpt.NEWSLAB
Return EgtMsg(MSG_OPTIONPANEL + 2)
End Select
End If
Return "OkMsg"
End Get
End Property
Public ReadOnly Property CancelMsg As String
Get
Return EgtMsg(MSG_OPTIONPANEL + 3)
End Get
End Property
Public ReadOnly Property RemoveMsg As String
Get
Return EgtMsg(MSG_OPTIONPANEL + 4)
End Get
End Property
Public ReadOnly Property SelectMsg As String
Get
Return EgtMsg(92060)
End Get
End Property
Public ReadOnly Property PrintMsg As String
Get
Return EgtMsg(92059)
End Get
End Property
#End Region ' Messages
#Region "ToolTip"
Public ReadOnly Property PhotoToolTip As String
Get
Return EgtMsg(MSG_RAWPARTTAB + 2)
End Get
End Property
#End Region ' ToolTip
' Definizione comandi
Private m_cmdPhoto As ICommand
Private m_cmdOk As ICommand
Private m_cmdCancel As ICommand
Private m_cmdRemove As ICommand
Private m_cmdSelected As ICommand
Private m_cmdPrint As ICommand
Private m_cmdRefreshPhoto As ICommand
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New()
' Creo riferimento a questa classe in StoneMap
PhotoMap.SetRefOptionPanelVM(Me)
' Assegno funzione per disabilitare bottone di conferma alla lista
Slab.m_IsEnabledBtn = AddressOf IsEnabledBtn
' Funzioni per creare nuovo file Db con tabella
''CreateDbFile()
''CreateTable()
' aggiungo la colonna per indicare se la lastra è in lettura in qualche programma
ManageDb.AddIsSelectedColumn()
' costruisco la tabella per indicare le modifiche effettuate
ManageDb.CreateDataTimeTable()
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Friend Sub InitOptionPanel()
Select Case PhotoMap.refProjectVM.SelProjectMode
Case ProjectSlabVM.ProjectModeOpt.DETAIL
SelSlab.SetOrigValues()
SelSlab.ResetIsModified()
If MainData.bIsOmagOFFICE AndAlso SelSlab.State <> 1 Then
Select_IsEnabled = False
Else
Select_IsEnabled = True
End If
Case ProjectSlabVM.ProjectModeOpt.NEWSLAB
' verifico se devo inserire il valore dell'id
Dim sLastId As String = String.Empty
Dim sLastBlock As String = String.Empty
sLastBlock = MainData.sLastBlock
sLastId = Slab.GenerateIdNbr(sLastBlock)
NotifyPropertyChanged("EnableSlabId")
NotifyPropertyChanged("VisibilityBlock")
' Creo nuova lastra corrente con valori di default
PhotoMap.refProjectVM.SelSlab = New Slab(sLastId, sLastBlock, String.Empty, Slab.StateOpt.AVAILABLE, String.Empty, String.Empty, 0, String.Empty)
' Creo nuovo progetto
EgtNewFile()
EgtZoom(ZM.ALL)
End Select
' Aggiorno visualizzazione bottone foto perchè potrei essere passato da mod detail a newslab
NotifyPropertyChanged("PhotoCommand_Visibility")
NotifyPropertyChanged("Remove_Visibility")
NotifyPropertyChanged("OkMsg")
NotifyPropertyChanged("SelSlab")
' Aggiorno stato bottone di conferma
IsEnabledBtn(SelSlab.IsValid)
End Sub
Private Sub IsEnabledBtn(IsEnabled As Boolean)
Ok_IsEnabled = IsEnabled
End Sub
' restituisce la lastra con l'identificativo indicato, altrimenti "nothing"
Private Function GetSlabById(ByVal sIdSlab As String) As Slab
Dim CurrSlab As Slab = Nothing
If Not String.IsNullOrEmpty(sIdSlab) Then
For Each ItemSlab In PhotoMap.refListPageVM.SlabList
If ItemSlab.Id = sIdSlab Then
CurrSlab = ItemSlab
Exit For
End If
Next
End If
Return CurrSlab
End Function
Public Function GetProjectAssigned(Optional ByVal sLocal_SlabId As String = "") As String
Dim ProjectSlab As String = String.Empty
Dim PreviousSlabOFFICE As Slab
' Aggiorno la precedente lastra selezionata
PreviousSlabOFFICE = GetSlabById(sLocal_SlabId)
If IsNothing(PreviousSlabOFFICE) Then
PreviousSlabOFFICE = GetSlabById(sSlabId)
End If
If Not IsNothing(PreviousSlabOFFICE) Then
ProjectSlab = PreviousSlabOFFICE.ProjectAssignedTo
End If
Return ProjectSlab
End Function
Public Sub SetMaterialFromDB()
Dim MatList As List(Of String) = ManageDb.FindAllMaterialInDB()
PhotoMap.refProjectVM.MaterialList.Clear()
For Each Item In MatList
PhotoMap.refProjectVM.MaterialList.Add(Item)
Next
PhotoMap.refOptionPanelVM.NotifyPropertyChanged("MaterialList")
End Sub
Public Sub Save()
SelSlab.IsSelected = 0
Select Case PhotoMap.refProjectVM.SelProjectMode
Case ProjectSlabVM.ProjectModeOpt.DETAIL
If SelSlab.IsModified Then
' Aggiorno la lastra con le modifiche (senza modificare la data)
Dim Query As String = "UPDATE " & Slab.DB_SLABS & " SET " &
If(SelSlab.IsModifiedId, Slab.DB_ID & " = '" & SelSlab.Id & "', ", "") &
If(SelSlab.IsModifiedImagePath, Slab.DB_IMAGEPATH & " = '" & SelSlab.ImagePath & "', ", "") &
If(SelSlab.IsModifiedState, Slab.DB_STATE & " = '" & SelSlab.State & "', ", "") &
If(SelSlab.IsModifiedProjectAssignedTo, Slab.DB_PROJASSIGNEDTO & " = '" & SelSlab.ProjectAssignedTo & "', ", "") &
If(SelSlab.IsModifiedMaterial, Slab.DB_MATERIAL & " = '" & SelSlab.Material & "', ", "") &
If(SelSlab.IsModifiedThickness, Slab.DB_THICKNESS & " = '" & SelSlab.Thickness & "', ", "") &
If(SelSlab.IsModifiedWarehousePosition, Slab.DB_WAREHOUSEPOS & " = '" & SelSlab.WarehousePosition & "',", "") &
Slab.DB_ISSELECTED & " = " & SelSlab.IsSelected.ToString
Query = Query.TrimEnd(","c, " "c)
Query &= " WHERE Id = '" & SelSlab.OrigId & "'"
ManageDb.ExecuteQuery(Query)
End If
Case ProjectSlabVM.ProjectModeOpt.NEWSLAB
' Copio immagine
Dim sImgSource As String
If SelSlab.ImagePath = "*" Then
sImgSource = PhotoMap.refProjectVM.m_Camera.ImageDir & "\" & Camera.FINAL_IMAGE
Else
sImgSource = SelSlab.ImagePath
End If
Dim sCopyImagePath As String = CopyPhoto(sImgSource)
If Not String.IsNullOrEmpty(sCopyImagePath) Then
SelSlab.ImagePath = sCopyImagePath
Else
Dim sMsg As String = "Error copying image or auxiliary info"
LibMap.refStatusBarVM.SetOutputMessage(sMsg, 5, MSG_TYPE.ERROR_)
Return
End If
' Aggiungo la nuova lastra al Db
Dim Query As String = "INSERT INTO " & Slab.DB_SLABS & " (" & Slab.DB_ID & ", " &
Slab.DB_IMAGEPATH & ", " &
Slab.DB_STATE & ", " &
Slab.DB_PROJASSIGNEDTO & ", " &
Slab.DB_MATERIAL & ", " &
Slab.DB_THICKNESS & ", " &
Slab.DB_WAREHOUSEPOS & ", " &
Slab.DB_ADDEDDATE & ", " &
Slab.DB_ISSELECTED & ")" &
" VALUES ('" & SelSlab.Id & "', " &
"'" & SelSlab.ImagePath & "', " &
SelSlab.State & ", " &
"'" & SelSlab.ProjectAssignedTo & "', " &
"'" & SelSlab.Material & "', " &
SelSlab.Thickness & ", " &
"'" & SelSlab.WarehousePosition & "', " &
"Date('" & (String.Format("{0:yyyy-MM-dd}", SelSlab.AddedDate)) & "'), " &
SelSlab.IsSelected & ")"
ManageDb.ExecuteQuery(Query)
' comunico al programma che ha eseguito la chiamata l'aggiornamento dell'indice dell'ultima lastra inserita
If Not MainData.bEnableTextId Then WriteMainPrivateProfileString(S_GENERAL, "LastBlock", SelSlab.sNameBlock)
MainData.sLastBlock = SelSlab.sNameBlock
End Select
PhotoMap.refOptionPanelVM.IsSelected()
SelSlab.ResetIsModified()
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#Region "PhotoCommand"
Public ReadOnly Property PhotoCommand As ICommand
Get
If m_cmdPhoto Is Nothing Then
m_cmdPhoto = New Command(AddressOf Photo)
End If
Return m_cmdPhoto
End Get
End Property
Public Sub Photo(ByVal param As Object)
' Se macchina fotografica collegata, faccio una foto
If PhotoMap.refProjectVM.m_Camera.GetCameraLink() Then
If PhotoMap.refProjectVM.m_Camera.CameraClick() Then
SelSlab.ImagePath = "*"
Else
LibMap.refStatusBarVM.SetOutputMessage(EgtMsg(90313), 5, MSG_TYPE.ERROR_) 'Fotografia non riuscita
End If
' Altrimenti lancio browser di immagini
Else
PhotoFromFile()
End If
End Sub
Friend Sub PostPhoto(sPath As String, sContour As String)
' Carico la foto
PhotoMap.refDetailPageVM.LoadPhoto(sPath)
' Se richiesto il riconoscimento del contorno
'If Not String.IsNullOrEmpty(sContour) Then
' If Not m_MainWindow.m_CurrentProjectPageUC.LoadContour(sContour) Then
' m_MainWindow.m_CurrentProjectPageUC.SetWarningMessage(EgtMsg(90324)) 'Riconoscimento contorno non riuscito
' End If
'End If
' Aggiorno visualizzazione
EgtZoom(ZM.ALL)
End Sub
Friend Sub PhotoFromFile()
' Apro dialogo per scelta immagine
Dim PhotoDlg As New Microsoft.Win32.OpenFileDialog
PhotoDlg.Title = "Open"
PhotoDlg.Filter = "Image file(*.jpg;*.png;*.bmp)|*.jpg;*.png;*.bmp"
PhotoDlg.FilterIndex = 1
GetMainPrivateProfileString(S_GENERAL, K_IMAGEDIR, "", PhotoDlg.InitialDirectory)
If Not PhotoDlg.ShowDialog Then Return
Dim sPhoto As String = PhotoDlg.FileName
' Assegno la path dell'immagine selezionata
SelSlab.ImagePath = sPhoto
' Altri dati foto
' Carico immagine
If Not PhotoMap.refDetailPageVM.LoadPhoto(sPhoto) Then
' Errore nel caricamento della fotografia
MessageBox.Show(EgtMsg(MSG_RAWPARTTAB + 1), EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.OK, MessageBoxImage.Error)
Return
End If
' Aggiorno visualizzazione
EgtZoom(ZM.ALL)
End Sub
Private Function CopyPhoto(OrigPath As String) As String
Dim OrigTxtPath As String = Path.ChangeExtension(OrigPath, "txt")
Dim ImgName As String = ValidateFileName(SelSlab.Id)
Dim ImgExt As String = Path.GetExtension(OrigPath)
Dim nI As Integer = 0
Dim NewImgPath As String = Path.Combine(MainData.sPhotoDir, ImgName & ImgExt)
While File.Exists(NewImgPath)
nI += 1
NewImgPath = Path.Combine(MainData.sPhotoDir, ImgName & "_" & nI.ToString() & ImgExt)
End While
Dim NewTxtPath As String = Path.ChangeExtension(NewImgPath, "txt")
Try
File.Copy(OrigPath, NewImgPath, True)
File.Copy(OrigTxtPath, NewTxtPath, True)
Catch ex As Exception
Return String.Empty
End Try
Return Path.GetFileName(NewImgPath)
End Function
Private Function ValidateFileName(sFileName As String) As String
Dim sTemp As String = sFileName
For Each badChar As Char In Path.GetInvalidFileNameChars()
sTemp = sTemp.Replace(badChar, "_")
Next
Return sTemp
End Function
#End Region ' PhotoCommand
#Region "Select"
Public ReadOnly Property EnableSlabId As Boolean
Get
Return MainData.bEnableTextId
End Get
End Property
Public ReadOnly Property VisibilityBlock As Visibility
Get
Return MainData.vVisibilityBlock
End Get
End Property
Public ReadOnly Property Selected_Command As ICommand
Get
If m_cmdSelected Is Nothing Then
m_cmdSelected = New Command(AddressOf Selected)
End If
Return m_cmdSelected
End Get
End Property
Public Sub SetAvailableSlab(Optional ByVal sLocal_SlabId As String = "")
Dim Query As String
Dim PreviousSlabOFFICE As Slab
' Aggiorno la precedente lastra selezionata
PreviousSlabOFFICE = GetSlabById(sLocal_SlabId)
If IsNothing(PreviousSlabOFFICE) Then
PreviousSlabOFFICE = GetSlabById(sSlabId)
End If
If Not IsNothing(PreviousSlabOFFICE) Then
' Assegno lo stato AVAILABLE
If PreviousSlabOFFICE.State <> Slab.StateOpt.TAKEN Then
PreviousSlabOFFICE.SetStatus(Slab.StateOpt.AVAILABLE)
End If
Query = "UPDATE " & Slab.DB_SLABS & " SET " & Slab.DB_STATE & " = '" & PreviousSlabOFFICE.State & "', "
Query = Query.TrimEnd(","c, " "c)
Query &= "WHERE Id = '" & PreviousSlabOFFICE.Id & "'"
ManageDb.ExecuteQuery(Query)
Query = String.Empty
' Cancello il Progetto
Query = "UPDATE " & Slab.DB_SLABS & " SET " & Slab.DB_PROJASSIGNEDTO & " = '" & "', "
Query = Query.TrimEnd(","c, " "c)
Query &= "WHERE Id = '" & PreviousSlabOFFICE.Id & "'"
ManageDb.ExecuteQuery(Query)
Query = String.Empty
End If
End Sub
Public Sub SetAssignedSlab(Optional ByVal sLocal_SlabId As String = "")
Dim Query As String
Dim PreviousSlabOFFICE As Slab
' Aggiorno la precedente lastra selezionata
PreviousSlabOFFICE = GetSlabById(sLocal_SlabId)
If IsNothing(PreviousSlabOFFICE) Then
PreviousSlabOFFICE = GetSlabById(sSlabId)
End If
If Not IsNothing(PreviousSlabOFFICE) Then
' Assegno lo stato ASSIGNED
If PreviousSlabOFFICE.State <> Slab.StateOpt.TAKEN Then
PreviousSlabOFFICE.SetStatus(Slab.StateOpt.ASSIGNED)
End If
Query = "UPDATE " & Slab.DB_SLABS & " SET " & Slab.DB_STATE & " = '" & PreviousSlabOFFICE.State & "', "
Query = Query.TrimEnd(","c, " "c)
Query &= "WHERE Id = '" & PreviousSlabOFFICE.Id & "'"
ManageDb.ExecuteQuery(Query)
Query = String.Empty
' Assegno il Progetto
Query = "UPDATE " & Slab.DB_SLABS & " SET " & Slab.DB_PROJASSIGNEDTO & " = '" & sProjectAssigned & "', "
Query = Query.TrimEnd(","c, " "c)
Query &= "WHERE Id = '" & PreviousSlabOFFICE.Id & "'"
ManageDb.ExecuteQuery(Query)
Query = String.Empty
End If
End Sub
Public Sub Selected(ByVal param As Object)
PhotoMap.refProjectVM.SelProjectMode = ProjectSlabVM.ProjectModeOpt.LIST
Dim Query As String
' Aggiorno la lastra con le modifiche
' Assegno lo stato ASSIGNED
PhotoMap.refProjectVM.SelSlab.SetStatus(Slab.StateOpt.ASSIGNED)
Query = "UPDATE " & Slab.DB_SLABS & " SET " & Slab.DB_STATE & " = '" & SelSlab.State & "', "
Query = Query.TrimEnd(","c, " "c)
Query &= "WHERE Id = '" & SelSlab.OrigId & "'"
ManageDb.ExecuteQuery(Query)
Query = String.Empty
' Assegno il Progetto
If Not String.IsNullOrEmpty(sProjectAssigned) Then
SelSlab.ProjectAssignedTo = sProjectAssigned
Query = "UPDATE " & Slab.DB_SLABS & " SET " & Slab.DB_PROJASSIGNEDTO & " = '" & sProjectAssigned & "', "
Query = Query.TrimEnd(","c, " "c)
Query &= "WHERE Id = '" & SelSlab.Id & "'"
ManageDb.ExecuteQuery(Query)
End If
PhotoMap.refProjectVM.SelSlab.IsSelected = 0
PhotoMap.refOptionPanelVM.IsSelected()
' comunico l'evento di modifica della pagina
RaiseEvent SlabIsSelectedOFFICE(Me, EventArgs.Empty)
End Sub
Public Sub IsSelected()
Dim Query As String
Query = "UPDATE " & Slab.DB_SLABS & " SET " & Slab.DB_ISSELECTED & " = " & SelSlab.IsSelected & ", "
Query = Query.TrimEnd(","c, " "c)
Query &= " WHERE Id = '" & SelSlab.OrigId & "'"
ManageDb.ExecuteQuery(Query)
Query = String.Empty
Query = "UPDATE " & Slab.DB_DATATIME & " SET " & "LastModify" & " = " & "'" & (String.Format("{0:MM/dd/yy H:mm:ss}", DateTime.Now)) & "'"
Query &= " WHERE Id = " & "'" & MainData.sUser & "'"
ManageDb.ExecuteQuery(Query)
Query = String.Empty
End Sub
#End Region ' SelectCommand
#Region "Ok"
Public ReadOnly Property Ok_Command As ICommand
Get
If m_cmdOk Is Nothing Then
m_cmdOk = New Command(AddressOf Ok)
End If
Return m_cmdOk
End Get
End Property
Public Sub Ok(ByVal param As Object)
Save()
PhotoMap.refProjectVM.SelProjectMode = ProjectSlabVM.ProjectModeOpt.LIST
End Sub
#End Region ' Ok
#Region "Cancel"
Public ReadOnly Property Cancel_Command As ICommand
Get
If m_cmdCancel Is Nothing Then
m_cmdCancel = New Command(AddressOf Cancel)
End If
Return m_cmdCancel
End Get
End Property
Public Sub Cancel(ByVal param As Object)
PhotoMap.refProjectVM.SelSlab.IsSelected = 0
PhotoMap.refOptionPanelVM.IsSelected()
PhotoMap.refProjectVM.SelProjectMode = ProjectSlabVM.ProjectModeOpt.LIST
SelSlab.ResetIsModified()
End Sub
#End Region ' Cancel
#Region "Remove"
Public ReadOnly Property Remove_Command As ICommand
Get
If m_cmdRemove Is Nothing Then
m_cmdRemove = New Command(AddressOf Remove)
End If
Return m_cmdRemove
End Get
End Property
Public Sub Remove(ByVal param As Object)
' chiedo conferma
If MessageBox.Show(EgtMsg(MSG_OPTIONPANEL + 5), "", MessageBoxButton.YesNo, MessageBoxImage.Question) <>
MessageBoxResult.Yes Then Return
Dim sImagePath As String = SelSlab.ImagePath
PhotoMap.refProjectVM.SelSlab.IsSelected = 0
PhotoMap.refOptionPanelVM.IsSelected()
' elimino dal Db
Dim Query As String = "DELETE FROM " & Slab.DB_SLABS & " WHERE " &
Slab.DB_ID & " = '" & SelSlab.Id & "'"
If ManageDb.ExecuteQuery(Query) <> 0 Then
' elimino anche la relativa foto
Try
If Not File.Exists(sImagePath) Then
sImagePath = MainData.sPhotoDir & "\" & sImagePath
End If
File.Delete(sImagePath)
File.Delete(Path.ChangeExtension(sImagePath, "txt"))
Catch ex As FileNotFoundException
' non è un problema
Catch ex As Exception
' non è un problema
End Try
End If
' elimino dalla lista
PhotoMap.refProjectVM.SlabList.Remove(SelSlab)
' torno alla lista
PhotoMap.refProjectVM.SelProjectMode = ProjectSlabVM.ProjectModeOpt.LIST
SelSlab.ResetIsModified()
End Sub
#End Region ' Remove
#Region "Print"
Public ReadOnly Property Print_Command As ICommand
Get
If m_cmdPrint Is Nothing Then
m_cmdPrint = New Command(AddressOf PrintLabel)
End If
Return m_cmdPrint
End Get
End Property
Private Sub CreateDataFile(sFilePath As String)
Dim sFileText As New List(Of String)
' inserisco il capitolo del [Main]
sFileText.Add("[Main]")
sFileText.Add("Var1=$Name$," & SelSlab.Id)
sFileText.Add("Var2=$Status$," & SelSlab.State.ToString)
sFileText.Add("Var3=$Project$," & SelSlab.ProjectAssignedTo)
sFileText.Add("Var4=$Material$," & SelSlab.Material)
sFileText.Add("Var5=$Thickness$," & SelSlab.Thickness)
sFileText.Add("Var6=$Storage$," & SelSlab.WarehousePosition)
Try
File.WriteAllLines(sFilePath, sFileText)
Catch ex As Exception
EgtOutLog(ex.ToString)
End Try
End Sub
Public Sub PrintLabel()
' verifico se sono stati modificati dei campi
Dim bModified As Boolean = SelSlab.IsModified
If bModified Then
If MessageBox.Show(EgtMsg(92200), EgtMsg(92201), MessageBoxButton.YesNo, MessageBoxImage.Warning) = MessageBoxResult.No Then
Return
End If
' salvo nel db
Save()
End If
Dim FileTEMPLATE As String = MainData.sTemplateFilePrinter
Dim FileName As String = DateTime.Now.ToString
FileName = FileName.Replace("/"c, "_")
FileName = FileName.Replace(":"c, "_")
FileName = FileName.Replace(" "c, "&")
Dim FileINI As String = MainData.sDataFilePrinter & "\" & FileName & ".ini"
' carea file dati da OmagPHOTO
CreateDataFile(FileINI)
Dim ProcsPrint As Process() = Process.GetProcessesByName(MainData.sZebraPrinterExe)
Process.Start(MainData.sZebraPrinterExe, FileTEMPLATE & " " & FileINI)
'If ProcsPrint.Length() > 0 Then
' ShowWindow(ProcsPrint(0).MainWindowHandle, 3)
'Else
' Process.Start("c:\EgtProg\OmagPHOTO\ZebraPrinterUtilityR32.exe", FileTEMPLATE & "," & FileINI)
'End If
Dim sFileError As String = MainData.sDataFilePrinter & "\" & "Error.txt"
ReadFileErrorPrinter(sFileError)
If bModified Then
PhotoMap.refProjectVM.SelProjectMode = ProjectSlabVM.ProjectModeOpt.LIST
End If
End Sub
Private Sub ReadFileErrorPrinter(sPathFileError As String)
Dim sErrorMsg As String = String.Empty
'Dim sPathFileError As String = m_sDataRoot & "\Temp\" & "Error.txt"
' provo a recuperare il mesaggio di errore
If File.Exists(sPathFileError) Then
Dim sAllLines As String() = File.ReadAllLines(sPathFileError)
' verifico che ci sia almeno una riga nel file degli errori
If sAllLines.Count > 0 Then
' verifico che la prima riga non sia vuota
Dim Index As Integer = 0
While String.IsNullOrEmpty(sAllLines(Index))
Index += 1
If Index > sAllLines.Count Then
EgtOutLog("Il messaggio di errore della stampante non è comprensibile: " & sAllLines(Index))
Return
End If
End While
Dim sItems As String() = sAllLines(Index).Split("=")
'verifico che sia avvenuto lo split
If sItems.Count > 1 Then
' verifico che il termine dopo il segno di uguale sia un numero
Dim nErrorIndex As Integer = -1
Try
nErrorIndex = CInt(sItems(1))
' se nErrorIndex=0 significa che non ci sono errori
If nErrorIndex < 1 Then
Return
End If
Catch ex As Exception
EgtOutLog("Il messaggio di errore della stampante non è comprensibile: " & sAllLines(Index))
Return
End Try
sErrorMsg = EgtMsg(nErrorIndex + 91460)
End If
End If
End If
' eventualmente stampo il messaggio
If Not String.IsNullOrEmpty(sErrorMsg) Then
LibMap.refStatusBarVM.SetOutputMessage(sErrorMsg, 5, MSG_TYPE.ERROR_)
End If
End Sub
#End Region ' Print
#Region "RefreshPhoto"
Public ReadOnly Property RefreshPhoto_Command As ICommand
Get
If m_cmdRefreshPhoto Is Nothing Then
m_cmdRefreshPhoto = New Command(AddressOf RefeshPhoto)
End If
Return m_cmdRefreshPhoto
End Get
End Property
Public Sub RefeshPhoto(ByVal param As Object)
If Not String.IsNullOrEmpty(SelSlab.ImagePath) Then
PostPhoto(SelSlab.ImagePath, String.Empty)
EgtZoom(ZM.ALL)
End If
End Sub
#End Region ' RefreshPhoto
#End Region ' COMMANDS
End Class