a51a751524
completes #82
81 lines
2.0 KiB
Ruby
81 lines
2.0 KiB
Ruby
# frozen_string_literal: true
|
|
class RecruiterController < ApplicationController
|
|
before_action :authorize_recruiter, except: [:login, :auth]
|
|
before_action :collect_quizzes, except: [:login, :auth]
|
|
|
|
def index
|
|
@candidates = current_recruiter.candidates
|
|
end
|
|
|
|
def new
|
|
@candidate = Candidate.new
|
|
render :new
|
|
end
|
|
|
|
def create
|
|
@candidate = Candidate.create(candidate_params.merge(recruiter_id: current_recruiter.id))
|
|
|
|
if @candidate.persisted?
|
|
CandidateMailer.welcome(@candidate).deliver_later
|
|
RecruiterMailer.candidate_created(@candidate).deliver_later
|
|
redirect_to recruiter_path, flash: { success: "Sucessfully created candidate #{@candidate.name}" }
|
|
else
|
|
flash[:error] = "Failed to save candidate."
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def edit
|
|
@candidate = Candidate.find_by(id: params[:id])
|
|
end
|
|
|
|
def update
|
|
@candidate = Candidate.find_by(id: params[:id])
|
|
@candidate.update(candidate_params)
|
|
|
|
if @candidate.save
|
|
redirect_to recruiter_path, flash: { success: "#{@candidate.name} updated!" }
|
|
else
|
|
flash[:error] = "Failed to save candidate."
|
|
render :edit
|
|
end
|
|
end
|
|
|
|
def login
|
|
redirect_to recruiter_path unless current_recruiter.nil?
|
|
end
|
|
|
|
def auth
|
|
recruiter = User.find_by(email: auth_params[:email], role: %w(admin recruiter))
|
|
|
|
if recruiter && recruiter.authenticate(auth_params[:password])
|
|
session[:user] = recruiter.to_i
|
|
redirect_to recruiter_path
|
|
else
|
|
redirect_to recruiter_login_path,
|
|
flash: { error: "Sorry, incorrect email or password. Please try again." }
|
|
end
|
|
end
|
|
|
|
def logout
|
|
reset_session
|
|
redirect_to recruiter_login_path
|
|
end
|
|
|
|
def resend_welcome
|
|
candidate = Candidate.find_by(id: params[:id])
|
|
CandidateMailer.welcome(candidate).deliver_later
|
|
render json: { message: "Email queued!" }.to_json
|
|
end
|
|
|
|
private
|
|
|
|
def candidate_params
|
|
params.require(:candidate).permit(:name, :email, :experience, :quiz_id)
|
|
end
|
|
|
|
def collect_quizzes
|
|
@quizzes ||= Quiz.order(:name)
|
|
end
|
|
end
|