Submit social housing lettings and sales data (CORE)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

99 lines
2.6 KiB

class SchemesController < ApplicationController
include Pagy::Backend
include Modules::SearchFilter
before_action :authenticate_user!
before_action :find_resource, except: %i[index]
before_action :authenticate_scope!
def index
redirect_to schemes_organisation_path(current_user.organisation) unless current_user.support?
all_schemes = Scheme.all
@pagy, @schemes = pagy(filtered_collection(all_schemes, search_term))
@searched = search_term.presence
@total_count = all_schemes.size
end
def show
@scheme = Scheme.find_by(id: params[:id])
end
def locations
@scheme = Scheme.find_by(id: params[:id])
@pagy, @locations = pagy(@scheme.locations)
@total_count = @scheme.locations.size
end
def new
@scheme = Scheme.new
end
def create
@scheme = Scheme.create!(scheme_params)
render "schemes/primary_client_group"
end
def update
if @scheme.update(scheme_params)
schemes_path = case params[:scheme][:page]
when "primary-client-group"
scheme_confirm_secondary_client_group_path(@scheme)
when "confirm-secondary"
@scheme.has_other_client_group == "Yes" ? scheme_secondary_client_group_path(@scheme) : scheme_support_path(@scheme)
when "secondary-client-group"
scheme_support_path(@scheme)
when "support"
scheme_check_answers_path(@scheme)
end
redirect_to schemes_path
else
render request.current_url, status: :unprocessable_entity
end
end
def edit; end
def primary_client_group
render "schemes/primary_client_group"
end
def confirm_secondary_client_group
render "schemes/confirm_secondary"
end
def secondary_client_group
render "schemes/secondary_client_group"
end
def support
render "schemes/support"
end
def check_answers
render "schemes/check_answers"
end
private
def scheme_params
params.require(:scheme).permit(:service_name, :sensitive, :organisation_id, :scheme_type, :registered_under_care_act, :total_units, :id, :confirmed, :has_other_client_group)
end
def search_term
params["search"]
end
def find_resource
@scheme = Scheme.find_by(id: params[:id]) || Scheme.find_by(id: params[:scheme_id])
end
def authenticate_scope!
head :unauthorized and return unless current_user.data_coordinator? || current_user.support?
if %w[show locations].include?(action_name) && !((current_user.organisation == @scheme.organisation) || current_user.support?)
render_not_found and return
end
end
end