Bitboxx.DNNModules.BBImageStory.Components.DbController.GetLastStory C# (CSharp) Method

GetLastStory() public method

public GetLastStory ( int moduleId, int portalId, string token, string language, bool ignoreTime ) : StoryInfo
moduleId int
portalId int
token string
language string
ignoreTime bool
return Bitboxx.DNNModules.BBImageStory.Models.StoryInfo
        public StoryInfo GetLastStory(int moduleId, int portalId, string token, string language, bool ignoreTime)
        {
            using (IDataContext ctx = DataContext.Instance())
            {
                string sqlCmd = ";WITH cte as (SELECT StoryId, Title, Story FROM {databaseOwner}[{objectQualifier}" + Prefix + "StoryLang] WHERE Language = @1)" +
                                " SELECT TOP 1 story.*,cte.Title, cte.Story, " +
                                " (SELECT Username FROM {databaseOwner}[{objectQualifier}Users] users WHERE story.CreatedByUserID = users.UserID) AS CreatedByUserName," +
                                " (SELECT Username FROM {databaseOwner}[{objectQualifier}Users] users WHERE story.LastModifiedByUserID = users.UserID) AS LastModifiedByUserName," +
                                " (SELECT TOP 1 (dnnFiles.Folder + dnnFiles.FileName) " +
                                "   FROM {databaseOwner}[{objectQualifier}" + Prefix + "ForeignImage] ForeignImage" +
                                "   INNER JOIN {databaseOwner}[{objectQualifier}" + Prefix + "Image] [Image] ON ForeignImage.ImageId = Image.ImageId" +
                                "   INNER JOIN {databaseOwner}[{objectQualifier}Files] dnnFiles ON Image.FileId = dnnFiles.FileId" +
                                "       WHERE ForeignImage.ForeignId = story.StoryId AND ForeignImage.ForeignToken = @0 " +
                                "       ORDER BY ForeignImage.ViewOrder) AS StoryImage" +
                                " FROM {databaseOwner}[{objectQualifier}" + Prefix + "Story] story" +
                                " LEFT JOIN cte ON story.storyId = cte.StoryId";

                string where = ignoreTime ? " WHERE 1=1" : " WHERE (StartDate IS NULL OR StartDate < GetDate()) AND (EndDate IS NULL OR DATEADD(day,1,EndDate) >= GetDate())";
                string order = " ORDER BY story.CreatedOnDate DESC";

                if (moduleId > -1 && portalId > -1)
                {
                    where += " AND portalId = @2 AND moduleId = @3";
                    return ctx.ExecuteQuery<StoryInfo>(CommandType.Text, sqlCmd + where + order, token, language, portalId, moduleId).FirstOrDefault();
                }

                if (moduleId > -1 && portalId == -1)
                {
                    where += " AND moduleId = @2";
                    return ctx.ExecuteQuery<StoryInfo>(CommandType.Text, sqlCmd + where + order, token, language, moduleId).FirstOrDefault();
                }

                if (moduleId == -1 && portalId > -1)
                {
                    where += " AND portalId = @2";
                    return ctx.ExecuteQuery<StoryInfo>(CommandType.Text, sqlCmd + where + order, token, language, portalId).FirstOrDefault();
                }

                return ctx.ExecuteQuery<StoryInfo>(CommandType.Text, sqlCmd + where + order, token, language).FirstOrDefault();
            }
        }