Commit b8396dbd by thanhnd

Job apply, Job confirmation, Job done

parent 54283f89
Pipeline #626 failed with stages
in 0 seconds
......@@ -45,6 +45,8 @@ group :development do
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
gem 'pry'
gem 'pry-nav'
end
group :test do
......@@ -70,3 +72,6 @@ gem 'bootstrap-sass'
#setting file yml
gem 'settingslogic'
gem 'rsolr'
gem 'carrierwave', '~> 2.0'
......@@ -81,7 +81,15 @@ GEM
rack-test (>= 0.6.3)
regexp_parser (~> 1.5)
xpath (~> 3.2)
carrierwave (2.1.0)
activemodel (>= 5.0.0)
activesupport (>= 5.0.0)
addressable (~> 2.6)
image_processing (~> 1.1)
mimemagic (>= 0.3.0)
mini_mime (>= 0.1.3)
childprocess (3.0.0)
coderay (1.1.2)
concurrent-ruby (1.1.6)
crass (1.0.6)
devise (4.7.1)
......@@ -99,6 +107,9 @@ GEM
activesupport (>= 4.2.0)
i18n (1.8.2)
concurrent-ruby (~> 1.0)
image_processing (1.10.3)
mini_magick (>= 4.9.5, < 5)
ruby-vips (>= 2.0.17, < 3)
jbuilder (2.10.0)
activesupport (>= 5.0.0)
jquery-rails (4.3.5)
......@@ -133,6 +144,7 @@ GEM
mimemagic (~> 0.3.2)
method_source (0.9.2)
mimemagic (0.3.4)
mini_magick (4.10.1)
mini_mime (1.0.2)
mini_portile2 (2.4.0)
minitest (5.14.0)
......@@ -144,6 +156,11 @@ GEM
mini_portile2 (~> 2.4.0)
orm_adapter (0.5.0)
popper_js (1.16.0)
pry (0.12.2)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
pry-nav (0.3.0)
pry (>= 0.9.10, < 0.13.0)
public_suffix (4.0.3)
puma (4.3.1)
nio4r (~> 2.0)
......@@ -189,6 +206,8 @@ GEM
rsolr (2.3.0)
builder (>= 2.1.2)
faraday (>= 0.9.0)
ruby-vips (2.0.17)
ffi (~> 1.9)
ruby_dep (1.5.0)
rubyzip (2.2.0)
sass-rails (6.0.0)
......@@ -256,6 +275,7 @@ DEPENDENCIES
bootstrap-sass
byebug
capybara (>= 2.15)
carrierwave (~> 2.0)
devise
jbuilder (~> 2.7)
jquery-rails
......@@ -263,6 +283,8 @@ DEPENDENCIES
kaminari-bootstrap
listen (>= 3.0.5, < 3.2)
mysql2
pry
pry-nav
puma (~> 4.1)
rails (~> 6.0.2, >= 6.0.2.1)
rsolr
......
......@@ -7,6 +7,29 @@ class JobsController < ApplicationController
end
end
def apply
@apply_job = session[:apply_job].nil? ? AppliedJob.new : AppliedJob.new(fullname: session[:fullname] , email: session[:email])
session[:job_id] = params[:job_id]
end
def confirm
uploader = CvUploader.new
uploader.store!(form_params[:cv_url])
@apply_job = AppliedJob.new(fullname: form_params[:fullname] ,
email: form_params[:email],
cv_url: uploader.url)
session[:apply_job] = @apply_job
end
def done
apply_job = AppliedJob.new(user_id: current_user.id,
job_id: session[:job_id],
fullname: session[:apply_job]["fullname"],
email: session[:apply_job]["email"],
cv_url: session[:apply_job]["cv_url"])
apply_job.save!
end
def history
@historyjobs = HistoryJob.job_by_id(current_user.id)
@hj = []
......@@ -33,12 +56,14 @@ class JobsController < ApplicationController
def search
return redirect_to root_path, alert: "Empty field!" if params[:search].blank?
#@search_job = Job.includes(:city).where("job_name LIKE ?","%#{params[:search]}%")
#@pagin_job = @search_job.page(params[:page]).per(Settings.page)
solr_rs = Solr.new
@search_job = solr_rs.query(params[:search])
@pagin_job = @search_job
end
private
def form_params
params.require(:applied_job).permit(:fullname, :email, :cv_url)
end
end
class AppliedJob < ApplicationRecord
belongs_to :job
belongs_to :user
validates :fullname, presence: true
validates :email, presence: true
end
class CvUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
# include CarrierWave::MiniMagick
# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/cv"
end
# Provide a default URL as a default if there hasn't been a file uploaded:
# def default_url(*args)
# # For Rails 3.1+ asset pipeline compatibility:
# # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
#
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
# end
# Process files as they are uploaded:
# process scale: [200, 300]
#
# def scale(width, height)
# # do something
# end
# Create different versions of your uploaded files:
# version :thumb do
# process resize_to_fit: [50, 50]
# end
# Add a white list of extensions which are allowed to be uploaded.
# For images you might use something like this:
# def extension_whitelist
# %w(jpg jpeg gif png)
# end
# Override the filename of the uploaded files:
# Avoid using model.id or version_name here, see uploader/store.rb for details.
# def filename
# "something.jpg" if original_filename
# end
end
<h2>Apply</h2>
<%= form_for(@apply_job, url: job_confirm_path) do |f| %>
<div class="field">
<%= f.label "fullname" %><br />
<%= f.text_field :fullname, value: @apply_job.fullname %>
</div>
<div class="field">
<%= f.label "email" %><br />
<%= f.email_field :email, value: @apply_job.email %>
</div>
<div class="field">
<%= f.label "cv" %><br />
<%= f.file_field :cv_url, value: @apply_job.cv_url %>
</div>
<div class="actions">
<%= f.submit "Confirm" %>
</div>
<% end %>
\ No newline at end of file
<h2>Confirm</h2>
<%= form_for(@apply_job, url: job_done_path) do |f| %>
<div class="field">
<%= f.label :name %> <br />
<label>
<%= @apply_job.fullname %>
</label>
</div>
<div class="field">
<%= f.label :mail %><br />
<label>
<%= @apply_job.email %>
</label>
</div>
<div class="field">
<%= f.label :cv_url %><br />
<label>
<%= @apply_job.cv_url %>
</label>
</div>
<div class="actions">
<%= f.submit "Confirm" %>
</div>
<% end %>
<%= link_to job_apply_path do %>
<button class="button1">Edit</button>
<% end %>
<label>Thank you for apply</label>
\ No newline at end of file
......@@ -29,11 +29,13 @@
</li>
</ul>
<%= link_to '/detail/:id', remote: true do %>
<%= link_to job_apply_path(job_id: @job_detail.id) do %>
<button class="button button1">Apply</button>
<% end %>
<%= link_to '/detail/:id', remote: true do %>
<button class="button button2">Favorites</button>
<% end %>
<% end %>
</div>
......
......@@ -11,6 +11,9 @@ Rails.application.routes.draw do
end
get 'detail/:id', to: 'jobs#show', as: :job_detail
get 'apply', to: 'jobs#apply', as: :job_apply
post 'confirm', to: 'jobs#confirm', as: :job_confirm
post 'done', to: 'jobs#done', as: :job_done
get 'history', to: 'jobs#history'
get 'favorites', to: 'jobs#favorites'
get 'jobs/search' => 'jobs#search', as: :job_search
......
class AddUserToAppliedJobs < ActiveRecord::Migration[6.0]
def change
add_column :applied_jobs, :fullname, :string
add_column :applied_jobs, :email, :string
add_column :applied_jobs, :cv, :string
end
end
class RemoveCvFromAppliedJob < ActiveRecord::Migration[6.0]
def change
remove_column :applied_jobs, :cv, :string
end
end
class AddCvToAppliedJob < ActiveRecord::Migration[6.0]
def change
add_column :applied_jobs, :cv_url, :string
end
end
......@@ -10,13 +10,16 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2020_05_05_042407) do
ActiveRecord::Schema.define(version: 2020_05_15_081827) do
create_table "applied_jobs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
t.integer "user_id"
t.integer "job_id"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.string "fullname"
t.string "email"
t.string "cv_url"
end
create_table "areas", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
......
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