fix reviews

parent 7a5094b1
Pipeline #1418 failed with stages
in 0 seconds
class FavoriteJobsController < ApplicationController class FavoriteJobsController < ApplicationController
include ApplicationHelper
def index def index
@favorites = job_query.order_favorite(current_user).page(params[:page]) @favorites = favorite_query.order_favorite(current_user).page(params[:page])
end end
def update def update
favorite = job_query.find_favorite(job_params, current_user) job = Job.find_by(id: params[:job_id]) or not_found
if favorite.empty? favorite = favorite_query.find_favorite(job_params, current_user)
FavoriteJob.create(job: Job.find(params[:job_id]), user: current_user) if favorite.nil?
FavoriteJob.create(job: job, user: current_user)
@favorite_exists = true @favorite_exists = true
else else
favorite.first.destroy favorite.destroy
@favorite_exists = false @favorite_exists = false
end end
respond_to do |format| respond_to do |format|
format.html { redirect_to new_user_session_path, alert: 'Please sign in.' }
format.js {} format.js {}
end end
end end
def destroy def destroy
@favorite = job_query.find_favorite(job_params, current_user).first.destroy @favorite = favorite_query.find_favorite(job_params, current_user).destroy
redirect_to favorite_url redirect_to favorite_url
flash[:success] = "#{@favorite.job.title} was completed and destroyed." flash[:success] = "#{@favorite.job.title} was completed and destroyed."
end end
...@@ -29,7 +33,7 @@ class FavoriteJobsController < ApplicationController ...@@ -29,7 +33,7 @@ class FavoriteJobsController < ApplicationController
params.permit(:job_id) params.permit(:job_id)
end end
def job_query def favorite_query
@job_query ||= FavoriteQuery.new @favorite_query ||= FavoriteQuery.new
end end
end end
class HistoryJobsController < ApplicationController class HistoryJobsController < ApplicationController
def index def index
@histories = job_query.order_history(current_user) @histories = history_query.order_history(current_user)
end end
private private
def job_query def history_query
@job_query ||= HistoryQuery.new @history_query ||= HistoryQuery.new
end end
end end
class JobsController < ApplicationController class JobsController < ApplicationController
after_action :history_action, only: [:show] include ApplicationHelper
after_action :history_action, only: [:show]
def index def index
if params[:city_slug].present? if params[:city_slug].present?
city = City.find_by(slug: params[:city_slug]) city = City.find_by(slug: params[:city_slug])
...@@ -16,18 +17,18 @@ class JobsController < ApplicationController ...@@ -16,18 +17,18 @@ class JobsController < ApplicationController
end end
def show def show
@job = Job.latest_jobs.find_by(slug: params[:job_slug]) @job = Job.find_by(slug: params[:job_slug]) or not_found
@favorite_exists = FavoriteJob.where(job: @job, user: current_user) != [] @favorite_exists = !FavoriteJob.find_by(job: @job, user: current_user).nil?
end end
private private
def history_action def history_action
history = job_query.find_history(job_params, current_user) history = history_query.find_history(job_params, current_user)
if history.empty? if history.nil?
HistoryJob.create(job: Job.find(params[:job_slug]), user: current_user) HistoryJob.create(job: Job.find(params[:job_slug]), user: current_user)
else else
history.touch_all(:updated_at) history.touch(:updated_at)
end end
HistoryJob.first.destroy if HistoryJob.count > 20 HistoryJob.first.destroy if HistoryJob.count > 20
end end
...@@ -36,7 +37,7 @@ class JobsController < ApplicationController ...@@ -36,7 +37,7 @@ class JobsController < ApplicationController
params.permit(:job_slug) params.permit(:job_slug)
end end
def job_query def history_query
@job_query ||= HistoryQuery.new @history_query ||= HistoryQuery.new
end end
end end
...@@ -4,11 +4,11 @@ class FavoriteQuery ...@@ -4,11 +4,11 @@ class FavoriteQuery
end end
def find_favorite(params, current_user) def find_favorite(params, current_user)
@favorites.where(job: Job.find(params[:job_id]), user: current_user) @favorites.find_by(job: Job.find(params[:job_id]), user: current_user)
end end
def find_favorite_slug(params, current_user) def find_favorite_slug(params, current_user)
@favorites.where(job: Job.find(params[:job_slug]), user: current_user) @favorites.find_by(job: Job.find(params[:job_slug]), user: current_user)
end end
def order_favorite(current_user) def order_favorite(current_user)
......
...@@ -8,6 +8,6 @@ class HistoryQuery ...@@ -8,6 +8,6 @@ class HistoryQuery
end end
def find_history(params, current_user) def find_history(params, current_user)
@histories.where(job: Job.find(params[:job_slug]), user: current_user) @histories.find_by(job: Job.find(params[:job_slug]), user: current_user)
end end
end end
\ No newline at end of file
...@@ -28,7 +28,10 @@ ...@@ -28,7 +28,10 @@
p.mb-1 p.mb-1
= truncate(job.overview, length: 250) = truncate(job.overview, length: 250)
.col-sm-2.p-3.favourite .col-sm-2.p-3.favourite
= link_to favorite_text, favorite_update_path(job_id: job.id), id: 'favorite_link', remote: true, class: "btn btn-outline-primary" -unless current_user.favorite_jobs.exists?(job.id)
= link_to favorite_text, favorite_update_path(job_id: job.id), id: 'favorite_link', remote: true, class: "btn btn-outline-primary btn-lg"
-else
= link_to favorite_text, favorite_update_path(job_id: job.id), class: "btn btn-outline-primary btn-lg"
h6.offset-md-4.px-5 h6.offset-md-4.px-5
= page_entries_info @jobs = page_entries_info @jobs
h6.offset-md-4 h6.offset-md-4
......
...@@ -51,4 +51,7 @@ ...@@ -51,4 +51,7 @@
.col.text-end .col.text-end
= link_to "Apply this Job", apply_path(job_id: @job.id), class: "btn btn-outline-primary btn-lg" = link_to "Apply this Job", apply_path(job_id: @job.id), class: "btn btn-outline-primary btn-lg"
.col.text-start .col.text-start
= link_to favorite_text, favorite_update_path(job_id: @job.id), id: 'favorite_link', remote: true, class: "btn btn-outline-primary btn-lg" -if user_signed_in?
= link_to favorite_text, favorite_update_path(job_id: @job.id), id: 'favorite_link', remote: true, class: "btn btn-outline-primary btn-lg"
-else
= link_to favorite_text, favorite_update_path(job_id: @job.id), class: "btn btn-outline-primary btn-lg"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment