negos_app/app/controllers/public/needs_controller.rb
2015-12-04 14:34:12 +01:00

132 lines
3.1 KiB
Ruby

class Public::NeedsController < ApplicationController
layout "public"
before_filter :auth_customer
def index
# Get only public needs
@needs = Need.shared
# filters default value
params[:o] ||= 'created-desc'
# Include search in the query
if(params[:q] != '')
@needs = @needs.search(params[:q])
end
# Include order in the query
case params[:o]
when 'alpha-asc'
@needs = @needs.order(title: :asc)
when 'alpha-desc'
@needs = @needs.order(title: :desc)
when 'wishes-asc'
@needs = @needs.with_wishes_count.order('wishes_count ASC')
when 'wishes-desc'
@needs = @needs.with_wishes_count.order('wishes_count DESC')
when 'created-asc'
@needs = @needs.order(created_at: :asc)
when 'created-desc'
@needs = @needs.order(created_at: :desc)
when 'comments-asc'
@needs = @needs.with_messages_count.order('messages_count ASC')
when 'comments-desc'
@needs = @needs.with_messages_count.order('messages_count DESC')
end
# Paginate
@needs = @needs.page(params[:page]).per(6)
# Define order select options
@orders = {
"Les plus récents" => 'created-desc',
"Les plus anciens" => 'created-asc',
"Nombre d'intérêts décroissants" => 'wishes-desc',
"Nombre d'intérêts croissants" => 'wishes-asc' ,
"Nombre de commentaires décroissants" => 'comments-desc',
"Nombre de commentaires croissants" => 'comments-asc',
"Alphabétique (de A à Z)" => 'alpha-asc',
"Alphabétique (de Z à A)" => 'alpha-desc'
}
end
def new
@need = Need.new()
end
def destroy
@need = Need.find(params[:id])
if(@need.destroy)
flash[:notice] = "Besoin supprimé avec succès."
end
redirect_to public_my_account_path
end
def edit
@need = Need.find(params[:id])
end
def show
@need = Need.find(params[:id])
@comment = Message.new()
@comments = @need.messages.order(created_at: :desc).page params[:page]
end
def update
@need = Need.find(params[:id])
if @need.update_attributes(need_params)
flash[:notice] = "Besoin sauvegardé avec succès."
redirect_to public_my_account_path
else
render :action => "edit"
end
end
def create
@need = Need.new(need_params)
@need.author = current_customer
if @need.save
flash[:notice] = "Votre besoin à été créé avec succès."
# Find all admins with emails
admins = Admin.where.not(email: nil)
admins.each do |admin|
AdminMailer.new_need(admin, @need).deliver
end
redirect_to public_my_account_path
else
render :action => "new"
end
end
def need_params
params.require(:need).permit(:title, :description)
end
def wish
@need = Need.find(params[:id])
if (!@need.customers.include?(current_customer))
@need.customers << current_customer
flash[:notice] = "Vous avez signalé votre intérêt pour ce besoin"
else
@need.customers.delete(current_customer)
flash[:error] = "Vous n'êtes maintenant plus intéressé par ce besoin"
end
redirect_to :back
end
end