Allow unsetting of jobs

Unsetting a job also removes all of its skills
This commit is contained in:
Justin Edmund 2022-12-23 15:42:46 -08:00
parent 464fe2f1aa
commit 8b69a44d83

View file

@ -10,29 +10,36 @@ module Api
end end
def update_job def update_job
raise NoJobProvidedError unless job_params[:job_id].present? if job_params[:job_id] != -1
# Extract job and find its main skills
old_job = @party.job
job = Job.find(job_params[:job_id])
main_skills = JobSkill.where(job: job.id, main: true)
# Extract job and find its main skills # Update the party
old_job = @party.job ap job
job = Job.find(job_params[:job_id]) @party.job = job
main_skills = JobSkill.where(job: job.id, main: true) main_skills.each_with_index do |skill, index|
@party["skill#{index}_id"] = skill.id
end
# Update the party # Check for incompatible Base and EMP skills
@party.job = job %w[skill1_id skill2_id skill3_id].each do |key|
main_skills.each_with_index do |skill, index| @party[key] = nil if @party[key] && mismatched_skill(@party.job, JobSkill.find(@party[key]))
@party["skill#{index}_id"] = skill.id end
end
# Check for incompatible Base and EMP skills # Remove extra subskills if necessary
%w[skill1_id skill2_id skill3_id].each do |key| if old_job &&
@party[key] = nil if @party[key] && mismatched_skill(@party.job, JobSkill.find(@party[key])) %w[1 2 3].include?(old_job.row) &&
end %w[4 5 ex2].include?(job.row) &&
@party.skill1.sub && @party.skill2.sub && @party.skill3.sub
# Remove extra subskills if necessary @party['skill3_id'] = nil
if %w[1 2 3].include?(old_job.row) && end
%w[4 5 ex2].include?(job.row) && else
@party.skill1.sub && @party.skill2.sub && @party.skill3.sub @party.job = nil
@party['skill3_id'] = nil %w[skill0_id skill1_id skill2_id skill3_id].each do |key|
@party[key] = nil
end
end end
render json: PartyBlueprint.render(@party, view: :jobs) if @party.save! render json: PartyBlueprint.render(@party, view: :jobs) if @party.save!