33 lines
1.7 KiB
Ruby
33 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class AchievementsController < ProtectedController
|
|
def index
|
|
@wow_achievement_categories = WowAchievementCategory.base_categories.order(display_order: :asc)
|
|
@wow_achievements = nil
|
|
@wow_last_completed_achievements = CompletedWowAchievement.where(
|
|
wow_character: current_user.wow_characters
|
|
).includes(:wow_character, wow_achievement: :wow_achievement_criterium).order(completed_timestamp: :desc).first(5)
|
|
@wow_achievement_category = nil
|
|
end
|
|
|
|
def show
|
|
@wow_achievement_category = WowAchievementCategory.find(params[:id])
|
|
@wow_achievement_categories = @wow_achievement_category.child_categories.order(display_order: :asc)
|
|
@wow_achievements = @wow_achievement_category.wow_achievements.includes(
|
|
wow_achievement_criterium: :child_criteria
|
|
).order(display_order: :asc)
|
|
end
|
|
end
|
|
|
|
# TODO
|
|
# Find a way to get the last achievement accomplished that were not already achievement by another character
|
|
# This will return all WowAchievement only completed by one character of the current user
|
|
# achievements = WowAchievement.joins(:completed_wow_achievements).where('completed_wow_achievements.wow_character_id': current_user.wow_characters).group(:id).having("count(completed_wow_achievements.id) < 2")
|
|
#
|
|
# This will return all the CompletedWowAchievement of the previous list
|
|
# completed_achievements = CompletedWowAchievement.where(wow_character: current_user.wow_characters, wow_achievement: achievements)
|
|
#
|
|
# The problem is that these completed_achivements all have a completed_timestamp at Thu, 01 Jan 1970 00:00:00.000000000 UTC +00:00
|
|
#
|
|
# It's probably required to use the WowAchievementCriterium to sort that
|