378 lines
16 KiB
C#
378 lines
16 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using GZTW.AyaNova.BLL;
|
|
using Outlook = Microsoft.Office.Interop.Outlook;
|
|
using Office = Microsoft.Office.Core;
|
|
using System.Windows.Forms;
|
|
using System.Collections;
|
|
|
|
|
|
namespace AyaNovaOL
|
|
{
|
|
class ImportContactsFromAyaNova
|
|
{
|
|
Outlook.MAPIFolder mFldr;
|
|
RootObjectTypes mObjectType;
|
|
List<Guid> mIDList;
|
|
VendorTypes mVendorType;
|
|
public bool DoImport(bool bSelectedOnly, Outlook.MAPIFolder fldr, RootObjectTypes objectType, VendorTypes selectedVendorType, List<Guid> IDList)
|
|
{
|
|
Cursor.Current = Cursors.WaitCursor;
|
|
mFldr = fldr;
|
|
mObjectType = objectType;
|
|
mIDList = IDList;
|
|
mVendorType = selectedVendorType;
|
|
|
|
//build a list if it's all items
|
|
if (!bSelectedOnly)
|
|
BuildIDListForAll();
|
|
|
|
// Util.d("Importing / syncing " + mIDList.Count.ToString() + " contacts...");
|
|
|
|
foreach (Guid id in mIDList)
|
|
try
|
|
{
|
|
ImportContactItem(id);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("Error importing contact item from AyaNova: \r\n" + ex.Message + "\r\n" + ex.StackTrace);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
private Outlook.ContactItem GetContactItem(string sName)
|
|
{
|
|
Outlook.ContactItem ci = null;
|
|
//search for it first
|
|
ci = (Outlook.ContactItem)mFldr.Items.Find(String.Format("[CompanyName]='{0}'", sName.Replace("'","''")));
|
|
if (ci == null)
|
|
{
|
|
// MessageBox.Show("Not found creating new contact item: " + sName);
|
|
ci = (Outlook.ContactItem)mFldr.Items.Add(Outlook.OlItemType.olContactItem);
|
|
}
|
|
//else
|
|
// MessageBox.Show("Found matching contact item " + sName);
|
|
return ci;
|
|
}
|
|
|
|
private void ImportContactItem(Guid id)
|
|
{
|
|
try
|
|
{
|
|
switch (mObjectType)
|
|
{
|
|
case RootObjectTypes.Client:
|
|
{
|
|
Client c = Client.GetItemNoMRU(id);
|
|
Outlook.ContactItem ci = GetContactItem(c.Name);
|
|
ci.CompanyName = c.Name;
|
|
ci.Email1Address = c.Email;
|
|
ci.Body = c.Notes;
|
|
ci.FullName = c.Contact;
|
|
ci.WebPage = c.WebAddress;
|
|
ImportAddress(c.MailToAddress, AddressTypes.Postal, ci);
|
|
ImportAddress(c.GoToAddress, AddressTypes.Physical, ci);
|
|
ImportPhoneNumber(c.Phone1, 1, ci);
|
|
ImportPhoneNumber(c.Phone2, 2, ci);
|
|
ImportPhoneNumber(c.Phone3, 3, ci);
|
|
ImportPhoneNumber(c.Phone4, 4, ci);
|
|
ImportPhoneNumber(c.Phone5, 5, ci);
|
|
|
|
ci.Save();
|
|
}
|
|
break;
|
|
|
|
case RootObjectTypes.HeadOffice:
|
|
{
|
|
HeadOffice c = HeadOffice.GetItemNoMRU(id);
|
|
Outlook.ContactItem ci = GetContactItem(c.Name);
|
|
ci.CompanyName = c.Name;
|
|
ci.Email1Address = c.Email;
|
|
ci.Body = c.Notes;
|
|
ci.FullName = c.Contact;
|
|
ci.WebPage = c.WebAddress;
|
|
ImportAddress(c.MailToAddress, AddressTypes.Postal, ci);
|
|
ImportAddress(c.GoToAddress, AddressTypes.Physical, ci);
|
|
ImportPhoneNumber(c.Phone1, 1, ci);
|
|
ImportPhoneNumber(c.Phone2, 2, ci);
|
|
ImportPhoneNumber(c.Phone3, 3, ci);
|
|
ImportPhoneNumber(c.Phone4, 4, ci);
|
|
ImportPhoneNumber(c.Phone5, 5, ci);
|
|
ci.Save();
|
|
|
|
|
|
}
|
|
break;
|
|
|
|
case RootObjectTypes.Vendor:
|
|
{
|
|
Vendor c = Vendor.GetItemNoMRU(id);
|
|
Outlook.ContactItem ci = GetContactItem(c.Name);
|
|
ci.CompanyName = c.Name;
|
|
ci.Email1Address = c.Email;
|
|
ci.Body = c.Notes;
|
|
ci.FullName = c.Contact;
|
|
ci.WebPage = c.WebAddress;
|
|
ImportAddress(c.MailToAddress, AddressTypes.Postal, ci);
|
|
ImportAddress(c.GoToAddress, AddressTypes.Physical, ci);
|
|
ImportPhoneNumber(c.Phone1, 1, ci);
|
|
ImportPhoneNumber(c.Phone2, 2, ci);
|
|
ImportPhoneNumber(c.Phone3, 3, ci);
|
|
ImportPhoneNumber(c.Phone4, 4, ci);
|
|
ImportPhoneNumber(c.Phone5, 5, ci);
|
|
ci.Save();
|
|
}
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
catch { };
|
|
}
|
|
|
|
|
|
private void ImportAddress(GZTW.AyaNova.BLL.Address adr, AddressTypes adrType, Outlook.ContactItem ci)
|
|
{
|
|
#region Address setting
|
|
AYOLAddressType OLAddressTypeToUse = AYOLAddressType.Unused;
|
|
if (adrType == AddressTypes.Physical)
|
|
OLAddressTypeToUse = (AYOLAddressType)AyaNovaOL.Properties.Settings.Default.PhysicalAddressEquals;
|
|
else
|
|
OLAddressTypeToUse = (AYOLAddressType)AyaNovaOL.Properties.Settings.Default.PostalAddressEquals;
|
|
|
|
switch (OLAddressTypeToUse)
|
|
{
|
|
case AYOLAddressType.Business:
|
|
{
|
|
ci.BusinessAddressStreet = adr.DeliveryAddress;
|
|
ci.BusinessAddressCity = adr.City;
|
|
ci.BusinessAddressState = adr.StateProv;
|
|
ci.BusinessAddressCountry = adr.Country;
|
|
ci.BusinessAddressPostalCode = adr.Postal;
|
|
if (adrType == AddressTypes.Postal)
|
|
{
|
|
ci.BusinessAddressPostOfficeBox = adr.DeliveryAddress;
|
|
ci.SelectedMailingAddress = Microsoft.Office.Interop.Outlook.OlMailingAddress.olBusiness;
|
|
}
|
|
return;
|
|
}
|
|
case AYOLAddressType.Home:
|
|
{
|
|
ci.HomeAddressStreet = adr.DeliveryAddress;
|
|
ci.HomeAddressCity = adr.City;
|
|
ci.HomeAddressState = adr.StateProv;
|
|
ci.HomeAddressCountry = adr.Country;
|
|
ci.HomeAddressPostalCode = adr.Postal;
|
|
if (adrType == AddressTypes.Postal)
|
|
{
|
|
ci.HomeAddressPostOfficeBox = adr.DeliveryAddress;
|
|
ci.SelectedMailingAddress = Microsoft.Office.Interop.Outlook.OlMailingAddress.olHome;
|
|
}
|
|
return;
|
|
}
|
|
case AYOLAddressType.Other:
|
|
{
|
|
ci.OtherAddressStreet = adr.DeliveryAddress;
|
|
ci.OtherAddressCity = adr.City;
|
|
ci.OtherAddressState = adr.StateProv;
|
|
ci.OtherAddressCountry = adr.Country;
|
|
ci.OtherAddressPostalCode = adr.Postal;
|
|
if (adrType == AddressTypes.Postal)
|
|
{
|
|
ci.OtherAddressPostOfficeBox = adr.DeliveryAddress;
|
|
ci.SelectedMailingAddress = Microsoft.Office.Interop.Outlook.OlMailingAddress.olOther;
|
|
}
|
|
return;
|
|
}
|
|
}//switch
|
|
|
|
#endregion
|
|
}
|
|
|
|
|
|
private void ImportPhoneNumber(string sPhone, int nSlot, Outlook.ContactItem ci)
|
|
{
|
|
#region Determine where to put it
|
|
|
|
AYOLPhoneNumberType ptype = AYOLPhoneNumberType.BusinessTelephoneNumber;
|
|
switch (mObjectType)
|
|
{
|
|
case RootObjectTypes.Client:
|
|
switch (nSlot)
|
|
{
|
|
case 1:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.ClientPhone1;
|
|
break;
|
|
case 2:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.ClientPhone2;
|
|
break;
|
|
case 3:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.ClientPhone3;
|
|
break;
|
|
case 4:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.ClientPhone4;
|
|
break;
|
|
case 5:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.ClientPhone5;
|
|
break;
|
|
}
|
|
break;
|
|
case RootObjectTypes.HeadOffice:
|
|
switch (nSlot)
|
|
{
|
|
case 1:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.HeadOfficePhone1;
|
|
break;
|
|
case 2:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.HeadOfficePhone2;
|
|
break;
|
|
case 3:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.HeadOfficePhone3;
|
|
break;
|
|
case 4:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.HeadOfficePhone4;
|
|
break;
|
|
case 5:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.HeadOfficePhone5;
|
|
break;
|
|
}
|
|
break;
|
|
case RootObjectTypes.Vendor:
|
|
switch (nSlot)
|
|
{
|
|
case 1:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.VendorPhone1;
|
|
break;
|
|
case 2:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.VendorPhone2;
|
|
break;
|
|
case 3:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.VendorPhone3;
|
|
break;
|
|
case 4:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.VendorPhone4;
|
|
break;
|
|
case 5:
|
|
ptype = (AYOLPhoneNumberType)AyaNovaOL.Properties.Settings.Default.VendorPhone5;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
|
|
#endregion determine where to put it
|
|
|
|
#region Import
|
|
|
|
switch (ptype)
|
|
{
|
|
case AYOLPhoneNumberType.Unused:
|
|
return;
|
|
|
|
case AYOLPhoneNumberType.AssistantTelephoneNumber:
|
|
ci.AssistantTelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.Business2TelephoneNumber:
|
|
ci.Business2TelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.BusinessFaxNumber:
|
|
ci.BusinessFaxNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.BusinessTelephoneNumber:
|
|
ci.BusinessTelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.CallbackTelephoneNumber:
|
|
ci.CallbackTelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.CarTelephoneNumber:
|
|
ci.CarTelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.CompanyMainTelephoneNumber:
|
|
ci.CompanyMainTelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.Home2TelephoneNumber:
|
|
ci.Home2TelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.HomeFaxNumber:
|
|
ci.HomeFaxNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.HomeTelephoneNumber:
|
|
ci.HomeTelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.ISDNNumber:
|
|
ci.ISDNNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.MobileTelephoneNumber:
|
|
ci.MobileTelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.OtherFaxNumber:
|
|
ci.OtherFaxNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.OtherTelephoneNumber:
|
|
ci.OtherTelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.PagerNumber:
|
|
ci.PagerNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.PrimaryTelephoneNumber:
|
|
ci.PrimaryTelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.RadioTelephoneNumber:
|
|
ci.RadioTelephoneNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.TelexNumber:
|
|
ci.TelexNumber=sPhone;break;
|
|
|
|
case AYOLPhoneNumberType.TTYTDDTelephoneNumber:
|
|
ci.TTYTDDTelephoneNumber=sPhone;break;
|
|
|
|
}
|
|
|
|
#endregion getphone number
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Build id list for object type selected
|
|
/// </summary>
|
|
private void BuildIDListForAll()
|
|
{
|
|
if(mIDList==null) mIDList=new List<Guid>();
|
|
mIDList.Clear();
|
|
|
|
switch (mObjectType)
|
|
{
|
|
case RootObjectTypes.Client:
|
|
{
|
|
ClientPickList cpl = ClientPickList.GetList(true);
|
|
foreach (ClientPickList.ClientPickListInfo i in cpl)
|
|
mIDList.Add(i.ID);
|
|
}
|
|
break;
|
|
|
|
case RootObjectTypes.HeadOffice:
|
|
{
|
|
GenericNVList l = GenericNVList.GetList("HEADOFFICE", "ID", "NAME", true, false, true);
|
|
foreach (DictionaryEntry d in l.BindableList)
|
|
mIDList.Add(new Guid(d.Key.ToString()));
|
|
}
|
|
break;
|
|
|
|
case RootObjectTypes.Vendor:
|
|
{
|
|
VendorPickList cpl = VendorPickList.GetList(mVendorType);
|
|
foreach (VendorPickList.VendorPickListInfo i in cpl)
|
|
mIDList.Add(i.ID);
|
|
}
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}//end class
|
|
}//end ns
|