Commit b5ac3f15 by Trịnh Hoàng Phúc

Merge branch 'master' of gitlab.zigexn.vn:phucth/ven-job into feature/social_authenticate

parents 930943ec 629f8bc6
Pipeline #623 failed with stages
in 0 seconds
......@@ -29,13 +29,15 @@ gem 'rsolr'
gem 'carrierwave'
gem 'activerecord-import'
gem 'activerecord-import', require: false
gem 'will_paginate'
gem 'omniauth-facebook'
gem 'settingslogic'
gem 'parallel', require: false
# Use Active Storage variant
# gem 'image_processing', '~> 1.2'
......
......@@ -178,6 +178,7 @@ GEM
oauth2 (~> 1.1)
omniauth (~> 1.9)
orm_adapter (0.5.0)
parallel (1.19.1)
pry (0.13.0)
coderay (~> 1.1)
method_source (~> 1.0)
......@@ -324,6 +325,7 @@ DEPENDENCIES
meta-tags
mysql2
omniauth-facebook
parallel
pry
puma (~> 4.1)
rails (~> 6.0.2, >= 6.0.2.2)
......
class City < ApplicationRecord
validates :title, presence: true, uniqueness: true
has_and_belongs_to_many :jobs
end
class Company < ApplicationRecord
validates :title, presence: true
has_many :jobs
end
class Industry < ApplicationRecord
validates :title, presence: true, uniqueness: true
has_and_belongs_to_many :jobs
end
class Job < ApplicationRecord
scope :by_cities, -> (city_id) {includes(:cities).where("cities.id = ?", city_id).references(:cities)}
scope :by_industries, -> (industry_id) {includes(:industries).where("industries.id = ?", industry_id).references(:industries)}
scope :by_companies, -> (company_id) {where("company_id = #{company_id}")}
EXPORT_CSV_ATTRIBUTES = %w(title updated_date_job level years_of_experience salary expiration_date).freeze
belongs_to :company
has_many :applies
......@@ -10,9 +16,15 @@ class Job < ApplicationRecord
has_and_belongs_to_many :industries
has_and_belongs_to_many :cities
scope :by_cities, -> (city_id) {includes(:cities).where("cities.id = ?", city_id).references(:cities)}
scope :by_industries, -> (industry_id) {includes(:industries).where("industries.id = ?", industry_id).references(:industries)}
scope :by_companies, -> (company_id) {where("company_id = #{company_id}")}
validate :updated_date_job_cannot_be_greater_than_expiration_date
validates :title, length: { minimum: 6 }
validates :title, :updated_date_job, :level, :expiration_date, :salary, :min_salary, :max_salary, presence: true
validates :min_salary, :max_salary, numericality: { only_integer: true }
EXPORT_CSV_ATTRIBUTES = %w(title updated_date_job level years_of_experience salary expiration_date).freeze
def updated_date_job_cannot_be_greater_than_expiration_date
if DateTime.parse(updated_date_job).to_i > DateTime.parse(expiration_date).to_i
errors.add(:updated_date_job, "can't be greater than expiration date")
end
end
end
class CrawlerService
def self.convert_salary(salary)
return [0, 999_999_999] if salary == "Cạnh tranh"
vn_salary = salary.tr("^[0-9]{1,2}[.,]\d{1-2}", " ")
.tr(",",".")
.split(" ")
.map { |s| (s.to_f*1_000_000).to_i }
return [0, vn_salary[0]] if salary.include? "Dưới"
return [vn_salary[0], 0] if salary.include? "Trên"
[vn_salary[0], vn_salary[1]]
end
def self.imports(job_attributes, company_attributes, cities, industries)
raise Exception.new "Not enough data transferred" if job_attributes.nil? || company_attributes.nil? || cities.nil? || industries.nil?
ActiveRecord::Base.transaction do
job_attributes[:company_id] = Company.find_or_create_by!(company_attributes).id
job = Job.find_or_create_by!(job_attributes)
if job.errors.full_messages.present?
raise Exception.new "#{job.errors.full_messages.join(",")}"
raise ActiveRecord::Rollback
end
cities = cities.map do |city|
City.find_or_create_by({title: city})
end
industries = industries.map do |industry|
Industry.find_or_create_by({title: industry})
end
cities.each do |city|
job.cities << city
end
industries.each do |industry|
job.industries << industry
end
end
end
end
\ No newline at end of file
class AddForeignToCities < ActiveRecord::Migration[6.0]
def change
add_column :cities, :foreign, :boolean, :default => false
add_column :cities, :foreign, :boolean, default: false
end
end
class AddColumnsToJobs < ActiveRecord::Migration[6.0]
def change
add_column :jobs, :min_salary, :bigint, default: 0
add_column :jobs, :max_salary, :bigint, default: 0
add_column :jobs, :benefit, :text
add_column :jobs, :job_requirements, :text
add_column :jobs, :other_information, :text
end
end
......@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2020_04_23_044651) do
ActiveRecord::Schema.define(version: 2020_05_11_055632) do
create_table "admins", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
t.string "email", default: "", null: false
......@@ -89,6 +89,11 @@ ActiveRecord::Schema.define(version: 2020_04_23_044651) do
t.bigint "company_id"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.bigint "min_salary", default: 0
t.bigint "max_salary", default: 0
t.text "benefit"
t.text "job_requirements"
t.text "other_information"
t.index ["company_id"], name: "index_jobs_on_company_id"
end
......
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