foodsoft/app/controllers/home_controller.rb

92 lines
3 KiB
Ruby
Raw Permalink Normal View History

class HomeController < ApplicationController
def index
# unaccepted tasks
2017-10-20 00:59:56 +02:00
@unaccepted_tasks = Task.order(:due_date).unaccepted_tasks_for(current_user)
# task in next week
2017-10-20 00:59:56 +02:00
@next_tasks = Task.order(:due_date).next_assigned_tasks_for(current_user)
# count tasks with no responsible person
# tasks for groups the current user is not a member are ignored
@unassigned_tasks = Task.order(:due_date).next_unassigned_tasks_for(current_user)
end
def profile; end
2019-11-11 12:09:18 +01:00
def reference_calculator
if current_user.ordergroup
@types = FinancialTransactionType.with_name_short.order(:name)
@bank_accounts = @types.includes(:bank_account).map(&:bank_account).uniq.compact
@bank_accounts = [BankAccount.last] if @bank_accounts.empty?
2019-11-11 12:09:18 +01:00
else
redirect_to root_url, alert: I18n.t('group_orders.errors.no_member')
end
end
def update_profile
if @current_user.update(user_params)
@current_user.ordergroup.update(ordergroup_params) if ordergroup_params
session[:locale] = @current_user.locale
2013-02-04 02:12:24 +01:00
redirect_to my_profile_url, notice: I18n.t('home.changes_saved')
else
render :profile
end
end
def ordergroup
@user = @current_user
@ordergroup = @user.ordergroup
if @ordergroup.nil?
redirect_to root_path, alert: I18n.t('home.no_ordergroups')
else
2020-08-12 13:38:18 +02:00
@ordergroup = Ordergroup.include_transaction_class_sum.find(@ordergroup.id)
sort = if params['sort']
case params['sort']
when 'date' then 'created_on'
when 'note' then 'note'
when 'amount' then 'amount'
when 'date_reverse' then 'created_on DESC'
when 'note_reverse' then 'note DESC'
when 'amount_reverse' then 'amount DESC'
end
else
'created_on DESC'
end
@financial_transactions = @ordergroup.financial_transactions.visible.page(params[:page]).per(@per_page).order(sort)
if params[:query].present?
@financial_transactions = @financial_transactions.where('financial_transactions.note LIKE ?',
"%#{params[:query]}%")
end
end
end
# cancel personal memberships direct from the myProfile-page
def cancel_membership
membership = if params[:membership_id]
@current_user.memberships.find(params[:membership_id])
else
@current_user.memberships.find_by_group_id!(params[:group_id])
end
2014-12-16 21:09:04 +01:00
membership.destroy
redirect_to my_profile_path, notice: I18n.t('home.ordergroup_cancelled', group: membership.group.name)
end
protected
def user_params
params
.require(:user)
.permit(:first_name, :last_name, :email, :phone,
:password, :password_confirmation).merge(params[:user].slice(:settings_attributes))
end
def ordergroup_params
return unless params[:user][:ordergroup]
params.require(:user).require(:ordergroup).permit(:contact_address)
end
end