Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
venjob
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Huỳnh Thiên Phước
venjob
Commits
dc54f45e
Commit
dc54f45e
authored
Aug 04, 2020
by
Huỳnh Thiên Phước
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Create industries and cities list
parent
6c0bf9ac
Pipeline
#798
canceled with stages
in 0 seconds
Changes
20
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
107 additions
and
64 deletions
+107
-64
app/assets/stylesheets/jobs.scss
+6
-0
app/controllers/cities_controller.rb
+2
-2
app/controllers/jobs_controller.rb
+4
-0
app/controllers/top_pages_controller.rb
+1
-1
app/helpers/jobs_helper.rb
+1
-1
app/models/city.rb
+4
-7
app/models/industry.rb
+2
-6
app/models/job.rb
+3
-0
app/views/cities/_cities_international.html.erb
+3
-4
app/views/cities/_cities_vietnam.html.erb
+2
-4
app/views/cities/index.html.erb
+2
-2
app/views/industries/_all_industries.html.erb
+12
-0
app/views/industries/index.html.erb
+1
-14
app/views/jobs/_all_jobs.html.erb
+21
-0
app/views/jobs/index.html.erb
+10
-0
app/views/layouts/_show_cities.html.erb
+2
-4
app/views/layouts/_show_industries.html.erb
+2
-4
app/views/layouts/_show_jobs.html.erb
+5
-5
app/views/top_pages/index.html.erb
+14
-6
lib/src/csv_importer.rb
+10
-4
No files found.
app/assets/stylesheets/jobs.scss
View file @
dc54f45e
// Place all the styles related to the Jobs controller here.
// Place all the styles related to the Jobs controller here.
// They will automatically be included in application.css.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
// You can use Sass (SCSS) here: http://sass-lang.com/
.total-jobs
{
margin
:
5px
;
padding
:
5px
;
}
app/controllers/cities_controller.rb
View file @
dc54f45e
class
CitiesController
<
ApplicationController
class
CitiesController
<
ApplicationController
def
index
def
index
@cities_vietnam
=
City
.
all_city
.
where
(
'location = 1'
)
@cities_vietnam
=
City
.
all_city
.
vietnam
@cities_international
=
City
.
all_city
.
where
(
'location = 0'
)
@cities_international
=
City
.
all_city
.
international
end
end
end
end
app/controllers/jobs_controller.rb
View file @
dc54f45e
class
JobsController
<
ApplicationController
class
JobsController
<
ApplicationController
def
index
@total_job
=
Job
.
count
@jobs_list
=
Job
.
all_job
end
end
end
app/controllers/top_pages_controller.rb
View file @
dc54f45e
...
@@ -3,7 +3,7 @@ class TopPagesController < ApplicationController
...
@@ -3,7 +3,7 @@ class TopPagesController < ApplicationController
@cities
=
City
.
all
@cities
=
City
.
all
@industries
=
Industry
.
all
@industries
=
Industry
.
all
@total_jobs
=
Job
.
count
@total_jobs
=
Job
.
count
@jobs
=
Job
.
limit
(
5
).
order
(
created_at: :desc
)
@jobs
=
Job
.
limit
_job
@jobs_of_cities
=
City
.
top_city
@jobs_of_cities
=
City
.
top_city
@jobs_of_industries
=
Industry
.
top_industry
@jobs_of_industries
=
Industry
.
top_industry
end
end
...
...
app/helpers/jobs_helper.rb
View file @
dc54f45e
module
JobsHelper
module
JobsHelper
def
job_description
(
description
)
def
job_description
(
description
)
strip_tags
(
description
).
truncate_words
(
3
0
)
strip_tags
(
description
).
truncate_words
(
25
0
)
end
end
end
end
app/models/city.rb
View file @
dc54f45e
...
@@ -2,11 +2,8 @@ class City < ApplicationRecord
...
@@ -2,11 +2,8 @@ class City < ApplicationRecord
has_many
:city_jobs
has_many
:city_jobs
has_many
:jobs
,
through: :city_jobs
has_many
:jobs
,
through: :city_jobs
def
self
.
top_city
scope
:top_city
,
->
{
joins
(
:jobs
).
group
(
:city_id
).
order
(
'count(job_id) DESC'
).
limit
(
9
)
}
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'
)
}
end
scope
:vietnam
,
->
{
where
(
'location = 1'
)
}
scope
:international
,
->
{
where
(
'location = 0'
)
}
def
self
.
all_city
joins
(
:jobs
).
group
(
:city_id
).
order
(
'count(job_id) DESC'
)
end
end
end
app/models/industry.rb
View file @
dc54f45e
...
@@ -2,11 +2,7 @@ class Industry < ApplicationRecord
...
@@ -2,11 +2,7 @@ class Industry < ApplicationRecord
has_many
:industry_jobs
has_many
:industry_jobs
has_many
:jobs
,
through: :industry_jobs
has_many
:jobs
,
through: :industry_jobs
def
self
.
top_industry
scope
:top_industry
,
->
{
joins
(
:jobs
).
group
(
:industry_id
).
order
(
'count(job_id) DESC'
).
limit
(
9
)
}
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'
)
}
end
def
self
.
all_industry
joins
(
:jobs
).
group
(
:industry_id
).
order
(
'count(job_id) DESC'
)
end
end
end
app/models/job.rb
View file @
dc54f45e
...
@@ -15,6 +15,9 @@ class Job < ApplicationRecord
...
@@ -15,6 +15,9 @@ class Job < ApplicationRecord
has_many
:histories
has_many
:histories
has_many
:users
,
through: :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
def
company_name
company
&
.
name
company
&
.
name
end
end
...
...
app/views/cities/_cities_international.html.erb
View file @
dc54f45e
<%
@cities_international
.
each
do
|
city
|
%>
<div
class=
"col-3 remove-decoration"
>
<div
class=
"col-3 remove-decoration"
>
<%=
link_to
'#'
do
%>
<%=
link_to
'#'
do
%>
<div
class=
"border border-dark rounded vn-name"
>
<div
class=
"border border-dark rounded vn-name"
>
<div>
<div>
...
@@ -10,5 +9,5 @@
...
@@ -10,5 +9,5 @@
</div>
</div>
</div>
</div>
<%
end
%>
<%
end
%>
</div>
</div>
<%
end
%>
app/views/cities/_cities_vietnam.html.erb
View file @
dc54f45e
<%
@cities_vietnam
.
each
do
|
city
|
%>
<div
class=
"col-3 remove-decoration"
>
<div
class=
"col-3 remove-decoration"
>
<%=
link_to
'#'
do
%>
<%=
link_to
'#'
do
%>
<div
class=
"border border-dark rounded international-name"
>
<div
class=
"border border-dark rounded international-name"
>
<div>
<div>
...
@@ -10,5 +9,4 @@
...
@@ -10,5 +9,4 @@
</div>
</div>
</div>
</div>
<%
end
%>
<%
end
%>
</div>
</div>
<%
end
%>
app/views/cities/index.html.erb
View file @
dc54f45e
...
@@ -14,13 +14,13 @@
...
@@ -14,13 +14,13 @@
<div
class=
"city-banner rounded vietnam-area"
>
Việt Nam
</div>
<div
class=
"city-banner rounded vietnam-area"
>
Việt Nam
</div>
<div
class=
"city-vietnam"
>
<div
class=
"city-vietnam"
>
<div
class=
"row"
>
<div
class=
"row"
>
<%=
render
'cities/cities_vietnam'
%>
<%=
render
partial:
"cities_vietnam"
,
collection:
@cities_vietnam
,
as: :city
%>
</div>
</div>
</div>
</div>
<div
class=
"city-banner rounded international-area"
>
International
</div>
<div
class=
"city-banner rounded international-area"
>
International
</div>
<div
class=
"city-international"
>
<div
class=
"city-international"
>
<div
class=
"row"
>
<div
class=
"row"
>
<%=
render
'cities/cities_international'
%>
<%=
render
partial:
"cities_international"
,
collection:
@cities_international
,
as: :city
%>
</div>
</div>
</div>
</div>
</div>
</div>
app/views/industries/_all_industries.html.erb
0 → 100644
View file @
dc54f45e
<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>
app/views/industries/index.html.erb
View file @
dc54f45e
...
@@ -3,20 +3,7 @@
...
@@ -3,20 +3,7 @@
<div
class=
"all-industries"
>
<div
class=
"all-industries"
>
<div
class=
"industry-banner rounded"
>
Industry List
</div>
<div
class=
"industry-banner rounded"
>
Industry List
</div>
<div
class=
"row"
>
<div
class=
"row"
>
<%
@industries
.
each
do
|
industry
|
%>
<%=
render
partial:
"all_industries"
,
collection:
@industries
,
as: :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
%>
</div>
</div>
</div>
</div>
</div>
</div>
app/views/jobs/_all_jobs.html.erb
0 → 100644
View file @
dc54f45e
<%
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
%>
app/views/jobs/index.html.erb
View file @
dc54f45e
<%
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>
app/views/layouts/_show_cities.html.erb
View file @
dc54f45e
<%
@jobs_of_cities
.
each
do
|
city
|
%>
<div
class=
"col-4"
>
<div
class=
"col-4"
>
<div
class=
"row-table border border-dark rounded city-list"
>
<div
class=
"row-table border border-dark rounded city-list"
>
<%=
link_to
'#'
do
%>
<%=
link_to
'#'
do
%>
<div
class=
"city-name"
><strong>
<%=
city
.
name
%>
</strong></div>
<div
class=
"city-name"
><strong>
<%=
city
.
name
%>
</strong></div>
<div
class=
"count-job"
>
<%=
city
.
jobs
.
count
%>
</div>
<div
class=
"count-job"
>
<%=
city
.
jobs
.
count
%>
</div>
<%
end
%>
<%
end
%>
</div>
</div>
</div>
</div>
<%
end
%>
app/views/layouts/_show_industries.html.erb
View file @
dc54f45e
<%
@jobs_of_industries
.
each
do
|
industry
|
%>
<div
class=
"col-4"
>
<div
class=
"col-4"
>
<div
class=
"row-table border border-dark rounded industry-list"
>
<div
class=
"row-table border border-dark rounded industry-list"
>
<%=
link_to
'#'
do
%>
<%=
link_to
'#'
do
%>
<div
class=
"industry-name"
><strong>
<%=
industry
.
name
%>
</strong></div>
<div
class=
"industry-name"
><strong>
<%=
industry
.
name
%>
</strong></div>
<div
class=
"count-job"
>
<%=
industry
.
jobs
.
count
%>
</div>
<div
class=
"count-job"
>
<%=
industry
.
jobs
.
count
%>
</div>
<%
end
%>
<%
end
%>
</div>
</div>
</div>
</div>
<%
end
%>
app/views/layouts/_show_jobs.html.erb
View file @
dc54f45e
<%
@jobs
.
each
do
|
job
|
%>
<%
if
job
.
cities
.
present?
%>
<%
if
job
.
cities
.
present?
%>
<div
class=
"border border-dark rounded"
>
<div
class=
"border border-dark rounded"
>
<div
class=
"job-details"
>
<div
class=
"job-details"
>
<div
class=
"title"
><strong>
<%=
job
.
title
%>
</strong></div>
<div
class=
"title"
><strong>
<%=
job
.
title
%>
</strong></div>
...
@@ -10,13 +9,14 @@
...
@@ -10,13 +9,14 @@
<%=
city
.
name
%>
<%=
city
.
name
%>
<%
end
%>
<%
end
%>
</div>
</div>
<div
class=
"introduction"
>
<div
class=
"row"
>
<%=
job_description
(
job
.
description
)
%>
<div
class=
"col-10 introduction"
>
<%=
job_description
(
job
.
description
)
%>
<br>
<%=
link_to
'Read more..'
,
'#'
%>
<%=
link_to
'Read more..'
,
'#'
%>
</div>
</div>
</div>
<button
type=
"button"
class=
"btn btn-primary"
id=
"button-follow"
>
♥ Follow
</button>
<button
type=
"button"
class=
"btn btn-primary"
id=
"button-follow"
>
♥ Follow
</button>
</div>
</div>
</div>
</div>
<br>
<br>
<%
end
%>
<%
end
%>
<%
end
%>
app/views/top_pages/index.html.erb
View file @
dc54f45e
...
@@ -6,22 +6,30 @@
...
@@ -6,22 +6,30 @@
</div>
</div>
<div
class=
"container"
>
<div
class=
"container"
>
<div
class=
"search-bar"
>
<%=
render
'layouts/search_bar'
%>
</div>
<div
class=
"search-bar"
>
<div
class=
"job-list"
>
<%=
render
'layouts/show_jobs'
%>
</div>
<%=
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=
"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"
>
<div
class=
"all-city"
>
<%=
link_to
'#'
do
%>
<%=
link_to
cities_path
do
%>
<div
class=
"row-table border border-dark rounded all-cities"
>
<div
class=
"row-table border border-dark rounded all-cities"
>
<strong>
All Cities
</strong>
<strong>
All Cities
</strong>
</div>
</div>
<%
end
%>
<%
end
%>
</div>
</div>
<div
class=
"industry-banner rounded"
>
Industry
</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"
>
<div
class=
"all-industry"
>
<%=
link_to
'#'
do
%>
<%=
link_to
industries_path
do
%>
<div
class=
"row-table border border-dark rounded all-industries"
>
<div
class=
"row-table border border-dark rounded all-industries"
>
<strong>
All Industries
</strong>
<strong>
All Industries
</strong>
</div>
</div>
...
...
lib/src/csv_importer.rb
View file @
dc54f45e
...
@@ -40,6 +40,7 @@ class CSVImporter
...
@@ -40,6 +40,7 @@ class CSVImporter
begin
begin
company_name
=
row
[
"company name"
]
company_name
=
row
[
"company name"
]
next
if
company_name
.
blank?
next
if
company_name
.
blank?
company_address
=
row
[
"company address"
]
company_address
=
row
[
"company address"
]
company_introduction
=
row
[
"benefit"
]
company_introduction
=
row
[
"benefit"
]
company
=
Company
.
find_or_create_by!
(
name:
company_name
,
company
=
Company
.
find_or_create_by!
(
name:
company_name
,
...
@@ -48,6 +49,7 @@ class CSVImporter
...
@@ -48,6 +49,7 @@ class CSVImporter
title_job
=
row
[
"name"
]
title_job
=
row
[
"name"
]
next
if
title_job
.
blank?
next
if
title_job
.
blank?
description_job
=
"
#{
row
[
"description"
]
}
#{
row
[
"requirement"
]
}
"
description_job
=
"
#{
row
[
"description"
]
}
#{
row
[
"requirement"
]
}
"
level
=
row
[
"level"
]
level
=
row
[
"level"
]
salary
=
row
[
"salary"
]
salary
=
row
[
"salary"
]
...
@@ -56,17 +58,21 @@ class CSVImporter
...
@@ -56,17 +58,21 @@ class CSVImporter
level:
level
,
level:
level
,
salary:
salary
,
salary:
salary
,
company_id:
company
.
id
)
company_id:
company
.
id
)
next
if
job
.
blank?
industry_name
=
row
[
"category"
]
industry_name
=
row
[
"category"
]
industries_relationship
=
Industry
.
where
(
name:
industry_name
)
industries_relationship
=
Industry
.
find_by
(
name:
industry_name
)
next
if
industries_relationship
.
blank?
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_data
=
row
[
"work place"
]
location
=
location_data
.
gsub
(
'["'
,
''
).
gsub
(
'"]'
,
''
)
location
=
location_data
.
gsub
(
'["'
,
''
).
gsub
(
'"]'
,
''
)
location_relationship
=
City
.
where
(
name:
location
)
location_relationship
=
City
.
find_by
(
name:
location
)
next
if
location_relationship
.
blank?
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
rescue
StandardError
=>
e
@logger
.
error
e
.
message
@logger
.
error
e
.
message
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment