/// <summary>
        /// Created By: Luke Frahm 4/22/2016
        /// Update an existing announcement as changed by user and pass it to data access.
        /// </summary>
        /// <param name="announcement">Announcement object with all object details.</param>
        /// <returns>Boolean based on result from data access layer.</returns>
        public bool UpdateAnnouncement(Announcements announcement)
        {
            bool success;

            try
            {
                success = AnnouncementAccessor.UpdateAnnouncement(announcement);
            }
            catch (Exception)
            {
                throw;
            }
            return(success);
        }
        /// <summary>
        /// Created By: Luke Frahm 4/22/2016
        /// Retrieve a list of all announcements from a group.
        /// </summary>
        /// <param name="groupID">The ID of the group to query for announcements.</param>
        /// <returns>List of announcements based on result from data access layer.</returns>
        public List <Announcements> GetAnnouncementsByGroupID(int groupID)
        {
            var announcements = new List <Announcements>();

            try
            {
                announcements = AnnouncementAccessor.RetrieveAnnouncementsByGroupID(groupID);
            }
            catch (Exception)
            {
                throw;
            }

            return(announcements);
        }
        /// <summary>
        /// Created By: Luke Frahm 4/22/2016
        /// Take a new announcement created by user and pass it to data access.
        /// </summary>
        /// <param name="announcement">Announcement object with all object details.</param>
        /// <returns>Boolean based on result from data access layer.</returns>
        public bool CreateAnnouncement(int groupID, string Content, string username)
        {
            bool success;

            try
            {
                var user = UserAccessor.RetrieveUserByUsername(username);
                success = AnnouncementAccessor.CreateAnnouncement(groupID, Content, user);
            }
            catch (Exception)
            {
                success = false;
            }
            return(success);
        }
        /// <summary>
        /// Created By: Luke Frahm 4/22/2016
        /// Retrieve a list of most recent 10 announcements from a group.
        /// </summary>
        /// <param name="userID">User ID from logged in user to retrieve announcements at time of log in.</param>
        /// <returns>List of announcements based on result from data access layer.</returns>
        public List <Announcements> GetAnnouncementsByGroupIDTop10(int userID)
        {
            // create group manager and IEnumerable<Group> to hold group
            GroupManager gm = new GroupManager();
            var          gl = gm.GetUserGroups(userID);

            // initialize Lists to hold announcements
            var allAnnouncments = new List <Announcements>();
            var announcements   = new List <Announcements>();

            try
            {
                // search in each group the user belongs to
                foreach (var g in gl)
                {
                    // search and add 10 most recent announcements for the group
                    announcements = AnnouncementAccessor.RetrieveAnnouncementsByGroupIDTop10(g.GroupID);

                    // add these announcements to a list to be sent back: this holds all messages for all groups
                    foreach (var a in announcements)
                    {
                        allAnnouncments.Add(a);
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }

            // sort announcements by date: most recent at top
            allAnnouncments.Sort((x, y) => x.Date.CompareTo(y.Date));
            allAnnouncments.Reverse();

            announcements.Clear();
            for (int i = 0; i < 10 && i < allAnnouncments.Count; i++)
            {
                announcements.Add(allAnnouncments.ElementAt(i));
            }
            return(announcements);
        }