Commit 14fbc146 by Xuan Trung Le

paging with solr

parent 616cd333
......@@ -25,13 +25,19 @@ $(document).ready(function(){
});
$('.form_date').datetimepicker({
language: 'fr',
language: 'en',
weekStart: 1,
todayBtn: 1,
todayBtn: 1,
autoclose: 1,
todayHighlight: 1,
startView: 2,
minView: 2,
forceParse: 0
});
// set min-height css for content
windowHeight = $(document).height();
menuHeight = $('.navbar').height();
footHeight = $('.footer').height();
$('.content').css("min-height", windowHeight - (menuHeight + footHeight))
});
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
condition = get_condition
# get applications from query
response = query(condition)
job_id = response["response"]["docs"].pluck("id")
job_ids = response["response"]["docs"].pluck("id")
@applications = ApplyJob.where(job_id: job_id).includes(:job, :user)
application_count = response["response"]["numFound"]
applications = ApplyJob.where(job_id: job_ids).includes(:job, :user)
@applications = Kaminari.paginate_array(applications, total_count: application_count).page(params[:page])
if params[:commit].eql? 'Down csv'
down_csv(@applications)
return
end
else
# get applications
@applications = ApplyJob.includes(:job, :user)
@applications = ApplyJob.includes(:job, :user).page(params[:page])
end
end
......@@ -30,25 +29,23 @@ class Admins::AppliesController < ApplicationController
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
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
RSolr.connect url: Settings.rsolr.url
def solr_connect
@solr ||= RSolr.connect url: Settings.rsolr.url
end
def query(condition)
# Direct connection
@solr ||= connect
# use get method to query
response = @solr.get 'select', params: condition
response = solr_connect.get 'select', params: condition
response
end
......@@ -57,11 +54,13 @@ class Admins::AppliesController < ApplicationController
filter_query = []
date_from = '*'
date_to = 'NOW'
condition[:fl] = "id"
start = params[:page].to_i > 1 ? params[:page].to_i - 1 : 0
# get condition
condition[:q] = "email:[* TO *]"
condition[:start] = 0
condition[:rows] = ApplyJob.count
condition[:start] = Settings.top.job_per_history_page * start
condition[:rows] = Settings.top.job_per_history_page
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?
......
......@@ -42,12 +42,12 @@ class JobsController < ApplicationController
end
def search
# byebug
condition = get_condition
response = query(condition)
job_ids = response["response"]["docs"].pluck("id")
@jobs = Job.where(id: job_ids).check_expiration_date.includes(:company).page(params[:page])
@jobs_count = job_ids.count
@jobs_count = response["response"]["numFound"]
jobs = Job.where(id: job_ids).check_expiration_date.includes(:company)
@jobs = Kaminari.paginate_array(jobs, total_count: @jobs_count).page(params[:page])
@result = params[:search]
render template: "jobs/job_lists"
end
......@@ -58,28 +58,27 @@ class JobsController < ApplicationController
@job = Job.find(params[:id])
end
def connect
RSolr.connect url: Settings.rsolr.url
def solr_connect
@solr ||= RSolr.connect url: Settings.rsolr.url
end
def query(condition)
# Direct connection
@solr ||= connect
# use get method to query
response = @solr.get 'select', :params => condition
response = solr_connect.get 'select', params: condition
response
end
def get_condition
condition = {}
filter_query = []
start = params[:page].to_i > 1 ? params[:page].to_i - 1 : 0
# get condition
condition[:q] = "*:*"
condition[:fl] = "id"
condition[:start] = 0
condition[:rows] = Job.count
unless params[:search].blank?
condition[:start] = Settings.top.job_per_history_page * start
condition[:rows] = Settings.top.job_per_history_page
if params[:search].present?
filter_query << "name:\"#{params[:search]}\" ||
company_name:\"#{params[:search]}\" ||
city_name:\"#{params[:search]}\" ||
......
......@@ -12,7 +12,7 @@ class Job < ApplicationRecord
has_many :users_has_viewed, through: :view_jobs, class_name: 'User', source: :user
scope :top_list, -> { order(updated_date: :desc).check_expiration_date.limit(Settings.top.job_per_page) }
scope :check_expiration_date, -> { where('NOW() >= expiry_date') }
scope :check_expiration_date, -> { where('expiry_date > ?', Time.current + 1.day) }
def self.create_new_jobs(arr_jobs)
arr_jobs.each do |item|
......
<div class="row">
<div class="row content">
<div class="container">
<div class="col-md-12 search mt-20">
<%= form_tag admins_applies_path, method: :get, class: "search-form" do %>
......@@ -39,5 +39,8 @@
<%= render "admins/applies/application", applications: @applications %>
</div>
</div>
<div class="pagination navbar-right">
<%= paginate @applications %>
</div>
</div>
</div>
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