public NemesisHistoryData GetNemesisHistory(int playerId, int numberOfPreviousNemesisToReturn)
{
NemesisHistoryData nemesisHistoryData = new NemesisHistoryData();
var nemesisData = (from Nemesis nemesis in dataContext.GetQueryable<Nemesis>().Include(nem => nem.NemesisPlayer)
where nemesis.MinionPlayerId == playerId
select new
{
Nemesis = nemesis,
IsCurrentNemesis = nemesis.MinionPlayer.NemesisId == nemesis.Id
})
.OrderByDescending(nem => nem.Nemesis.DateCreated)
//Take an additional one record in case the first one is the current Nemesis
.Take(numberOfPreviousNemesisToReturn + 1)
.ToList();
if (nemesisData.Count > 0)
{
int startIndexOfPreviousNemeses = 0;
if (nemesisData[0].IsCurrentNemesis)
{
nemesisHistoryData.CurrentNemesis = nemesisData[0].Nemesis;
startIndexOfPreviousNemeses = 1;
}
for(int i = startIndexOfPreviousNemeses; i < nemesisData.Count; i++)
{
nemesisHistoryData.PreviousNemeses.Add(nemesisData[i].Nemesis);
}
}
if (nemesisHistoryData.CurrentNemesis == null)
{
nemesisHistoryData.CurrentNemesis = new NullNemesis();
}
return nemesisHistoryData;
}