From cd194a32584b974903dd0d2c0894be8dea6e9982 Mon Sep 17 00:00:00 2001 From: Jessica Gordon Date: Fri, 17 Dec 2021 13:09:58 +0000 Subject: [PATCH 1/3] finds spaces that host has advertised --- app.rb | 7 +++++++ lib/spaces.rb | 6 ++++-- spec/features/host_review_requests_spec.rb | 19 +++++++++++++++++++ views/host_review_requests.erb | 17 +++++++++++++++++ views/main_view.erb | 2 +- 5 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 spec/features/host_review_requests_spec.rb create mode 100644 views/host_review_requests.erb diff --git a/app.rb b/app.rb index 335d422..a9628a2 100644 --- a/app.rb +++ b/app.rb @@ -57,6 +57,13 @@ class MakersBnb < Sinatra::Base Spaces.delete(params[:space_id]) redirect '/main_view' end + + + get '/review-request/:host_id' do + space_id_array = Spaces.find_hosts_spaces(params[:host_id]) + erb :host_review_requests + end + get '/booking/:space_id/book' do @space_id = params[:space_id] @current_space = Spaces.find(params[:space_id]) diff --git a/lib/spaces.rb b/lib/spaces.rb index 700d3c0..f64144d 100644 --- a/lib/spaces.rb +++ b/lib/spaces.rb @@ -73,8 +73,10 @@ def self.delete_availability(availability_id) DatabaseConnection.query("DELETE FROM availability WHERE availability_id = ($1)", [availability_id]) end - - + def self.find_hosts_spaces(user_id) + ids = DatabaseConnection.query("SELECT space_id FROM spaces WHERE user_id = $1;", [user_id]) + ids.map { |id| id['space_id'] } + end end # def self.find(space_id) diff --git a/spec/features/host_review_requests_spec.rb b/spec/features/host_review_requests_spec.rb new file mode 100644 index 0000000..dea5141 --- /dev/null +++ b/spec/features/host_review_requests_spec.rb @@ -0,0 +1,19 @@ +feature 'review requests for spaces owned by the user' do + scenario 'user approves a request' do + space_id = add_user_space_and_avaliability + + visit("/booking/#{space_id}/book") + + check '2022-01-02' + check '2022-01-03' + click_on 'Request' + + visit('/review-requests') + + check '2022-01-03' + click_on 'Approve' + + expect(page).to have_content('2022-01-02') + expect(page).not_to have_content('2022-01-03') + end +end \ No newline at end of file diff --git a/views/host_review_requests.erb b/views/host_review_requests.erb new file mode 100644 index 0000000..fabd29b --- /dev/null +++ b/views/host_review_requests.erb @@ -0,0 +1,17 @@ +

Review Requests

