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