Search code examples
asp.net-mvclinqdotnetnukedotnetnuke-module

Adding a parameter to GetItems in DotNetNuke sample Module


Below is the code from the DotNetNuke Sample module that gets a collection of items from the database that belong to a particular module. What I want is add a second parameter for it filter by. I'm guessing this has something to do with modifying the scope item.cs class but am not sure how exactly.

    public IEnumerable<Item> GetItems(int moduleId)
    {
        IEnumerable<Item> t;
        using (IDataContext ctx = DataContext.Instance())
        {
            var rep = ctx.GetRepository<Item>();
            t = rep.Get(moduleId);
        }
        return t;
    }

Any ideas?


Solution

  • Here's some sample code from my SignalRChat module that uses DAL2 (http://signalrchat.codeplex.com/SourceControl/changeset/view/71473#1272188)

    public IEnumerable<Message> GetRecentMessages(int moduleId, int hoursBackInTime, int maxRecords)
            {
                var messages = (from a in this.GetMessages(moduleId) where a.MessageDate.Subtract(DateTime.UtcNow).TotalHours <= hoursBackInTime select a).Take(maxRecords).Reverse();
    
                return messages.Any() ? messages : null;
            }
    

    That is one approach, you can also use a SQL statement within the controller as well (http://signalrchat.codeplex.com/SourceControl/changeset/view/71473#1272186)

    public ConnectionRecord GetConnectionRecordByConnectionId(string connectionId)
            {
                ConnectionRecord t;
                using (IDataContext ctx = DataContext.Instance())
                {
                    var connections = ctx.ExecuteQuery<ConnectionRecord>(CommandType.Text,
                                                           string.Format(
                                                               "select top 1 * from {0}{1}SignalRChat_ConnectionRecords where ConnectionId = '{2}'",
                                                               _databaseOwner,
                                                               _objectQualifier,
                                                              connectionId)).ToList();
    
                    if (connections.Any())
                    {
                        t = connections[0];
                    }
                    else
                        return null;
                }
                return t;
            }