negos_app/app/controllers/admin/offers_controller.rb
2016-03-03 22:26:04 +01:00

132 lines
3.0 KiB
Ruby
Executable File

class Admin::OffersController < ApplicationController
layout "admin"
before_filter :auth_admin
def index
# filters default value
params[:o] ||= 'created-desc'
params[:r] ||= 10
if params[:need_id]
@need = Need.find(params[:need_id])
@offers = @need.offers
else
@offers = Offer.all
end
if(params[:q] and params[:q] != '')
@offers = @offers.joins(:need).where("needs.title like ? or offers.supplier like ?" ,"%#{params[:q]}%","%#{params[:q]}%")
end
case params[:o]
when 'created-asc'
@offers = @offers.order(created_at: :asc)
when 'created-desc'
@offers = @offers.order(created_at: :desc)
when 'alpha-asc'
@offers = @offers.order(supplier: :asc)
when 'alpha-desc'
@offers = @offers.order(supplier: :desc)
when 'price-asc'
@offers = @offers.order(price: :asc)
when 'price-desc'
@offers = @offers.order(price: :desc)
when 'need-alpha-asc'
@offers = @offers.joins(:need).order('needs.title asc')
when 'need-alpha-desc'
@offers = @offers.joins(:need).order('needs.title desc')
end
@orders = {
"Les plus récentes" => 'alpha-asc',
"Fournisseurs (de A à Z)" => 'alpha-asc',
"Fournisseurs (de Z à A)" => 'alpha-desc',
"Besoin (de A à Z)" => 'need-alpha-asc',
"Besoin (de Z à A)" => 'need-alpha-desc',
"Prix négociés croissants" => 'price-asc',
"Prix négociés décroissants" => 'price-desc'
}
@offers = @offers.page(params[:page]).per(params[:r])
end
def new
@need = Need.find(params[:need_id])
@offer = Offer.new
end
def create
@need = Need.find(params[:need_id])
@offer = Offer.new(offer_params)
if @offer.save
@need.offers << @offer
flash[:notice] = "Offre créée avec succès."
@offer.validate!
redirect_to admin_need_offers_path(@need)
else
render :action => "new"
end
end
def edit
@offer = Offer.find(params[:id])
if params[:need_id]
@need = Need.find(params[:need_id])
end
end
def update
@offer = Offer.find(params[:id])
if @offer.update_attributes(offer_params)
flash[:notice] = "Offre modifiée avec succès."
if params[:need_id]
@need = Need.find(params[:need_id])
redirect_to admin_need_offers_path(@need)
else
redirect_to admin_offers_path
end
else
render :action => "edit"
end
end
def destroy
@offer = Offer.find(params[:id])
if(@offer.destroy)
flash[:notice] = "Offre supprimée avec succès."
else
flash[:error] = "Impossible de supprimer cette offre"
end
if params[:need_id]
@need = Need.find(params[:need_id])
redirect_to admin_need_offers_path(@need)
else
redirect_to admin_offers_path
end
end
def accepted
@offer = Offer.find(params[:id])
end
private
def offer_params
params.require(:offer).permit(:supplier, :price, :fee_percentage)
end
end