# frozen_string_literal: true class CandidateController < ApplicationController before_action :authorize_candidate, except: [:login, :validate, :live_coder] before_action :send_to_oops, only: [:login] def login login_candidate redirect_to :thankyou and return if current_candidate && current_candidate.completed? redirect_to :welcome if current_candidate flash[:error] = "Sorry, incorrect test id" if params[:test_hash].present? end def welcome render :welcome_back if current_candidate.answers.count.positive? end def saved end def oops end def thankyou redirect_to root_path if session[:test_id].nil? reset_session end def validate candidate = Candidate.find_by(test_hash: params['test_id']) redirect_to(root_path, flash: { error: "Sorry, incorrect test id" }) and return if candidate.nil? session[:test_id] = candidate.test_hash redirect_to :thankyou and return if candidate.completed? redirect_to :welcome end private def login_candidate candidate = Candidate.find_by(test_hash: params['test_id']) return false if candidate.nil? session[:test_id] = candidate.test_hash end def send_to_oops redirect_to welcome_path and return if current_candidate && current_candidate.stale? redirect_to oops_path if current_candidate end end