LifePex/src/systems/achievement.rb

48 lines
1.9 KiB
Ruby

require_relative "./csrf.rb"
require_relative "./auth.rb"
class LifePex::Systems::AchievementSystem < LifePex::Systems::AuthSystem
include LifePex::Systems::CrlfHelper
get "/achievements", auth: [] do
achievements = LifePex::Achievement.where(user_id: current_user_id).all
slim :achievements, locals: { achievements: achievements }
end
get "/achievements/new", auth: [] do
success = LifePex::AchievementDSL::Includer::SUCCESS_INDEX[params["successName"]]
slim :achievement_form, locals: { success: success }
end
post "/achievements", auth: [] do
success = LifePex::AchievementDSL::Includer::SUCCESS_INDEX[params["successName"]]
begin
parameters_json = success.format_parameters_hash(params["inputParams"]).to_json
achievement = LifePex::Achievement.new(
user_id: current_user_id,
success_name: params["successName"],
name: params["inputName"],
icon: params["inputMedal"],
parameters_json: parameters_json,
).save
achievements = LifePex::Achievement.where(user_id: current_user_id).all
slim :achievements, locals: { achievements: achievements, flash: { success: "Added achievements '#{achievement.name}" } }
rescue => err
success = LifePex::AchievementDSL::Includer::SUCCESS_INDEX[params["successName"]]
slim :achievement_form, locals: { success: success, flash: { danger: err.message } }
end
end
post "/achievements/delete", auth: [] do
amount = LifePex::Achievement.where(user_id: current_user_id, id: params['id']).destroy
achievements = LifePex::Achievement.where(user_id: current_user_id).all
slim :achievements, locals: { achievements: achievements, flash: { success: "Removed #{amount} achievements" } }
end
# include JSON::API
# extend DocMyRoutes::Annotatable
# register Sinatra::Namespace
# include LifePex::Systems::ApiList
end