Files
OurUmbraco/uForum/Models/TopicCommentRelator.cs
T
2015-03-02 16:39:05 +11:00

48 lines
1.5 KiB
C#

using System.Collections.Generic;
namespace uForum.Models
{
class TopicCommentRelator
{
private ReadOnlyTopic _current;
public ReadOnlyTopic Map(ReadOnlyTopic topic, ReadOnlyComment comment)
{
// Terminating call. Since we can return null from this function
// we need to be ready for PetaPoco to callback later with null
// parameters
if (topic == null)
return _current;
// Is this the same Topic as the current one we're processing
if (_current != null && _current.Id == topic.Id)
{
// Yes, just add this Comment to the current Topic's collection of Comments
if (comment.Id > 0)
{
_current.Comments.Add(comment);
}
// Return null to indicate we're not done with this Topic yet
return null;
}
// This is a different Topic to the current one, or this is the
// first time through and we don't have an Topic yet
// Save the current Topic
var prev = _current;
// Setup the new current topic
_current = topic;
_current.Comments = new List<ReadOnlyComment>();
if (comment.Id > 0)
{
_current.Comments.Add(comment);
}
// Return the now populated previous author (or null if first time through)
return prev;
}
}
}