Commit 48aecf01 by Xuan Trung Le

download csv file

parent 5297dcb4
......@@ -14,12 +14,13 @@
//= require_tree .
//= require jquery-3.2.1.min.js
//= require bootstrap.min.js
//= require bootstrap.min.js
//= require bootstrap-datetimepicker.min.js
$(document).ready(function(){
// this function to hide message after 5s
$('.message').delay(5000).fadeOut('slow');
// this function to select date
$('.form_date').datetimepicker({
language: 'en',
weekStart: 1,
......@@ -30,4 +31,10 @@ $(document).ready(function(){
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))
});
@import "bootstrap-theme.min.css";
@import "bootstrap.min.css";
@import "font-awesome.css";
@import "stylesheets/font-awesome.css";
@import "bootstrap-datetimepicker.min.css";
......
require 'rsolr'
require "csv"
class Admins::AppliesController < ApplicationController
def index
@cities = City.pluck(:id, :name)
if params[:commit]
# get condition here
condition = get_condition
# get applications from query
response = query(condition)
job_id = response["response"]["docs"].pluck("id")
@applications = ApplyJob.where(job_id: job_id).includes(:job, :user)
if params[:commit].eql? 'Down csv'
flash[:notice] = 'Down csv'
down_csv(@applications)
end
else
# get applications
@applications = ApplyJob.includes(:job, :user)
end
puts params[:commit]
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
# create new csv file
CSV.open("file.csv", "wb") do |csv|
# write header
csv << data_csv.first.keys
# write values
data_csv.each_with_index do |data, i|
csv << data.values
end
end
# down file.csv into local
send_file "#{Rails.root}/file.csv", type: 'application/csv'
end
private
def connect
url = 'http://localhost:8983/solr/my_solr_collection'
@solr = RSolr.connect url: url
end
def query(condition)
# Direct connection
connect
# use get method to query
response = @solr.get 'select', :params => condition
response
end
def get_condition
condition = {}
filter_query = []
date_from = '*'
date_to = 'NOW'
# get condition
condition[:q] = "email:[* TO *]"
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?
# generate condition from params[:date]
date_from = "#{params[:dtp_input1]}T00:00:00Z" unless params[:dtp_input1].blank?
date_to = "#{params[:dtp_input2]}T00:00:00Z" unless params[:dtp_input2].blank?
filter_query << "applied_at:[#{date_from} TO #{date_to}]"
condition[:fq] = filter_query
condition
end
end
......@@ -15,6 +15,12 @@
<i class="fa fa-sign-out" aria-hidden="true"></i>Logout
<% end %>
</li>
<%- elsif current_admin -%>
<li>
<%= link_to destroy_admin_session_path, method: :delete do %>
<i class="fa fa-sign-out" aria-hidden="true"></i>Logout
<% end %>
</li>
<%- else -%>
<li>
<%= link_to register_path(step: 1) do %>
......
......@@ -11,7 +11,9 @@
<body>
<%= render "layouts/menu" %>
<%= render "layouts/flash" %>
<div class="content">
<%= yield %>
</div>
<%= render "layouts/footer" %>
</body>
</html>
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