From 9f988815907182dd9194d546b19ac4911c804d0e Mon Sep 17 00:00:00 2001 From: cedricnjanga Date: Thu, 26 Apr 2018 11:31:05 -0700 Subject: Refs #6433 Use ransackable scope for stop area status filter --- app/models/chouette/stop_area.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'app/models') diff --git a/app/models/chouette/stop_area.rb b/app/models/chouette/stop_area.rb index b933e1944..479407469 100644 --- a/app/models/chouette/stop_area.rb +++ b/app/models/chouette/stop_area.rb @@ -383,6 +383,26 @@ module Chouette end end + def self.ransackable_scopes(auth_object = nil) + [:by_status] + end + + + def self.by_status(*statuses) + return Chouette::StopArea.all if statuses.reject(&:blank?).length == 3 || statuses.reject(&:blank?).empty? + + status = { + in_creation: statuses.include?('in_creation'), + confirmed: statuses.include?('confirmed'), + deactivated: statuses.include?('deactivated'), + } + + Chouette::StopArea.where( + "confirmed_at #{status[:confirmed] ? "IS NOT NULL" : "IS NULL"} + AND deleted_at #{status[:deactivated] ? "IS NOT NULL" : "IS NULL"}" + ) + end + def activated? !!(deleted_at.nil? && confirmed_at) end -- cgit v1.2.3