48 lines
1.9 KiB
Ruby
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
|