Commit 616cd333 by Xuan Trung Le

fix bugs

parent 9d7fa59d
require 'rsolr'
require "csv"
require 'uri'
require './app/models/settings.rb'
class Admins::AppliesController < ApplicationController
before_action :authenticate_admin!
def index
if params[:commit]
# get condition here
......@@ -23,30 +26,27 @@ class Admins::AppliesController < ApplicationController
end
def down_csv(applications)
# handle data
data_csv = []
applications.each do |application|
candidate = {}
candidate[:job] = application.job.name
candidate[:name] = application.name
candidate[:email] = application.email
candidate[:cv] = application.cv
candidate[:applied_at] = application.created_at
data_csv << candidate
end
column_names = data_csv.first.keys
send_data ApplyJob.to_csv(column_names, data_csv), filename: "applications-#{Date.today}.csv"
send_data ApplyJob.to_csv(applications), filename: "applications-#{Date.today}.csv"
end
def down_cv_candidate
user = User.find(params[:user_id])
if user.cv.file.exists?
send_file user.cv.path
else
flash[:notice] = 'File not exist!'
redirect_back(fallback_location: root_path)
end
end
private
def connect
url = 'http://localhost:8983/solr/my_solr_collection'
@solr = RSolr.connect url: url
RSolr.connect url: Settings.rsolr.url
end
def query(condition)
# Direct connection
connect
@solr ||= connect
# use get method to query
response = @solr.get 'select', params: condition
response
......@@ -60,6 +60,8 @@ class Admins::AppliesController < ApplicationController
# get condition
condition[:q] = "email:[* TO *]"
condition[:start] = 0
condition[:rows] = ApplyJob.count
filter_query << "email:\"#{params[:email]}\"" if params[:email]
filter_query << "city_name:\"#{params[:city]}\"" unless params[:city].blank?
filter_query << "industry:\"#{params[:industry]}\"" unless params[:industry].blank?
......
class AppliesController < ApplicationController
before_action :admin_can_not_do_this
before_action :authenticate_user!
before_action :check_deadline
def apply
session[:job_id] = params[:job_id] if params[:job_id]
if session[:candidate].present?
......@@ -46,12 +45,4 @@ class AppliesController < ApplicationController
def application_params
params.require(:apply_job).permit(:name, :email, :cv)
end
def check_deadline
job = Job.find(params[:job_id])
if Date.today > job.expiry_date
flash[:notice] = "Job was expiried date"
redirect_back(fallback_location: root_path)
end
end
end
require './app/models/settings.rb'
class JobsController < ApplicationController
before_action :set_job, only: [:show]
def index
@jobs = Job.top_list.includes(:company)
@jobs = Job.top_list.includes(:company).check_expiration_date
@cities = City.top_cities.includes(:country)
@industries = Industry.top_industries
@jobs_count = @jobs.count
......@@ -14,7 +16,7 @@ class JobsController < ApplicationController
def city
city = City.find(params[:city_id])
@jobs = city.jobs.includes(:company)
@jobs = city.jobs.includes(:company).check_expiration_date
@jobs_count = @jobs.count
@jobs = @jobs.page(params[:page])
@result = "jobs/City/#{city.name}"
......@@ -23,7 +25,7 @@ class JobsController < ApplicationController
def industry
industry = Industry.find(params[:industry_id])
@jobs = industry.jobs.includes(:company)
@jobs = industry.jobs.includes(:company).check_expiration_date
@jobs_count = @jobs.count
@jobs = @jobs.page(params[:page])
@result = "jobs/Industry/#{industry.name}"
......@@ -32,7 +34,7 @@ class JobsController < ApplicationController
def company
company = Company.find(params[:company_id])
@jobs = company.jobs
@jobs = company.jobs.check_expiration_date
@jobs_count = @jobs.count
@jobs = @jobs.page(params[:page])
@result = "jobs/Company/#{company.name}"
......@@ -44,7 +46,7 @@ class JobsController < ApplicationController
condition = get_condition
response = query(condition)
job_ids = response["response"]["docs"].pluck("id")
@jobs = Job.where(id: job_ids).includes(:company).page(params[:page])
@jobs = Job.where(id: job_ids).check_expiration_date.includes(:company).page(params[:page])
@jobs_count = job_ids.count
@result = params[:search]
render template: "jobs/job_lists"
......@@ -57,13 +59,12 @@ class JobsController < ApplicationController
end
def connect
url = 'http://localhost:8983/solr/my_solr_collection'
@solr = RSolr.connect url: url
RSolr.connect url: Settings.rsolr.url
end
def query(condition)
# Direct connection
connect
@solr ||= connect
# use get method to query
response = @solr.get 'select', :params => condition
response
......
......@@ -7,4 +7,25 @@ class ApplyJob < ApplicationRecord
# CarrierWave
mount_uploader :cv, CvUploader
def self.to_csv(applications)
data_csv = []
applications.each do |application|
candidate = {}
candidate[:job] = application.job.name
candidate[:name] = application.name
candidate[:email] = application.email
candidate[:cv] = application.cv
candidate[:applied_at] = application.created_at
data_csv << candidate
end
column_names = data_csv.first.keys
CSV.generate do |csv|
csv << column_names
data_csv.each do |item|
csv << item.values
end
end
end
end
......@@ -11,7 +11,8 @@ class Job < ApplicationRecord
has_many :view_jobs
has_many :users_has_viewed, through: :view_jobs, class_name: 'User', source: :user
scope :top_list, -> { order(updated_date: :desc).limit(Settings.top.job_per_page) }
scope :top_list, -> { order(updated_date: :desc).check_expiration_date.limit(Settings.top.job_per_page) }
scope :check_expiration_date, -> { where('NOW() >= expiry_date') }
def self.create_new_jobs(arr_jobs)
arr_jobs.each do |item|
......
<% applications.each do |application| %>
<div class="job-intro well mr0 mrBot20">
<h4 class="mr0"><%= link_to application.job.name, job_path(application.job) %></h4>
<p><%= "Candidate Name: #{application.user.name}" %></p>
<p><%= "Candidate CV: #{application.user.cv}" %></p>
<p> Candidate Name: <%= application.user.name %></p>
<p> Candidate CV: <%= link_to application.user.cv.file.filename, admins_download_cv_path(user_id: application.user_id) %></p>
<p>
<span>Candidate Email: <%= "#{application.user.email}" %></span>
<span class="navbar-right">Applied at: <%= l application.created_at, format: :default %></span>
......
......@@ -3,6 +3,7 @@ Rails.application.routes.draw do
devise_for :admins
namespace :admins do
resources :applies, only: [:index]
get 'download_cv' => 'applies#down_cv_candidate'
root 'applies#index'
end
root 'jobs#index'
......
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