From 296fa0187c110fdabf2bb297deca0c83d6f8bd9c Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Thu, 1 Dec 2022 04:46:53 -0800 Subject: [PATCH] Save base job skills on job change --- app/controllers/api/v1/parties_controller.rb | 244 +++++++++++-------- 1 file changed, 141 insertions(+), 103 deletions(-) diff --git a/app/controllers/api/v1/parties_controller.rb b/app/controllers/api/v1/parties_controller.rb index c25c709..a3553c5 100644 --- a/app/controllers/api/v1/parties_controller.rb +++ b/app/controllers/api/v1/parties_controller.rb @@ -1,123 +1,161 @@ class Api::V1::PartiesController < Api::V1::ApiController - before_action :set_from_slug, except: ['create', 'destroy', 'update', 'index', 'favorites'] - before_action :set, only: ['update', 'destroy'] + before_action :set_from_slug, + except: %w[create destroy update index favorites] + before_action :set, only: %w[update destroy] - def create - @party = Party.new(shortcode: random_string) - @party.extra = party_params['extra'] - - if current_user - @party.user = current_user + def create + @party = Party.new(shortcode: random_string) + @party.extra = party_params["extra"] + + @party.user = current_user if current_user + + render :show, status: :created if @party.save! + end + + def show + render_not_found_response if @party.nil? + end + + def update + if @party.user != current_user + render_unauthorized_response + else + @party.attributes = party_params + + if party_params["job_id"].present? + job_skills = JobSkill.where(job_id: party_params["job_id"], main: true) + job_skills.each_with_index do |skill, i| + @party["skill#{i}_id"] = skill.id end + ap @party + end - render :show, status: :created if @party.save! + render :update, status: :ok if @party.save! end + end - def show - render_not_found_response if @party.nil? - end + def index + @per_page = 15 - def index - @per_page = 15 + now = DateTime.current + start_time = + ( + now - request.params["recency"].to_i.seconds + ).to_datetime.beginning_of_day unless request.params["recency"].blank? - now = DateTime.current - start_time = (now - request.params['recency'].to_i.seconds).to_datetime.beginning_of_day unless request.params['recency'].blank? + conditions = {} + conditions[:element] = request.params["element"] unless request.params[ + "element" + ].blank? + conditions[:raid] = request.params["raid"] unless request.params[ + "raid" + ].blank? + conditions[:created_at] = start_time..now unless request.params[ + "recency" + ].blank? + conditions[:weapons_count] = 5..13 - conditions = {} - conditions[:element] = request.params['element'] unless request.params['element'].blank? - conditions[:raid] = request.params['raid'] unless request.params['raid'].blank? - conditions[:created_at] = start_time..now unless request.params['recency'].blank? - conditions[:weapons_count] = 5..13 - - @parties = Party - .where(conditions) - .order(created_at: :desc) - .paginate(page: request.params[:page], per_page: @per_page) - .each { |party| - party.favorited = (current_user) ? party.is_favorited(current_user) : false - } - @count = Party.where(conditions).count - - render :all, status: :ok - end - - def favorites - raise Api::V1::UnauthorizedError unless current_user - - @per_page = 15 - - now = DateTime.current - start_time = (now - params['recency'].to_i.seconds).to_datetime.beginning_of_day unless request.params['recency'].blank? - - conditions = {} - conditions[:element] = request.params['element'] unless request.params['element'].blank? - conditions[:raid] = request.params['raid'] unless request.params['raid'].blank? - conditions[:created_at] = start_time..now unless request.params['recency'].blank? - conditions[:favorites] = { user_id: current_user.id } - - @parties = Party - .joins(:favorites) - .where(conditions) - .order('favorites.created_at DESC') - .paginate(page: request.params[:page], per_page: @per_page) - .each { |party| - party.favorited = party.is_favorited(current_user) - } - @count = Party.joins(:favorites).where(conditions).count - - render :all, status: :ok - end - - def update - if @party.user != current_user - render_unauthorized_response - else - @party.attributes = party_params - render :update, status: :ok if @party.save! + @parties = + Party + .where(conditions) + .order(created_at: :desc) + .paginate(page: request.params[:page], per_page: @per_page) + .each do |party| + party.favorited = + (current_user) ? party.is_favorited(current_user) : false end - end + @count = Party.where(conditions).count - def destroy - if @party.user != current_user - render_unauthorized_response - else - render :destroyed, status: :ok if @party.destroy - end - end + render :all, status: :ok + end - def weapons - render_not_found_response if @party.nil? - render :weapons, status: :ok - end + def favorites + raise Api::V1::UnauthorizedError unless current_user - def summons - render_not_found_response if @party.nil? - render :summons, status: :ok - end + @per_page = 15 - def characters - render_not_found_response if @party.nil? - render :characters, status: :ok - end + now = DateTime.current + start_time = + ( + now - params["recency"].to_i.seconds + ).to_datetime.beginning_of_day unless request.params["recency"].blank? - private + conditions = {} + conditions[:element] = request.params["element"] unless request.params[ + "element" + ].blank? + conditions[:raid] = request.params["raid"] unless request.params[ + "raid" + ].blank? + conditions[:created_at] = start_time..now unless request.params[ + "recency" + ].blank? + conditions[:favorites] = { user_id: current_user.id } - def random_string - numChars = 6 - o = [('a'..'z'), ('A'..'Z'), (0..9)].map(&:to_a).flatten - return (0...numChars).map { o[rand(o.length)] }.join - end + @parties = + Party + .joins(:favorites) + .where(conditions) + .order("favorites.created_at DESC") + .paginate(page: request.params[:page], per_page: @per_page) + .each { |party| party.favorited = party.is_favorited(current_user) } + @count = Party.joins(:favorites).where(conditions).count - def set_from_slug - @party = Party.where("shortcode = ?", params[:id]).first - @party.favorited = (current_user && @party) ? @party.is_favorited(current_user) : false - end + render :all, status: :ok + end - def set - @party = Party.where("id = ?", params[:id]).first + def destroy + if @party.user != current_user + render_unauthorized_response + else + render :destroyed, status: :ok if @party.destroy end + end - def party_params - params.require(:party).permit(:user_id, :extra, :name, :description, :raid_id, :job_id) - end -end \ No newline at end of file + def weapons + render_not_found_response if @party.nil? + render :weapons, status: :ok + end + + def summons + render_not_found_response if @party.nil? + render :summons, status: :ok + end + + def characters + render_not_found_response if @party.nil? + render :characters, status: :ok + end + + private + + def random_string + numChars = 6 + o = [("a".."z"), ("A".."Z"), (0..9)].map(&:to_a).flatten + return (0...numChars).map { o[rand(o.length)] }.join + end + + def set_from_slug + @party = Party.where("shortcode = ?", params[:id]).first + @party.favorited = + (current_user && @party) ? @party.is_favorited(current_user) : false + end + + def set + @party = Party.where("id = ?", params[:id]).first + end + + def party_params + params.require(:party).permit( + :user_id, + :extra, + :name, + :description, + :raid_id, + :job_id, + :skill1_id, + :skill2_id, + :skill3_id, + ) + end +end