Commit 97e95e9f by Nguyen Ngoc Nghia

Merge branch 'feature/favorited_jobs' into 'master'

Feature/favorited jobs

See merge request !23
parents a1a78ac9 dd0b8447
class FavoritesController < ApplicationController
before_action :authenticate_user!, only: [:favorite, :unfavorite]
def favorite
redirect_to jobs_path if params[:job_id].blank?
job_id = params[:job_id]
get_user_job = get_user_job
if get_user_job
@favorite_jobs = get_user_job.update(favorited_at: Time.current)
else
@favorite_jobs = UserJob.create!(user_id: current_user.id, job_id: job_id, favorited_at: Time.current)
end
@favorite_job = UserJob.find_or_initialize_by(user_id: current_user.id, job_id: job_id)
unless @favorite_job.save!
render json: {}
end
redirect_to job_path(job_id)
end
def unfavorite
redirect_to jobs_path if params[:job_id].blank?
job_id = params[:job_id]
@favorited_jobs = get_user_job.update(favorited_at: nil)
redirect_to job_path(job_id)
end
private
def get_user_job
UserJob.find_by(user_id: current_user.id, job_id: params[:job_id])
end
end
class JobsController < ApplicationController
before_action :authenticate_user!, only: [:apply, :confirm_apply, :finish_apply, :applied_jobs]
before_action :authenticate_user!, only: [:apply, :confirm_apply, :finish_apply, :index, :show]
before_action :find_user, only: :apply_available
before_action :validate_city_industry, only: :index
before_action :find_applied_jobs, only: [:apply, :confirm_apply, :finish_apply]
def index
@search = params
......@@ -42,8 +43,8 @@ class JobsController < ApplicationController
if params[:commit] == "Edit"
redirect_to apply_path(job_id: @job_id, params: confirm_apply_info_params)
else
current_user.user_jobs.find_by(user_id: current_user.id, job_id: @job_id) ||
current_user.user_jobs.create!(user_id: current_user.id, job_id: @job_id, applied_at: Time.current)
@all_applied_jobs.find_by(job_id: @job_id) ||
@all_applied_jobs.create!(user_id: current_user.id, job_id: @job_id, applied_at: Time.current)
end
end
......@@ -68,4 +69,8 @@ class JobsController < ApplicationController
redirect_to jobs_path unless Industry.find_by(id: params[:industry_id])
end
end
def find_applied_jobs
@all_applied_jobs = current_user.user_jobs.where.not(applied_at: nil)
end
end
......@@ -7,4 +7,12 @@ module JobHelper
def job_applied_at(job)
job.user_jobs.find_by(user_id: current_user.id).applied_at
end
def verify_favorited_job
UserJob.where.not(favorited_at: nil).find_by(user_id: current_user.id, job_id: @job.id)
end
def verify_applied_job
UserJob.find_by(user_id: current_user.id, job_id: @job.id)&.applied_at
end
end
$("#favorite_form").html("<%= escape_javascript(render "shared/favorite_btn") %>");
$("#favorite_form").html("<%= escape_javascript(render "shared/unfavorite_btn") %>");
......@@ -17,5 +17,4 @@
<dd><%= job["city"] %></dd>
</dl>
</div>
<button type="button" class="btn btn-outline-secondary">Favorite</button>
</div>
......@@ -31,8 +31,15 @@
</div>
<div class="job_detail_button">
<%= link_to "Favorite", "#", class: "btn btn-primary float-right" %>
<% if user_signed_in? && @job.apply_available(current_user) %>
<div id="favorite_form">
<% if verify_favorited_job %>
<%= render "shared/unfavorite_btn" %>
<% else %>
<%= render "shared/favorite_btn" %>
<% end %>
</div>
<% if user_signed_in? && verify_applied_job %>
<button type="button" class="btn btn-primary float-right mx-3" disabled>Apply</button>
<% else %>
<%= link_to "Apply", apply_path(job_id: @job.id), class: "btn btn-primary float-right mx-3" %>
......
<% if user_signed_in? %>
<%= form_tag(favorite_path(job_id: @job.id), remote: true) do %>
<%= submit_tag "Favorite", class: "btn btn-primary float-right" %>
<% end %>
<% else %>
<button type="button" class="btn btn-primary float-right" disabled>Favorite</button>
<% end %>
<% if user_signed_in? %>
<%= form_tag(unfavorite_path(job_id: @job.id), remote: true) do %>
<%= submit_tag "Unfavorite", class: "btn btn-primary float-right" %>
<% end %>
<% else %>
<button type="button" class="btn btn-primary float-right" disabled>Unfavorite</button>
<% end %>
<% provide(:title, "Favorite") %>
<h1>VeNJOB Favorite</h1>
......@@ -22,6 +22,7 @@ default: &default
secure_auth: false
timeout: 5000
socket: /var/run/mysqld/mysqld.sock
reconnect: true
development:
<<: *default
......
......@@ -21,4 +21,7 @@ Rails.application.routes.draw do
end
end
get "admin", to: "admins#index", as: :admin
post "favorite", to: "favorites#favorite"
post "unfavorite", to: "favorites#unfavorite"
end
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