/// <summary>
        /// Get only the records with SendNewsletter enabled from the "Users" database table.
        /// </summary>
        /// <param name="portalID">The portal ID.</param>
        /// <returns></returns>
        public IList<dynamic> GetUsersNewsletter(int portalID)
        {
            var model = new DynamicModel(connectionStringName: "ConnectionString");
            var users = model.Fetch(@"
                SELECT mem.UserId, prof.Name, mem.Email
                FROM aspnet_Membership mem INNER JOIN
                     aspnet_CustomProfile prof ON mem.UserId = prof.UserId INNER JOIN
                     aspnet_Applications app ON mem.ApplicationId = app.ApplicationId INNER JOIN
                     rb_Portals por ON LOWER(por.PortalAlias) = app.LoweredApplicationName
                WHERE
                     por.PortalID = @0 AND prof.SendNewsletter = 1
                     AND (NOT (mem.Email IN (SELECT Email FROM rb_BlackList WHERE PortalID = @0)))", portalID);

            // Return the list
            return users;
        }
 private static dynamic GetFaultyModule(Exception exception, int pageId)
 {
     var trace = new System.Diagnostics.StackTrace(exception);
     var model = new DynamicModel(connectionStringName: "ConnectionString");
     var query = string.Concat(@"
             SELECT m.ModuleDefID
             FROM rb_GeneralModuleDefinitions gmd INNER JOIN
                     rb_ModuleDefinitions md ON gmd.GeneralModDefID = md.GeneralModDefID INNER JOIN
                     rb_Modules m ON md.ModuleDefID = m.ModuleDefID INNER JOIN
                     rb_Pages p ON p.PageID = m.TabID AND md.PortalID = p.PortalID
             WHERE m.TabID = ", pageId.ToString(), @"
               AND gmd.ClassName = @0 ");
     var lastTypeWithError_FullName = string.Empty;
     foreach (var frame in trace.GetFrames())
     {
         var typeWithError = frame.GetMethod().ReflectedType;
         if (lastTypeWithError_FullName == typeWithError.FullName)
         {
             continue;
         }
         lastTypeWithError_FullName = typeWithError.FullName;
         var mids = model.Fetch(query, lastTypeWithError_FullName);
         if (mids.Count > 0)
         {
             dynamic firstResult = mids[0];
             dynamic result = new ExpandoObject();
             result.Message = string.Concat(exception.Message, " \r\n", exception.StackTrace);
             result.ModuleDefID = firstResult.ModuleDefID;
             return result;
         }
     }
     if (exception.InnerException != null)
     {
         return GetFaultyModule(exception.InnerException, pageId);
     }
     return null;
 }