Files
Nuvolar/Nuvolar.Module/Controllers/LockObjectBeforeEditVC.vb
2017-03-08 11:21:27 +01:00

91 lines
4.1 KiB
VB.net

Imports System
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Text
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Actions
Imports DevExpress.Persistent.Base
Imports DevExpress.ExpressApp.Model
Imports DevExpress.ExpressApp.SystemModule
Imports DevExpress.Xpo
Imports DevExpress.Persistent.BaseImpl
Imports DevExpress.Data.Filtering
Public Class LockObjectBeforeeditVC
Inherits DevExpress.ExpressApp.ViewController
Public Sub New()
MyBase.New()
'This call is required by the Component Designer.
InitializeComponent()
RegisterActions(components)
End Sub
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
If TryCast(View, ListView) IsNot Nothing Then
Dim _ListView As ListView = TryCast(View, ListView)
Dim _IModelClass As IModelClass
_IModelClass = _ListView.Model.ModelClass
If TryCast(_IModelClass, IModelClassAllowSort).LockObjectBeforeEdit = True Then
AddHandler Frame.GetController(Of ListViewProcessCurrentObjectController).CustomProcessSelectedItem, AddressOf ListView_CustomProcessSelectedItem
End If
End If
End Sub
Protected Overrides Sub OnDeactivated()
MyBase.OnDeactivated()
If TryCast(View, DetailView) IsNot Nothing Then
'// DetailView után a lock felszabadítása !
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _uow_lock As New UnitOfWork(_onew.Session.DataLayer)
Dim _User As User = _onew.GetObject(TryCast(SecuritySystem.CurrentUser, User))
Dim _IModelClass As IModelClass = TryCast(View, DetailView).Model.ModelClass
If TryCast(_IModelClass, IModelClassAllowSort).LockObjectBeforeEdit = True Then
If View.SelectedObjects.Count > 0 Then
Dim _ActBusinessObject As Object = TryCast(View.SelectedObjects(0), Object)
LockingModule.UnLockObject(_uow_lock, _IModelClass.TypeInfo.Type, _ActBusinessObject.Oid.ToString, _User)
End If
End If
End If
If TryCast(View, ListView) IsNot Nothing Then
Dim _ListView As ListView = TryCast(View, ListView)
Dim _IModelClass As IModelClass
_IModelClass = _ListView.Model.ModelClass
If TryCast(_IModelClass, IModelClassAllowSort).LockObjectBeforeEdit = True Then
RemoveHandler Frame.GetController(Of ListViewProcessCurrentObjectController).CustomProcessSelectedItem, AddressOf ListView_CustomProcessSelectedItem
End If
End If
End Sub
Private Sub ListView_CustomProcessSelectedItem(sender As Object, e As CustomProcessListViewSelectedItemEventArgs)
'// Objektum lockolása, ha nem megy akkor e.handled=True !
Try
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _uow_lock As New UnitOfWork(_onew.Session.DataLayer)
Dim _User As User = _onew.GetObject(TryCast(SecuritySystem.CurrentUser, User))
Dim _IModelClass As IModelClass = TryCast(View, ListView).Model.ModelClass
Dim _ActBusinessObject As Object = TryCast(View.SelectedObjects(0), Object)
If Not LockingModule.LockObject(_uow_lock, _IModelClass.TypeInfo.Type, _ActBusinessObject.Oid.ToString, _User) Then
e.Handled = True
Dim _LockingObject As LockingObject = _onew.FindObject(Of LockingObject)(CriteriaOperator.Parse("ObjectKey=?", _ActBusinessObject.Oid.ToString))
If _LockingObject IsNot Nothing Then
MsgBox(String.Format(TryCast(_IModelClass, IModelClassAllowSort).LockObjectBeforeEditErrorString, _LockingObject.User.FullName, _LockingObject.ObjectCreated), MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "Hiba!")
Else
End If
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Hiba!")
End Try
End Sub
End Class