Advertisement
Guest User

Untitled

a guest
Oct 20th, 2018
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.58 KB | None | 0 0
  1. module Api::V1
  2.   class FlightsController < ApplicationController
  3.  
  4.     def index
  5.       arrivals = filter_arrivals
  6.       departures = filter_departures
  7.       data = {}
  8.  
  9.       data[:arrivals] = arrivals if arrivals.present?
  10.       data[:departures] = departures if departures.present?
  11.  
  12.       render json: data.to_json, status: :ok
  13.     end
  14.  
  15.     def destroy_all
  16.       Arrival.all.delete_all
  17.       Departure.all.delete_all
  18.       render json: 'All data deleted.', status: :ok
  19.     end
  20.  
  21.     private
  22.  
  23.     def filter_arrivals
  24.       if params[:type].present? && params[:type] != 'arrival'
  25.         data = []
  26.       else
  27.         start_date = Date.parse(params[:start_date]) rescue ''
  28.         end_date = Date.parse(params[:end_date]) rescue ''
  29.         if start_date.present? && end_date.present?
  30.           data = Arrival.between(start_date, end_date).order(:date, :time)
  31.         elsif start_date.present?
  32.           data = Arrival.from_date(start_date).order(:date, :time)
  33.         elsif end_date.present?
  34.           data = Arrival.till_date(end_date).order(:date, :time)
  35.         else
  36.           data = Arrival.all.order(:date, :time)
  37.         end
  38.  
  39.         data = data.where(airline: params[:airline]) if params[:airline].present?
  40.         data = data.where(flight_no: params[:flight_no]) if params[:flight_no].present?
  41.         data = data.where(time: params[:time]) if params[:time].present?
  42.         data = data.where("arriving_from ilike ?", "%#{params[:from]}%").uniq if params[:from].present?
  43.         return data
  44.       end
  45.     end
  46.  
  47.     def filter_departures
  48.       if params[:type].present? && params[:type] != 'departure'
  49.         data = []
  50.       else
  51.         start_date = Date.parse(params[:start_date]) rescue ''
  52.         end_date = Date.parse(params[:end_date]) rescue ''
  53.         if start_date.present? && end_date.present?
  54.           data = Departure.between(start_date, end_date).order(:date, :time)
  55.         elsif start_date.present?
  56.           data = Departure.from_date(start_date).order(:date, :time)
  57.         elsif end_date.present?
  58.           data = Departure.till_date(end_date).order(:date, :time)
  59.         else
  60.           data = Departure.all.order(:date, :time)
  61.         end
  62.  
  63.         data = data.where(airline: params[:airline]) if params[:airline].present?
  64.         data = data.where(flight_no: params[:flight_no]) if params[:flight_no].present?
  65.         data = data.where(time: params[:time]) if params[:time].present?
  66.         data = data.where("destination ilike ?", "%#{params[:destination]}%").uniq if params[:destination].present?
  67.         return data
  68.       end
  69.     end
  70.   end
  71. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement