132 lines
3.0 KiB
Ruby
Executable File
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
|