Skip to content

Commit

Permalink
OrganizationsController: Refactor
Browse files Browse the repository at this point in the history
Remove accumulate_data method, replace with custom Hash accumulate method.
Extract require_admin into ApplicationController.

References #331
  • Loading branch information
ybakos committed Oct 25, 2023
1 parent e7caab4 commit 6a0cf5f
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 18 deletions.
8 changes: 8 additions & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,12 @@ def configure_permitted_parameters
def after_sign_in_path_for(resource)
current_user
end

def require_admin
unless current_user&.admin_role?
redirect_to root_path
flash[:alert] = 'Restricted action, must be an Admin'
end
end

end
23 changes: 5 additions & 18 deletions app/controllers/organizations_controller.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
require 'hash'

class OrganizationsController < ApplicationController
before_action :authenticate_user!, except: [:show, :index]
before_action :require_admin, except: [:show, :index]
Expand All @@ -9,23 +11,15 @@ def index

def show
@organization_projects = @organization.projects
@chart_project_count = accumulate_data(@organization_projects.group_by_day(:implementation_date, format: "%d %b %Y").count)
@chart_structure_count = accumulate_data(@organization_projects.group_by_day(:implementation_date).sum(:number_of_structures))
@chart_total_length = accumulate_data(@organization_projects.group_by_day(:implementation_date).sum(:length)).transform_values { |v| v / 1000.0}
@chart_project_count = @organization_projects.group_by_day(:implementation_date, format: "%d %b %Y").count.accumulate!
@chart_structure_count = @organization_projects.group_by_day(:implementation_date).sum(:number_of_structures).accumulate!
@chart_total_length = @organization_projects.group_by_day(:implementation_date).sum(:length).accumulate!.transform_values { |v| v / 1000.0}
@project_count = @organization_projects.count
@structure_sum = @organization_projects.structure_sum
@project_total_length_km = @organization_projects.project_total_length_km
@project_total_length_mi = (@project_total_length_km* 0.6214).floor(1)
end

def accumulate_data(data)
accumulator = 0
data.transform_values! do |val|
val += accumulator
accumulator = val
end
end

def new
@organization = Organization.new
end
Expand All @@ -35,7 +29,6 @@ def edit

def create
@organization = Organization.new(organization_params)

respond_to do |format|
if @organization.save
format.html { redirect_to @organization, notice: "Organization was successfully created." }
Expand Down Expand Up @@ -77,10 +70,4 @@ def organization_params
params.require(:organization).permit(:name, :description, :contact, :website, :logo)
end

def require_admin
unless current_user&.admin_role?
redirect_to root_path
flash[:alert] = 'Restricted action, must be an Admin'
end
end
end

0 comments on commit 6a0cf5f

Please sign in to comment.