Commit 55873cff by nnnghia98

using rescue

parent 11ade7cf
require "csv" require "csv"
class Import class Import
def initialize(params = {}) def initialize()
end end
def import def import
cities = [] cities = []
companies = [] companies = []
industries = [] industries = []
jobs = []
city_columns = [:name, :region] city_columns = [:name, :region]
company_columns = [:name, :email, :address, :code] company_columns = [:name, :email, :address, :code]
industry_columns = [:name] industry_columns = [:name]
job_columns = [:title, :level, :salary, :description, :short_des,
:requirement, :category, :company_id]
join_jobs = []
file_path = Settings.csv.file_path file_path = Settings.csv.file_path
...@@ -21,10 +25,50 @@ class Import ...@@ -21,10 +25,50 @@ class Import
companies << {name: row["company name"], email: row["contact email"], companies << {name: row["company name"], email: row["contact email"],
address: row["company address"], code: row["company id"]} address: row["company address"], code: row["company id"]}
industries << {name: row["category"]} industries << {name: row["category"]}
job_csv = JobCsv.new(row)
jobs << job_csv.csv_attributes
join_jobs << [row["company province"], row["category"], job_csv.title, job_csv.company_id]
rescue
error = ActiveSupport::Logger.new("log/errors.log")
error.info "These row have been skipped: #{row}"
next
end
cities_import(city_columns, cities)
industries_import(industry_columns, industries)
companies_import(company_columns, companies)
jobs_import(job_columns, jobs)
join_jobs_import(join_jobs)
end
def cities_import(col_arr, arr)
return if col_arr.blank?
City.import col_arr, arr, on_duplicate_key_ignore: true
end end
City.import city_columns, cities, on_duplicate_key_ignore: true def industries_import(col_arr, arr)
Company.import company_columns, companies, on_duplicate_key_ignore: true return if col_arr.blank?
Industry.import industry_columns, industries, on_duplicate_key_ignore: true Industry.import col_arr, arr, on_duplicate_key_ignore: true
end
def companies_import(col_arr, arr)
return if col_arr.blank?
Company.import col_arr, arr, on_duplicate_key_ignore: true
end
def jobs_import(col_arr, arr)
return if col_arr.blank?
Job.import col_arr, paraarrm2
end
def join_jobs_import(param)
param.each do |city_name,industry_name, job_title, company_id|
job = Job.find_by(title: job_title, company_id: company_id)
city = City.find_by(name: city_name)
job.city_jobs.create(city_id: city.id)
industry = Industry.find_by(name: industry_name)
job.industry_jobs.create(industry_id: industry.id)
end
end end
end end
require "csv"
class JobsImport
def import_job
jobs = []
job_columns = [:title, :level, :salary, :description, :short_des,
:requirement, :category, :company_id]
join_jobs = []
file_path = Settings.csv.file_path
CSV.foreach(Rails.root.join("lib", file_path), headers: true) do |row|
job_csv = JobCsv.new(row)
jobs << job_csv.csv_attributes
join_jobs << [row["company province"], row["category"], job_csv.title, job_csv.company_id]
end
Job.import job_columns, jobs
join_jobs.each do |city_name,industry_name, job_title, company_id|
job = Job.find_by(title: job_title, company_id: company_id)
city = City.find_by(name: city_name)
job.city_jobs.create(city_id: city.id)
industry = Industry.find_by(name: industry_name)
job.industry_jobs.create(industry_id: industry.id)
end
end
end
...@@ -2,9 +2,8 @@ namespace :task do ...@@ -2,9 +2,8 @@ namespace :task do
desc "import data" desc "import data"
task import: :environment do task import: :environment do
Import.new.import Import.new.import
JobsImport.new.import_job
import = ActiveSupport::Logger.new("log/import.log") import = ActiveSupport::Logger.new("log/import.log")
import.info "Cities, industries, companies, jobs imported: #{Time.current}" import.info "Cities, industries, companies, jobs imported succesful at #{Time.current}"
end end
end 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