Files
Nuvolar/Nuvolar.Module.Win/BusinessObjects/GeneralObjects/Contacts/ContactsVC.vb
T
2017-03-08 11:21:27 +01:00

338 lines
21 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 Microsoft.Office.Interop.Outlook
Imports Microsoft.Office.Interop
Imports DevExpress.Xpo
Imports System.IO
Imports DevExpress.Data.Filtering
Imports DevExpress.ExpressApp.Utils
Public Class ContactsVC
Inherits Nuvolar.Module.ContactsVC
Dim _WaitFormClass As New WaitFormClass
Public Sub New()
MyBase.New()
InitializeComponent()
RegisterActions(components)
End Sub
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
If View.Id Like "Contacts_*" Then
AddHandler MyBase.DoWork, AddressOf _WaitFormClass.DoWork
AddHandler MyBase.InitWork, AddressOf _WaitFormClass.InitWork
AddHandler MyBase.FinalWork, AddressOf _WaitFormClass.Finalwork
End If
End Sub
Protected Overrides Sub OnDeactivated()
MyBase.OnDeactivated()
If View.Id Like "Contacts_*" Then
RemoveHandler MyBase.DoWork, AddressOf _WaitFormClass.DoWork
RemoveHandler MyBase.InitWork, AddressOf _WaitFormClass.InitWork
RemoveHandler MyBase.FinalWork, AddressOf _WaitFormClass.Finalwork
End If
End Sub
Private Sub aContacts_SysncToOutlook_CustomizePopupWindowParams(sender As Object, e As DevExpress.ExpressApp.Actions.CustomizePopupWindowParamsEventArgs) Handles aContacts_SysncToOutlook.CustomizePopupWindowParams
Try
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _onew_Delete As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _Contacts_OutlookFolderContact_Collection As New XPCollection(Of Contacts_OutlookFolderContact)(_onew_Delete.Session)
If _Contacts_OutlookFolderContact_Collection.Count > 0 Then
_onew_Delete.Delete(_Contacts_OutlookFolderContact_Collection)
End If
_onew_Delete.CommitChanges()
Dim _Contacts_SysncOutlook As Contacts_SysncOutlook = _onew.CreateObject(Of Contacts_SysncOutlook)()
e.View = Application.CreateDetailView(_onew, "Contacts_SysncOutlook_DetailView", True, _Contacts_SysncOutlook)
Catch ex As System.Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
End Try
End Sub
Private Sub aContacts_SysncToOutlook_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.PopupWindowShowActionExecuteEventArgs) Handles aContacts_SysncToOutlook.Execute
Try
Frame.GetController(Of DevExpress.ExpressApp.Validation.PersistenceValidationController)().Active.SetItemValue("", False)
Dim _ocur As Xpo.XPObjectSpace = View.ObjectSpace
Dim _NeedCommitChanges As Boolean = False
Dim _Contacts_SysncOutlook As Contacts_SysncOutlook = TryCast(e.PopupWindow.View.SelectedObjects(0), Contacts_SysncOutlook)
Dim _OutlookApp As New Outlook.Application()
Dim _OutlookNameSpace As Outlook.NameSpace = _OutlookApp.GetNamespace("MAPI")
_OutlookNameSpace.Logon(, , False, True)
_WaitFormClass.InitWork(0, 1, View.SelectedObjects.Count)
Select Case _Contacts_SysncOutlook.SyscType
Case eSyscType.eFirstSync
Dim _ContactFolder As Outlook.MAPIFolder = _OutlookNameSpace.GetFolderFromID(_Contacts_SysncOutlook.Contacts_OutlookFolderContact.EntryID)
For Each _Contacts As Contacts In View.SelectedObjects
_WaitFormClass.DoWork
If _Contacts.IsOutlookSync Then
Dim _FileName As String = Path.GetTempPath + _Contacts.Oid.ToString + ".jpg"
Dim _ContactItem As Outlook.ContactItem = _OutlookApp.CreateItem(OlItemType.olContactItem)
With (_ContactItem)
.FirstName = _Contacts.FirstName
.LastName = _Contacts.LastName
.Email1Address = _Contacts.Email
.Birthday = _Contacts.Birthday
.JobTitle = _Contacts.Position
.BusinessTelephoneNumber = _Contacts.BusinessTelephoneNumber
.BusinessFaxNumber = _Contacts.BusinessFaxNumber
.HomeFaxNumber = _Contacts.HomeFaxNumber
.MobileTelephoneNumber = _Contacts.MobileTelephoneNumber
If _Contacts.Photo IsNot Nothing Then
'_Contacts.Photo.Save(_FileName)
'.AddPicture(_FileName)
End If
If _Contacts.Address1 IsNot Nothing Then
.BusinessAddress = _Contacts.Address1.FullAddress
.BusinessAddressCity = _Contacts.Address1.City
.BusinessAddressCountry = _Contacts.Address1.Country.Name
.BusinessAddressPostalCode = _Contacts.Address1.ZipPostal
.BusinessAddressState = _Contacts.Address1.StateProvince
.BusinessAddressStreet = _Contacts.Address1.Street
End If
If _Contacts.Customers IsNot Nothing Then
.Companies = _Contacts.Customers.FullName
.CompanyName = _Contacts.Customers.Name
End If
End With
_ContactItem.User1 = _Contacts.Oid.ToString
_ContactItem.Save()
_ContactItem.Move(_ContactFolder)
If File.Exists(_FileName) Then File.Delete(_FileName)
_Contacts.ContactItemFolderEntryID_Outlook = _ContactFolder.EntryID
End If
Next
_NeedCommitChanges = True
Case eSyscType.eNormalSysnc
Select Case _Contacts_SysncOutlook.OverWriteDataType
Case eOverWriteDataType.OverWriteOutlookData
For Each _Contacts As Contacts In View.SelectedObjects
_WaitFormClass.DoWork
Dim _FileName As String = Path.GetTempPath + _Contacts.Oid.ToString + ".jpg"
Dim _ContactFolder As Outlook.MAPIFolder = _OutlookNameSpace.GetFolderFromID(_Contacts.ContactItemFolderEntryID_Outlook)
Dim _ContactItem_Collection As Outlook.Items = _ContactFolder.Items
Dim _Filter As String = "[User1] = '" + _Contacts.Oid.ToString + "'"
Dim _ContactItem As Outlook.ContactItem = _ContactItem_Collection.Find(_Filter)
If _ContactItem IsNot Nothing Then
_ContactItem.FirstName = _Contacts.FirstName
_ContactItem.LastName = _Contacts.LastName
_ContactItem.Email1Address = _Contacts.Email
_ContactItem.Birthday = _Contacts.Birthday
_ContactItem.JobTitle = _Contacts.Position
_ContactItem.BusinessTelephoneNumber = _Contacts.BusinessTelephoneNumber
_ContactItem.BusinessFaxNumber = _Contacts.BusinessFaxNumber
_ContactItem.HomeFaxNumber = _Contacts.HomeFaxNumber
_ContactItem.MobileTelephoneNumber = _Contacts.MobileTelephoneNumber
If _Contacts.Photo IsNot Nothing Then
'_Contacts.Photo.Save(_FileName)
'_ContactItem.AddPicture(_FileName)
End If
If _Contacts.Address1 IsNot Nothing Then
_ContactItem.BusinessAddress = _Contacts.Address1.FullAddress
_ContactItem.BusinessAddressCity = _Contacts.Address1.City
_ContactItem.BusinessAddressCountry = _Contacts.Address1.Country.Name
_ContactItem.BusinessAddressPostalCode = _Contacts.Address1.ZipPostal
_ContactItem.BusinessAddressState = _Contacts.Address1.StateProvince
_ContactItem.BusinessAddressStreet = _Contacts.Address1.Street
End If
If _Contacts.Customers IsNot Nothing Then
_ContactItem.Companies = _Contacts.Customers.FullName
_ContactItem.CompanyName = _Contacts.Customers.Name
End If
If File.Exists(_FileName) Then File.Delete(_FileName)
End If
_ContactItem.Save()
Next
Case eOverWriteDataType.OverWriteNuvolarData
For Each _Contacts As Contacts In View.SelectedObjects
_WaitFormClass.DoWork
Dim _ContactFolder As Outlook.MAPIFolder = _OutlookNameSpace.GetFolderFromID(_Contacts.ContactItemFolderEntryID_Outlook)
Dim _ContactItem_Collection As Outlook.Items = _ContactFolder.Items
Dim _Filter As String = "[User1] = '" + _Contacts.Oid.ToString + "'"
Dim _ContactItem As Outlook.ContactItem = _ContactItem_Collection.Find(_Filter)
If _ContactItem IsNot Nothing Then
Dim _FileName As String = Path.GetTempPath + _Contacts.Oid.ToString + ".jpg"
_Contacts.FirstName = _ContactItem.FirstName
_Contacts.LastName = _ContactItem.LastName
_Contacts.Email = _ContactItem.Email1Address
_Contacts.Birthday = _ContactItem.Birthday
_Contacts.Position = _ContactItem.JobTitle
_Contacts.BusinessTelephoneNumber = _ContactItem.BusinessTelephoneNumber
_Contacts.BusinessFaxNumber = _ContactItem.BusinessFaxNumber
_Contacts.HomeFaxNumber = _ContactItem.HomeFaxNumber
_Contacts.MobileTelephoneNumber = _ContactItem.MobileTelephoneNumber
Dim _Address As New DevExpress.Persistent.BaseImpl.Address(_ocur.Session)
_Address.City = _ContactItem.BusinessAddressCity
Dim _Country As New DevExpress.Persistent.BaseImpl.Country(_ocur.Session)
_Country.Name = _ContactItem.BusinessAddressCountry
_Address.Country = _Country
_Address.ZipPostal = _ContactItem.BusinessAddressPostalCode
_Address.StateProvince = _ContactItem.BusinessAddressState
_Address.Street = _ContactItem.BusinessAddressStreet
_Contacts.Address1 = _Address
If Not String.IsNullOrEmpty(_ContactItem.Companies) Then
Dim _Customers As Customers = _ocur.FindObject(Of Customers)(CriteriaOperator.Parse("FullName=?", _ContactItem.Companies))
If _Customers IsNot Nothing Then
_Contacts.Customers = _ocur.GetObject(_Customers)
End If
End If
End If
Next
_NeedCommitChanges = True
End Select
End Select
If _NeedCommitChanges Then _ocur.CommitChanges()
Catch ex As System.Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
Finally
_Waitformclass.FinalWork
Frame.GetController(Of DevExpress.ExpressApp.Validation.PersistenceValidationController)().Active.SetItemValue("", True)
End Try
End Sub
Private Sub aContacts_SysncFromOutlook_CustomizePopupWindowParams(sender As Object, e As DevExpress.ExpressApp.Actions.CustomizePopupWindowParamsEventArgs) Handles aContacts_SysncFromOutlook.CustomizePopupWindowParams
Try
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _onew_Delete As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _Contacts_OutlookFolderContact_Collection As New XPCollection(Of Contacts_OutlookFolderContact)(_onew_Delete.Session)
If _Contacts_OutlookFolderContact_Collection.Count > 0 Then
_onew_Delete.Delete(_Contacts_OutlookFolderContact_Collection)
End If
_onew_Delete.CommitChanges()
Dim _Contacts_SysncOutlook As Contacts_SysncOutlook = _onew.CreateObject(Of Contacts_SysncOutlook)()
_Contacts_SysncOutlook.IsFromOutlook = True
_Contacts_SysncOutlook.SyscType = eSyscType.eFirstSync
e.View = Application.CreateDetailView(_onew, "Contacts_SysncOutlook_DetailView", True, _Contacts_SysncOutlook)
Catch ex As System.Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
End Try
End Sub
Private Sub aContacts_SysncFromOutlook_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.PopupWindowShowActionExecuteEventArgs) Handles aContacts_SysncFromOutlook.Execute
Try
Frame.GetController(Of DevExpress.ExpressApp.Validation.PersistenceValidationController)().Active.SetItemValue("", False)
Dim _ocur As Xpo.XPObjectSpace = View.ObjectSpace
Dim _NeedCommitChanges As Boolean = False
Dim _Contacts_SysncOutlook As Contacts_SysncOutlook = TryCast(e.PopupWindow.View.SelectedObjects(0), Contacts_SysncOutlook)
Dim _OutlookApp As New Outlook.Application()
Dim _OutlookNameSpace As Outlook.NameSpace = _OutlookApp.GetNamespace("MAPI")
_OutlookNameSpace.Logon(, , False, True)
Dim _ContactFolder As Outlook.MAPIFolder = _OutlookNameSpace.GetFolderFromID(_Contacts_SysncOutlook.Contacts_OutlookFolderContact.EntryID)
Dim _ContactItem_Collection As Outlook.Items = _ContactFolder.Items
_WaitFormClass.InitWork(0, 1, _ContactItem_Collection.Count)
Select Case _Contacts_SysncOutlook.OverWriteDataType
Case eOverWriteDataType.OverWriteOutlookData
For Each _ContactItem As Outlook.ContactItem In _ContactItem_Collection
_WaitFormClass.DoWork
Dim _Contacts As Contacts = _ocur.FindObject(Of Contacts)(CriteriaOperator.Parse("Oid=?", _ContactItem.User1))
If _Contacts Is Nothing Then
_ContactItem.Delete()
Else
Dim _FileName As String = String.Format("{0}{1}.jpg", Path.GetTempPath, _Contacts.Oid)
_ContactItem.FirstName = _Contacts.FirstName
_ContactItem.LastName = _Contacts.LastName
_ContactItem.Email1Address = _Contacts.Email
_ContactItem.Birthday = _Contacts.Birthday
_ContactItem.JobTitle = _Contacts.Position
_ContactItem.BusinessTelephoneNumber = _Contacts.BusinessTelephoneNumber
_ContactItem.BusinessFaxNumber = _Contacts.BusinessFaxNumber
_ContactItem.HomeFaxNumber = _Contacts.HomeFaxNumber
_ContactItem.MobileTelephoneNumber = _Contacts.MobileTelephoneNumber
If _Contacts.Photo IsNot Nothing Then
'_Contacts.Photo.Save(_FileName)
'_Contacts.ph()
_ContactItem.AddPicture(_FileName)
End If
If _Contacts.Address1 IsNot Nothing Then
_ContactItem.BusinessAddress = _Contacts.Address1.FullAddress
_ContactItem.BusinessAddressCity = _Contacts.Address1.City
_ContactItem.BusinessAddressCountry = _Contacts.Address1.Country.Name
_ContactItem.BusinessAddressPostalCode = _Contacts.Address1.ZipPostal
_ContactItem.BusinessAddressState = _Contacts.Address1.StateProvince
_ContactItem.BusinessAddressStreet = _Contacts.Address1.Street
End If
If _Contacts.Customers IsNot Nothing Then
_ContactItem.Companies = _Contacts.Customers.FullName
_ContactItem.CompanyName = _Contacts.Customers.Name
End If
If File.Exists(_FileName) Then File.Delete(_FileName)
_ContactItem.Save()
End If
Next
Case eOverWriteDataType.OverWriteNuvolarData
For Each _ContactItem As Outlook.ContactItem In _ContactItem_Collection
_WaitFormClass.DoWork
Dim _Contacts As Contacts = _ocur.FindObject(Of Contacts)(CriteriaOperator.Parse("Oid=?", _ContactItem.User1))
If _Contacts Is Nothing Then _Contacts = New Contacts(_ocur.Session)
Dim _FileName As String = Path.GetTempPath + _Contacts.Oid.ToString + ".jpg"
With (_Contacts)
.FirstName = _ContactItem.FirstName
.LastName = _ContactItem.LastName
.Email = _ContactItem.Email1Address
.Birthday = _ContactItem.Birthday
.Position = _ContactItem.JobTitle
.BusinessTelephoneNumber = _ContactItem.BusinessTelephoneNumber
.BusinessFaxNumber = _ContactItem.BusinessFaxNumber
.HomeFaxNumber = _ContactItem.HomeFaxNumber
.MobileTelephoneNumber = _ContactItem.MobileTelephoneNumber
Dim _Address As New DevExpress.Persistent.BaseImpl.Address(_ocur.Session)
_Address.City = _ContactItem.BusinessAddressCity
Dim _Country As New DevExpress.Persistent.BaseImpl.Country(_ocur.Session)
_Country.Name = _ContactItem.BusinessAddressCountry
_Address.Country = _Country
_Address.ZipPostal = _ContactItem.BusinessAddressPostalCode
_Address.StateProvince = _ContactItem.BusinessAddressState
_Address.Street = _ContactItem.BusinessAddressStreet
.Address1 = _Address
If Not String.IsNullOrEmpty(_ContactItem.Companies) Then
Dim _Customers As Customers = _ocur.FindObject(Of Customers)(CriteriaOperator.Parse("FullName=?", _ContactItem.Companies))
If _Customers IsNot Nothing Then
.Customers = _ocur.GetObject(_Customers)
End If
End If
.IsOutlookSync = True
.ContactItemFolderEntryID_Outlook = _Contacts_SysncOutlook.Contacts_OutlookFolderContact.EntryID
End With
_ocur.CommitChanges()
_ContactItem.User1 = _Contacts.Oid.ToString
_ContactItem.Save()
Next
End Select
If _NeedCommitChanges Then _ocur.CommitChanges()
Catch ex As System.Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
Finally
_Waitformclass.FinalWork
Frame.GetController(Of DevExpress.ExpressApp.Validation.PersistenceValidationController)().Active.SetItemValue("", True)
End Try
End Sub
End Class