+ +<% each space that the logged in user owns %> + # SQL query searches spaces by user id + <% for each guest user that has booked the sapce %> + # + <% display each date the guest user has booked as a checkbox %> +
+ + + <% end loop %> + + + <% end loop %> + + +<% end loop %> \ No newline at end of file diff --git a/views/main_view.erb b/views/main_view.erb index 878c106..401ec50 100644 --- a/views/main_view.erb +++ b/views/main_view.erb @@ -16,7 +16,7 @@
-
+
From f58ded48277b42af5ce0142ede6c78a51321d743 Mon Sep 17 00:00:00 2001 From: j-cort <81960011+j-cort@users.noreply.github.com> Date: Fri, 17 Dec 2021 15:01:32 +0000 Subject: [PATCH 2/3] add request dates --- app.rb | 3 ++- lib/spaces.rb | 26 +++++++++++++++++++++++++ lib/user.rb | 12 ++++++++++++ views/host_review_requests.erb | 35 +++++++++++++++++++++++++--------- 4 files changed, 66 insertions(+), 10 deletions(-) diff --git a/app.rb b/app.rb index a9628a2..db0a307 100644 --- a/app.rb +++ b/app.rb @@ -60,7 +60,8 @@ class MakersBnb < Sinatra::Base get '/review-request/:host_id' do - space_id_array = Spaces.find_hosts_spaces(params[:host_id]) + @space_id_array = Spaces.find_hosts_spaces(params[:host_id]) + # @user_id_array = Spaces.find_guest(space_id) erb :host_review_requests end diff --git a/lib/spaces.rb b/lib/spaces.rb index f64144d..822270d 100644 --- a/lib/spaces.rb +++ b/lib/spaces.rb @@ -77,6 +77,32 @@ def self.find_hosts_spaces(user_id) ids = DatabaseConnection.query("SELECT space_id FROM spaces WHERE user_id = $1;", [user_id]) ids.map { |id| id['space_id'] } end + + def self.find_guest(space_id) + guest_ids = DatabaseConnection.query( + "SELECT request.user_id + FROM spaces + JOIN availability ON availability.space_id = spaces.space_id + JOIN request ON request.availability_id = availability.availability_id + WHERE spaces.space_id = ($1)", [space_id] + ) + guest_ids.map { |guest_id| guest_id['user_id']} + + end + + def self.find_guest_dates(space_id, user_id) + dates = DatabaseConnection.query( + "SELECT availability.dates + FROM spaces + JOIN availability ON availability.space_id = spaces.space_id + JOIN request ON request.availability_id = availability.availability_id + Where spaces.space_id = ($1) AND request.user_id = ($2)", [space_id, user_id] + ) + dates.map { |dates| dates['dates']} + + end + + end # def self.find(space_id) diff --git a/lib/user.rb b/lib/user.rb index 9972684..d853f0d 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -12,6 +12,18 @@ def initialize(user_id:, username:, email:, fullname:, pw:) @pw = pw end + def self.all + table = DatabaseConnection.query('SELECT * FROM users ORDER BY user_id ASC') + table.map do |user| + User.new(user_id: user['user_id'], username: user['username'], email: user['email'], + fullname: user['fullname'], pw: user['pw']) + end + end + + def self.find(user_id) + all.select { |user| user.user_id == user_id }.first + end + def self.add_user(username:, email:, fullname:, pw:) encrypted_password = BCrypt::Password.create(pw) diff --git a/views/host_review_requests.erb b/views/host_review_requests.erb index fabd29b..99e2dd3 100644 --- a/views/host_review_requests.erb +++ b/views/host_review_requests.erb @@ -1,17 +1,34 @@

Review Requests

-<% each space that the logged in user owns %> - # SQL query searches spaces by user id - <% for each guest user that has booked the sapce %> - # - <% display each date the guest user has booked as a checkbox %> -
+ <%@space_id_array.each do |space_id|%> - <% end loop %> + <%space = Spaces.find(space_id)%> + <%=space.space_display%>
+ <%@user_id_array = Spaces.find_guest(space_id)%> + <%@user_id_array.each do |user_id|%> + <%user = User.find(user_id)%> + <%=user.fullname%>
+ <%@guest_date_array = Spaces.find_guest_dates(space.space_id, user.user_id)%> + <%@guest_date_array.each do |date|%> + <%=date%>
+ <%end%> + <%end%> - <% end loop %> + <%end%> -<% end loop %> \ No newline at end of file + <%# <% for each guest user that has booked the sapce %> + + <%# <% display each date the guest user has booked as a checkbox %> + <%#
%> + + + <%# <% end loop %> + + + <%# <% end loop %> + + +<%# r %> \ No newline at end of file From 412ce2093fd082bd9257c0e12472adebc61e1eca Mon Sep 17 00:00:00 2001 From: j-cort <81960011+j-cort@users.noreply.github.com> Date: Fri, 17 Dec 2021 15:49:24 +0000 Subject: [PATCH 3/3] working on host review --- views/host_review_requests.erb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/views/host_review_requests.erb b/views/host_review_requests.erb index 99e2dd3..20affee 100644 --- a/views/host_review_requests.erb +++ b/views/host_review_requests.erb @@ -8,12 +8,15 @@ <%@user_id_array = Spaces.find_guest(space_id)%> <%@user_id_array.each do |user_id|%> + <%user = User.find(user_id)%> <%=user.fullname%>
+ <%@guest_date_array = Spaces.find_guest_dates(space.space_id, user.user_id)%> <%@guest_date_array.each do |date|%> <%=date%>
<%end%> + <%end%> <%end%>