ProTech's home page

ProTech-Online.com

This is a C# code example of a Outlook 2010 Add-in Form Region.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Office = Microsoft.Office.Core;
using Outlook = Microsoft.Office.Interop.Outlook;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Drawing;
using System.Drawing.Drawing2D;
//using System.Collections.Generic;
using System.Diagnostics;
namespace ChadSytelineOutlookAddIn
{
    partial class cSyteline
    {
        #region Form Region Factory
        private static SqlConnection testsite_con = new SqlConnection(ChadSytelineOutlookAddIn.Properties.Settings.Default.testsiteConnectionString);
        private static SqlConnection testsite3_con = new SqlConnection(ChadSytelineOutlookAddIn.Properties.Settings.Default.testsite3ConnectionString);
        private static SqlConnection testsite2_con = new SqlConnection(ChadSytelineOutlookAddIn.Properties.Settings.Default.testsite2ConnectionString);
        private static SqlCommand testsite_cmd = new SqlCommand("Chad._chad_outlook_addin_find_contacts", testsite_con);
        private static SqlCommand testsite3_cmd = new SqlCommand("Chad._chad_outlook_addin_find_contacts", testsite3_con);
        private static SqlCommand testsite2_cmd = new SqlCommand("Chad._chad_outlook_addin_find_contacts", testsite2_con);
        private static SqlCommand testsite_cmd2 = new SqlCommand("Chad._chad_outlook_addin_find_byname_contacts", testsite_con);
        private static SqlCommand testsite3_cmd2 = new SqlCommand("Chad._chad_outlook_addin_find_byname_contacts", testsite3_con);
        private static SqlCommand testsite2_cmd2 = new SqlCommand("Chad._chad_outlook_addin_find_byname_contacts", testsite2_con);
        private static SqlCommand testsite_cmd3 = new SqlCommand("Chad._chad_outlook_addin_import_email", testsite_con);
        private static SqlCommand testsite3_cmd3 = new SqlCommand("Chad._chad_outlook_addin_import_email", testsite3_con);
        private static SqlCommand testsite2_cmd3 = new SqlCommand("Chad._chad_outlook_addin_import_email", testsite2_con);
        private static SqlCommand testsite_cmd4 = new SqlCommand("Chad._chad_outlook_addin_import_email_doctrak", testsite_con);
        private static SqlCommand testsite3_cmd4 = new SqlCommand("Chad._chad_outlook_addin_import_email_doctrak", testsite3_con);
        private static SqlCommand testsite2_cmd4 = new SqlCommand("Chad._chad_outlook_addin_import_email_doctrak", testsite2_con);
        private string SenderEmailAddress;
        private static Boolean EmailFromAddress;
        [Microsoft.Office.Tools.Outlook.FormRegionMessageClass(Microsoft.Office.Tools.Outlook.FormRegionMessageClassAttribute.Note)]
        [Microsoft.Office.Tools.Outlook.FormRegionName("ChadSytelineOutlookAddIn.cSyteline")]
        public partial class cSytelineFactory
        {
            // Occurs before the form region is initialized.
            // To prevent the form region from appearing, set e.Cancel to true.
            // Use e.OutlookItem to get a reference to the current Outlook item.
            private void cSytelineFactory_FormRegionInitializing(object sender, Microsoft.Office.Tools.Outlook.FormRegionInitializingEventArgs e)
            {
                Outlook.MailItem CurrentMailItem = (Outlook.MailItem)e.OutlookItem;
                if (CurrentMailItem != null && !CurrentMailItem.Parent.FolderPath.Contains("Outbox") && !CurrentMailItem.Parent.FolderPath.Contains("Drafts"))
                {
                    if (CurrentMailItem.Parent.FolderPath.Contains("Inbox"))
                        EmailFromAddress = true;
                    else
                        EmailFromAddress = false;
                    if (testsite_cmd.Parameters.Count == 0)
                    {
                        testsite_cmd.CommandType = CommandType.StoredProcedure;
                        testsite_cmd.Parameters.Add("@EmailAddress", SqlDbType.NVarChar, 60);
                        testsite_cmd.Parameters.Add("@SC_Only", SqlDbType.Int);
                        testsite3_cmd.CommandType = CommandType.StoredProcedure;
                        testsite3_cmd.Parameters.Add("@EmailAddress", SqlDbType.NVarChar, 60);
                        testsite3_cmd.Parameters.Add("@SC_Only", SqlDbType.Int);
                        testsite2_cmd.CommandType = CommandType.StoredProcedure;
                        testsite2_cmd.Parameters.Add("@EmailAddress", SqlDbType.NVarChar, 60);
                        testsite2_cmd.Parameters.Add("@SC_Only", SqlDbType.Int);
                        testsite_cmd2.CommandType = CommandType.StoredProcedure;
                        testsite_cmd2.Parameters.Add("@SearchText", SqlDbType.NVarChar, 60);
                        testsite_cmd2.Parameters.Add("@SC_Only", SqlDbType.Int);
                        testsite3_cmd2.CommandType = CommandType.StoredProcedure;
                        testsite3_cmd2.Parameters.Add("@SearchText", SqlDbType.NVarChar, 60);
                        testsite3_cmd2.Parameters.Add("@SC_Only", SqlDbType.Int);
                        testsite2_cmd2.CommandType = CommandType.StoredProcedure;
                        testsite2_cmd2.Parameters.Add("@SearchText", SqlDbType.NVarChar, 60);
                        testsite2_cmd2.Parameters.Add("@SC_Only", SqlDbType.Int);
                        testsite_cmd3.CommandType = CommandType.StoredProcedure;
                        testsite_cmd3.Parameters.Add("@email_module", SqlDbType.NVarChar, 60);
                        testsite_cmd3.Parameters.Add("@SL_CUSTNUM", SqlDbType.NVarChar, 7);
                        testsite_cmd3.Parameters.Add("@SL_SEQNUM", SqlDbType.Int);
                        testsite_cmd3.Parameters.Add("@SL_CONTACT_DATE", SqlDbType.DateTime);
                        testsite_cmd3.Parameters.Add("@SL_TOPIC", SqlDbType.NVarChar, 15);
                        testsite_cmd3.Parameters.Add("@SL_TYPE", SqlDbType.NChar, 1);
                        testsite_cmd3.Parameters.Add("@SL_EMAIL_STATUS", SqlDbType.NChar, 1);
                        testsite_cmd3.Parameters.Add("@SL_INCOMING", SqlDbType.TinyInt);
                        testsite_cmd3.Parameters.Add("@Body", SqlDbType.NVarChar);
                        testsite_cmd3.Parameters.Add("@SL_ENTERED_BY", SqlDbType.NVarChar, 60);
                        testsite_cmd3.Parameters.Add("@Subject", SqlDbType.NVarChar, 40);
                        testsite_cmd3.Parameters.Add("@NewInteraction_id", SqlDbType.NVarChar, 40);
                        testsite_cmd3.Parameters["@NewInteraction_id"].Direction = ParameterDirection.Output;
                        testsite_cmd3.Parameters.Add("@NewInteractionRowPointer", SqlDbType.NVarChar, 40);
                        testsite_cmd3.Parameters["@NewInteractionRowPointer"].Direction = ParameterDirection.Output;
                        testsite3_cmd3.CommandType = CommandType.StoredProcedure;
                        testsite3_cmd3.Parameters.Add("@email_module", SqlDbType.NVarChar, 60);
                        testsite3_cmd3.Parameters.Add("@SL_CUSTNUM", SqlDbType.NVarChar, 7);
                        testsite3_cmd3.Parameters.Add("@SL_SEQNUM", SqlDbType.Int);
                        testsite3_cmd3.Parameters.Add("@SL_CONTACT_DATE", SqlDbType.DateTime);
                        testsite3_cmd3.Parameters.Add("@SL_TOPIC", SqlDbType.NVarChar, 15);
                        testsite3_cmd3.Parameters.Add("@SL_TYPE", SqlDbType.NChar, 1);
                        testsite3_cmd3.Parameters.Add("@SL_EMAIL_STATUS", SqlDbType.NChar, 1);
                        testsite3_cmd3.Parameters.Add("@SL_INCOMING", SqlDbType.TinyInt);
                        testsite3_cmd3.Parameters.Add("@Body", SqlDbType.NVarChar);
                        testsite3_cmd3.Parameters.Add("@SL_ENTERED_BY", SqlDbType.NVarChar, 60);
                        testsite3_cmd3.Parameters.Add("@Subject", SqlDbType.NVarChar, 40);
                        testsite3_cmd3.Parameters.Add("@NewInteraction_id", SqlDbType.NVarChar, 40);
                        testsite3_cmd3.Parameters["@NewInteraction_id"].Direction = ParameterDirection.Output;
                        testsite3_cmd3.Parameters.Add("@NewInteractionRowPointer", SqlDbType.NVarChar, 40);
                        testsite3_cmd3.Parameters["@NewInteractionRowPointer"].Direction = ParameterDirection.Output;
                        testsite2_cmd3.CommandType = CommandType.StoredProcedure;
                        testsite2_cmd3.Parameters.Add("@email_module", SqlDbType.NVarChar, 60);
                        testsite2_cmd3.Parameters.Add("@SL_CUSTNUM", SqlDbType.NVarChar, 7);
                        testsite2_cmd3.Parameters.Add("@SL_SEQNUM", SqlDbType.Int);
                        testsite2_cmd3.Parameters.Add("@SL_CONTACT_DATE", SqlDbType.DateTime);
                        testsite2_cmd3.Parameters.Add("@SL_TOPIC", SqlDbType.NVarChar, 15);
                        testsite2_cmd3.Parameters.Add("@SL_TYPE", SqlDbType.NChar, 1);
                        testsite2_cmd3.Parameters.Add("@SL_EMAIL_STATUS", SqlDbType.NChar, 1);
                        testsite2_cmd3.Parameters.Add("@SL_INCOMING", SqlDbType.TinyInt);
                        testsite2_cmd3.Parameters.Add("@Body", SqlDbType.NVarChar);
                        testsite2_cmd3.Parameters.Add("@SL_ENTERED_BY", SqlDbType.NVarChar, 60);
                        testsite2_cmd3.Parameters.Add("@Subject", SqlDbType.NVarChar, 40);
                        testsite2_cmd3.Parameters.Add("@NewInteraction_id", SqlDbType.NVarChar, 40);
                        testsite2_cmd3.Parameters["@NewInteraction_id"].Direction = ParameterDirection.Output;
                        testsite2_cmd3.Parameters.Add("@NewInteractionRowPointer", SqlDbType.NVarChar, 40);
                        testsite2_cmd3.Parameters["@NewInteractionRowPointer"].Direction = ParameterDirection.Output;
                        testsite_cmd4.CommandType = CommandType.StoredProcedure;
                        testsite_cmd4.Parameters.Add("@MOD", SqlDbType.NVarChar, 20);
                        testsite_cmd4.Parameters.Add("@TYPE", SqlDbType.NChar, 1);
                        testsite_cmd4.Parameters.Add("@FILENAME", SqlDbType.NVarChar, 200);
                        testsite_cmd4.Parameters.Add("@DESCRIPTION", SqlDbType.NVarChar, 40);
                        testsite_cmd4.Parameters.Add("@VALUE1", SqlDbType.NVarChar, 40);
                        testsite_cmd4.Parameters.Add("@VALUE2", SqlDbType.NVarChar, 40);
                        testsite3_cmd4.CommandType = CommandType.StoredProcedure;
                        testsite3_cmd4.Parameters.Add("@MOD", SqlDbType.NVarChar, 20);
                        testsite3_cmd4.Parameters.Add("@TYPE", SqlDbType.NChar, 1);
                        testsite3_cmd4.Parameters.Add("@FILENAME", SqlDbType.NVarChar, 200);
                        testsite3_cmd4.Parameters.Add("@DESCRIPTION", SqlDbType.NVarChar, 40);
                        testsite3_cmd4.Parameters.Add("@VALUE1", SqlDbType.NVarChar, 40);
                        testsite3_cmd4.Parameters.Add("@VALUE2", SqlDbType.NVarChar, 40);
                        testsite2_cmd4.CommandType = CommandType.StoredProcedure;
                        testsite2_cmd4.Parameters.Add("@MOD", SqlDbType.NVarChar, 20);
                        testsite2_cmd4.Parameters.Add("@TYPE", SqlDbType.NChar, 1);
                        testsite2_cmd4.Parameters.Add("@FILENAME", SqlDbType.NVarChar, 200);
                        testsite2_cmd4.Parameters.Add("@DESCRIPTION", SqlDbType.NVarChar, 40);
                        testsite2_cmd4.Parameters.Add("@VALUE1", SqlDbType.NVarChar, 40);
                        testsite2_cmd4.Parameters.Add("@VALUE2", SqlDbType.NVarChar, 40);
                    }
                    return;
                }
                else
                    e.Cancel = true;
            }
        }
        #endregion
        // Occurs before the form region is displayed.
        // Use this.OutlookItem to get a reference to the current Outlook item.
        // Use this.OutlookFormRegion to get a reference to the form region.
        private void cSyteline_FormRegionShowing(object sender, System.EventArgs e)
        {
            if (EmailFromAddress)
                rbFromAddress.Checked = true;
            else
                rbToAddress.Checked = true;
            switch (Globals.ThisAddIn.SytelineSystem)
            {
                case "testsite":
                    rbFromTostestsite.Checked = true;
                    rbFindtestsite.Checked = true;
                    break;
                case "testsite2":
                    rbFromTostestsite2.Checked = true;
                    rbFindtestsite2.Checked = true;
                    break;
                case "testsite3":
                    rbFromTostestsite3.Checked = true;
                    rbFindtestsite3.Checked = true;
                    break;
            }
        }
        // Occurs when the form region is closed.
        // Use this.OutlookItem to get a reference to the current Outlook item.
        // Use this.OutlookFormRegion to get a reference to the form region.
        private void cSyteline_FormRegionClosed(object sender, System.EventArgs e)
        {
        }
        private void FromTosFindtestsite()
        {
            try
            {
                if (Syteline_ds.Tables["Search_Results"].Rows.Count > 0)
                    Syteline_ds.Tables["Search_Results"].Clear();
                // Get the AppSettings section.
                string PR_SMTP_ADDRESS = @"http://schemas.microsoft.com/mapi/proptag/0x39FE001E";
                Outlook.MailItem CurrentMailItem = (Outlook.MailItem)this.OutlookItem;
                if (EmailFromAddress)
                {
                    if (CurrentMailItem.SenderEmailType == "EX")
                    {
                        Outlook.AddressEntry tmp_sender =
                            CurrentMailItem.Sender;
                        if (tmp_sender != null)
                        {
                            //Now we have an AddressEntry representing the Sender
                            if (tmp_sender.AddressEntryUserType ==
                                Outlook.OlAddressEntryUserType.
                                olExchangeUserAddressEntry
                                || tmp_sender.AddressEntryUserType ==
                                Outlook.OlAddressEntryUserType.
                                olExchangeRemoteUserAddressEntry)
                            {
                                //Use the ExchangeUser object PrimarySMTtestsite3ddress
                                Outlook.ExchangeUser exchUser =
                                    tmp_sender.GetExchangeUser();
                                if (exchUser != null)
                                {
                                    SenderEmailAddress = exchUser.PrimarySmtpAddress;
                                }
                            }
                            else
                            {
                                SenderEmailAddress = tmp_sender.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS);
                            }
                        }
                    }
                    else if (CurrentMailItem.SenderEmailAddress != null)
                    {
                        SenderEmailAddress = CurrentMailItem.SenderEmailAddress;
                    }
                    testsite_cmd.Parameters["@EmailAddress"].Value = SenderEmailAddress;
                    testsite_cmd.Parameters["@SC_Only"].Value = cbFromTosSalesContacts.Checked ? 1 : 0;
                    testsite_con.Open();
                    SqlDataReader reader = testsite_cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        Syteline_ds.Tables["Search_Results"].Rows.Add(false
                            , reader[0].ToString()
                            , reader[1].ToString()
                            , reader[2].ToString()
                            , reader[3].ToString()
                            , reader[4].ToString()
                            , reader[5].ToString()
                            , reader[6].ToString()
                            , reader[7].ToString()
                            , reader[8].ToString()
                            , reader[9].ToString()
                            , reader[10].ToString()
                            , reader[11].ToString()
                            , reader[12].ToString()
                            ,"testsite");
                    }
                    reader.Close();
                    testsite_con.Close();
                }
                else
                {
                    Outlook.Recipients recips = CurrentMailItem.Recipients;
                    foreach (Outlook.Recipient recip in recips)
                    {
                        Outlook.PropertyAccessor testsite3 = recip.PropertyAccessor;
                        string smtpAddress = testsite3.GetProperty(PR_SMTP_ADDRESS).ToString();
                        testsite_cmd.Parameters["@EmailAddress"].Value = smtpAddress;
                        testsite_cmd.Parameters["@SC_Only"].Value = cbFromTosSalesContacts.Checked ? 1 : 0;
                        testsite_con.Open();
                        SqlDataReader reader = testsite_cmd.ExecuteReader();
                        while (reader.Read())
                        {
                            Syteline_ds.Tables["Search_Results"].Rows.Add(false
                                , reader[0].ToString()
                                , reader[1].ToString()
                                , reader[2].ToString()
                                , reader[3].ToString()
                                , reader[4].ToString()
                                , reader[5].ToString()
                                , reader[6].ToString()
                                , reader[7].ToString()
                                , reader[8].ToString()
                                , reader[9].ToString()
                                , reader[10].ToString()
                                , reader[11].ToString()
                                , reader[12].ToString()
                                , "testsite");
                        }
                        reader.Close();
                        testsite_con.Close();
                    }
                }
                Syteline_ds.AcceptChanges();
                dgvFromTosResults.AutoResizeColumns();
                dgvFromTosResults.Refresh();
            }
            catch (Exception ex)
            {
                testsite_con.Close();
                MessageBox.Show("Error Occured: " + ex.Message, "Chad Syteline Outlook AddIn");
            }
        }
        private void FromTosFindtestsite3()
        {
            try
            {
                if (Syteline_ds.Tables["Search_Results"].Rows.Count > 0)
                    Syteline_ds.Tables["Search_Results"].Clear();
                // Get the AppSettings section.
                string PR_SMTP_ADDRESS = @"http://schemas.microsoft.com/mapi/proptag/0x39FE001E";
                Outlook.MailItem CurrentMailItem = (Outlook.MailItem)this.OutlookItem;
                if (EmailFromAddress)
                {
                    if (CurrentMailItem.SenderEmailType == "EX")
                    {
                        Outlook.AddressEntry tmp_sender =
                            CurrentMailItem.Sender;
                        if (tmp_sender != null)
                        {
                            //Now we have an AddressEntry representing the Sender
                            if (tmp_sender.AddressEntryUserType ==
                                Outlook.OlAddressEntryUserType.
                                olExchangeUserAddressEntry
                                || tmp_sender.AddressEntryUserType ==
                                Outlook.OlAddressEntryUserType.
                                olExchangeRemoteUserAddressEntry)
                            {
                                //Use the ExchangeUser object PrimarySMTtestsite3ddress
                                Outlook.ExchangeUser exchUser =
                                    tmp_sender.GetExchangeUser();
                                if (exchUser != null)
                                {
                                    SenderEmailAddress = exchUser.PrimarySmtpAddress;
                                }
                            }
                            else
                            {
                                SenderEmailAddress = tmp_sender.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS);
                            }
                        }
                    }
                    else if (CurrentMailItem.SenderEmailAddress != null)
                    {
                        SenderEmailAddress = CurrentMailItem.SenderEmailAddress;
                    }
                    testsite3_cmd.Parameters["@EmailAddress"].Value = SenderEmailAddress;
                    testsite3_cmd.Parameters["@SC_Only"].Value = cbFromTosSalesContacts.Checked ? 1 : 0;
                    testsite3_con.Open();
                    SqlDataReader reader = testsite3_cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        Syteline_ds.Tables["Search_Results"].Rows.Add(false
                            , reader[0].ToString()
                            , reader[1].ToString()
                            , reader[2].ToString()
                            , reader[3].ToString()
                            , reader[4].ToString()
                            , reader[5].ToString()
                            , reader[6].ToString()
                            , reader[7].ToString()
                            , reader[8].ToString()
                            , reader[9].ToString()
                            , reader[10].ToString()
                            , reader[11].ToString()
                            , reader[12].ToString()
                            , "testsite3");
                    }
                    reader.Close();
                    testsite3_con.Close();
                }
                else
                {
                    Outlook.Recipients recips = CurrentMailItem.Recipients;
                    foreach (Outlook.Recipient recip in recips)
                    {
                        Outlook.PropertyAccessor testsite3 = recip.PropertyAccessor;
                        string smtpAddress = testsite3.GetProperty(PR_SMTP_ADDRESS).ToString();
                        testsite3_cmd.Parameters["@EmailAddress"].Value = smtpAddress;
                        testsite3_cmd.Parameters["@SC_Only"].Value = cbFromTosSalesContacts.Checked ? 1 : 0;
                        testsite3_con.Open();
                        SqlDataReader reader = testsite3_cmd.ExecuteReader();
                        while (reader.Read())
                        {
                            Syteline_ds.Tables["Search_Results"].Rows.Add(false
                                , reader[0].ToString()
                                , reader[1].ToString()
                                , reader[2].ToString()
                                , reader[3].ToString()
                                , reader[4].ToString()
                                , reader[5].ToString()
                                , reader[6].ToString()
                                , reader[7].ToString()
                                , reader[8].ToString()
                                , reader[9].ToString()
                                , reader[10].ToString()
                                , reader[11].ToString()
                                , reader[12].ToString()
                                , "testsite3");
                        }
                        reader.Close();
                        testsite3_con.Close();
                    }
                }
                Syteline_ds.AcceptChanges();
                dgvFromTosResults.AutoResizeColumns();
                dgvFromTosResults.Refresh();
            }
            catch (Exception ex)
            {
                testsite3_con.Close();
                MessageBox.Show("Error Occured: " + ex.Message, "Chad Syteline Outlook AddIn");
            }
        }
        private void FromTosFindtestsite2()
        {
            try
            {
                if (Syteline_ds.Tables["Search_Results"].Rows.Count > 0)
                    Syteline_ds.Tables["Search_Results"].Clear();
                // Get the AppSettings section.
                string PR_SMTP_ADDRESS = @"http://schemas.microsoft.com/mapi/proptag/0x39FE001E";
                Outlook.MailItem CurrentMailItem = (Outlook.MailItem)this.OutlookItem;
                if (EmailFromAddress)
                {
                    if (CurrentMailItem.SenderEmailType == "EX")
                    {
                        Outlook.AddressEntry tmp_sender =
                            CurrentMailItem.Sender;
                        if (tmp_sender != null)
                        {
                            //Now we have an AddressEntry representing the Sender
                            if (tmp_sender.AddressEntryUserType ==
                                Outlook.OlAddressEntryUserType.
                                olExchangeUserAddressEntry
                                || tmp_sender.AddressEntryUserType ==
                                Outlook.OlAddressEntryUserType.
                                olExchangeRemoteUserAddressEntry)
                            {
                                //Use the ExchangeUser object PrimarySMTtestsite3ddress
                                Outlook.ExchangeUser exchUser =
                                    tmp_sender.GetExchangeUser();
                                if (exchUser != null)
                                {
                                    SenderEmailAddress = exchUser.PrimarySmtpAddress;
                                }
                            }
                            else
                            {
                                SenderEmailAddress = tmp_sender.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS);
                            }
                        }
                    }
                    else if (CurrentMailItem.SenderEmailAddress != null)
                    {
                        SenderEmailAddress = CurrentMailItem.SenderEmailAddress;
                    }
                    testsite2_cmd.Parameters["@EmailAddress"].Value = SenderEmailAddress;
                    testsite2_cmd.Parameters["@SC_Only"].Value = cbFromTosSalesContacts.Checked ? 1 : 0;
                    testsite2_con.Open();
                    SqlDataReader reader = testsite2_cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        Syteline_ds.Tables["Search_Results"].Rows.Add(false
                            , reader[0].ToString()
                            , reader[1].ToString()
                            , reader[2].ToString()
                            , reader[3].ToString()
                            , reader[4].ToString()
                            , reader[5].ToString()
                            , reader[6].ToString()
                            , reader[7].ToString()
                            , reader[8].ToString()
                            , reader[9].ToString()
                            , reader[10].ToString()
                            , reader[11].ToString()
                            , reader[12].ToString()
                            , "testsite2");
                    }
                    reader.Close();
                    testsite2_con.Close();
                }
                else
                {
                    Outlook.Recipients recips = CurrentMailItem.Recipients;
                    foreach (Outlook.Recipient recip in recips)
                    {
                        Outlook.PropertyAccessor testsite3 = recip.PropertyAccessor;
                        string smtpAddress = testsite3.GetProperty(PR_SMTP_ADDRESS).ToString();
                        testsite2_cmd.Parameters["@EmailAddress"].Value = smtpAddress;
                        testsite2_cmd.Parameters["@SC_Only"].Value = cbFromTosSalesContacts.Checked ? 1 : 0;
                        testsite2_con.Open();
                        SqlDataReader reader = testsite2_cmd.ExecuteReader();
                        while (reader.Read())
                        {
                            Syteline_ds.Tables["Search_Results"].Rows.Add(false
                                , reader[0].ToString()
                                , reader[1].ToString()
                                , reader[2].ToString()
                                , reader[3].ToString()
                                , reader[4].ToString()
                                , reader[5].ToString()
                                , reader[6].ToString()
                                , reader[7].ToString()
                                , reader[8].ToString()
                                , reader[9].ToString()
                                , reader[10].ToString()
                                , reader[11].ToString()
                                , reader[12].ToString()
                                , "testsite2");
                        }
                        reader.Close();
                        testsite2_con.Close();
                    }
                }
                Syteline_ds.AcceptChanges();
                dgvFromTosResults.AutoResizeColumns();
                dgvFromTosResults.Refresh();
            }
            catch (Exception ex)
            {
                testsite2_con.Close();
                MessageBox.Show("Error Occured: " + ex.Message, "Chad Syteline Outlook AddIn");
            }
        }
        private void rbFromAddress_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rb = sender as RadioButton;
            if (rb == null)
            {
                return;
            }
            if (rb.Checked)
            {
                EmailFromAddress = true;
            }
        }
        private void rbToAddress_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rb = sender as RadioButton;
            if (rb == null)
            {
                return;
            }
            if (rb.Checked)
            {
                EmailFromAddress = false;
            }
        }
        private void btnFromTosFind_Click(object sender, EventArgs e)
        {
            if (rbFromTostestsite.Checked)
                FromTosFindtestsite();
            else if (rbFromTostestsite3.Checked)
                FromTosFindtestsite3();
            else if (rbFromTostestsite2.Checked)
                FromTosFindtestsite2();
        }
        private void dgvFromTosResults_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1)
                if (dgvFromTosResults.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn.Name == "selectDataGridViewCheckBoxColumn1")
                    if ((bool)dgvFromTosResults.Rows[e.RowIndex].Cells[e.ColumnIndex].Value)
                        dgvFromTosResults.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = false;
                    else
                        dgvFromTosResults.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = true;
        }
        private void rbFromTostestsite_CheckedChanged(object sender, EventArgs e)
        {
            Globals.ThisAddIn.SytelineSystem = "testsite";
        }
        private void rbFromTostestsite3_CheckedChanged(object sender, EventArgs e)
        {
            Globals.ThisAddIn.SytelineSystem = "testsite3";
        }
        private void rbFromTostestsite2_CheckedChanged(object sender, EventArgs e)
        {
            Globals.ThisAddIn.SytelineSystem = "testsite2";
        }
        private void tbnFindFind_Click(object sender, EventArgs e)
        {
            if (tbSearchText.Text != "")
            {
                if (rbFindtestsite.Checked)
                    Findtestsite();
                else if (rbFindtestsite3.Checked)
                    Findtestsite3();
                else if (rbFindtestsite2.Checked)
                    Findtestsite2();
            }
        }
        private void Findtestsite()
        {
            try
            {
                if (SearchText_ds.Tables["SearchTextResults"].Rows.Count > 0)
                    SearchText_ds.Tables["SearchTextResults"].Clear();
                testsite_cmd2.Parameters["@SearchText"].Value = tbSearchText.Text;
                testsite_cmd2.Parameters["@SC_Only"].Value = cbFindSalesContacts.Checked ? 1 : 0;
                testsite_con.Open();
                SqlDataReader reader = testsite_cmd2.ExecuteReader();
                while (reader.Read())
                {
                    SearchText_ds.Tables["SearchTextResults"].Rows.Add(false
                        , reader[0].ToString()
                        , reader[1].ToString()
                        , reader[2].ToString()
                        , reader[3].ToString()
                        , reader[4].ToString()
                        , reader[5].ToString()
                        , reader[6].ToString()
                        , reader[7].ToString()
                        , reader[8].ToString()
                        , reader[9].ToString()
                        , reader[10].ToString()
                        , reader[11].ToString()
                        , reader[12].ToString()
                        , "testsite");
                }
                reader.Close();
                testsite_con.Close();
                SearchText_ds.AcceptChanges();
                dgvFindResults.AutoResizeColumns();
                dgvFindResults.Refresh();
            }
            catch (Exception ex)
            {
                testsite_con.Close();
                MessageBox.Show("Error Occured: " + ex.Message, "Chad Syteline Outlook AddIn");
            }
        }
        private void Findtestsite3()
        {
            try
            {
                if (SearchText_ds.Tables["SearchTextResults"].Rows.Count > 0)
                    SearchText_ds.Tables["SearchTextResults"].Clear();
                testsite3_cmd2.Parameters["@SearchText"].Value = tbSearchText.Text;
                testsite3_cmd2.Parameters["@SC_Only"].Value = cbFindSalesContacts.Checked ? 1 : 0;
                testsite3_con.Open();
                SqlDataReader reader = testsite3_cmd2.ExecuteReader();
                while (reader.Read())
                {
                    SearchText_ds.Tables["SearchTextResults"].Rows.Add(false
                        , reader[0].ToString()
                        , reader[1].ToString()
                        , reader[2].ToString()
                        , reader[3].ToString()
                        , reader[4].ToString()
                        , reader[5].ToString()
                        , reader[6].ToString()
                        , reader[7].ToString()
                        , reader[8].ToString()
                        , reader[9].ToString()
                        , reader[10].ToString()
                        , reader[11].ToString()
                        , reader[12].ToString()
                        , "testsite3");
                }
                reader.Close();
                testsite3_con.Close();
                SearchText_ds.AcceptChanges();
                dgvFindResults.AutoResizeColumns();
                dgvFindResults.Refresh();
            }
            catch (Exception ex)
            {
                testsite3_con.Close();
                MessageBox.Show("Error Occured: " + ex.Message, "Chad Syteline Outlook AddIn");
            }
        }
        private void Findtestsite2()
        {
            try
            {
                if (SearchText_ds.Tables["SearchTextResults"].Rows.Count > 0)
                    SearchText_ds.Tables["SearchTextResults"].Clear();
                testsite2_cmd2.Parameters["@SearchText"].Value = tbSearchText.Text;
                testsite2_cmd2.Parameters["@SC_Only"].Value = cbFindSalesContacts.Checked ? 1 : 0;
                testsite2_con.Open();
                SqlDataReader reader = testsite2_cmd2.ExecuteReader();
                while (reader.Read())
                {
                    SearchText_ds.Tables["SearchTextResults"].Rows.Add(false
                        , reader[0].ToString()
                        , reader[1].ToString()
                        , reader[2].ToString()
                        , reader[3].ToString()
                        , reader[4].ToString()
                        , reader[5].ToString()
                        , reader[6].ToString()
                        , reader[7].ToString()
                        , reader[8].ToString()
                        , reader[9].ToString()
                        , reader[10].ToString()
                        , reader[11].ToString()
                        , reader[12].ToString()
                        , "testsite2");
                }
                reader.Close();
                testsite2_con.Close();
                SearchText_ds.AcceptChanges();
                dgvFindResults.AutoResizeColumns();
                dgvFindResults.Refresh();
            }
            catch (Exception ex)
            {
                testsite2_con.Close();
                MessageBox.Show("Error Occured: " + ex.Message, "Chad Syteline Outlook AddIn");
            }
        }
        private void dgvFindResults_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1)
                if (dgvFindResults.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn.Name == "selectDataGridViewCheckBoxColumn")
                    if ((bool)dgvFindResults.Rows[e.RowIndex].Cells[e.ColumnIndex].Value)
                        dgvFindResults.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = false;
                    else
                        dgvFindResults.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = true;
        }
        private void btnFromTosAdd_Click(object sender, EventArgs e)
        {
            if (Syteline_ds.Tables["Search_Results"].Rows.Count > 0)
            {
                foreach (DataRow i in Syteline_ds.Tables["Search_Results"].Rows)
                {
                    if ((bool)i.ItemArray[0])
                    {
                        Exports_ds.Tables["Exports"].ImportRow(i);
                    }
                }
                Exports_ds.AcceptChanges();
                dgvExports.AutoResizeColumns();
                dgvExports.Refresh();
            }
        }
        private void btnFindAdd_Click(object sender, EventArgs e)
        {
            if (SearchText_ds.Tables["SearchTextResults"].Rows.Count > 0)
            {
                foreach (DataRow i in SearchText_ds.Tables["SearchTextResults"].Rows)
                {
                    if ((bool)i.ItemArray[0])
                    {
                        Exports_ds.Tables["Exports"].ImportRow(i);
                    }
                }
                Exports_ds.AcceptChanges();
                dgvExports.AutoResizeColumns();
                dgvExports.Refresh();
            }
        }
        private void btnExportClear_Click(object sender, EventArgs e)
        {
            Exports_ds.Tables["Exports"].Clear();
            Exports_ds.AcceptChanges();
            dgvExports.AutoResizeColumns();
            dgvExports.Refresh();
        }
        private void btnExport_Click(object sender, EventArgs e)
        {
            string EmailSubject = "";
            string EmailContent = "Sender: ";
            DateTime ContactDate;
            int EmailIncoming = 0;
            string EmailFilename = "";
            Outlook.MailItem CurrentMailItem = (Outlook.MailItem)this.OutlookItem;
            Outlook.Recipients recips = CurrentMailItem.Recipients;
            EmailContent += CurrentMailItem.Sender.Name + "\n\n";
            EmailContent += "To: " + CurrentMailItem.To + "\n";
            EmailContent += "CC: " + CurrentMailItem.CC + "\n";
            EmailContent += "BCC: " + CurrentMailItem.BCC + "\n\n";
            EmailContent += "Subject: " + CurrentMailItem.Subject + "\n\n";
            if(CurrentMailItem.Subject.Length > 40)
                EmailSubject = CurrentMailItem.Subject.Substring(0, 39);
            else
                EmailSubject = CurrentMailItem.Subject;
            EmailContent += CurrentMailItem.Body + "\n\n";
            if (CurrentMailItem.Parent.FolderPath.Contains("Inbox"))
            {
                ContactDate = CurrentMailItem.ReceivedTime;
                EmailIncoming = 1;
            }
            else
                ContactDate = CurrentMailItem.SentOn;
            if (Exports_ds.Tables["Exports"].Rows.Count > 0)
            {
                foreach (DataRow i in Exports_ds.Tables["Exports"].Rows)
                {
                    switch(i.ItemArray[14].ToString())
                    {
                        case "testsite":
                            testsite_cmd3.Parameters["@email_module"].Value = i.ItemArray[1].ToString();
                            testsite_cmd3.Parameters["@SL_CUSTNUM"].Value = i.ItemArray[4].ToString();
                            testsite_cmd3.Parameters["@SL_SEQNUM"].Value = i.ItemArray[5];
                            testsite_cmd3.Parameters["@SL_CONTACT_DATE"].Value = ContactDate;
                            testsite_cmd3.Parameters["@SL_TOPIC"].Value = "Outlook Import";
                            testsite_cmd3.Parameters["@SL_TYPE"].Value = "E";
                            testsite_cmd3.Parameters["@SL_EMAIL_STATUS"].Value = "X";
                            testsite_cmd3.Parameters["@SL_INCOMING"].Value = EmailIncoming;
                            testsite_cmd3.Parameters["@Body"].Value = EmailContent;
                            testsite_cmd3.Parameters["@SL_ENTERED_BY"].Value = Globals.ThisAddIn.SytelineUsername;
                            testsite_cmd3.Parameters["@Subject"].Value = EmailSubject;
                            testsite_con.Open();
                            testsite_cmd3.ExecuteNonQuery();
                            testsite_con.Close();
                            EmailFilename = Globals.ThisAddIn.SytelineSavePath + @"\testsite\Email_" + testsite_cmd3.Parameters["@NewInteractionRowPointer"].Value + ".msg";
                            switch (i.ItemArray[1].ToString())
                            {
                                case "Cust ShipTo":
                                    testsite_CreateDocTrak("CustomerInteraction", EmailFilename, "Int-" + testsite_cmd3.Parameters["@NewInteraction_id"].Value.ToString() + "-Email",
                                        i.ItemArray[4].ToString(), i.ItemArray[5].ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Cust ShipTo SC":
                                    testsite_CreateDocTrak("CustomerInteraction", EmailFilename, "Int-" + testsite_cmd3.Parameters["@NewInteraction_id"].Value.ToString() + "-Email",
                                        i.ItemArray[4].ToString(), i.ItemArray[5].ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Service Contacts":
                                    testsite_CreateDocTrak("CustomerInteraction", EmailFilename, "Int-" + testsite_cmd3.Parameters["@NewInteraction_id"].Value.ToString() + "-Email",
                                        i.ItemArray[4].ToString(), i.ItemArray[5].ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Prospects SC":
                                    testsite_CreateDocTrak("Prospect Interaction", EmailFilename, "Email-" + EmailSubject, i.ItemArray[4].ToString(),
                                        testsite_cmd3.Parameters["@NewInteractionRowPointer"].Value.ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Sales Contacts":
                                    testsite_CreateDocTrak("Sls Cont Interaction", EmailFilename, "Email-" + EmailSubject, i.ItemArray[4].ToString(),
                                        testsite_cmd3.Parameters["@NewInteractionRowPointer"].Value.ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                            }
                            break;
                        case "testsite3":
                            testsite3_cmd3.Parameters["@email_module"].Value = i.ItemArray[1].ToString();
                            testsite3_cmd3.Parameters["@SL_CUSTNUM"].Value = i.ItemArray[4].ToString();
                            testsite3_cmd3.Parameters["@SL_SEQNUM"].Value = i.ItemArray[5];
                            testsite3_cmd3.Parameters["@SL_CONTACT_DATE"].Value = ContactDate;
                            testsite3_cmd3.Parameters["@SL_TOPIC"].Value = "Outlook Import";
                            testsite3_cmd3.Parameters["@SL_TYPE"].Value = "E";
                            testsite3_cmd3.Parameters["@SL_EMAIL_STATUS"].Value = "X";
                            testsite3_cmd3.Parameters["@SL_INCOMING"].Value = EmailIncoming;
                            testsite3_cmd3.Parameters["@Body"].Value = EmailContent;
                            testsite3_cmd3.Parameters["@SL_ENTERED_BY"].Value = Globals.ThisAddIn.SytelineUsername;
                            testsite3_cmd3.Parameters["@Subject"].Value = EmailSubject;
                            testsite3_con.Open();
                            testsite3_cmd3.ExecuteNonQuery();
                            testsite3_con.Close();
                            EmailFilename = Globals.ThisAddIn.SytelineSavePath + @"\testsite3\Email_" + testsite3_cmd3.Parameters["@NewInteractionRowPointer"].Value + ".msg";
                            switch (i.ItemArray[1].ToString())
                            {
                                case "Cust ShipTo":
                                    testsite3_CreateDocTrak("CustomerInteraction", EmailFilename, "Int-" + testsite3_cmd3.Parameters["@NewInteraction_id"].Value.ToString() + "-Email",
                                        i.ItemArray[4].ToString(), i.ItemArray[5].ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Cust ShipTo SC":
                                    testsite3_CreateDocTrak("CustomerInteraction", EmailFilename, "Int-" + testsite3_cmd3.Parameters["@NewInteraction_id"].Value.ToString() + "-Email",
                                        i.ItemArray[4].ToString(), i.ItemArray[5].ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Service Contacts":
                                    testsite3_CreateDocTrak("CustomerInteraction", EmailFilename, "Int-" + testsite3_cmd3.Parameters["@NewInteraction_id"].Value.ToString() + "-Email",
                                        i.ItemArray[4].ToString(), i.ItemArray[5].ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Prospects SC":
                                    testsite3_CreateDocTrak("Prospect Interaction", EmailFilename, "Email-" + EmailSubject, i.ItemArray[4].ToString(),
                                        testsite3_cmd3.Parameters["@NewInteractionRowPointer"].Value.ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Sales Contacts":
                                    testsite3_CreateDocTrak("Sls Cont Interaction", EmailFilename, "Email-" + EmailSubject, i.ItemArray[4].ToString(),
                                        testsite3_cmd3.Parameters["@NewInteractionRowPointer"].Value.ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                            }
                            break;
                        case "testsite2":
                           testsite2_cmd3.Parameters["@email_module"].Value = i.ItemArray[1].ToString();
                            testsite2_cmd3.Parameters["@SL_CUSTNUM"].Value = i.ItemArray[4].ToString();
                            testsite2_cmd3.Parameters["@SL_SEQNUM"].Value = i.ItemArray[5];
                            testsite2_cmd3.Parameters["@SL_CONTACT_DATE"].Value = ContactDate;
                            testsite2_cmd3.Parameters["@SL_TOPIC"].Value = "Outlook Import";
                            testsite2_cmd3.Parameters["@SL_TYPE"].Value = "E";
                            testsite2_cmd3.Parameters["@SL_EMAIL_STATUS"].Value = "X";
                            testsite2_cmd3.Parameters["@SL_INCOMING"].Value = EmailIncoming;
                            testsite2_cmd3.Parameters["@Body"].Value = EmailContent;
                            testsite2_cmd3.Parameters["@SL_ENTERED_BY"].Value = Globals.ThisAddIn.SytelineUsername;
                            testsite2_cmd3.Parameters["@Subject"].Value = EmailSubject;
                            testsite2_con.Open();
                            testsite2_cmd3.ExecuteNonQuery();
                            testsite2_con.Close();
                            EmailFilename = Globals.ThisAddIn.SytelineSavePath + @"\testsite2\Email_" + testsite2_cmd3.Parameters["@NewInteractionRowPointer"].Value + ".msg";
                            switch (i.ItemArray[1].ToString())
                            {
                                case "Cust ShipTo":
                                    testsite2_CreateDocTrak("CustomerInteraction", EmailFilename, "Int-" + testsite2_cmd3.Parameters["@NewInteraction_id"].Value.ToString() + "-Email",
                                        i.ItemArray[4].ToString(), i.ItemArray[5].ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Cust ShipTo SC":
                                    testsite2_CreateDocTrak("CustomerInteraction", EmailFilename, "Int-" + testsite2_cmd3.Parameters["@NewInteraction_id"].Value.ToString() + "-Email",
                                        i.ItemArray[4].ToString(), i.ItemArray[5].ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Service Contacts":
                                    testsite2_CreateDocTrak("CustomerInteraction", EmailFilename, "Int-" + testsite2_cmd3.Parameters["@NewInteraction_id"].Value.ToString() + "-Email",
                                        i.ItemArray[4].ToString(), i.ItemArray[5].ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Prospects SC":
                                    testsite2_CreateDocTrak("Prospect Interaction", EmailFilename, "Email-" + EmailSubject, i.ItemArray[4].ToString(),
                                        testsite2_cmd3.Parameters["@NewInteractionRowPointer"].Value.ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                                case "Sales Contacts":
                                    testsite2_CreateDocTrak("Sls Cont Interaction", EmailFilename, "Email-" + EmailSubject, i.ItemArray[4].ToString(),
                                        testsite2_cmd3.Parameters["@NewInteractionRowPointer"].Value.ToString());
                                    CurrentMailItem.SaveAs(EmailFilename);
                                    break;
                            }
                            break;
                    }
                }
            }
        }
        private void testsite_CreateDocTrak(string module, string filename, string description, string value1, string value2)
        {
            testsite_cmd4.Parameters["@MOD"].Value = module;
            testsite_cmd4.Parameters["@TYPE"].Value = "R";
            testsite_cmd4.Parameters["@FILENAME"].Value = filename;
            testsite_cmd4.Parameters["@DESCRIPTION"].Value = description;
            testsite_cmd4.Parameters["@VALUE1"].Value = value1;
            testsite_cmd4.Parameters["@VALUE2"].Value = value2;
            testsite_con.Open();
            testsite_cmd4.ExecuteNonQuery();
            testsite_con.Close();
        }
        private void testsite3_CreateDocTrak(string module, string filename, string description, string value1, string value2)
        {
            testsite3_cmd4.Parameters["@MOD"].Value = module;
            testsite3_cmd4.Parameters["@TYPE"].Value = "R";
            testsite3_cmd4.Parameters["@FILENAME"].Value = filename;
            testsite3_cmd4.Parameters["@DESCRIPTION"].Value = description;
            testsite3_cmd4.Parameters["@VALUE1"].Value = value1;
            testsite3_cmd4.Parameters["@VALUE2"].Value = value2;
            testsite3_con.Open();
            testsite3_cmd4.ExecuteNonQuery();
            testsite3_con.Close();
        }
        private void testsite2_CreateDocTrak(string module, string filename, string description, string value1, string value2)
        {
            testsite2_cmd4.Parameters["@MOD"].Value = module;
            testsite2_cmd4.Parameters["@TYPE"].Value = "R";
            testsite2_cmd4.Parameters["@FILENAME"].Value = filename;
            testsite2_cmd4.Parameters["@DESCRIPTION"].Value = description;
            testsite2_cmd4.Parameters["@VALUE1"].Value = value1;
            testsite2_cmd4.Parameters["@VALUE2"].Value = value2;
            testsite2_con.Open();
            testsite2_cmd4.ExecuteNonQuery();
            testsite2_con.Close();
        }
    }
}


Copyright © 2013 ProTechs-Online.com; All rights reserved.