/// <summary>
        /// Deletes the channel.
        /// </summary>
        private void DeleteMessenger()
        {
            DbMessenger messenger = lvwDbMessenger.SelectedObject as DbMessenger;

            if (messenger != null)
            {
                DialogResult result = FormHelper.Confirm(string.Format(Resources.MsgConfirmDeleteMessenger, messenger.Name));
                if (result == DialogResult.Yes)
                {
                    // Delete the messenger
                    DbMessenger.Delete(m => m.Name.ToLower() == messenger.Name.ToLower());

                    this.lvwDbMessenger.RemoveObjects(this.lvwDbMessenger.SelectedObjects);

                    if (MessengerRemoved != null)
                    {
                        // Raise the event
                        MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(messenger.Name);
                        this.MessengerRemoved.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null);
                    }
                }
            }
            else
            {
                FormHelper.ShowInfo(Resources.MsgMessengerMustBeSelected);
            }
        }
        /// <summary>
        /// FRM_s the messenger updated.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The e.</param>
        void frm_MessengerUpdated(object sender, MessengerEventHandlerArgs e)
        {
            DbMessenger messenger = DbMessenger.SingleOrDefault(m => m.Name.ToLower() == e.Name.ToLower());

            if (MessengerUpdated != null)
            {
                // Raise the event
                MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(e.Name);
                this.MessengerUpdated.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null);
            }
        }
        /// <summary>
        /// Saves the changes.
        /// </summary>
        /// <returns></returns>
        private bool SaveChanges()
        {
            // Validate the name is not empty
            if (!FormHelper.ValidateNotEmpty(txtName, Resources.MsgUniqueNameRequired))
            {
                return(false);
            }
            string name = txtName.Text.Trim();

            if (!this.IsUpdate)
            {
                // The messenger name must be unique
                if (DbMessenger.Exists(m => m.Name.ToLower() == name.ToLower()))
                {
                    FormHelper.ShowError(txtName, string.Format(Resources.MsgMessengerNameAlreadyExists, name));
                    return(false);
                }
            }

            if (!FormHelper.ValidateNotEmpty(cboDsn, Resources.MsgDsnRequired))
            {
                return(false);
            }

            if (!FormHelper.ValidateNotEmpty(txtDbTable, Resources.MsgDbTableRequired))
            {
                return(false);
            }

            if (chkRequireAuthentication.Checked)
            {
                if (!FormHelper.ValidateNotEmpty(txtDbUserName, Resources.MsgDbUserNameRequired))
                {
                    return(false);
                }

                if (!FormHelper.ValidateNotEmpty(txtDbPassword, Resources.MsgDbUserPasswordRequired))
                {
                    return(false);
                }
            }


            if (!FormHelper.ValidateNotEmpty(txtUniqMsgIdColName, Resources.MsgUniqMsgIdColNameRequired))
            {
                return(false);
            }

            if (!FormHelper.ValidateNotEmpty(txtDestNoColName, Resources.MsgDestNoColNameRequired))
            {
                return(false);
            }

            if (!FormHelper.ValidateNotEmpty(txtDestNoColName, Resources.MsgDestNoColNameRequired))
            {
                return(false);
            }

            if (!FormHelper.ValidateNotEmpty(txtMsgColName, txtDefaultTextMsg, Resources.MsgMsgColDefaultMsgRequired))
            {
                return(false);
            }

            if (chkDeleteAfterSending.Checked)
            {
                if (!FormHelper.ValidateNotEmpty(txtStatusColName, Resources.MsgStatusColNameRequired))
                {
                    return(false);
                }
            }


            try
            {
                // Save the messenger configuration
                DbMessenger dbMessenger = new DbMessenger();

                if (this.IsUpdate)
                {
                    dbMessenger = DbMessenger.SingleOrDefault(m => m.Name.ToLower() == name.ToLower());
                }

                dbMessenger.Name             = name;
                dbMessenger.Description      = txtDescription.Text;
                dbMessenger.Dsn              = cboDsn.Text;
                dbMessenger.DbTable          = txtDbTable.Text;
                dbMessenger.PollingInterval  = Convert.ToInt32(npdPollingInterval.Value);
                dbMessenger.RequiredAuth     = chkRequireAuthentication.Checked;
                dbMessenger.DbUserName       = txtDbUserName.Text;
                dbMessenger.DbUserPassword   = txtDbPassword.Text;
                dbMessenger.UniqMsgIdColName = txtUniqMsgIdColName.Text;
                if (radMsgIdDataTypeString.Checked)
                {
                    dbMessenger.UniqMsgIdColDataType = StringEnum.GetStringValue(DataType.String);
                }
                else
                {
                    dbMessenger.UniqMsgIdColDataType = StringEnum.GetStringValue(DataType.Numeric);
                }

                dbMessenger.MsgColName                  = txtMsgColName.Text;
                dbMessenger.DestNoColName               = txtDestNoColName.Text;
                dbMessenger.MsgPriorityColName          = txtMsgPriorityColName.Text;
                dbMessenger.MsgAlertColName             = txtMsgAlertColName.Text;
                dbMessenger.DefaultMsgPriority          = cboDefaultMsgPriority.Text;
                dbMessenger.DefaultTextMsg              = txtDefaultTextMsg.Text;
                dbMessenger.DeleteAfterSending          = chkDeleteAfterSending.Checked;
                dbMessenger.StatusColName               = txtStatusColName.Text;
                dbMessenger.StatusTimestampColName      = txtStatusTimestampColName.Text;
                dbMessenger.StatusColNewValue           = txtStatusColValue.Text;
                dbMessenger.StatusColUpdateSuccessVal   = txtStatusColUpdateSentValue.Text;
                dbMessenger.StatusColUpdateFailedValue  = txtStatusColUpdateFailedValue.Text;
                dbMessenger.StatusColUpdateSendingValue = txtStatusColUpdateSendingValue.Text;
                dbMessenger.AutoStart = chkAutoStart.Checked;


                if (!this.IsUpdate)
                {
                    dbMessenger.Save();
                }
                else
                {
                    dbMessenger.Update();
                }

                if (MessengerAdded != null)
                {
                    // Raise the event
                    MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(name);
                    this.MessengerAdded.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null);
                }

                if (MessengerUpdated != null)
                {
                    // Raise the event
                    MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(name);
                    this.MessengerUpdated.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null);
                }
            }
            catch (Exception ex)
            {
                FormHelper.ShowError(ex.Message);
                return(false);
            }

            // Reset to false
            isFormChanged = false;

            // Show successful save message
            FormHelper.ShowInfo(Resources.MsgMessengerConfigSaved);

            // Return true as saving is successful
            return(true);
        }
        /// <summary>
        /// Saves the changes.
        /// </summary>
        /// <returns></returns>
        private bool SaveChanges()
        {
            // Validate the name is not empty
            if (!FormHelper.ValidateNotEmpty(txtName, Resources.MsgUniqueNameRequired))
            {
                return false;
            }
            string name = txtName.Text.Trim();
            if (!this.IsUpdate)
            {
                // The messenger name must be unique 
                if (DbMessenger.Exists(m => m.Name.ToLower() == name.ToLower()))
                {
                    FormHelper.ShowError(txtName, string.Format(Resources.MsgMessengerNameAlreadyExists, name));
                    return false;
                }              
            }
            
            if (!FormHelper.ValidateNotEmpty(cboDsn, Resources.MsgDsnRequired))
            {
                return false;
            }

            if (!FormHelper.ValidateNotEmpty(txtDbTable, Resources.MsgDbTableRequired))
            {
                return false;
            }

            if (chkRequireAuthentication.Checked)
            {
                if (!FormHelper.ValidateNotEmpty(txtDbUserName, Resources.MsgDbUserNameRequired))
                {
                    return false;
                }

                if (!FormHelper.ValidateNotEmpty(txtDbPassword, Resources.MsgDbUserPasswordRequired))
                {
                    return false;
                }
            }    


            if (!FormHelper.ValidateNotEmpty(txtUniqMsgIdColName, Resources.MsgUniqMsgIdColNameRequired))
            {
                return false;
            }

            if (!FormHelper.ValidateNotEmpty(txtDestNoColName, Resources.MsgDestNoColNameRequired))
            {
                return false;
            }

            if (!FormHelper.ValidateNotEmpty(txtDestNoColName, Resources.MsgDestNoColNameRequired))
            {
                return false;
            }

            if (!FormHelper.ValidateNotEmpty(txtMsgColName, txtDefaultTextMsg, Resources.MsgMsgColDefaultMsgRequired))
            {
                return false;
            }

            if (chkDeleteAfterSending.Checked)
            {
                if (!FormHelper.ValidateNotEmpty(txtStatusColName, Resources.MsgStatusColNameRequired))
                {
                    return false;
                }              
            }           


            try
            {
                // Save the messenger configuration
                DbMessenger dbMessenger = new DbMessenger();

                if (this.IsUpdate)
                {
                    dbMessenger = DbMessenger.SingleOrDefault(m => m.Name.ToLower() == name.ToLower());
                }
                               
                dbMessenger.Name = name;
                dbMessenger.Description = txtDescription.Text;
                dbMessenger.Dsn = cboDsn.Text;
                dbMessenger.DbTable = txtDbTable.Text;
                dbMessenger.PollingInterval = Convert.ToInt32(npdPollingInterval.Value);
                dbMessenger.RequiredAuth = chkRequireAuthentication.Checked;
                dbMessenger.DbUserName = txtDbUserName.Text;
                dbMessenger.DbUserPassword = txtDbPassword.Text;
                dbMessenger.UniqMsgIdColName = txtUniqMsgIdColName.Text;
                if (radMsgIdDataTypeString.Checked)
                    dbMessenger.UniqMsgIdColDataType = StringEnum.GetStringValue(DataType.String);
                else
                    dbMessenger.UniqMsgIdColDataType = StringEnum.GetStringValue(DataType.Numeric);

                dbMessenger.MsgColName = txtMsgColName.Text;
                dbMessenger.DestNoColName = txtDestNoColName.Text;
                dbMessenger.MsgPriorityColName = txtMsgPriorityColName.Text;
                dbMessenger.MsgAlertColName = txtMsgAlertColName.Text;
                dbMessenger.DefaultMsgPriority = cboDefaultMsgPriority.Text;
                dbMessenger.DefaultTextMsg = txtDefaultTextMsg.Text;
                dbMessenger.DeleteAfterSending = chkDeleteAfterSending.Checked;
                dbMessenger.StatusColName = txtStatusColName.Text;
                dbMessenger.StatusTimestampColName = txtStatusTimestampColName.Text;
                dbMessenger.StatusColNewValue = txtStatusColValue.Text;
                dbMessenger.StatusColUpdateSuccessVal = txtStatusColUpdateSentValue.Text;
                dbMessenger.StatusColUpdateFailedValue = txtStatusColUpdateFailedValue.Text;
                dbMessenger.StatusColUpdateSendingValue = txtStatusColUpdateSendingValue.Text;
                dbMessenger.AutoStart = chkAutoStart.Checked;           


                if (!this.IsUpdate)
                    dbMessenger.Save();
                else
                    dbMessenger.Update();

                if (MessengerAdded != null)
                {
                    // Raise the event
                    MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(name);
                    this.MessengerAdded.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null);
                }

                if (MessengerUpdated != null)
                {
                    // Raise the event
                    MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(name);
                    this.MessengerUpdated.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null);
                }
            }
            catch (Exception ex)
            {
                FormHelper.ShowError(ex.Message);
                return false;
            }

            // Reset to false
            isFormChanged = false;

            // Show successful save message
            FormHelper.ShowInfo(Resources.MsgMessengerConfigSaved);

            // Return true as saving is successful
            return true;
        }
        /// <summary>
        /// Deletes the channel.
        /// </summary>
        private void DeleteMessenger()
        {
            DbMessenger messenger = lvwDbMessenger.SelectedObject as DbMessenger;
            if (messenger != null)
            {
                DialogResult result = FormHelper.Confirm(string.Format(Resources.MsgConfirmDeleteMessenger, messenger.Name));
                if (result == DialogResult.Yes)
                {
                    // Delete the messenger
                    DbMessenger.Delete(m => m.Name.ToLower() == messenger.Name.ToLower());

                    this.lvwDbMessenger.RemoveObjects(this.lvwDbMessenger.SelectedObjects);

                    if (MessengerRemoved != null)
                    {
                        // Raise the event
                        MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(messenger.Name);
                        this.MessengerRemoved.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null);
                    }
                }
            }
            else
            {
                FormHelper.ShowInfo(Resources.MsgMessengerMustBeSelected);
            }

        }
 /// <summary>
 /// FRM_s the messenger updated.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The e.</param>
 void frm_MessengerUpdated(object sender, MessengerEventHandlerArgs e)
 {
     DbMessenger messenger = DbMessenger.SingleOrDefault(m => m.Name.ToLower() == e.Name.ToLower());
     if (MessengerUpdated != null)
     {
         // Raise the event
         MessengerEventHandlerArgs arg = new MessengerEventHandlerArgs(e.Name);
         this.MessengerUpdated.BeginInvoke(this, arg, new AsyncCallback(this.AsyncCallback), null);
     }
 }