DatabaseCreation: views.sql

File views.sql, 4.6 KB (added by 231119, 2 days ago)
Line 
1create or replace view vw_unassigned_requests as
2select r.id,
3 r.customer_user_id,
4 r.start_latitude,
5 r.start_longitude,
6 r.end_latitude,
7 r.end_longitude,
8 r.timestamp,
9 r.number_of_children,
10 r.status,
11 r.female_driver,
12 r.luggage,
13 r.luggage_count,
14 u.username as customer_username
15from Request r
16 join AppUser u on r.customer_user_id = u.id
17where r.status = 'pending'::request_status;
18
19create or replace view vw_live_offers_for_customer as
20select o.id as offer_id,
21 request_id,
22 o.price,
23 o.eta,
24 o.customer_user_id as customer_id,
25 cu.username as customer_username,
26 cu.first_name as customer_fist_name,
27 cu.last_name as customer_last_name,
28 du.first_name as driver_first_name,
29 du.last_name as driver_last_name
30from offer o
31 join appuser du on o.driver_user_id = du.id
32 join appuser cu on o.customer_user_id = cu.id
33where o.status = 'pending'::offer_status;
34
35create or replace view vw_available_drivers as
36select d.user_id, u.first_name, u.last_name, u.phone_number
37from Driver d
38 join AppUser u on d.user_id = u.id
39 join DriverLicense dl on d.driver_license_id = dl.id
40 join driver_vehicle dc on dc.id_driver = d.user_id
41 left join Ride r on r.driver_user_id = u.id
42where (dl.expire_date > CURRENT_DATE or dl.expire_date is null and dc.time_to is null)
43 and r.status != 'in_progress'::ride_status;
44
45create or replace view all_drivers as
46with drivers_from_company as (select u.id, first_name, last_name, phone_number, email, True as from_company
47 from Appuser u
48 inner join Driver d on u.id = d.user_id),
49 drivers_freelance as (select u.id, first_name, last_name, phone_number, email, False as from_company
50 from Appuser u
51 inner join Freelancedriver d on u.id = d.driver_user_id)
52select *
53from (select * from drivers_from_company union select * from drivers_freelance) drivers_temp;
54
55create or replace view customer_payments_ride as
56select c.user_id, cp.amount, cp.payment_method, r.end_time
57from customer c
58 inner join customerpayment cp on c.user_id = cp.customer_user_id
59 inner join payment p on p.id = cp.payment_id
60 inner join ride r on p.completed_ride_id = r.id;
61
62create or replace view reports_on_drivers_rides as
63select r.title, r.reason, r.message, vehicle.vin, driver.user_id
64from Report r
65 inner join Ride ride on ride.id = r.ride_id
66 inner join Driver driver on driver.user_id = ride.driver_user_id
67 inner join Vehicle vehicle on vehicle.vin = ride.vehicle_vin;
68
69create or replace view reviews_on_drivers as
70select d.user_id, review.rating, review.comment
71from Review review
72 inner join Ride r on r.id = review.ride_id
73 inner join Driver d on d.user_id = r.driver_user_id;
74
75create or replace view user_message_driver as
76select c.user_id as user_id, m.message, d.user_id as driver_id
77from chatmessage m
78 inner join customer c on m.user_id_from = c.user_id
79 inner join ride r on r.id = m.ride_id
80 inner join driver d on d.user_id = r.driver_user_id;
81
82create or replace view vw_live_ride_monitor as
83select r.id as ride_id,
84 r.start_time,
85 cus.first_name as customer_first_name,
86 cus.last_name as customer_last_name,
87 drv.id as driver_id,
88 drv.first_name as driver_first_name,
89 drv.last_name as driver_last_name,
90 req.number_of_adult_passengers + req.number_of_children as total_passengers,
91 req.luggage_count,
92 req.baby_seat_count,
93 o.ETA,
94 o.dispatcher_user_id,
95 c.id as company_id,
96 c.name as company_name
97from Ride r
98 join Request req on r.request_id = req.id
99 join Offer o on r.offer_id = o.id
100 join AppUser drv on r.driver_user_id = drv.id
101 join AppUser cus on req.customer_user_id = cus.id
102 join EmploymentHistory eh on eh.employee_user_id = o.dispatcher_user_id and eh.end_date is null
103 join Company c on c.id = eh.company_id
104where r.status = 'in_progress';