Files
Nuvolar/Nuvolar.Module/BusinessObjects/GeneralObjects/Contacts/ContactsVC.vb
T
2020-06-09 10:30:25 +02:00

286 lines
15 KiB
VB.net

Imports System
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Text
Imports System.Windows
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Actions
Imports DevExpress.Persistent.Base
Imports DevExpress.Data.Filtering
Imports DevExpress.Persistent.BaseImpl
Imports System.Linq
Imports System.Reflection
Imports DevExpress.ExpressApp.Utils
Public Class ContactsVC
Inherits DevExpress.ExpressApp.ViewController
Public Event InitWork(ByVal _Minimum As Long, ByVal _Step As Long, ByVal _Maximum As Long)
Public Event DoWork()
Public Event FinalWork()
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
If View.Id = "Contact_EmailSendQueue_PopUp_HTMLMailTemplate_ListView" Then
Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)?.Active.SetItemValue("", False)
Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)?.Active.SetItemValue("", False)
Frame.GetController(Of DevExpress.ExpressApp.SystemModule.LinkUnlinkController)?.Active.SetItemValue("", False)
Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)?.Active.SetItemValue("", False)
End If
End Sub
Protected Overrides Sub OnDeactivated()
MyBase.OnDeactivated()
If View.Id = "Contact_EmailSendQueue_PopUp_HTMLMailTemplate_ListView" Then
Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)?.Active.SetItemValue("", True)
Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)?.Active.SetItemValue("", True)
Frame.GetController(Of DevExpress.ExpressApp.SystemModule.LinkUnlinkController)?.Active.SetItemValue("", True)
Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)?.Active.SetItemValue("", True)
End If
End Sub
Public Sub New()
MyBase.New()
'This call is required by the Component Designer.
InitializeComponent()
RegisterActions(components)
End Sub
Private Sub aCreateActivityContacts_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aCreateActivityContacts.Execute
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
Dim _ListView As ListView = TryCast(View, ListView)
Dim _PropertyCollectionSource As PropertyCollectionSource = TryCast(_ListView.CollectionSource, PropertyCollectionSource)
Dim _Contacts As Contacts = TryCast(_PropertyCollectionSource.MasterObject, Contacts)
Dim _CRM_Leads As CRM_Leads = _Contacts.CRM_Leads
Dim _CRM_Leads_Activity As CRM_Leads_Activity = _onew.CreateObject(Of CRM_Leads_Activity)()
Dim currentUser As User = _ocur.GetObjectByKey(Of User)(_ocur.GetKeyValue(SecuritySystem.CurrentUser))
Frame.GetController(Of DevExpress.ExpressApp.Validation.PersistenceValidationController)()?.Active.SetItemValue("", False)
If _CRM_Leads Is Nothing Then
_CRM_Leads = _ocur.CreateObject(Of CRM_Leads)()
_CRM_Leads.Contacts = _Contacts
_CRM_Leads.FirstName = _Contacts.FirstName
_CRM_Leads.LastName = _Contacts.LastName
_CRM_Leads.HRPerson = _ocur.FindObject(Of HRPerson)(CriteriaOperator.Parse("User=?", currentUser))
_CRM_Leads.CRM_FirstMeet = _ocur.FindObject(Of CRM_FirstMeet)(CriteriaOperator.Parse("DefaultforBusiness=True"))
_CRM_Leads.LeadStatus = eLeadStatus.Qualified
End If
_Contacts.CRM_Leads = _CRM_Leads
_ocur.CommitChanges()
If _CRM_Leads IsNot Nothing Then
_CRM_Leads_Activity.CRM_Leads = _onew.GetObject(_CRM_Leads)
_CRM_Leads_Activity.HRPerson = _onew.GetObject(_CRM_Leads.HRPerson)
End If
Frame.GetController(Of DevExpress.ExpressApp.Validation.PersistenceValidationController)()?.Active.SetItemValue("", True)
e.ShowViewParameters.CreatedView = Application.CreateDetailView(_onew, "CRM_Leads_Activity_DetailView", True, _CRM_Leads_Activity)
End Sub
Private Sub aContacts_ChangeGroup_CustomizePopupWindowParams(sender As Object, e As DevExpress.ExpressApp.Actions.CustomizePopupWindowParamsEventArgs) Handles aContacts_ChangeGroup.CustomizePopupWindowParams
Try
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _Contacts_ChangeGroup_PopUp As Contacts_ChangeGroup_PopUp = _onew.CreateObject(Of Contacts_ChangeGroup_PopUp)()
e.View = Application.CreateDetailView(_onew, "Contacts_ChangeGroup_PopUp_DetailView", True, _Contacts_ChangeGroup_PopUp)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
End Try
End Sub
Private Sub aContacts_ChangeGroup_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.PopupWindowShowActionExecuteEventArgs) Handles aContacts_ChangeGroup.Execute
Try
Dim _ocur As Xpo.XPObjectSpace = View.ObjectSpace
Dim _Contacts_ChangeGroup_PopUp As Contacts_ChangeGroup_PopUp = TryCast(e.PopupWindow.View.SelectedObjects(0), Contacts_ChangeGroup_PopUp)
RaiseEvent InitWork(1, 1, View.SelectedObjects.Count)
For Each _Contacts As Contacts In View.SelectedObjects
RaiseEvent DoWork()
If _Contacts_ChangeGroup_PopUp.ChangeIsOutlookSync Then
_Contacts.IsOutlookSync = _Contacts_ChangeGroup_PopUp.IsOutlookSync
End If
If _Contacts_ChangeGroup_PopUp.ChangeIsExchangeSync Then
_Contacts.IsExchangeSync = _Contacts_ChangeGroup_PopUp.IsExchangeSync
End If
If _Contacts_ChangeGroup_PopUp.ReOrderFirstNameLastName Then
Dim _FirstName As String = _Contacts.LastName
Dim _LastName As String = _Contacts.FirstName
_Contacts.FirstName = _FirstName
_Contacts.LastName = _LastName
End If
If _Contacts_ChangeGroup_PopUp.Change_FullNameOrder Then
_Contacts.FullNameOrder = _Contacts_ChangeGroup_PopUp.FullNameOrder
End If
If _Contacts_ChangeGroup_PopUp.Change_Title Then
_Contacts.Title = _Contacts_ChangeGroup_PopUp.Title
End If
Next
_ocur.CommitChanges()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
Finally
RaiseEvent FinalWork()
End Try
End Sub
Private Sub aCreateEmailSendQueue_CustomizePopupWindowParams(sender As Object, e As CustomizePopupWindowParamsEventArgs) Handles aCreateEmailSendQueue.CustomizePopupWindowParams
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _Contact_EmailSendQueue_PopUp As Contact_EmailSendQueue_PopUp = _onew.CreateObject(Of Contact_EmailSendQueue_PopUp)()
e.View = Application.CreateDetailView(_onew, "Contact_EmailSendQueue_PopUp_DetailView", True, _Contact_EmailSendQueue_PopUp)
End Sub
Private Sub aCreateEmailSendQueue_Execute(sender As Object, e As PopupWindowShowActionExecuteEventArgs) Handles aCreateEmailSendQueue.Execute
Try
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _Contact_EmailSendQueue_PopUp As Contact_EmailSendQueue_PopUp = _onew.GetObject(TryCast(e.PopupWindow.View.SelectedObjects(0), Contact_EmailSendQueue_PopUp))
Dim _ListPropertyEditor As Editors.ListPropertyEditor = TryCast(e.PopupWindow.View, DetailView).FindItem("HTMLMailTemplate")
Dim _HTMLMailTemplate As HTMLMailTemplate = _ListPropertyEditor.ListView.SelectedObjects(0)
If _HTMLMailTemplate Is Nothing Then Throw New Exception("*Nincs kiválasztva a sablon!")
Dim _EMailSendQueueHeader As New EMailSendQueueHeader(_onew.Session)
With _EMailSendQueueHeader
.ShortName = _HTMLMailTemplate.ShortName
.EmailSendQueueParameters = _onew.GetObject(Of EMailSendQueueParameters)(_Contact_EmailSendQueue_PopUp.EMailSendQueueParameters)
End With
Dim _ArrayList_Char As New ArrayList
If _HTMLMailTemplate.HTMLBody Is Nothing Then Throw New Exception("*A HTML törzs üres!")
Dim _StringBuilder As New StringBuilder
Dim _TagBuilding As Boolean = False
For Each _char As Char In _HTMLMailTemplate.HTMLBody
Select Case _char
Case "{"c
_TagBuilding = True
_StringBuilder.Append(_char)
Case "}"c
_TagBuilding = False
_StringBuilder.Append(_char)
_ArrayList_Char.Add(_StringBuilder.ToString)
_StringBuilder.Clear()
Case Else
If _TagBuilding Then
_StringBuilder.Append(_char)
End If
End Select
Next
_StringBuilder.Clear()
For Each _Contacts As Contacts In View.SelectedObjects
Dim _EMailSendQueueRows As New EMailSendQueueRows(_onew.Session)
With _EMailSendQueueRows
.EMailSendQueueHeader = _EMailSendQueueHeader
.EMailTo = _Contacts.Email
.EMailFrom = TryCast(_onew.FindObject(Of WebParameters)(CriteriaOperator.Parse("1=1")), WebParameters).Email_SupportAdmin
_EMailSendQueueRows.HTMLBody = _HTMLMailTemplate.HTMLBody
For Each _PropertyInfo As PropertyInfo In _Contacts.GetType.GetProperties
If _ArrayList_Char.Contains("{" + _PropertyInfo.Name + "}") Then
If _PropertyInfo.GetValue(_Contacts, Nothing) IsNot Nothing Then
.HTMLBody = .HTMLBody.Replace("{" + _PropertyInfo.Name + "}", (_PropertyInfo.GetValue(_Contacts, Nothing)).ToString)
Else
.HTMLBody = .HTMLBody.Replace("{" + _PropertyInfo.Name + "}", " ")
End If
End If
Next
.Subject = _HTMLMailTemplate.ShortName
If _Contact_EmailSendQueue_PopUp.FileAttachments1 IsNot Nothing Then
Dim FileData As FileData = TryCast(_Contact_EmailSendQueue_PopUp.FileAttachments1, FileData)
Dim _FileLocation1 As String = String.Empty
_FileLocation1 = SaveOtherFile(FileData)
.FileAttachments1 = LoadOtherFile(_FileLocation1, New FileData(_onew.Session))
End If
If _Contact_EmailSendQueue_PopUp.FileAttachments2 IsNot Nothing Then
Dim FileData As FileData = TryCast(_Contact_EmailSendQueue_PopUp.FileAttachments2, FileData)
Dim _FileLocation2 As String = String.Empty
_FileLocation2 = SaveOtherFile(FileData)
.FileAttachments2 = LoadOtherFile(_FileLocation2, New FileData(_onew.Session))
End If
If _Contact_EmailSendQueue_PopUp.FileAttachments3 IsNot Nothing Then
Dim FileData As FileData = TryCast(_Contact_EmailSendQueue_PopUp.FileAttachments3, FileData)
Dim _FileLocation3 As String = String.Empty
_FileLocation3 = SaveOtherFile(FileData)
.FileAttachments3 = LoadOtherFile(_FileLocation3, New FileData(_onew.Session))
End If
End With
Next
_onew.CommitChanges()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
End Try
End Sub
Private Function SaveOtherFile(ByRef _FileData As FileData) As String
Dim _FileName As String = System.IO.Path.Combine(System.IO.Path.GetTempPath(), System.IO.Path.GetTempPath, _FileData.FileName)
Dim _StreamFile As System.IO.Stream = New System.IO.FileStream(_FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)
_FileData.SaveToStream(_StreamFile)
_StreamFile.Close()
Return _FileName
End Function
Private Function LoadOtherFile(ByVal _ActFile As String, _FileData As FileData) As FileData
Dim _StreamFile = New System.IO.FileStream(_ActFile, System.IO.FileMode.Open, System.IO.FileAccess.Read)
Dim _StreamReader As New System.IO.StreamReader(_StreamFile)
_StreamFile.Seek(0, System.IO.SeekOrigin.Begin)
_FileData.LoadFromStream(_ActFile, _StreamFile)
_FileData.FileName = System.IO.Path.GetFileName(_ActFile)
_StreamReader.Close()
_StreamFile.Close()
Return _FileData
End Function
'Dim _HTMLMailTemplate_CollectionSource As New CollectionSource(_onew, GetType(HTMLMailTemplate))
'_HTMLMailTemplate_CollectionSource.BeginUpdateCriteria()
'_HTMLMailTemplate_CollectionSource.Criteria.Clear()
'_HTMLMailTemplate_CollectionSource.Criteria.Add("HTMLMailTemplateState", CriteriaOperator.Parse("HTMLMailTemplateState=1"))
'_HTMLMailTemplate_CollectionSource.EndUpdateCriteria()
'e.View = Application.CreateListView("HTMLMailTemplate_ListView", _HTMLMailTemplate_CollectionSource, True)
'Private Function SaveOtherFile(ByRef _IntoFile As String, _fileData As FileData) As FileData
' Dim _FileName As String = System.IO.Path.Combine(System.IO.Path.GetTempPath(), System.IO.Path.GetTempPath, _IntoFile)
' Dim _StreamFile As System.IO.Stream = New System.IO.FileStream(_FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)
' _fileData.SaveToStream(_StreamFile)
' _StreamFile.Close()
' Return _fileData
'End Function
Private Sub aContactEmailToClipboard_Execute(sender As Object, e As SimpleActionExecuteEventArgs) Handles aContactEmailToClipboard.Execute
Dim _ClipboardText As String = ""
If System.Windows.Forms.Clipboard.ContainsText(System.Windows.Forms.TextDataFormat.Text) Then
_ClipboardText = Forms.Clipboard.GetText(Forms.TextDataFormat.Text)
End If
For Each _Contacts As Contacts In View.SelectedObjects
If _ClipboardText = "" Then
_ClipboardText += _Contacts.Email
Else
_ClipboardText += ";" + _Contacts.Email
End If
Next
Forms.Clipboard.SetText(_ClipboardText, Forms.TextDataFormat.UnicodeText)
End Sub
Private Sub aClearClipboard_Execute(sender As Object, e As SimpleActionExecuteEventArgs) Handles aClearClipboard.Execute
Forms.Clipboard.Clear()
End Sub
End Class