Commit 022b3d72 by Xuan Trung Le

create apply_job page

parent 28eda34d
......@@ -14,3 +14,7 @@
//= require_tree .
//= require javascripts/jquery-3.2.1.min.js
//= require javascripts/bootstrap.min.js
$(document).ready(function(){
$('#message').delay(5000).fadeOut('slow');
});
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
helper_method :clear_session
def clear_session
session[:candidate_name] = nil
session[:candidate_email] = nil
session[:candidate_cv] = nil
session[:job_id] = nil
end
end
class AppliesController < ApplicationController
before_action :authenticate_user!
def apply
session[:job_id] = params[:job_id] if params[:job_id]
@application = ApplyJob.new
if session[:candidate_name] && session[:candidate_email]
@application = ApplyJob.new(name: session[:candidate_name],
email: session[:candidate_email],
cv: session[:candidate_cv])
elsif current_user
@application = ApplyJob.new(name: current_user.name,
email: current_user.email,
cv: current_user.cv)
else
# Nothing.
end
end
def confirm
@application = ApplyJob.new(application_params)
@application.user_id = current_user.id
@application.job_id = session[:job_id]
session[:candidate_name] = application_params[:name]
session[:candidate_email] = application_params[:email]
session[:candidate_cv] = application_params[:cv]
unless @application.valid?
flash[:error] = @application.errors.full_messages.to_sentence
redirect_to apply_path(job_id: session[:job_id])
return
end
end
def done
@application = ApplyJob.new(user_id: current_user.id,
job_id: session[:job_id],
name: session[:candidate_name],
email: session[:candidate_email],
cv: session[:candidate_cv])
if @application.save
flash[:notice] = 'Congratulation! Job was successfully applied'
ApplyJobMailer.successful_email(@application).deliver
clear_session
end
end
private
def application_params
params.require(:apply_job).permit(:name, :email, :cv) if params[:apply_job]
end
end
......@@ -7,6 +7,7 @@ class JobsController < ApplicationController
end
def show
clear_session
end
def city
......
class ApplyJobMailer < ApplicationMailer
default from: 'from@example.com'
def successful_email(application)
@application = application
mail(to: @application.email, :subject => "Thank you for apply with VeNJOB")
end
end
class ApplyJob < ApplicationRecord
belongs_to :job
belongs_to :user
validates :cv, presence: true
validates :email, presence: true
validates :name, presence: true
end
<div class="row">
<div class="container">
<div class="col-sm-offset-2 col-md-10 step">
Apply New > Apply Confirmation > Apply Finish
<p class="text-info">1. Apply form</p>
</div>
<div class="form-horizontal">
<%= form_for @application, url: confirm_path, method: :post do |f| %>
<div class="form-group">
<%= f.label :Email, 'Email:', class: "control-label col-md-2" %>
<div class="col-sm-10">
<%= f.email_field :email, autofocus: true, class: "form-control" %>
</div>
</div>
<div class="form-group">
<%= f.label :name, 'Name:', class: "control-label col-md-2" %>
<div class="col-sm-10">
<%= f.text_field :name, class: "form-control" %>
</div>
</div>
<div class="form-group">
<%= f.label :cv, 'Cv:',class: "control-label col-md-2" %>
<div class="col-sm-10">
<%= f.text_field :cv, class: "form-control" %>
</div>
</div>
<div class="actions form-group">
<div class="col-sm-offset-2 col-sm-10">
<%= f.submit "Confirm", class: "btn btn-danger form-control" %>
</div>
</div>
<% end %>
</div>
</div>
</div>
<div class="row">
<div class="container">
<div class="col-md-offset-2 col-md-10 step">
Apply New > Apply Confirmation > Apply Finish
<p class="text-info">2. Confirmation</p>
</div>
<div class="col-md-offset-2 col-md-10">
<p>Fullname: <%= @application.name %></p>
<p>Email: <%= @application.email %></p>
<p>Cv: <%= @application.cv %></p>
<div class="col-md-10">
<%= button_to "Edit",
apply_path(job_id: session[:job_id]),
class: "btn btn-primary col-md-4",
method: :get %>
<%= button_to "Done",
done_path,
class: "btn btn-primary col-md-offset-1 col-md-4" %>
</div>
</div>
</div>
</div>
<div class="row">
<div class="container">
Apply New > Apply Confirmation > Apply Finish
<p><h3 class="text-info">Thank you for applying</h3></p>
<p><h4 class="text-info"><%= link_to "Back to TOP page", "/" %></h4></p>
</div>
</div>
</div>
<p><h3>Dear: <%= @application.name %></h3></p>
<p>Thank you for applied with VenJOB.
Your applied job's information is as follow:
</p>
<div class="job-information">
<p>
<span>Job title: </span>
<span><%= @application.job.name %></span>
</p>
<p>
<span>Location: </span>
<span><%= @application.job.company.location %></span>
</p>
<p>
<span>Company: </span>
<span><%= @application.job.company.name %></span>
</p>
</div>
<div class="your-information">
<p>Your submitted information:</p>
<p>
<span>Full Name: </span>
<span> <%= @application.name %></span>
</p>
<p>
<span>Email: </span>
<span> <%= @application.email %></span>
</p>
<p>
<span>CV Link: </span>
<span> <%= @application.cv %></span>
</p>
</div>
<p>Best,</p>
<p><h3>Dear: <%= @application.name %></h3></p>
<p>Thank you for applied with VenJOB.
Your applied job's information is as follow:
</p>
<p>
<span>Job title: </span>
<span><%= @application.job.name %></span>
</p>
<p>
<span>Location: </span>
<span><%= @application.job.company.location %></span>
</p>
<p>
<span>Company: </span>
<span><%= @application.job.company.name %></span>
</p>
</br>
<p>Your submitted information:</p>
<p>
<span>Full Name: </span>
<span> <%= @application.name %></span>
</p>
<p>
<span>Email: </span>
<span> <%= @application.email %></span>
</p>
<p>
<span>CV Link: </span>
<span> <%= @application.cv %></span>
</p>
<p>Best,</p>
<%= render "layouts/key_visual" %>
<div class="container">
<div class="row">
<div class="container">
<div class="top-page">
<!-- Search -->
<div class="panel border_bot clearfix">
......@@ -18,4 +19,5 @@
<%= link_to "All Industries", industries_path, class: "btn btn-default navbar-right" %>
</div>
</div>
</div>
</div>
......@@ -33,7 +33,7 @@
</p>
</div>
<div class="col-md-3">
<%= link_to "Apply", "#", class: "btn btn-primary btn-lg" %>
<%= link_to "Apply", apply_path(job_id: @job.id), method: :get, class: "btn btn-primary btn-lg" %>
</div>
<div class="action">
<div class="col-md-6">
......
<% flash.each do |name, msg| %>
<div class="alert alert-info alert-dismissable fade in" style="position: fixed; right: 0" id="message">
<a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
<strong><%= "#{name}!" %></strong> <%= msg %>
</div>
<% end %>
......@@ -11,9 +11,16 @@
<ul class="nav navbar-nav navbar-right">
<%- if current_user -%>
<li><a href="#"><i class="fa fa-sign-in" aria-hidden="true"></i> My Page</a></li>
<li><a href="#"><i class="fa fa-plus" aria-hidden="true"></i> Logout</a></li>
<li>
<%= link_to destroy_user_session_path, method: :delete do %>
<i class="fa fa-sign-out" aria-hidden="true"></i>Logout
<% end %>
</li>
<%- else -%>
<li><a href="#"><i class="fa fa-sign-in" aria-hidden="true"></i> Login</a></li>
<li>
<%= link_to new_user_session_path do %>
<i class="fa fa-sign-in" aria-hidden="true"></i>Signin
<% end %></li>
<li><a href="#"><i class="fa fa-plus" aria-hidden="true"></i> Register</a></li>
<%- end -%>
......
......@@ -10,6 +10,7 @@
<body>
<%= render "layouts/menu" %>
<%= render "layouts/flash" %>
<%= yield %>
<%= render "layouts/footer" %>
</body>
......
......@@ -51,4 +51,13 @@ Rails.application.configure do
# Use an evented file watcher to asynchronously detect changes in source code,
# routes, locales, etc. This feature depends on the listen gem.
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "example.com",
authentication: "plain",
enable_starttls_auto: true,
user_name: ENV["GMAIL_USER"],
password: ENV["GMAIL_PASSWORD"]
}
end
......@@ -11,4 +11,7 @@ Rails.application.routes.draw do
get 'company/:company_id' => "jobs#company", as: :company
end
end
get 'apply' => "applies#apply"
post 'confirm' => "applies#confirm"
post 'done' => "applies#done"
end
class AddNameAndEmailToApplyJobs < ActiveRecord::Migration[5.1]
def change
add_column :apply_jobs, :name, :string, null: false
add_column :apply_jobs, :email, :string, null: false
end
end
......@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20171016091830) do
ActiveRecord::Schema.define(version: 20171018012604) do
create_table "apply_jobs", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.bigint "job_id"
......@@ -18,6 +18,8 @@ ActiveRecord::Schema.define(version: 20171016091830) do
t.string "cv"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "name", null: false
t.string "email", null: false
t.index ["job_id"], name: "index_apply_jobs_on_job_id"
t.index ["user_id"], name: "index_apply_jobs_on_user_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