/// <summary>
/// Gets the dashboarditems of the player
/// </summary>
/// <param name="amount">Number of items to be returned</param>
/// <returns>Enumeration of Dashboarditems</returns>
public IEnumerable<DashboardItem> GetDashboardItems(int amount)
{
var messageSystem = this.LogicSession.GetLogicHandler<IMessageSystemLogic>();
var playerActionLogic = this.LogicSession.GetLogicHandler<IPlayerActionLogic>();
var languageHandler = this.LogicSession.GetLogicHandler<ILanguageHandler>();return from y in
((from x in messageSystem.GetMessages(this.playerLogic.PlayerId)
orderby x.Created
select x).Take(amount))
let z = playerActionLogic.GetPlayer(y.SenderId)
let playername = z == null ?
languageHandler["/web/messagespage/system"] :
z.GetData().Playername
select new DashboardItem(
playername,
y.Subject +
(!string.IsNullOrEmpty (y.Content) ? " – " + y.Content : string.Empty),
DashboardItem.DefaultType.Message,
DateTime.Now);
}
Hin und wieder muss man einfach mal unkonventionell programmieren. Nicht das schönste Query, aber es funktioniert.