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