58 lines
1.6 KiB
Ruby
58 lines
1.6 KiB
Ruby
class OrganizationsController < ApplicationController
|
|
before_action :load_resource, only: [:show, :edit, :update, :set_current]
|
|
before_action :user_should_be_confirmed
|
|
|
|
def index
|
|
if current_user
|
|
user_organizations = Organization.left_outer_joins(:petitions).where(petitions: { user_id: current_user.id })
|
|
@user_organizations = user_organizations.or(Organization.where(id: current_user.organizations.pluck(:id))).distinct
|
|
end
|
|
|
|
organizations = Organization.where.not(id: @user_organizations&.pluck(:id))
|
|
organizations = organizations.search_by_query(params[:q]) if params[:q].present?
|
|
@organizations = organizations.order(highlighted: :desc).page(params[:page]).per(25)
|
|
end
|
|
|
|
def show
|
|
@movements = @organization.
|
|
account.
|
|
movements.
|
|
order("created_at DESC").
|
|
page(params[:page]).
|
|
per(10)
|
|
end
|
|
|
|
def update
|
|
if @organization.update(organization_params)
|
|
redirect_to @organization
|
|
else
|
|
render action: :edit, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
def set_current
|
|
if current_user
|
|
session[:current_organization_id] = @organization.id
|
|
end
|
|
redirect_to root_path
|
|
end
|
|
|
|
def select_organization
|
|
@organizations = current_user.organizations
|
|
end
|
|
|
|
private
|
|
|
|
def load_resource
|
|
@organization = Organization.find(params[:id])
|
|
|
|
authorize @organization
|
|
end
|
|
|
|
def organization_params
|
|
params[:organization].permit(*%w[name theme email phone web
|
|
public_opening_times description address
|
|
neighborhood city domain logo])
|
|
end
|
|
end
|