public static IEnumerable<EnemyFleetViewModel> OrderFleets(this IEnumerable<EnemyFleetViewModel> fleets)
{
return fleets.OrderByDescending(enemy => enemy.Fleet.Rank.FirstOrDefault(x => x == 3))
.ThenByDescending(enemy => enemy.Fleet.Rank.FirstOrDefault(x => x == 2))
.ThenByDescending(enemy => enemy.Fleet.Rank.FirstOrDefault(x => x == 1))
.ThenBy(enemy => enemy.EnemyShips.Length)
.ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(0)?.Ship?.Id ?? 0)
.ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(1)?.Ship?.Id ?? 0)
.ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(2)?.Ship?.Id ?? 0)
.ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(3)?.Ship?.Id ?? 0)
.ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(4)?.Ship?.Id ?? 0)
.ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(5)?.Ship?.Id ?? 0)
.ThenBy(enemy => enemy.Key);
}