Create industries and cities list

parent 6c0bf9ac
Pipeline #798 canceled with stages
in 0 seconds
// Place all the styles related to the Jobs controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
.total-jobs {
margin: 5px;
padding: 5px;
}
class CitiesController < ApplicationController
def index
@cities_vietnam = City.all_city.where('location = 1')
@cities_international = City.all_city.where('location = 0')
@cities_vietnam = City.all_city.vietnam
@cities_international = City.all_city.international
end
end
class JobsController < ApplicationController
def index
@total_job = Job.count
@jobs_list = Job.all_job
end
end
......@@ -3,7 +3,7 @@ class TopPagesController < ApplicationController
@cities = City.all
@industries = Industry.all
@total_jobs = Job.count
@jobs = Job.limit(5).order(created_at: :desc)
@jobs = Job.limit_job
@jobs_of_cities = City.top_city
@jobs_of_industries = Industry.top_industry
end
......
module JobsHelper
def job_description(description)
strip_tags(description).truncate_words(30)
strip_tags(description).truncate_words(250)
end
end
......@@ -2,11 +2,8 @@ class City < ApplicationRecord
has_many :city_jobs
has_many :jobs, through: :city_jobs
def self.top_city
joins(:jobs).group(:city_id).order('count(job_id) DESC').limit(9)
end
def self.all_city
joins(:jobs).group(:city_id).order('count(job_id) DESC')
end
scope :top_city, -> { joins(:jobs).group(:city_id).order('count(job_id) DESC').limit(9) }
scope :all_city, -> { joins(:jobs).group(:city_id).order('count(job_id) DESC') }
scope :vietnam, -> { where('location = 1') }
scope :international, -> { where('location = 0') }
end
......@@ -2,11 +2,7 @@ class Industry < ApplicationRecord
has_many :industry_jobs
has_many :jobs, through: :industry_jobs
def self.top_industry
joins(:jobs).group(:industry_id).order('count(job_id) DESC').limit(9)
end
scope :top_industry, -> { joins(:jobs).group(:industry_id).order('count(job_id) DESC').limit(9) }
scope :all_industry, -> { joins(:jobs).group(:industry_id).order('count(job_id) DESC') }
def self.all_industry
joins(:jobs).group(:industry_id).order('count(job_id) DESC')
end
end
......@@ -15,6 +15,9 @@ class Job < ApplicationRecord
has_many :histories
has_many :users, through: :histories
scope :limit_job, -> { limit(5).order(created_at: :desc) }
scope :all_job, -> { limit(20).order(created_at: :desc) }
def company_name
company&.name
end
......
<% @cities_international.each do |city| %>
<div class="col-3 remove-decoration">
<div class="col-3 remove-decoration">
<%= link_to '#' do %>
<div class="border border-dark rounded vn-name">
<div>
......@@ -10,5 +9,5 @@
</div>
</div>
<% end %>
</div>
<% end %>
</div>
<% @cities_vietnam.each do |city| %>
<div class="col-3 remove-decoration">
<div class="col-3 remove-decoration">
<%= link_to '#' do %>
<div class="border border-dark rounded international-name">
<div>
......@@ -10,5 +9,4 @@
</div>
</div>
<% end %>
</div>
<% end %>
</div>
......@@ -14,13 +14,13 @@
<div class="city-banner rounded vietnam-area">Việt Nam</div>
<div class="city-vietnam">
<div class="row">
<%= render 'cities/cities_vietnam' %>
<%= render partial: "cities_vietnam", collection: @cities_vietnam, as: :city %>
</div>
</div>
<div class="city-banner rounded international-area">International</div>
<div class="city-international">
<div class="row">
<%= render 'cities/cities_international' %>
<%= render partial: "cities_international", collection: @cities_international, as: :city %>
</div>
</div>
</div>
<div class="col-3 remove-decoration">
<%= link_to '#' do %>
<div class="border border-dark rounded industry-details">
<div>
<strong><%= industry.name %></strong>
</div>
<div>
<%= industry.jobs.count %>
</div>
</div>
<% end %>
</div>
......@@ -3,20 +3,7 @@
<div class="all-industries">
<div class="industry-banner rounded">Industry List</div>
<div class="row">
<% @industries.each do |industry| %>
<div class="col-3 remove-decoration">
<%= link_to '#' do %>
<div class="border border-dark rounded industry-details">
<div>
<strong><%= industry.name %></strong>
</div>
<div>
<%= industry.jobs.count %>
</div>
</div>
<% end %>
</div>
<% end %>
<%= render partial: "all_industries", collection: @industries, as: :industry %>
</div>
</div>
</div>
<% if job.cities.present? %>
<div class="border border-dark rounded">
<div class="job-details">
<div class="title"><strong><%= job.title %></strong></div>
<div class="row">
<div class="col-4">
<% job.cities.each do |city| %>
<%= city.name %>
<% end %>
</div>
<div class="col-4 salary">Salary: <%= job.salary %></div>
<div class="col-10 introduction">
<%= job_description(job.description) %><br>
<%= link_to 'Read more..', '#'%>
</div>
</div>
<button type="button" class="btn btn-success" id="button-follow">♥ Favorite</button>
</div>
</div>
<br>
<% end %>
<% provide(:title, 'Jobs') %>
<div class="container">
<div class="row total-jobs">
<div class="col-4">Total: <%= @total_job %> jobs</div>
<div class="col-4">Result for: ... jobs</div>
</div>
<div class="job-list">
<%= render partial: "all_jobs", collection: @jobs_list, as: :job %>
</div>
</div>
<% @jobs_of_cities.each do |city| %>
<div class="col-4">
<div class="col-4">
<div class="row-table border border-dark rounded city-list">
<%= link_to '#' do %>
<div class="city-name"><strong><%= city.name %></strong></div>
<div class="count-job"><%= city.jobs.count %></div>
<% end %>
</div>
</div>
<% end %>
</div>
<% @jobs_of_industries.each do |industry| %>
<div class="col-4">
<div class="col-4">
<div class="row-table border border-dark rounded industry-list">
<%= link_to '#' do %>
<div class="industry-name"><strong><%= industry.name %></strong></div>
<div class="count-job"><%= industry.jobs.count %></div>
<% end %>
</div>
</div>
<% end %>
</div>
<% @jobs.each do |job| %>
<% if job.cities.present? %>
<% if job.cities.present? %>
<div class="border border-dark rounded">
<div class="job-details">
<div class="title"><strong><%= job.title %></strong></div>
......@@ -10,13 +9,14 @@
<%= city.name %>
<% end %>
</div>
<div class="introduction">
<%= job_description(job.description) %>
<div class="row">
<div class="col-10 introduction">
<%= job_description(job.description) %><br>
<%= link_to 'Read more..', '#'%>
</div>
</div>
<button type="button" class="btn btn-primary" id="button-follow">♥ Follow</button>
</div>
</div>
<br>
<% end %>
<% end %>
......@@ -6,22 +6,30 @@
</div>
<div class="container">
<div class="search-bar"><%= render 'layouts/search_bar' %></div>
<div class="job-list"><%= render 'layouts/show_jobs' %></div>
<div class="search-bar">
<%= render 'layouts/search_bar' %>
</div>
<div class="job-list">
<%= render partial: "layouts/show_jobs", collection: @jobs, as: :job %>
</div>
<div class="city-banner rounded">City</div>
<div class="row"><%= render 'layouts/show_cities' %></div>
<div class="row">
<%= render partial: "layouts/show_cities", collection: @jobs_of_cities, as: :city %>
</div>
<div class="all-city">
<%= link_to '#' do %>
<%= link_to cities_path do %>
<div class="row-table border border-dark rounded all-cities">
<strong>All Cities</strong>
</div>
<% end %>
</div>
<div class="industry-banner rounded">Industry</div>
<div class="row"><%= render 'layouts/show_industries' %></div>
<div class="row">
<%= render partial: "layouts/show_industries", collection: @jobs_of_industries, as: :industry %>
</div>
<div class="all-industry">
<%= link_to '#' do %>
<%= link_to industries_path do %>
<div class="row-table border border-dark rounded all-industries">
<strong>All Industries</strong>
</div>
......
......@@ -40,6 +40,7 @@ class CSVImporter
begin
company_name = row["company name"]
next if company_name.blank?
company_address = row["company address"]
company_introduction = row["benefit"]
company = Company.find_or_create_by!(name: company_name,
......@@ -48,6 +49,7 @@ class CSVImporter
title_job = row["name"]
next if title_job.blank?
description_job = "#{row["description"]} #{row["requirement"]}"
level = row["level"]
salary = row["salary"]
......@@ -56,17 +58,21 @@ class CSVImporter
level: level,
salary: salary,
company_id: company.id)
next if job.blank?
industry_name = row["category"]
industries_relationship = Industry.where(name: industry_name)
industries_relationship = Industry.find_by(name: industry_name)
next if industries_relationship.blank?
job.industries << industries_relationship
industry_relationship = find_or_create_by!(job_id: job.id,
industry_id: industries_relationship.id)
location_data = row["work place"]
location = location_data.gsub('["', '').gsub('"]', '')
location_relationship = City.where(name: location)
location_relationship = City.find_by(name: location)
next if location_relationship.blank?
job.cities << location_relationship
city_relationship = find_or_create_by!(job_id: job.id,
industry_id: location_relationship.id)
rescue StandardError => e
@logger.error e.message
......
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