77 lines
1.9 KiB
Ruby
77 lines
1.9 KiB
Ruby
class CastingCallsController < ApplicationController
|
|
layout "project"
|
|
|
|
before_action :set_project
|
|
before_action :build_casting_call, only: [:new, :create]
|
|
before_action :set_casting_call, only: [:show, :edit, :update, :cancel]
|
|
|
|
def index
|
|
@casting_calls = casting_calls.order_by_recent.paginate(page: params[:page])
|
|
end
|
|
|
|
def new
|
|
end
|
|
|
|
def create
|
|
@casting_call.attributes = casting_call_params_with_email
|
|
|
|
if @casting_call.save
|
|
log_create_analytics
|
|
castme_url = url_for([@project, @casting_call])
|
|
SubmitHubspotFormJob.perform_later(email: @casting_call.user_email, castme_url: castme_url, form_guid: ENV["HUBSPOT_CASTING_CALL_REQUEST_FORM_GUID"])
|
|
else
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def show
|
|
render layout: 'application'
|
|
end
|
|
|
|
def edit
|
|
end
|
|
|
|
def update
|
|
if @casting_call.update(casting_call_params)
|
|
redirect_to [@project, :casting_calls], notice: t(".notice")
|
|
else
|
|
render :edit
|
|
end
|
|
end
|
|
|
|
def cancel
|
|
@casting_call.update(cancelled_at: Time.zone.now)
|
|
redirect_to [@project, :casting_calls], notice: t(".notice")
|
|
end
|
|
|
|
private
|
|
|
|
def casting_call_params
|
|
params.require(:casting_call).permit(:title, :description, :project_description, :interview_instructions, :interview_requirements, :questions)
|
|
end
|
|
|
|
def casting_call_params_with_email
|
|
casting_call_params.merge(user_email: Current.user.email)
|
|
end
|
|
|
|
def set_project
|
|
@project = policy_scope(Project).find(params[:project_id])
|
|
end
|
|
|
|
def set_casting_call
|
|
@casting_call = authorize casting_calls.find(params[:id])
|
|
end
|
|
|
|
def casting_calls
|
|
authorize policy_scope(@project.casting_calls)
|
|
end
|
|
|
|
def build_casting_call
|
|
@casting_call = authorize @project.casting_calls.build
|
|
end
|
|
|
|
def log_create_analytics
|
|
TrackAnalyticsJob.perform_later(Current.user, Current.account, :track_create_casting_call, user_agent: request.user_agent, user_ip: request.remote_ip)
|
|
end
|
|
end
|