diff options
Diffstat (limited to 'app/controllers/purchase_windows_controller.rb')
| -rw-r--r-- | app/controllers/purchase_windows_controller.rb | 75 | 
1 files changed, 75 insertions, 0 deletions
| diff --git a/app/controllers/purchase_windows_controller.rb b/app/controllers/purchase_windows_controller.rb new file mode 100644 index 000000000..04b5736bb --- /dev/null +++ b/app/controllers/purchase_windows_controller.rb @@ -0,0 +1,75 @@ +class PurchaseWindowsController < ChouetteController +  include ReferentialSupport +  include RansackDateFilter +  include PolicyChecker +  before_action :ransack_contains_date, only: [:index] +  defaults :resource_class => Chouette::PurchaseWindow, collection_name: 'purchase_windows', instance_name: 'purchase_window' +  belongs_to :referential + +  requires_feature :purchase_windows + +  def index +    index! do +      @purchase_windows = decorate_purchase_windows(@purchase_windows) +    end +  end + +  def show +    show! do +      @purchase_window = @purchase_window.decorate(context: { +        referential: @referential +      }) +    end +  end + +  protected + +  def create_resource(purchase_window) +    purchase_window.referential = @referential +    super +  end + +  private + +  def purchase_window_params +    params.require(:purchase_window).permit(:id, :name, :color, :referential_id, periods_attributes: [:id, :begin, :end, :_destroy]) +  end + +  def decorate_purchase_windows(purchase_windows) +    ModelDecorator.decorate( +      purchase_windows, +      with: PurchaseWindowDecorator, +      context: { +        referential: @referential +        } +      ) +  end + +   def sort_column +    Chouette::PurchaseWindow.column_names.include?(params[:sort]) ? params[:sort] : 'name' +  end + +  def sort_direction +    %w[asc desc].include?(params[:direction]) ?  params[:direction] : 'asc' +  end + +  def collection +    return @purchase_windows if @purchase_windows +    @q = Chouette::PurchaseWindow.ransack(params[:q]) + +    purchase_windows = @q.result +    purchase_windows = purchase_windows.order(sort_column + ' ' + sort_direction) if sort_column && sort_direction +    @purchase_windows = purchase_windows.paginate(page: params[:page]) +  end + +  def ransack_contains_date +    date =[] +    if params[:q] && params[:q]['contains_date(1i)'].present? +      ['contains_date(1i)', 'contains_date(2i)', 'contains_date(3i)'].each do |key| +        date << params[:q][key].to_i +        params[:q].delete(key) +      end +      params[:q]['contains_date'] = @date = Date.new(*date) rescue nil +    end +  end +end | 
