store value input, fix some mentor's comments

parent 8aee83ff
Pipeline #1026 canceled with stages
in 0 seconds
...@@ -31,3 +31,4 @@ ...@@ -31,3 +31,4 @@
/config/master.key /config/master.key
config/local_env.yml config/local_env.yml
public/uploads
class JobAppliedsController < ApplicationController class JobAppliedsController < ApplicationController
before_action :sign_in_validation, only: [:new, :confirmation, :create, :show] before_action :sign_in_validation, only: %i[new confirmation create show]
before_action :find_job_id, only: [:new] before_action :find_job_id, only: [:new]
def new def new
founded_application = JobApplied.where(user_id: current_user.id, job_id: params[:job_id]) session[:job_id] = params[:job_id]
return redirect_to job_detail_path(params[:job_id]) if founded_application.present? if session[:job_applied].present?
user_name = session[:job_applied]['name']
user_email = session[:job_applied]['email']
end
session[:job_id] ||= session[:get_job_id]
user_name ||= current_user.name
user_email ||= current_user.email
founded_application = JobApplied.exists?(user_id: current_user.id, job_id: session[:job_id])
return redirect_to job_detail_path(session[:job_id]) if founded_application
@job_applied = current_user.job_applieds.new(name: user_name,
email: user_email)
end end
def show def show
...@@ -12,26 +25,29 @@ class JobAppliedsController < ApplicationController ...@@ -12,26 +25,29 @@ class JobAppliedsController < ApplicationController
end end
def confirmation def confirmation
@founded_job = JobApplied.where(user_id: current_user.id, job_id: apply_params[:job_id]) session[:get_job_id] = session[:job_id]
return redirect_to apply_job_path(job_id: apply_params[:job_id]), flash: {danger: Settings.user.applied_job.applied} if @founded_job.present? @job_applied = current_user.job_applieds.new(apply_params)
session[:job_applied] = @job_applied
@user = current_user.job_applieds.new(apply_params) @job_applied.cv_user = current_user.cv_user if apply_params[:cv_user].blank?
@user.cv_user = current_user.cv_user if apply_params[:cv_user].blank? @job_applied.job_id = session[:get_job_id] if @job_applied.job_id.blank?
if @user.invalid? if @job_applied.invalid?
flash[:danger] = @user.errors.full_messages.join('<br>') flash.now[:danger] = @job_applied.errors.full_messages.join('<br>')
redirect_to apply_job_path(job_id: apply_params[:job_id]) render :new
end end
end end
def create def create
@job = Job.find_by(id: apply_params[:job_id]) @job = Job.find_by(id: session[:get_job_id])
@user = current_user.job_applieds.new(apply_params) @job_applied = current_user.job_applieds.new(apply_params)
@user.cv_user.retrieve_from_cache!(apply_params[:cv_user]) @job_applied.job_id = session[:get_job_id] if @job_applied.job_id.blank?
if @user.save @job_applied.cv_user.retrieve_from_cache!(apply_params[:cv_user])
JobAppliedMailer.apply_job(@user, @job).deliver_later if @job_applied.save
JobAppliedMailer.apply_job(ENV['GMAIL_USERNAME']).deliver_later JobAppliedMailer.apply_job(@job_applied, @job).deliver_later
JobAppliedMailer.sending_admin(@job_applied, @job, ENV['GMAIL_USERNAME']).deliver_later
end end
session.delete(:job_applied)
end end
private private
...@@ -44,7 +60,7 @@ class JobAppliedsController < ApplicationController ...@@ -44,7 +60,7 @@ class JobAppliedsController < ApplicationController
end end
def apply_params def apply_params
params.require(:job_applied).permit(:name, :email, :cv_user, :job_id) params.require(:job_applied).permit(:name, :email, :cv_user)
end end
def find_job_id def find_job_id
......
...@@ -27,6 +27,7 @@ class JobsController < ApplicationController ...@@ -27,6 +27,7 @@ class JobsController < ApplicationController
end end
def show def show
session.delete(:job_applied)
return redirect_to jobs_path unless @job return redirect_to jobs_path unless @job
@user = JobApplied.where(user_id: current_user.id, job_id: params[:id]) if signed_in? @user = JobApplied.where(user_id: current_user.id, job_id: params[:id]) if signed_in?
end end
......
...@@ -4,4 +4,10 @@ class JobAppliedMailer < ActionMailer::Base ...@@ -4,4 +4,10 @@ class JobAppliedMailer < ActionMailer::Base
@user = user @user = user
mail(to: user.email, subject: Settings.email.job_applied) mail(to: user.email, subject: Settings.email.job_applied)
end end
def sending_admin(user, job, email)
@job = job
@user = user
mail(to: email, subject: Settings.email.job_applied)
end
end end
<h2>Dear <%= @user.name %></h2>
<p>Thank you for applied with VenJOB. Your applied job's information is as follow:</p>
<p><h3><%= @job.title %></h3></p>
<p><h3><%= @job.cities.map(&:name).join(' | ') %></h3></p>
<p><h3><%= @job.company.name %></h3></p>
<p>Your submitted information:</p>
<p><h3><%= @user.name %></h3></p>
<p><h3><%= @user.email %></h3></p>
<p><h3><%= link_to @user.cv_user.identifier, (root_url.chop + @user.cv_user.url) %></h3></p>
Best,
...@@ -5,14 +5,13 @@ ...@@ -5,14 +5,13 @@
<h1 class="text-center my-page-label">Confirmation</h1> <h1 class="text-center my-page-label">Confirmation</h1>
<div class="form-login"> <div class="form-login">
<div class="row form d-flex justify-content-center"> <div class="row form d-flex justify-content-center">
<%= form_for(@user, url: finished_apply_path) do |f| %> <%= form_for(@job_applied, url: finished_apply_path) do |f| %>
<div class="email-field"> <div class="email-field">
<div class="col-4-sm"> <div class="col-4-sm">
<%= f.label :email %> <%= f.label :email %>
</div> </div>
<div class="col-8-sm"> <div class="col-8-sm">
<strong><%= @user.email %></strong> <strong><%= f.text_field :email, value: @job_applied.email, readonly: true %></strong>
<%= f.hidden_field :email, value: @user.email %>
</div> </div>
</div> </div>
<div class="name-field"> <div class="name-field">
...@@ -20,8 +19,7 @@ ...@@ -20,8 +19,7 @@
<%= f.label :name, 'Full Name' %> <%= f.label :name, 'Full Name' %>
</div> </div>
<div class="col-8-sm"> <div class="col-8-sm">
<strong><%= @user.name %></strong> <strong><%= f.text_field :name, value: @job_applied.name, readonly: true %></strong>
<%= f.hidden_field :name, value: @user.name %>
</div> </div>
</div> </div>
<div class="cv-field"> <div class="cv-field">
...@@ -29,13 +27,12 @@ ...@@ -29,13 +27,12 @@
<%= f.label :cv_user, 'CV Upload' %> <%= f.label :cv_user, 'CV Upload' %>
</div> </div>
<div class="col-8-sm"> <div class="col-8-sm">
<%= link_to @user.cv_user.identifier, @user.cv_user.url, download: @user.cv_user.identifier %> <%= link_to @job_applied.cv_user.identifier, @job_applied.cv_user.url, download: @job_applied.cv_user.identifier %>
<%= f.hidden_field :cv_user, value: @user.cv_user.cache_name %> <%= f.hidden_field :cv_user, value: @job_applied.cv_user.cache_name %>
</div> </div>
</div> </div>
<%= f.hidden_field :job_id, value: params[:job_applied][:job_id] %>
<%= link_to 'Edit', apply_job_path(job_id: params[:job_applied][:job_id]), class: 'btn btn-outline-primary btn-lg update-btn' %> <%= link_to 'Edit', apply_job_path(job_id: session[:get_job_id]), class: 'btn btn-outline-primary btn-lg update-btn' %>
<%= f.submit 'Done', class: 'btn btn-outline-primary btn-lg update-btn' %> <%= f.submit 'Done', class: 'btn btn-outline-primary btn-lg update-btn' %>
<% end %> <% end %>
</div> </div>
......
...@@ -3,16 +3,17 @@ ...@@ -3,16 +3,17 @@
<%= render partial: 'ribbon_step', locals: { step1: 'active', step2: '', step3: '' } %> <%= render partial: 'ribbon_step', locals: { step1: 'active', step2: '', step3: '' } %>
</div> </div>
<h1 class="text-center my-page-label">Apply Form</h1> <h1 class="text-center my-page-label">Apply Form</h1>
<%= render 'layouts/flash' %>
<div class="form-login"> <div class="form-login">
<%= render 'layouts/flash' %>
<div class="row form d-flex justify-content-center"> <div class="row form d-flex justify-content-center">
<%= form_for(:job_applied, url: confirm_job_path) do |f| %> <%= form_for(@job_applied, url: confirm_job_path) do |f| %>
<div class="validation"></div>
<div class="email-field"> <div class="email-field">
<div class="col-4-sm"> <div class="col-4-sm">
<%= f.label :email %> <%= f.label :email %>
</div> </div>
<div class="col-8-sm"> <div class="col-8-sm">
<%= f.text_field :email, class: 'input-email', value: current_user.email %> <%= f.text_field :email, class: 'input-email' %>
</div> </div>
</div> </div>
<div class="name-field"> <div class="name-field">
...@@ -20,7 +21,7 @@ ...@@ -20,7 +21,7 @@
<%= f.label :name, 'Full Name' %> <%= f.label :name, 'Full Name' %>
</div> </div>
<div class="col-8-sm"> <div class="col-8-sm">
<%= f.text_field :name, class: 'input-name', value: current_user.name %> <%= f.text_field :name, class: 'input-name' %>
</div> </div>
</div> </div>
<div class="cv-field"> <div class="cv-field">
...@@ -40,7 +41,6 @@ ...@@ -40,7 +41,6 @@
<% end %> <% end %>
</div> </div>
</div> </div>
<%= f.hidden_field :job_id, value: params[:job_id] %>
<%= f.submit 'Confirm', class: 'btn btn-outline-primary btn-lg update-btn' %> <%= f.submit 'Confirm', class: 'btn btn-outline-primary btn-lg update-btn' %>
<% 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