///*********************** SYSTEM MESSAGES **************************///
        /// <summary>
        /// Adds a message for a target group, lab server, or system as a whole.
        /// </summary>
        /// <param name="messageType">A string identifying the message type.</param>
        /// <param name="toBeDisplayed">true if the message is to be displayed; false otherwise.</param>
        /// <param name="groupID">
        /// -1 if message is not targeted at a particular group. 
        /// If greater than 0, this message is targeted to users who have selected the group identified by groupID as their effective group.
        /// Note this argument has precedence over labServerID. If this argument and labServerID are both -1, the message is intended as a general system message visible to all users.
        /// </param>
        /// <param name="labServerID">
        /// -1 if message is not targeted at a particular Lab Server. 
        /// If greater than 0, this message is targeted to users who have selected as their effective group, a group that has access to the lab server specified by this ID.
        /// If this argument and groupID are both -1, the message is intended as a general system message visible to all users.
        /// </param>
        /// <param name="messageBody">The text of the message to be displayed.</param>
        /// <param name="messageTitle">The title of the message to be displayed.</param>
        /// <returns></returns>
        public static int AddSystemMessage(string messageType, bool toBeDisplayed, int groupID, int clientID, int agentID, string messageTitle, string messageBody)
        {
            SystemMessage sm = new SystemMessage();
            sm.messageType=messageType;
            sm.toBeDisplayed = toBeDisplayed;
            sm.groupID = groupID;
            sm.clientID = clientID;
            sm.agentID = agentID;
            sm.messageBody = messageBody;
            sm.messageTitle = messageTitle;

            return InternalAdminDB.InsertSystemMessage(sm);
        }
        protected void btnSaveChanges_Click(object sender, System.EventArgs e)
        {
            //create message struct & populate with form values
            SystemMessage msg = new SystemMessage ();

            // if not superuser
            if (!Session["GroupName"].ToString().Equals(Group.SUPERUSER))
            {
                rbtnSelectType.SelectedValue="group";
                rbtnSelectType.SelectedIndex=0;
            }

            // if radio button not selected throw error
            if(rbtnSelectType.SelectedIndex<0)
            {
                lblResponse.Text = Utilities.FormatErrorMessage("Specify if new message is a 'Group' ,'Lab'or 'System' one.");
                lblResponse.Visible = true;
                return;
            }
            else
            {
                switch (rbtnSelectType.SelectedValue)
                {
                    case "system":
                    {
                        msg.messageType = SystemMessage.SYSTEM;
                        msg.groupID = 0;
                        msg.clientID=0;
                        msg.agentID = 0;
                    }
                        break;

                    case "group":
                    {
                        if(ddlMessageTarget.SelectedIndex<1)
                        {
                            lblResponse.Text = Utilities.FormatErrorMessage("Specify the target group of the new message");
                            lblResponse.Visible = true;
                            return;
                        }
                        else
                        {
                            msg.messageType =SystemMessage.GROUP;
                            msg.groupID = Int32.Parse(ddlMessageTarget.SelectedValue);
                        }
                    }
                        break;

                    case "lab":
                    {
                        if(ddlMessageTarget.SelectedIndex<1)
                        {
                            lblResponse.Text = Utilities.FormatErrorMessage("Specify the target lab server of the new message.");
                            lblResponse.Visible = true;
                            return;
                        }
                        else
                        {
                            msg.messageType =SystemMessage.LAB;
                            msg.agentID=Int32.Parse(ddlMessageTarget.SelectedValue);
                        }
                    }
                        break;
                }
            }
            msg.lastModified = DateTime.UtcNow;
            msg.messageTitle = txtMessageTitle.Text ;
            msg.messageBody = txtMessageBody.Text ;
            msg.toBeDisplayed = cbxDisplayMessage.Checked ;

            if((txtMessageID.Text=="")&&(lbxSelectMessage.SelectedIndex < 0)) // new record
            {
                try
                {
                    msg.messageID = wrapper.AddSystemMessageWrapper(msg.messageType, msg.toBeDisplayed, msg.groupID, msg.clientID, msg.agentID, msg.messageTitle, msg.messageBody);

                    BuildMsgListBox(rbtnSelectType.SelectedValue);

                    txtMessageID.Text = msg.messageID.ToString();
                    txtLastModified.Text = DateUtil.ToUserTime(msg.lastModified,culture,userTZ);
                    string cmsg = "Message '"+msg.messageTitle+"' has been created.";
                    lblResponse.Text = Utilities.FormatConfirmationMessage(cmsg);
                    lblResponse.Visible = true;
                }
                catch(Exception ex)
                {
                    string emsg = "Exception: Cannot create message '"+txtMessageTitle.Text+"'. "+ex.Message+". "+ex.GetBaseException()+".";
                    lblResponse.Text = Utilities.FormatErrorMessage(emsg);
                    lblResponse.Visible = true;
                    return;
                }
            }
            else
            {
                msg.messageID = Int32.Parse (txtMessageID.Text) ;
                try
                {
                    wrapper.ModifySystemMessageWrapper(msg.messageID, msg.messageType, msg.toBeDisplayed, msg.groupID, msg.clientID, msg.agentID, msg.messageBody, msg.messageTitle);
                    txtLastModified.Text = DateUtil.ToUserTime(msg.lastModified, culture, userTZ); ;

                    //update record in list box
                    //this crashes when updating something that hasn't been selected
                    //lbxSelectMessage.Items [lbxSelectMessage.SelectedIndex].Text = msg.messageTitle + " / (" + msg.LastModified.ToString () +")";

                    BuildMsgListBox(rbtnSelectType.SelectedValue);

                    string cmsg = "Message '"+msg.messageTitle+"' has been updated.";
                    lblResponse.Text = Utilities.FormatConfirmationMessage(cmsg);
                    lblResponse.Visible = true;
                }
                catch (Exception ex)
                {
                    string emsg = "Exception: Cannot update message '"+txtMessageTitle.Text+"'. "+ex.Message+". "+ex.GetBaseException()+".";
                    lblResponse.Text = Utilities.FormatErrorMessage(emsg);
                    lblResponse.Visible = true;
                }
            }
        }
        /// <summary>
        /// Modifies a message specified by messageID.
        /// </summary>
        /// <param name="messageID">Identifies the message to be modified.</param>
        /// <param name="messageType">A string identifying the message type; if NULL, then the previous value will not be changed.</param>
        /// <param name="toBeDisplayed">true if the message is to be displayed; false otherwise.</param>
        /// <param name="groupID">-1 if message is not targeted at a particular group; if >0, this message is targeted to users who have selected the group identified by this groupID as their effective group. Note this argument has precedence over labServerID. If this argument and labServerID are both ==-1, then the message is intended as a general system message visible to all users.</param>
        /// <param name="labServerID">-1 if message is not targeted at users of a particular lab server; if >0, this message is targeted at users who have selected as their effective group, a group that has access to the lab server specified by this ID. If this argument and groupID are both ==-1, then the message is intended as a general system message visible to all users.</param>
        /// <param name="messageBody">The text of the message to be displayed; if NULL, then the previous value will not be changed.</param>
        /// <param name="messageTitle">The title of the message to be displayed; if NULL, then the previous value will not be changed.</param>
        public static void ModifySystemMessage(int messageID, string messageType, bool toBeDisplayed, int groupID, int clientID, int agentID, string messageBody, string messageTitle)
        {
            SystemMessage sm = new SystemMessage();
            sm.messageID = messageID;
            sm.messageType=messageType;
            sm.toBeDisplayed = toBeDisplayed;
            sm.groupID = groupID;
            sm.clientID = clientID;
            sm.agentID = agentID;
            sm.messageBody = messageBody;
            sm.messageTitle = messageTitle;

            InternalAdminDB.UpdateSystemMessage(sm);
        }
 public static int CompareDateDesc(SystemMessage m1, SystemMessage m2)
 {
     return m2.lastModified.CompareTo(m1.lastModified);
 }
        public static SystemMessage[] SelectSystemMessagesForGroup(int groupID)
        {
            ArrayList groups = new ArrayList();

            //int[] groups = InternalAuthorizationDB.ListAgentParents(groupID);
            AuthorizationUtilities.GetGroupAncestors(groupID, groups);
            if(!groups.Contains(groupID))
                groups.Add(groupID);
            List<SystemMessage> systemMessages = new List<SystemMessage>();
            if (groups != null && groups.Count > 0)
            {
                DbConnection myConnection = FactoryDB.GetConnection();
                DbCommand myCommand = FactoryDB.CreateCommand("SystemMessages_RetrieveByGroup", myConnection);
                myCommand.CommandType = CommandType.StoredProcedure;
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@groupIds", Utilities.ToCSV(Utilities.ArrayListToIntArray(groups)), DbType.AnsiString, 4000));
                try
                {
                    myConnection.Open();

                    // get systemMessage info from table system_messages
                    DbDataReader myReader = myCommand.ExecuteReader();
                    while (myReader.Read())
                    {
                        SystemMessage sm = new SystemMessage();
                        sm.messageType = "Group";
                        if (myReader["system_message_id"] != System.DBNull.Value)
                            sm.messageID = Convert.ToInt32(myReader["system_message_id"]);

                        if (myReader["message_body"] != System.DBNull.Value)
                            sm.messageBody = (string)myReader["message_body"];
                        byte tbd = 0;
                        if (myReader["to_be_displayed"] != System.DBNull.Value)
                        {
                            tbd = Convert.ToByte(myReader["to_be_displayed"]);
                        }
                        if (tbd == 1)
                            sm.toBeDisplayed = true;
                        else
                            sm.toBeDisplayed = false;
                        if (myReader["last_modified"] != System.DBNull.Value)
                            sm.lastModified = DateUtil.SpecifyUTC(Convert.ToDateTime(myReader["last_modified"]));
                        if (myReader["message_title"] != System.DBNull.Value)
                            sm.messageTitle = (string)myReader["message_title"];

                        systemMessages.Add(sm);

                    }
                    myReader.Close();
                }
                catch (Exception ex)
                {
                    throw new Exception("Exception thrown SelectSystemMessages", ex);
                }
                finally
                {
                    myConnection.Close();
                }
            }
            return systemMessages.ToArray();
        }
        /// <summary>
        /// to modify a system message
        /// </summary>
        public static void UpdateSystemMessage(SystemMessage sm)
        {
            DbConnection myConnection = FactoryDB.GetConnection();
            DbCommand myCommand = FactoryDB.CreateCommand("SystemMessage_Update", myConnection);
            myCommand.CommandType = CommandType.StoredProcedure;

            myCommand.Parameters.Add(FactoryDB.CreateParameter( "@messageID", sm.messageID, DbType.Int32));
            myCommand.Parameters.Add(FactoryDB.CreateParameter( "@messageType", sm.messageType, DbType.AnsiString,100));
            myCommand.Parameters.Add(FactoryDB.CreateParameter( "@messageTitle", sm.messageTitle, DbType.String,256));
            myCommand.Parameters.Add(FactoryDB.CreateParameter("@toBeDisplayed", sm.toBeDisplayed, DbType.Boolean));
            if (sm.clientID > 0)
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@clientID", sm.clientID, DbType.Int32));
            else
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@clientID", null, DbType.Int32));
            if (sm.agentID > 0)
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@agentID", sm.agentID, DbType.Int32));
            else
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@agentID", null, DbType.Int32));
            if (sm.groupID > 0)
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@groupID", sm.groupID, DbType.Int32));
            else
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@groupID", null, DbType.Int32));
            myCommand.Parameters.Add(FactoryDB.CreateParameter( "@messageBody", sm.messageBody, DbType.String));

            try
            {
                myConnection.Open();
                int i = myCommand.ExecuteNonQuery();

                if(i == 0)
                    throw new Exception ("No record modified exception");
            }
            catch (Exception ex)
            {
                throw new Exception("Exception thrown in updating system message",ex);
            }
            finally
            {
                myConnection.Close();
            }
        }
        /// <summary>
        /// to retrieve system message metadata for systemMessages specified by messageType and group and labServerID
        /// </summary>
        public static SystemMessage[] SelectSystemMessages(string messageType, int groupID, int clientID, int agentID)
        {
            List<SystemMessage> systemMessages = new List<SystemMessage>();

            DbConnection myConnection = FactoryDB.GetConnection();
            DbCommand myCommand = FactoryDB.CreateCommand("SystemMessages_Retrieve", myConnection);
            myCommand.CommandType = CommandType.StoredProcedure ;
            myCommand.Parameters.Add(FactoryDB.CreateParameter( "@messageType", messageType, DbType.AnsiString,100));
            myCommand.Parameters.Add(FactoryDB.CreateParameter( "@clientID", clientID, DbType.Int32));
            myCommand.Parameters.Add(FactoryDB.CreateParameter( "@agentID", agentID, DbType.Int32));
            myCommand.Parameters.Add(FactoryDB.CreateParameter( "@groupID", groupID, DbType.Int32));

            //DbParameter client = FactoryDB.CreateParameter( "@clientID", DbType.Int32);
            //if (clientID > 0)
            //    myCommand.Parameters.Add(FactoryDB.CreateParameter( "@clientID", clientID, DbType.Int32));
            //else
            //    myCommand.Parameters.Add(FactoryDB.CreateParameter( "@clientID", null, DbType.Int32));
            //if (agentID > 0)
            //    myCommand.Parameters.Add(FactoryDB.CreateParameter( "@agentID", agentID, DbType.Int32));
            //else
            //    myCommand.Parameters.Add(FactoryDB.CreateParameter( "@agentID", null, DbType.Int32));
            //if (groupID > 0)
            //    myCommand.Parameters.Add(FactoryDB.CreateParameter( "@groupID", groupID, DbType.Int32));
            //else
            //    myCommand.Parameters.Add(FactoryDB.CreateParameter( "@groupID", null, DbType.Int32));

            try
            {
                myConnection.Open ();

                // get systemMessage info from table system_messages
                DbDataReader myReader = myCommand.ExecuteReader ();
                while(myReader.Read ())
                {
                    SystemMessage sm = new SystemMessage();
                    sm.messageType = messageType;
                    sm.groupID = groupID;
                    sm.clientID = clientID;
                    sm.agentID = agentID;

                    if(myReader["system_message_id"] != System.DBNull.Value )
                        sm.messageID = Convert.ToInt32(myReader["system_message_id"]);

                    if(myReader["message_body"] != System.DBNull.Value )
                        sm.messageBody = (string) myReader["message_body"];
                    byte tbd = 0;
                    if(myReader["to_be_displayed"] != System.DBNull.Value )
                    {
                        tbd = Convert.ToByte( myReader["to_be_displayed"]);
                    }
                    if (tbd ==1)
                        sm.toBeDisplayed = true;
                    else
                        sm.toBeDisplayed = false;
                    if(myReader["last_modified"] != System.DBNull.Value )
                        sm.lastModified = DateUtil.SpecifyUTC(Convert.ToDateTime(myReader["last_modified"]));
                    if(myReader["message_title"] != System.DBNull.Value )
                        sm.messageTitle = (string) myReader["message_title"];

                    systemMessages.Add(sm);

                }
                myReader.Close ();
            }
            catch (Exception ex)
            {
                throw new Exception("Exception thrown SelectSystemMessages",ex);
            }
            finally
            {
                myConnection.Close ();
            }
            return systemMessages.ToArray();
        }
        /// <summary>
        /// to retrieve system message metadata for systemMessages specified by array of systemMessage IDs 
        /// This method only displays the messages where the to_be_displayed is set to true (0)
        /// </summary>
        public static SystemMessage[] SelectSystemMessages( int[] systemMessageIDs )
        {
            SystemMessage[] sm = new SystemMessage[systemMessageIDs.Length];
            for (int i=0; i<systemMessageIDs.Length ; i++)
            {
                sm[i] = new SystemMessage();
            }

            DbConnection myConnection = FactoryDB.GetConnection();
            DbCommand myCommand = FactoryDB.CreateCommand("SystemMessage_RetrieveByID", myConnection);
            myCommand.CommandType = CommandType.StoredProcedure;
            myCommand.Parameters .Add(FactoryDB.CreateParameter("@messageID",null,DbType.Int32));

            try
            {
                myConnection.Open ();

                for (int i =0; i < systemMessageIDs.Length ; i++)
                {
                    myCommand.Parameters["@messageID"].Value = systemMessageIDs[i];

                    // get systemMessage info from table system_messages
                    DbDataReader myReader = myCommand.ExecuteReader ();
                    while(myReader.Read ())
                    {
                        sm[i].messageID = systemMessageIDs[i];

                        if(myReader["message_body"] != System.DBNull.Value )
                            sm[i].messageBody = (string) myReader["message_body"];
                        byte tbd = 0;
                        if(myReader["to_be_displayed"] != System.DBNull.Value )
                        {
                            tbd = Convert.ToByte( myReader["to_be_displayed"]);
                        }
                        if (tbd ==1)
                            sm[i].toBeDisplayed = true;
                        else
                            sm[i].toBeDisplayed = false;
                        if(myReader["description"] != System.DBNull.Value )
                            sm[i].messageType = (string) myReader["description"];
                        if(myReader["last_modified"] != System.DBNull.Value )
                            sm[i].lastModified = DateUtil.SpecifyUTC(Convert.ToDateTime(myReader["last_modified"]));
                        if (myReader["agent_id"] != System.DBNull.Value)
                            sm[i].agentID = Convert.ToInt32(myReader["agent_id"]);
                        if (myReader["group_id"] != System.DBNull.Value)
                        sm[i].groupID = Convert.ToInt32(myReader["group_id"]);
                    if (myReader["client_id"] != System.DBNull.Value)
                        sm[i].clientID = Convert.ToInt32(myReader["client_id"]);
                        if(myReader["message_title"] != System.DBNull.Value )
                            sm[i].messageTitle = (string) myReader["message_title"];
                    }
                    myReader.Close ();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Exception thrown SelectSystemMessages",ex);
            }
            finally
            {
                myConnection.Close ();
            }

            return sm;
        }
        /* !------------------------------------------------------------------------------!
         *							CALLS FOR SYSTEM MESSAGES
         * !------------------------------------------------------------------------------!
         */
        /// <summary>
        /// to add a system message
        /// </summary>
        public static int InsertSystemMessage(SystemMessage sm)
        {
            int messageID =0;

            DbConnection myConnection = FactoryDB.GetConnection();
            DbCommand myCommand = FactoryDB.CreateCommand("SystemMessage_Insert", myConnection);
            myCommand.CommandType = CommandType.StoredProcedure;

            myCommand.Parameters.Add(FactoryDB.CreateParameter("@messageType", sm.messageType, DbType.AnsiString,100 ));
            myCommand.Parameters.Add(FactoryDB.CreateParameter("@messageTitle", sm.messageTitle, DbType.String,256 ));

            myCommand.Parameters.Add(FactoryDB.CreateParameter("@toBeDisplayed", sm.toBeDisplayed,DbType.Boolean));

            if(sm.clientID >0)
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@clientID", sm.clientID, DbType.Int32));
            else
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@clientID", null, DbType.Int32));
            if(sm.agentID >0)
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@agentID", sm.agentID, DbType.Int32));
            else
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@agentID", null, DbType.Int32));
            if(sm.groupID >0)
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@groupID", sm.groupID, DbType.Int32));
            else
                myCommand.Parameters.Add(FactoryDB.CreateParameter( "@groupID", null, DbType.Int32));

            myCommand.Parameters.Add(FactoryDB.CreateParameter("@messageBody", sm.messageBody, DbType.String,3000));

            try
            {
                myConnection.Open();
                messageID = Int32.Parse ( myCommand.ExecuteScalar().ToString ());
            }
            catch (Exception ex)
            {
                throw new Exception("Exception thrown in inserting system message",ex);
            }
            finally
            {
                myConnection.Close();
            }

            return messageID;
        }
Esempio n. 10
0
        /// <summary>
        /// to retrieve system message metadata for systemMessages specified by messageType and group for a superUser (gets all system messages)
        /// This was a method added later by Shaomin - it was required to display all the system messages for the admin pages
        /// 
        /// Its name was changed from SelectSystemMessagesSuperUser to SelectAdminSystemMessages by Charu on 5/22/04, during the conversion
        /// to the new database
        /// </summary>
        public static SystemMessage[] SelectAdminSystemMessages(string messageType, int groupID, int clientID, int agentID)
        {
            ArrayList arrayList = new ArrayList();

            DbConnection myConnection = FactoryDB.GetConnection();
            DbCommand myCommand = FactoryDB.CreateCommand("RetrieveSystemMessagesForAdmin", myConnection);
            myCommand.CommandType = CommandType.StoredProcedure ;

            myCommand.Parameters.Add(FactoryDB.CreateParameter(myCommand, "@messageType", messageType, DbType.AnsiString,100));
            myCommand.Parameters.Add(FactoryDB.CreateParameter(myCommand, "@clientID", clientID, DbType.Int32));
            myCommand.Parameters.Add(FactoryDB.CreateParameter(myCommand, "@groupID", groupID, DbType.Int32));
            myCommand.Parameters.Add(FactoryDB.CreateParameter(myCommand, "@agentID", agentID, DbType.Int32));

            try
            {
                myConnection.Open ();

                // get systemMessage info from table system_messages
                DbDataReader myReader = myCommand.ExecuteReader ();
                while(myReader.Read ())
                {
                    SystemMessage sm = new SystemMessage();
                    sm.messageType = messageType;
                    sm.clientID = clientID;
                    sm.groupID = groupID;
                    sm.agentID = agentID;

                    if(myReader["system_message_id"] != System.DBNull.Value )
                        sm.messageID = Convert.ToInt32(myReader["system_message_id"]);

                    if(myReader["message_body"] != System.DBNull.Value )
                        sm.messageBody = (string) myReader["message_body"];
                    byte tbd = 0;
                    if(myReader["to_be_displayed"] != System.DBNull.Value )
                    {
                        tbd = Convert.ToByte( myReader["to_be_displayed"]);
                    }
                    if (tbd ==1)
                        sm.toBeDisplayed = true;
                    else
                        sm.toBeDisplayed = false;
                    if(myReader["last_modified"] != System.DBNull.Value )
                        sm.lastModified = Convert.ToDateTime(myReader["last_modified"]);
                    if(myReader["message_title"] != System.DBNull.Value )
                        sm.messageTitle= (string) myReader["message_title"];

                    arrayList.Add(sm);

                }
                myReader.Close ();
            }
            catch (Exception ex)
            {
                throw new Exception("Exception thrown SelectSystemMessages",ex);
            }
            finally
            {
                myConnection.Close ();
            }

            // Converting to a SystemMessage array
            SystemMessage[] systemMessages = new SystemMessage[arrayList.Count];
            for (int i=0;i <arrayList.Count ; i++)
            {
                systemMessages[i] = (SystemMessage) arrayList[i];
            }

            return systemMessages;
        }
Esempio n. 11
0
        /// <summary>
        /// to retrieve system message metadata for systemMessages specified by array of systemMessage IDs 
        /// This was a method added later by Shaomin - it was required to display all the system messages for the admin pages
        /// 
        /// Its name was changed from SelectSystemMessagesSuperUser to SelectAdminSystemMessages by Charu on 5/22/04 during the converstion
        /// to the new database
        /// </summary>
        public static SystemMessage[] SelectAdminSystemMessages( int[] systemMessageIDs )
        {
            List<SystemMessage> messages = new List<SystemMessage>();

            DbConnection myConnection = FactoryDB.GetConnection();
            DbCommand myCommand = FactoryDB.CreateCommand("RetrieveSystemMessageByIDForAdmin", myConnection);
            myCommand.CommandType = CommandType.StoredProcedure;
            myCommand.Parameters .Add(FactoryDB.CreateParameter(myCommand,"@messageID",null, DbType.Int32));

            try
            {
                myConnection.Open ();

                for (int i =0; i < systemMessageIDs.Length ; i++)
                {
                    myCommand.Parameters["@messageID"].Value = systemMessageIDs[i];

                    // get systemMessage info from table system_messages
                    DbDataReader myReader = myCommand.ExecuteReader ();
                    while(myReader.Read ())
                    {
                        SystemMessage sm = new SystemMessage();
                        sm.messageID = systemMessageIDs[i];

                        if(myReader["message_body"] != System.DBNull.Value )
                            sm.messageBody = (string) myReader["message_body"];
                        byte tbd = 0;
                        if(myReader["to_be_displayed"] != System.DBNull.Value )
                        {
                            sm.toBeDisplayed = Convert.ToBoolean( myReader["to_be_displayed"]);
                        }
                        if(myReader["description"] != System.DBNull.Value )
                            sm.messageType = (string) myReader["description"];
                        if(myReader["last_modified"] != System.DBNull.Value )
                            sm.lastModified = Convert.ToDateTime(myReader["last_modified"]);
                        if (myReader["client_id"] != System.DBNull.Value)
                            sm.clientID = Convert.ToInt32(myReader["client_id"]);
                        if (myReader["group_id"] != System.DBNull.Value)
                        sm.groupID = Convert.ToInt32(myReader["group_id"]);
                    if (myReader["agent_id"] != System.DBNull.Value)
                        sm.agentID = Convert.ToInt32(myReader["agent_id"]);
                        if(myReader["message_title"] != System.DBNull.Value )
                            sm.messageTitle= (string) myReader["message_title"];
                        messages.Add(sm);
                    }
                    myReader.Close ();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Exception thrown SelectSystemMessages",ex);
            }
            finally
            {
                myConnection.Close ();
            }

            return messages.ToArray();
        }