From dabe3662df24cbbabfa5a1ca20590e151dc5d68d Mon Sep 17 00:00:00 2001
From: parisdolfman
Date: Wed, 7 Apr 2021 15:39:01 -0400
Subject: [PATCH 1/5] Done.
---
Gemfile.lock | 240 ++++++++++++++++++
app/controllers/attractions_controller.rb | 2 +
app/models/attraction.rb | 2 +
app/models/ride.rb | 2 +
app/models/user.rb | 3 +
db/migrate/20210407192808_create_users.rb | 13 +
db/migrate/20210407192832_create_rides.rb | 8 +
.../20210407192847_create_attactions.rb | 11 +
db/schema.rb | 38 +++
9 files changed, 319 insertions(+)
create mode 100644 Gemfile.lock
create mode 100644 app/controllers/attractions_controller.rb
create mode 100644 db/migrate/20210407192808_create_users.rb
create mode 100644 db/migrate/20210407192832_create_rides.rb
create mode 100644 db/migrate/20210407192847_create_attactions.rb
create mode 100644 db/schema.rb
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000000..58c92c2804
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,240 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ actioncable (5.2.5)
+ actionpack (= 5.2.5)
+ nio4r (~> 2.0)
+ websocket-driver (>= 0.6.1)
+ actionmailer (5.2.5)
+ actionpack (= 5.2.5)
+ actionview (= 5.2.5)
+ activejob (= 5.2.5)
+ mail (~> 2.5, >= 2.5.4)
+ rails-dom-testing (~> 2.0)
+ actionpack (5.2.5)
+ actionview (= 5.2.5)
+ activesupport (= 5.2.5)
+ rack (~> 2.0, >= 2.0.8)
+ rack-test (>= 0.6.3)
+ rails-dom-testing (~> 2.0)
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
+ actionview (5.2.5)
+ activesupport (= 5.2.5)
+ builder (~> 3.1)
+ erubi (~> 1.4)
+ rails-dom-testing (~> 2.0)
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
+ activejob (5.2.5)
+ activesupport (= 5.2.5)
+ globalid (>= 0.3.6)
+ activemodel (5.2.5)
+ activesupport (= 5.2.5)
+ activerecord (5.2.5)
+ activemodel (= 5.2.5)
+ activesupport (= 5.2.5)
+ arel (>= 9.0)
+ activestorage (5.2.5)
+ actionpack (= 5.2.5)
+ activerecord (= 5.2.5)
+ marcel (~> 1.0.0)
+ activesupport (5.2.5)
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ i18n (>= 0.7, < 2)
+ minitest (~> 5.1)
+ tzinfo (~> 1.1)
+ addressable (2.7.0)
+ public_suffix (>= 2.0.2, < 5.0)
+ arel (9.0.0)
+ autoprefixer-rails (10.2.4.0)
+ execjs
+ bcrypt (3.1.16)
+ bindex (0.8.1)
+ bootsnap (1.7.3)
+ msgpack (~> 1.0)
+ bootstrap-sass (3.3.7)
+ autoprefixer-rails (>= 5.2.1)
+ sass (>= 3.3.4)
+ builder (3.2.4)
+ byebug (11.1.3)
+ capybara (2.18.0)
+ addressable
+ mini_mime (>= 0.1.3)
+ nokogiri (>= 1.3.3)
+ rack (>= 1.0.0)
+ rack-test (>= 0.5.4)
+ xpath (>= 2.0, < 4.0)
+ childprocess (3.0.0)
+ coffee-rails (4.2.2)
+ coffee-script (>= 2.2.0)
+ railties (>= 4.0.0)
+ coffee-script (2.4.1)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.12.2)
+ concurrent-ruby (1.1.8)
+ crass (1.0.6)
+ database_cleaner (2.0.1)
+ database_cleaner-active_record (~> 2.0.0)
+ database_cleaner-active_record (2.0.0)
+ activerecord (>= 5.a)
+ database_cleaner-core (~> 2.0.0)
+ database_cleaner-core (2.0.1)
+ diff-lcs (1.4.4)
+ erubi (1.10.0)
+ execjs (2.7.0)
+ ffi (1.15.0)
+ globalid (0.4.2)
+ activesupport (>= 4.2.0)
+ i18n (1.8.10)
+ concurrent-ruby (~> 1.0)
+ jbuilder (2.11.2)
+ activesupport (>= 5.0.0)
+ listen (3.1.5)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ ruby_dep (~> 1.2)
+ loofah (2.9.1)
+ crass (~> 1.0.2)
+ nokogiri (>= 1.5.9)
+ mail (2.7.1)
+ mini_mime (>= 0.1.1)
+ marcel (1.0.1)
+ method_source (1.0.0)
+ mini_mime (1.1.0)
+ minitest (5.14.4)
+ msgpack (1.4.2)
+ nio4r (2.5.7)
+ nokogiri (1.11.2-x86_64-linux)
+ racc (~> 1.4)
+ public_suffix (4.0.6)
+ puma (3.12.6)
+ racc (1.5.2)
+ rack (2.2.3)
+ rack-test (1.1.0)
+ rack (>= 1.0, < 3)
+ rack_session_access (0.2.0)
+ builder (>= 2.0.0)
+ rack (>= 1.0.0)
+ rails (5.2.5)
+ actioncable (= 5.2.5)
+ actionmailer (= 5.2.5)
+ actionpack (= 5.2.5)
+ actionview (= 5.2.5)
+ activejob (= 5.2.5)
+ activemodel (= 5.2.5)
+ activerecord (= 5.2.5)
+ activestorage (= 5.2.5)
+ activesupport (= 5.2.5)
+ bundler (>= 1.3.0)
+ railties (= 5.2.5)
+ sprockets-rails (>= 2.0.0)
+ rails-dom-testing (2.0.3)
+ activesupport (>= 4.2.0)
+ nokogiri (>= 1.6)
+ rails-html-sanitizer (1.3.0)
+ loofah (~> 2.3)
+ railties (5.2.5)
+ actionpack (= 5.2.5)
+ activesupport (= 5.2.5)
+ method_source
+ rake (>= 0.8.7)
+ thor (>= 0.19.0, < 2.0)
+ rake (13.0.3)
+ rb-fsevent (0.10.4)
+ rb-inotify (0.10.1)
+ ffi (~> 1.0)
+ rspec-core (3.10.1)
+ rspec-support (~> 3.10.0)
+ rspec-expectations (3.10.1)
+ diff-lcs (>= 1.2.0, < 2.0)
+ rspec-support (~> 3.10.0)
+ rspec-mocks (3.10.2)
+ diff-lcs (>= 1.2.0, < 2.0)
+ rspec-support (~> 3.10.0)
+ rspec-rails (5.0.1)
+ actionpack (>= 5.2)
+ activesupport (>= 5.2)
+ railties (>= 5.2)
+ rspec-core (~> 3.10)
+ rspec-expectations (~> 3.10)
+ rspec-mocks (~> 3.10)
+ rspec-support (~> 3.10)
+ rspec-support (3.10.2)
+ ruby_dep (1.5.0)
+ rubyzip (2.3.0)
+ sass (3.7.4)
+ sass-listen (~> 4.0.0)
+ sass-listen (4.0.0)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ sass-rails (5.1.0)
+ railties (>= 5.2.0)
+ sass (~> 3.1)
+ sprockets (>= 2.8, < 4.0)
+ sprockets-rails (>= 2.0, < 4.0)
+ tilt (>= 1.1, < 3)
+ selenium-webdriver (3.142.7)
+ childprocess (>= 0.5, < 4.0)
+ rubyzip (>= 1.2.2)
+ spring (2.1.1)
+ spring-watcher-listen (2.0.1)
+ listen (>= 2.7, < 4.0)
+ spring (>= 1.2, < 3.0)
+ sprockets (3.7.2)
+ concurrent-ruby (~> 1.0)
+ rack (> 1, < 3)
+ sprockets-rails (3.2.2)
+ actionpack (>= 4.0)
+ activesupport (>= 4.0)
+ sprockets (>= 3.0.0)
+ sqlite3 (1.3.13)
+ thor (1.1.0)
+ thread_safe (0.3.6)
+ tilt (2.0.10)
+ turbolinks (5.2.1)
+ turbolinks-source (~> 5.2)
+ turbolinks-source (5.2.0)
+ tzinfo (1.2.9)
+ thread_safe (~> 0.1)
+ uglifier (4.2.0)
+ execjs (>= 0.3.0, < 3)
+ web-console (3.7.0)
+ actionview (>= 5.0)
+ activemodel (>= 5.0)
+ bindex (>= 0.4.0)
+ railties (>= 5.0)
+ websocket-driver (0.7.3)
+ websocket-extensions (>= 0.1.0)
+ websocket-extensions (0.1.5)
+ xpath (3.2.0)
+ nokogiri (~> 1.8)
+
+PLATFORMS
+ x86_64-linux
+
+DEPENDENCIES
+ bcrypt (~> 3.1.7)
+ bootsnap
+ bootstrap-sass (= 3.3.7)
+ byebug
+ capybara (~> 2.13)
+ coffee-rails (~> 4.2)
+ database_cleaner
+ jbuilder (~> 2.5)
+ listen (>= 3.0.5, < 3.2)
+ puma (~> 3.7)
+ rack_session_access
+ rails (~> 5.1)
+ rspec-rails
+ sass-rails (~> 5.0)
+ selenium-webdriver
+ spring
+ spring-watcher-listen (~> 2.0.0)
+ sqlite3 (~> 1.3.6)
+ turbolinks (~> 5)
+ tzinfo-data
+ uglifier (>= 1.3.0)
+ web-console (>= 3.3.0)
+
+BUNDLED WITH
+ 2.2.14
diff --git a/app/controllers/attractions_controller.rb b/app/controllers/attractions_controller.rb
new file mode 100644
index 0000000000..909d46f3c8
--- /dev/null
+++ b/app/controllers/attractions_controller.rb
@@ -0,0 +1,2 @@
+class AttractionsController < ApplicationController
+end
\ No newline at end of file
diff --git a/app/models/attraction.rb b/app/models/attraction.rb
index 474bd1e76c..0e7dd82af3 100644
--- a/app/models/attraction.rb
+++ b/app/models/attraction.rb
@@ -1,2 +1,4 @@
class Attraction < ApplicationRecord
+ has_many :rides
+ has_many :users, through: :rides
end
diff --git a/app/models/ride.rb b/app/models/ride.rb
index 4d880172e1..5ba3f3a392 100644
--- a/app/models/ride.rb
+++ b/app/models/ride.rb
@@ -1,2 +1,4 @@
class Ride < ActiveRecord::Base
+ belongs_to :attraction
+ belongs_to :user
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 4a57cf079b..fcaf6e3e17 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1,2 +1,5 @@
class User < ActiveRecord::Base
+ has_many :rides
+ has_many :attractions, through: :rides
+ has_secure_password
end
diff --git a/db/migrate/20210407192808_create_users.rb b/db/migrate/20210407192808_create_users.rb
new file mode 100644
index 0000000000..ac71bf1e37
--- /dev/null
+++ b/db/migrate/20210407192808_create_users.rb
@@ -0,0 +1,13 @@
+class CreateUsers < ActiveRecord::Migration[5.2]
+ def change
+ create_table :users do |t|
+ t.string :name
+ t.integer :height
+ t.integer :nausea
+ t.integer :tickets
+ t.integer :happiness
+ t.string :password_digest
+ t.boolean :admin, default:false
+ end
+ end
+end
diff --git a/db/migrate/20210407192832_create_rides.rb b/db/migrate/20210407192832_create_rides.rb
new file mode 100644
index 0000000000..406b35ef18
--- /dev/null
+++ b/db/migrate/20210407192832_create_rides.rb
@@ -0,0 +1,8 @@
+class CreateRides < ActiveRecord::Migration[5.2]
+ def change
+ create_table :rides do |t|
+ t.integer :user_id
+ t.integer :attraction_id
+ end
+ end
+end
diff --git a/db/migrate/20210407192847_create_attactions.rb b/db/migrate/20210407192847_create_attactions.rb
new file mode 100644
index 0000000000..e1635703a3
--- /dev/null
+++ b/db/migrate/20210407192847_create_attactions.rb
@@ -0,0 +1,11 @@
+class CreateAttactions < ActiveRecord::Migration[5.2]
+ def change
+ create_table :attactions do |t|
+ t.string :name
+ t.string :minimum_height
+ t.string :happiness_rating
+ t.string :nausea_rating
+ t.integer :tickets
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
new file mode 100644
index 0000000000..7064a4e590
--- /dev/null
+++ b/db/schema.rb
@@ -0,0 +1,38 @@
+# This file is auto-generated from the current state of the database. Instead
+# of editing this file, please use the migrations feature of Active Record to
+# incrementally modify your database, and then regenerate this schema definition.
+#
+# Note that this schema.rb definition is the authoritative source for your
+# database schema. If you need to create the application database on another
+# system, you should be using db:schema:load, not running all the migrations
+# from scratch. The latter is a flawed and unsustainable approach (the more migrations
+# you'll amass, the slower it'll run and the greater likelihood for issues).
+#
+# It's strongly recommended that you check this file into your version control system.
+
+ActiveRecord::Schema.define(version: 2021_04_07_192847) do
+
+ create_table "attactions", force: :cascade do |t|
+ t.string "name"
+ t.string "minimum_height"
+ t.string "happiness_rating"
+ t.string "nausea_rating"
+ t.integer "tickets"
+ end
+
+ create_table "rides", force: :cascade do |t|
+ t.integer "user_id"
+ t.integer "attraction_id"
+ end
+
+ create_table "users", force: :cascade do |t|
+ t.string "name"
+ t.integer "height"
+ t.integer "nausea"
+ t.integer "tickets"
+ t.integer "happiness"
+ t.string "password_digest"
+ t.boolean "admin", default: false
+ end
+
+end
From 011f6ed8d0918144e6f2cda56755f36c66c21eba Mon Sep 17 00:00:00 2001
From: parisdolfman
Date: Wed, 7 Apr 2021 16:37:48 -0400
Subject: [PATCH 2/5] Done.
---
app/controllers/application_controller.rb | 10 ++++
app/controllers/users_controller.rb | 56 +++++++++++++++++++++++
app/models/attraction.rb | 2 +-
app/models/user.rb | 4 ++
app/views/attractions/edit.html.erb | 0
app/views/attractions/index.html.erb | 0
app/views/attractions/new.html.erb | 0
app/views/attractions/show.html.erb | 0
app/views/users/_form.html.erb | 21 +++++++++
app/views/users/edit.html.erb | 1 +
app/views/users/new.html.erb | 1 +
app/views/users/show.html.erb | 9 ++++
app/views/users/signin.html.erb | 13 ++++++
config/routes.rb | 5 ++
14 files changed, 121 insertions(+), 1 deletion(-)
create mode 100644 app/controllers/users_controller.rb
create mode 100644 app/views/attractions/edit.html.erb
create mode 100644 app/views/attractions/index.html.erb
create mode 100644 app/views/attractions/new.html.erb
create mode 100644 app/views/attractions/show.html.erb
create mode 100644 app/views/users/_form.html.erb
create mode 100644 app/views/users/edit.html.erb
create mode 100644 app/views/users/new.html.erb
create mode 100644 app/views/users/show.html.erb
create mode 100644 app/views/users/signin.html.erb
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 1c07694e9d..939678c3d1 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,3 +1,13 @@
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
+ helper_method :current_user, :logged_in?
+
+ def logged_in?
+ !!current_user
+ end
+
+ def current_user
+ @current_user ||= User.find_by(id: session[:user_id])
+ end
+
end
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
new file mode 100644
index 0000000000..341d58aac5
--- /dev/null
+++ b/app/controllers/users_controller.rb
@@ -0,0 +1,56 @@
+class UsersController < ApplicationController
+
+ def signin
+ end
+
+ def new
+ @user = User.new
+ end
+
+ def show
+ if logged_in?
+ @user = User.find_by(id: params[:id])
+ else
+ redirect_to root_path
+ end
+ end
+
+ def create
+ User.create(user_params)
+ session[:user_id] = User.last.id
+ redirect_to user_path(current_user)
+ end
+
+ def edit
+ @user = User.find_by(id: params[:id])
+ end
+
+ def update
+ user = User.find(params[:id])
+ user.update(user_params)
+ redirect_to user_path(user)
+ end
+
+ def login
+ user = User.find_by(name: params[:user][:name])
+ if user
+ session[:user_id] = user.id
+ redirect_to user_path(user)
+ else
+ redirect_to signin_path
+ end
+ end
+
+ def logout
+ session.delete(:user_id)
+ redirect_to root_path
+ end
+
+
+ private
+
+ def user_params
+ params.require(:user).permit(:name, :password, :password_confirmation, :height, :happiness, :nausea, :tickets, :admin)
+ end
+
+end
\ No newline at end of file
diff --git a/app/models/attraction.rb b/app/models/attraction.rb
index 0e7dd82af3..d6257f2752 100644
--- a/app/models/attraction.rb
+++ b/app/models/attraction.rb
@@ -1,4 +1,4 @@
-class Attraction < ApplicationRecord
+class Attraction < ActiveRecord::Base
has_many :rides
has_many :users, through: :rides
end
diff --git a/app/models/user.rb b/app/models/user.rb
index fcaf6e3e17..3f32c2e4cb 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -2,4 +2,8 @@ class User < ActiveRecord::Base
has_many :rides
has_many :attractions, through: :rides
has_secure_password
+
+ def mood
+ self.nausea > self.happiness ? 'sad' : 'happy'
+ end
end
diff --git a/app/views/attractions/edit.html.erb b/app/views/attractions/edit.html.erb
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app/views/attractions/index.html.erb b/app/views/attractions/index.html.erb
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app/views/attractions/new.html.erb b/app/views/attractions/new.html.erb
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app/views/attractions/show.html.erb b/app/views/attractions/show.html.erb
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app/views/users/_form.html.erb b/app/views/users/_form.html.erb
new file mode 100644
index 0000000000..027247ce14
--- /dev/null
+++ b/app/views/users/_form.html.erb
@@ -0,0 +1,21 @@
+<%= form_for(user) do |f| %>
+
+ <%= f.label :name %>
+ <%= f.text_field :name %>
+ <%= f.label :height, "Height" %>
+ <%= f.number_field :height %>
+ <%= f.label :happiness, "How do you rate your happiness?" %>
+ <%= f.number_field :happiness %>
+ <%= f.label :nausea, "How do you rate your nausea? (1-5 scale)" %>
+ <%= f.number_field :nausea %>
+ <%= f.label :tickets, "How many tickets do you have?" %>
+ <%= f.number_field :tickets %>
+
+ <%= f.label :password %>
+ <%= f.password_field :password %>
+
+ <%= f.label :admin, "Check box if you are the theme park owner" %>
+ <%= f.check_box :admin %>
+
+ <%= f.submit button_label %>
+<% end %>
\ No newline at end of file
diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb
new file mode 100644
index 0000000000..a459618efc
--- /dev/null
+++ b/app/views/users/edit.html.erb
@@ -0,0 +1 @@
+<%= render partial: 'form', locals:{user: @user, button_label: "Edit User"} %>
\ No newline at end of file
diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb
new file mode 100644
index 0000000000..c7ef2696b8
--- /dev/null
+++ b/app/views/users/new.html.erb
@@ -0,0 +1 @@
+<%= render partial: 'form', locals:{user: @user, button_label: "Create User"} %>
\ No newline at end of file
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
new file mode 100644
index 0000000000..418ca99669
--- /dev/null
+++ b/app/views/users/show.html.erb
@@ -0,0 +1,9 @@
+<%= "ADMIN" if @user.admin %>
+ Name: <%@user.name%>
+ Tickets: <%@user.tickets%>
+ Mood: <%@user.mood%>
+ Height: <%@user.height%>
+
+ <%= link_to 'Edit', edit_user_path(@user) %>
+ <%= link_to 'Attractions', attractions_path %>
+ <%= link_to 'Log Out', logout_path %>
\ No newline at end of file
diff --git a/app/views/users/signin.html.erb b/app/views/users/signin.html.erb
new file mode 100644
index 0000000000..a5696791d3
--- /dev/null
+++ b/app/views/users/signin.html.erb
@@ -0,0 +1,13 @@
+<%= form_for :user, url: login_path do |f| %>
+
+ <%= f.label :name %>
+ <%= f.text_field :name %>
+
+
+ <%= f.label :password %>
+ <%= f.password_field :password %>
+
+
+ <%= f.submit "Sign In" %>
+
+<% end %>
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 787824f888..98e35fc858 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,3 +1,8 @@
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
+ root 'users#welcome'
+ get '/signin' => 'users#signin', as: :signin
+ post '/login' => 'users#login', as: :login
+ resources :users, only: [:new, :show, :create, :edit, :update]
+ resources :attractions
end
From 9cc8b0502237b782a81b4928f2acdbf7f3cb4ef2 Mon Sep 17 00:00:00 2001
From: parisdolfman
Date: Mon, 12 Apr 2021 16:04:12 -0400
Subject: [PATCH 3/5] Done.
---
app/controllers/attractions_controller.rb | 49 +++++++++++
app/controllers/rides_controller.rb | 13 +++
app/controllers/session_controller.rb | 20 +++++
app/controllers/users_controller.rb | 5 +-
app/models/ride.rb | 23 ++++++
app/models/user.rb | 9 +-
app/views/attractions/_form.html.erb | 33 ++++++++
app/views/attractions/edit.html.erb | 5 ++
app/views/attractions/index.html.erb | 25 ++++++
app/views/attractions/new.html.erb | 3 +
app/views/attractions/show.html.erb | 16 ++++
app/views/session/new.html.erb | 18 ++++
app/views/users/_form.html.erb | 82 ++++++++++++++-----
app/views/users/edit.html.erb | 1 +
app/views/users/new.html.erb | 2 +-
app/views/users/show.html.erb | 30 +++++--
config/routes.rb | 16 +++-
...20210412163359_rename_attractions_table.rb | 5 ++
db/migrate/20210412163736_rename_height.rb | 5 ++
..._remove_minimum_height_from_attractions.rb | 5 ++
...3528_remove_min_height_from_attractions.rb | 5 ++
...412173554_add_min_height_to_attractions.rb | 5 ++
...0_remove_nausea_rating_from_attractions.rb | 5 ++
...174245_add_nausea_rating_to_attractions.rb | 5 ++
...10412174439_remove_happiness_from_users.rb | 5 ++
.../20210412174513_add_happiness_to_users.rb | 5 ++
...emove_happiness_rating_from_attractions.rb | 5 ++
...759_add_happiness_rating_to_attractions.rb | 5 ++
db/schema.rb | 12 +--
29 files changed, 377 insertions(+), 40 deletions(-)
create mode 100644 app/controllers/rides_controller.rb
create mode 100644 app/controllers/session_controller.rb
create mode 100644 app/views/attractions/_form.html.erb
create mode 100644 app/views/session/new.html.erb
create mode 100644 db/migrate/20210412163359_rename_attractions_table.rb
create mode 100644 db/migrate/20210412163736_rename_height.rb
create mode 100644 db/migrate/20210412173455_remove_minimum_height_from_attractions.rb
create mode 100644 db/migrate/20210412173528_remove_min_height_from_attractions.rb
create mode 100644 db/migrate/20210412173554_add_min_height_to_attractions.rb
create mode 100644 db/migrate/20210412174020_remove_nausea_rating_from_attractions.rb
create mode 100644 db/migrate/20210412174245_add_nausea_rating_to_attractions.rb
create mode 100644 db/migrate/20210412174439_remove_happiness_from_users.rb
create mode 100644 db/migrate/20210412174513_add_happiness_to_users.rb
create mode 100644 db/migrate/20210412174742_remove_happiness_rating_from_attractions.rb
create mode 100644 db/migrate/20210412174759_add_happiness_rating_to_attractions.rb
diff --git a/app/controllers/attractions_controller.rb b/app/controllers/attractions_controller.rb
index 909d46f3c8..d14eee32c3 100644
--- a/app/controllers/attractions_controller.rb
+++ b/app/controllers/attractions_controller.rb
@@ -1,2 +1,51 @@
class AttractionsController < ApplicationController
+
+ def index
+ @attractions = Attraction.all
+ end
+
+ def show
+ @attraction = Attraction.find_by(id: params[:id])
+ @ride = @attraction.rides.build(user_id: current_user.id)
+ end
+
+# def rides
+# flash[:alert] = Ride.create(ride_params).take_ride
+#
+# redirect_to user_path(current_user)
+# end
+
+ def new
+ @attraction = Attraction.new
+ end
+
+ def create
+ attraction = Attraction.create(attraction_params)
+ redirect_to attraction_path(attraction)
+ end
+
+ def edit
+ @attraction = Attraction.find(params[:id])
+ @ride = @attraction.rides.build(user_id: current_user.id)
+ end
+
+ def update
+ attraction = Attraction.find_by(id: params[:id])
+ attraction.update(attraction_params)
+ redirect_to attraction_path(attraction)
+ end
+
+
+ private
+
+ def ride_params
+ params.permit(:user_id, :attraction_id)
+ end
+
+ def attraction_params
+ params.require(:attraction).permit(:name, :min_height, :happiness_rating, :nausea_rating, :tickets)
+ end
+
+
+
end
\ No newline at end of file
diff --git a/app/controllers/rides_controller.rb b/app/controllers/rides_controller.rb
new file mode 100644
index 0000000000..6ebc1f1c14
--- /dev/null
+++ b/app/controllers/rides_controller.rb
@@ -0,0 +1,13 @@
+class RidesController < ApplicationController
+ def create
+ ride = Ride.create(ride_params)
+ message = ride.take_ride
+ redirect_to user_path(ride.user), flash: { message: message }
+ end
+
+ private
+
+ def ride_params
+ params.require(:ride).permit(:user_id, :attraction_id)
+ end
+ end
\ No newline at end of file
diff --git a/app/controllers/session_controller.rb b/app/controllers/session_controller.rb
new file mode 100644
index 0000000000..fd2eef92d8
--- /dev/null
+++ b/app/controllers/session_controller.rb
@@ -0,0 +1,20 @@
+class SessionController < ApplicationController
+
+ def new
+ @user = User.new
+ end
+
+ def create
+ if @user = User.find_by(name: params[:user][:name])
+ session[:user_id] = @user.id
+ redirect_to user_path(@user)
+ else
+ render 'new'
+ end
+ end
+
+ def destroy
+ session.delete("user_id")
+ redirect_to root_path
+ end
+ end
\ No newline at end of file
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 341d58aac5..5089b35e8e 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -1,8 +1,11 @@
class UsersController < ApplicationController
-
+
def signin
end
+ def welcome
+ end
+
def new
@user = User.new
end
diff --git a/app/models/ride.rb b/app/models/ride.rb
index 5ba3f3a392..ba24baf206 100644
--- a/app/models/ride.rb
+++ b/app/models/ride.rb
@@ -1,4 +1,27 @@
class Ride < ActiveRecord::Base
belongs_to :attraction
belongs_to :user
+
+ def take_ride
+ result = ["Sorry."]
+ if attraction.tickets > user.tickets
+ result << "You do not have enough tickets to ride the #{attraction.name}."
+ end
+ if attraction.min_height > user.height
+ result << "You are not tall enough to ride the #{attraction.name}."
+ end
+ if result.count > 1
+ result.join(' ')
+ else
+ user.tickets -= attraction.tickets
+ user.nausea += attraction.nausea_rating
+ user.happiness += attraction.happiness_rating
+ user.save
+ "Thanks for riding the #{attraction.name}!"
+ end
+ end
+
+
+
+
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 3f32c2e4cb..cc6f35687c 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -4,6 +4,13 @@ class User < ActiveRecord::Base
has_secure_password
def mood
- self.nausea > self.happiness ? 'sad' : 'happy'
+ unless admin
+ if nausea > happiness
+ 'sad'
+ else
+ 'happy'
+ end
+ end
end
+
end
diff --git a/app/views/attractions/_form.html.erb b/app/views/attractions/_form.html.erb
new file mode 100644
index 0000000000..a7f7c51495
--- /dev/null
+++ b/app/views/attractions/_form.html.erb
@@ -0,0 +1,33 @@
+<%= form_for(@attraction) do |f| %>
+
+
+<%= f.label :name %>
+<%= f.text_field :name %>
+
+
+
+<%= f.label :min_height, "Height" %>
+<%= f.text_field :min_height %>
+
+
+
+<%= f.label :happiness_rating, "Funness?" %>
+<%= f.text_field :happiness_rating %>
+
+
+
+
+<%= f.label :nausea_rating, "How much nausea?" %>
+<%= f.text_field :nausea_rating %>
+
+
+
+<%= f.label :tickets, "How many tickets?" %>
+<%= f.text_field :tickets %>
+
+
+
+<%= f.submit class: "btn btn-primary" %>
+
+
+<% end %>
diff --git a/app/views/attractions/edit.html.erb b/app/views/attractions/edit.html.erb
index e69de29bb2..151d0e0ed9 100644
--- a/app/views/attractions/edit.html.erb
+++ b/app/views/attractions/edit.html.erb
@@ -0,0 +1,5 @@
+ Edit Attraction
+
+<%= render 'form' %>
+<%= link_to 'Show', @attraction %> |
+<%= link_to 'Back', attractions_path %>
\ No newline at end of file
diff --git a/app/views/attractions/index.html.erb b/app/views/attractions/index.html.erb
index e69de29bb2..a2266e2f25 100644
--- a/app/views/attractions/index.html.erb
+++ b/app/views/attractions/index.html.erb
@@ -0,0 +1,25 @@
+ Attractions
+
+
+<% @attractions.each do |attraction| %>
+
+ Name
+ Tickets
+ Details
+
+<%= attraction.name %>
+<%= attraction.tickets %>
+
+<% if current_user.admin %>
+ <%= link_to "Show #{attraction.name}", attraction_path(attraction) %>
+ <% else %>
+ <%= link_to "Go on #{attraction.name}", attraction_path(attraction) %>
+ <% end %>
+<% end %>
+
+<% if @user %>
+ <%= link_to "Back to profile", user_path(@user), {:class => "btn btn-primary"} %>
+ <% else %>
+ <%= link_to 'New Attraction', new_attraction_path %>
+<% end %>
+
diff --git a/app/views/attractions/new.html.erb b/app/views/attractions/new.html.erb
index e69de29bb2..1a4745a0bd 100644
--- a/app/views/attractions/new.html.erb
+++ b/app/views/attractions/new.html.erb
@@ -0,0 +1,3 @@
+ New Attraction
+
+<%= render partial: 'form', locals: {attraction: @attraction, button_label: "Create Attraction"} %>
\ No newline at end of file
diff --git a/app/views/attractions/show.html.erb b/app/views/attractions/show.html.erb
index e69de29bb2..cf424d5e20 100644
--- a/app/views/attractions/show.html.erb
+++ b/app/views/attractions/show.html.erb
@@ -0,0 +1,16 @@
+Name: <%= @attraction.name %>
+Total Number of Users: <%= @attraction.users.count %>
+Ticket Requirement: <%= @attraction.tickets %>
+Height Requirement: <%= @attraction.min_height %> inches
+Nausea Rating: <%= @attraction.nausea_rating %>
+Happiness Rating: <%= @attraction.happiness_rating %>
+
+<% if current_user.admin %>
+ <%= link_to 'Edit Attraction', [:edit, @attraction] %>
+ <% else %>
+ <%= form_for @ride do |f| %>
+ <%= f.hidden_field :user_id %>
+ <%= f.hidden_field :attraction_id %>
+ <%= f.submit "Go on this ride", class:"btn btn-light" %>
+ <% end %>
+ <% end %>
\ No newline at end of file
diff --git a/app/views/session/new.html.erb b/app/views/session/new.html.erb
new file mode 100644
index 0000000000..476696d2ba
--- /dev/null
+++ b/app/views/session/new.html.erb
@@ -0,0 +1,18 @@
+
+<%= form_tag('/session', method: :post) do %>
+
+
+ <%= label_tag(:name, "Your name:") %>
+ <%= collection_select(:user, :name, User.all, :name, :name, prompt: "Please select your username from this dropdown") %>
+
+
+
+ <%= label_tag(:password, "Your password:") %>
+ <%= password_field_tag(:password, nil, class: "form-control") %>
+
+
+
+ <%= submit_tag("Sign In") %>
+
+
+<% end %>
\ No newline at end of file
diff --git a/app/views/users/_form.html.erb b/app/views/users/_form.html.erb
index 027247ce14..928451b816 100644
--- a/app/views/users/_form.html.erb
+++ b/app/views/users/_form.html.erb
@@ -1,21 +1,61 @@
-<%= form_for(user) do |f| %>
-
- <%= f.label :name %>
- <%= f.text_field :name %>
- <%= f.label :height, "Height" %>
- <%= f.number_field :height %>
- <%= f.label :happiness, "How do you rate your happiness?" %>
- <%= f.number_field :happiness %>
- <%= f.label :nausea, "How do you rate your nausea? (1-5 scale)" %>
- <%= f.number_field :nausea %>
- <%= f.label :tickets, "How many tickets do you have?" %>
- <%= f.number_field :tickets %>
-
- <%= f.label :password %>
- <%= f.password_field :password %>
-
- <%= f.label :admin, "Check box if you are the theme park owner" %>
- <%= f.check_box :admin %>
-
- <%= f.submit button_label %>
-<% end %>
\ No newline at end of file
+<%= form_for @user do |f| %>
+ <% if @user.errors.any? %>
+
+
+ <%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:
+
+
+
+ <% @user.errors.full_messages.each do |message| %>
+ - <%= message %>
+ <% end %>
+
+
+ <% end %>
+
+
+ <%= f.label :name %>
+
+ <%= f.text_field :name, class: "form-control" %>
+
+
+
+ <%= f.label :height, "Height (in inches)" %>
+
+ <%= f.number_field :height, class: "form-control" %>
+
+
+
+ <%= f.label :happiness, "How happy are you? (1-5 scale)" %>
+
+ <%= f.number_field :happiness, class: "form-control" %>
+
+
+
+ <%= f.label :nausea, "How nauseous are you? (1-5 scale)" %>
+
+ <%= f.number_field :nausea, class: "form-control" %>
+
+
+
+ <%= f.label :tickets, "How many dollars are in your pocket?" %>
+
+ <%= f.number_field :tickets, class: "form-control" %>
+
+
+
+ <%= f.label :admin, "Check box if you are a theme park owner" %>
+ <%= f.check_box :admin, class: "form-check-input" %>
+
+
+
+ <%= f.label :password %>
+
+ <%= f.password_field :password, class: "form-control" %>
+
+
+
+ <%= f.submit class: "btn btn-primary" %>
+
+
+<% end %>
\ No newline at end of file
diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb
index a459618efc..e4a2a39026 100644
--- a/app/views/users/edit.html.erb
+++ b/app/views/users/edit.html.erb
@@ -1 +1,2 @@
+
Edit
<%= render partial: 'form', locals:{user: @user, button_label: "Edit User"} %>
\ No newline at end of file
diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb
index c7ef2696b8..efa13e7c34 100644
--- a/app/views/users/new.html.erb
+++ b/app/views/users/new.html.erb
@@ -1 +1 @@
-<%= render partial: 'form', locals:{user: @user, button_label: "Create User"} %>
\ No newline at end of file
+<%= render 'form' %>
\ No newline at end of file
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
index 418ca99669..448a27a082 100644
--- a/app/views/users/show.html.erb
+++ b/app/views/users/show.html.erb
@@ -1,9 +1,21 @@
-<%= "ADMIN" if @user.admin %>
-
Name: <%@user.name%>
-
Tickets: <%@user.tickets%>
-
Mood: <%@user.mood%>
-
Height: <%@user.height%>
-
- <%= link_to 'Edit', edit_user_path(@user) %>
- <%= link_to 'Attractions', attractions_path %>
- <%= link_to 'Log Out', logout_path %>
\ No newline at end of file
+
<%= notice %>
+
+
+
+<% if flash[:message] %>
+
+
<%= flash[:message] %>
+
+<% end %>
+
+
+
+<% if @user.admin %>
+
ADMIN
+ <% end %>
+
Name: <%= @user.name %>
+
Tickets: <%= @user.tickets %>
+
Mood: <%= @user.mood %>
+
Height: <%= @user.height %> inches
+
<%= link_to 'See attractions', attractions_path %>
+
<%= link_to 'Log Out', logout_path %>
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 98e35fc858..5d64aff406 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,8 +1,22 @@
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root 'users#welcome'
- get '/signin' => 'users#signin', as: :signin
+ get '/users/new' => 'users#new', as: 'new_user'
+ get '/users' => 'users#index', as: 'users'
+ post '/users' => 'users#create'
+ get '/users/:id' => 'users#show', as: 'user'
+ get '/users/:id/edit' => 'users#edit', as: 'edit_user'
+ # get '/signin' => 'users#signin', as: :signin
post '/login' => 'users#login', as: :login
+ get '/logout' => 'users#logout', as: :logout
+ get '/attractions/:id' => 'attractions#show', as: 'attraction'
+ get '/attractions/:id/edit' => 'attractions#edit', as: 'edit_attraction'
+ patch '/attractions/:id' => 'attractions#update'
+ post '/attractions' => 'attractions#create'
+ post '/rides' => "rides#create", as: 'rides'
+ get '/signin' => 'session#new', as: 'signin'
+ post '/session' => 'session#create', as: 'session'
+ delete '/session/' => 'session#destroy'
resources :users, only: [:new, :show, :create, :edit, :update]
resources :attractions
end
diff --git a/db/migrate/20210412163359_rename_attractions_table.rb b/db/migrate/20210412163359_rename_attractions_table.rb
new file mode 100644
index 0000000000..dcb7d0127c
--- /dev/null
+++ b/db/migrate/20210412163359_rename_attractions_table.rb
@@ -0,0 +1,5 @@
+class RenameAttractionsTable < ActiveRecord::Migration[5.2]
+ def change
+ rename_table :attactions, :attractions
+ end
+end
diff --git a/db/migrate/20210412163736_rename_height.rb b/db/migrate/20210412163736_rename_height.rb
new file mode 100644
index 0000000000..1a28df87f8
--- /dev/null
+++ b/db/migrate/20210412163736_rename_height.rb
@@ -0,0 +1,5 @@
+class RenameHeight < ActiveRecord::Migration[5.2]
+ def change
+ rename_column :attractions, :minimum_height, :min_height
+ end
+end
diff --git a/db/migrate/20210412173455_remove_minimum_height_from_attractions.rb b/db/migrate/20210412173455_remove_minimum_height_from_attractions.rb
new file mode 100644
index 0000000000..7552b7b766
--- /dev/null
+++ b/db/migrate/20210412173455_remove_minimum_height_from_attractions.rb
@@ -0,0 +1,5 @@
+class RemoveMinimumHeightFromAttractions < ActiveRecord::Migration[5.2]
+ def change
+ remove_column :attractions, :minimum_height, :integer
+ end
+end
diff --git a/db/migrate/20210412173528_remove_min_height_from_attractions.rb b/db/migrate/20210412173528_remove_min_height_from_attractions.rb
new file mode 100644
index 0000000000..8cd188304d
--- /dev/null
+++ b/db/migrate/20210412173528_remove_min_height_from_attractions.rb
@@ -0,0 +1,5 @@
+class RemoveMinHeightFromAttractions < ActiveRecord::Migration[5.2]
+ def change
+ remove_column :attractions, :min_height, :string
+ end
+end
diff --git a/db/migrate/20210412173554_add_min_height_to_attractions.rb b/db/migrate/20210412173554_add_min_height_to_attractions.rb
new file mode 100644
index 0000000000..97f0b4dbfb
--- /dev/null
+++ b/db/migrate/20210412173554_add_min_height_to_attractions.rb
@@ -0,0 +1,5 @@
+class AddMinHeightToAttractions < ActiveRecord::Migration[5.2]
+ def change
+ add_column :attractions, :min_height, :integer
+ end
+end
diff --git a/db/migrate/20210412174020_remove_nausea_rating_from_attractions.rb b/db/migrate/20210412174020_remove_nausea_rating_from_attractions.rb
new file mode 100644
index 0000000000..68d1841400
--- /dev/null
+++ b/db/migrate/20210412174020_remove_nausea_rating_from_attractions.rb
@@ -0,0 +1,5 @@
+class RemoveNauseaRatingFromAttractions < ActiveRecord::Migration[5.2]
+ def change
+ remove_column :attractions, :nausea_rating, :string
+ end
+end
diff --git a/db/migrate/20210412174245_add_nausea_rating_to_attractions.rb b/db/migrate/20210412174245_add_nausea_rating_to_attractions.rb
new file mode 100644
index 0000000000..1d5c79099b
--- /dev/null
+++ b/db/migrate/20210412174245_add_nausea_rating_to_attractions.rb
@@ -0,0 +1,5 @@
+class AddNauseaRatingToAttractions < ActiveRecord::Migration[5.2]
+ def change
+ add_column :attractions, :nausea_rating, :integer
+ end
+end
diff --git a/db/migrate/20210412174439_remove_happiness_from_users.rb b/db/migrate/20210412174439_remove_happiness_from_users.rb
new file mode 100644
index 0000000000..1f8e2f2f93
--- /dev/null
+++ b/db/migrate/20210412174439_remove_happiness_from_users.rb
@@ -0,0 +1,5 @@
+class RemoveHappinessFromUsers < ActiveRecord::Migration[5.2]
+ def change
+ remove_column :users, :happiness, :string
+ end
+end
diff --git a/db/migrate/20210412174513_add_happiness_to_users.rb b/db/migrate/20210412174513_add_happiness_to_users.rb
new file mode 100644
index 0000000000..4f82e915d6
--- /dev/null
+++ b/db/migrate/20210412174513_add_happiness_to_users.rb
@@ -0,0 +1,5 @@
+class AddHappinessToUsers < ActiveRecord::Migration[5.2]
+ def change
+ add_column :users, :happiness, :integer
+ end
+end
diff --git a/db/migrate/20210412174742_remove_happiness_rating_from_attractions.rb b/db/migrate/20210412174742_remove_happiness_rating_from_attractions.rb
new file mode 100644
index 0000000000..3ca2a2dbc9
--- /dev/null
+++ b/db/migrate/20210412174742_remove_happiness_rating_from_attractions.rb
@@ -0,0 +1,5 @@
+class RemoveHappinessRatingFromAttractions < ActiveRecord::Migration[5.2]
+ def change
+ remove_column :attractions, :happiness_rating, :string
+ end
+end
diff --git a/db/migrate/20210412174759_add_happiness_rating_to_attractions.rb b/db/migrate/20210412174759_add_happiness_rating_to_attractions.rb
new file mode 100644
index 0000000000..808d0141a8
--- /dev/null
+++ b/db/migrate/20210412174759_add_happiness_rating_to_attractions.rb
@@ -0,0 +1,5 @@
+class AddHappinessRatingToAttractions < ActiveRecord::Migration[5.2]
+ def change
+ add_column :attractions, :happiness_rating, :integer
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 7064a4e590..75a12bbab3 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,14 +10,14 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2021_04_07_192847) do
+ActiveRecord::Schema.define(version: 2021_04_12_174759) do
- create_table "attactions", force: :cascade do |t|
+ create_table "attractions", force: :cascade do |t|
t.string "name"
- t.string "minimum_height"
- t.string "happiness_rating"
- t.string "nausea_rating"
t.integer "tickets"
+ t.integer "min_height"
+ t.integer "nausea_rating"
+ t.integer "happiness_rating"
end
create_table "rides", force: :cascade do |t|
@@ -30,9 +30,9 @@
t.integer "height"
t.integer "nausea"
t.integer "tickets"
- t.integer "happiness"
t.string "password_digest"
t.boolean "admin", default: false
+ t.integer "happiness"
end
end
From 0df3ac2f259c39a06c703bbdf127f4733f9a3c15 Mon Sep 17 00:00:00 2001
From: parisdolfman
Date: Mon, 12 Apr 2021 16:42:50 -0400
Subject: [PATCH 4/5] Done.
---
app/controllers/application_controller.rb | 22 ++++---
app/controllers/attractions_controller.rb | 62 ++++++++-----------
app/controllers/rides_controller.rb | 5 +-
app/controllers/session_controller.rb | 35 +++++------
app/controllers/static_controller.rb | 6 ++
app/controllers/users_controller.rb | 73 ++++++++---------------
app/views/attractions/_form.html.erb | 56 ++++++++---------
app/views/attractions/edit.html.erb | 2 +-
app/views/attractions/index.html.erb | 53 +++++++++-------
app/views/attractions/new.html.erb | 4 +-
app/views/attractions/show.html.erb | 23 ++++---
app/views/static/home.html.erb | 6 ++
app/views/users/show.html.erb | 9 ++-
config/routes.rb | 35 +++++------
14 files changed, 195 insertions(+), 196 deletions(-)
create mode 100644 app/controllers/static_controller.rb
create mode 100644 app/views/static/home.html.erb
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 939678c3d1..17bd114c90 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,13 +1,19 @@
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
- helper_method :current_user, :logged_in?
+ before_action :verified_user
+ helper_method :current_user
- def logged_in?
+ private
+
+ def verified_user
+ redirect_to '/' unless user_is_authenticated
+ end
+
+ def user_is_authenticated
!!current_user
- end
-
- def current_user
- @current_user ||= User.find_by(id: session[:user_id])
- end
+ end
-end
+ def current_user
+ User.find_by(id: session[:user_id])
+ end
+end
\ No newline at end of file
diff --git a/app/controllers/attractions_controller.rb b/app/controllers/attractions_controller.rb
index d14eee32c3..2f05e51138 100644
--- a/app/controllers/attractions_controller.rb
+++ b/app/controllers/attractions_controller.rb
@@ -1,51 +1,41 @@
class AttractionsController < ApplicationController
-
def index
- @attractions = Attraction.all
+ @attractions = Attraction.all
end
-
+
def show
- @attraction = Attraction.find_by(id: params[:id])
- @ride = @attraction.rides.build(user_id: current_user.id)
+ @attraction = Attraction.find_by(id: params[:id])
+ @ride = @attraction.rides.build(user_id: current_user.id)
end
-
-# def rides
-# flash[:alert] = Ride.create(ride_params).take_ride
-#
-# redirect_to user_path(current_user)
-# end
-
+
def new
- @attraction = Attraction.new
+ @attraction = Attraction.new
end
-
+
def create
- attraction = Attraction.create(attraction_params)
- redirect_to attraction_path(attraction)
+ attraction = Attraction.create(attraction_params)
+ redirect_to attraction_path(attraction)
end
-
+
def edit
- @attraction = Attraction.find(params[:id])
- @ride = @attraction.rides.build(user_id: current_user.id)
+ @attraction = Attraction.find_by(id: params[:id])
+ @ride = @attraction.rides.build(user_id: current_user.id)
end
-
+
def update
- attraction = Attraction.find_by(id: params[:id])
- attraction.update(attraction_params)
- redirect_to attraction_path(attraction)
+ attraction = Attraction.find_by(id: params[:id])
+ attraction.update(attraction_params)
+ redirect_to attraction_path(attraction)
end
-
-
+
private
-
- def ride_params
- params.permit(:user_id, :attraction_id)
- end
-
- def attraction_params
- params.require(:attraction).permit(:name, :min_height, :happiness_rating, :nausea_rating, :tickets)
+ def attraction_params
+ params.require(:attraction).permit(
+ :name,
+ :min_height,
+ :tickets,
+ :happiness_rating,
+ :nausea_ratiing
+ )
end
-
-
-
-end
\ No newline at end of file
+ end
\ No newline at end of file
diff --git a/app/controllers/rides_controller.rb b/app/controllers/rides_controller.rb
index 6ebc1f1c14..0be133b3d3 100644
--- a/app/controllers/rides_controller.rb
+++ b/app/controllers/rides_controller.rb
@@ -8,6 +8,9 @@ def create
private
def ride_params
- params.require(:ride).permit(:user_id, :attraction_id)
+ params.require(:ride).permit(
+ :user_id,
+ :attraction_id
+ )
end
end
\ No newline at end of file
diff --git a/app/controllers/session_controller.rb b/app/controllers/session_controller.rb
index fd2eef92d8..c2f6d69207 100644
--- a/app/controllers/session_controller.rb
+++ b/app/controllers/session_controller.rb
@@ -1,20 +1,21 @@
class SessionController < ApplicationController
+ skip_before_action :verified_user, only: [:new, :create]
- def new
- @user = User.new
- end
-
- def create
- if @user = User.find_by(name: params[:user][:name])
- session[:user_id] = @user.id
- redirect_to user_path(@user)
- else
- render 'new'
- end
- end
-
- def destroy
- session.delete("user_id")
- redirect_to root_path
+ def new
+ @user = User.new
+ end
+
+ def create
+ if @user = User.find_by(name: params[:user][:name])
+ session[:user_id] = @user.id
+ redirect_to user_path(@user)
+ else
+ render 'new'
end
- end
\ No newline at end of file
+ end
+
+ def destroy
+ session.delete("user_id")
+ redirect_to root_path
+ end
+end
\ No newline at end of file
diff --git a/app/controllers/static_controller.rb b/app/controllers/static_controller.rb
new file mode 100644
index 0000000000..b62ff128e5
--- /dev/null
+++ b/app/controllers/static_controller.rb
@@ -0,0 +1,6 @@
+class StaticController < ApplicationController
+ skip_before_action :verified_user, only: [:home]
+
+ def home
+ end
+ end
\ No newline at end of file
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 5089b35e8e..4e5377038c 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -1,59 +1,34 @@
class UsersController < ApplicationController
-
- def signin
- end
-
- def welcome
- end
-
+ skip_before_action :verified_user, only: [:new, :create]
+
def new
- @user = User.new
+ @user = User.new
end
-
- def show
- if logged_in?
- @user = User.find_by(id: params[:id])
- else
- redirect_to root_path
- end
- end
-
+
def create
- User.create(user_params)
- session[:user_id] = User.last.id
- redirect_to user_path(current_user)
- end
-
- def edit
- @user = User.find_by(id: params[:id])
- end
-
- def update
- user = User.find(params[:id])
- user.update(user_params)
+ if (user = User.create(user_params))
+ session[:user_id] = user.id
redirect_to user_path(user)
+ else
+ render 'new'
+ end
end
-
- def login
- user = User.find_by(name: params[:user][:name])
- if user
- session[:user_id] = user.id
- redirect_to user_path(user)
- else
- redirect_to signin_path
- end
- end
-
- def logout
- session.delete(:user_id)
- redirect_to root_path
+
+ def show
+ @user = User.find_by(id: params[:id])
end
-
-
+
private
-
+
def user_params
- params.require(:user).permit(:name, :password, :password_confirmation, :height, :happiness, :nausea, :tickets, :admin)
+ params.require(:user).permit(
+ :name,
+ :height,
+ :nausea,
+ :tickets,
+ :admin,
+ :password,
+ :happiness
+ )
end
-
-end
\ No newline at end of file
+ end
\ No newline at end of file
diff --git a/app/views/attractions/_form.html.erb b/app/views/attractions/_form.html.erb
index a7f7c51495..c5f01ef462 100644
--- a/app/views/attractions/_form.html.erb
+++ b/app/views/attractions/_form.html.erb
@@ -1,33 +1,25 @@
<%= form_for(@attraction) do |f| %>
-
-
-<%= f.label :name %>
-<%= f.text_field :name %>
-
-
-
-<%= f.label :min_height, "Height" %>
-<%= f.text_field :min_height %>
-
-
-
-<%= f.label :happiness_rating, "Funness?" %>
-<%= f.text_field :happiness_rating %>
-
-
-
-
-<%= f.label :nausea_rating, "How much nausea?" %>
-<%= f.text_field :nausea_rating %>
-
-
-
-<%= f.label :tickets, "How many tickets?" %>
-<%= f.text_field :tickets %>
-
-
-
-<%= f.submit class: "btn btn-primary" %>
-
-
-<% end %>
+
+ <%= f.label :name %>
+ <%= f.text_field :name, class: "form-control" %>
+
+
+ <%= f.label :min_height, "Height Requirement (in inches)" %>
+ <%= f.number_field :min_height, class: "form-control" %>
+
+
+ <%= f.label :happiness_rating, "How fun is it? (1-5 scale)" %>
+ <%= f.number_field :happiness_rating, class: "form-control" %>
+
+
+ <%= f.label :nausea_rating, "How nausea-inducing is it? (1-5 scale)" %>
+ <%= f.number_field :nausea_rating, class: "form-control" %>
+
+
+ <%= f.label :tickets, "How many tickets does it cost?" %>
+ <%= f.number_field :tickets, class: "form-control" %>
+
+
+ <%= f.submit class: "btn btn-primary" %>
+
+<% end %>
\ No newline at end of file
diff --git a/app/views/attractions/edit.html.erb b/app/views/attractions/edit.html.erb
index 151d0e0ed9..b0d3d75b90 100644
--- a/app/views/attractions/edit.html.erb
+++ b/app/views/attractions/edit.html.erb
@@ -1,4 +1,4 @@
- Edit Attraction
+Editing attraction
<%= render 'form' %>
<%= link_to 'Show', @attraction %> |
diff --git a/app/views/attractions/index.html.erb b/app/views/attractions/index.html.erb
index a2266e2f25..b8fd90bf13 100644
--- a/app/views/attractions/index.html.erb
+++ b/app/views/attractions/index.html.erb
@@ -1,25 +1,38 @@
- Attractions
+Listing attractions
+
+
+
+ |
+
+
-<% @attractions.each do |attraction| %>
+
+
+ Name |
+ Tickets |
+ Details |
+
+ <% @attractions.each do |attraction| %>
+
- Name
- Tickets
- Details
-
-<%= attraction.name %>
-<%= attraction.tickets %>
-
-<% if current_user.admin %>
- <%= link_to "Show #{attraction.name}", attraction_path(attraction) %>
- <% else %>
- <%= link_to "Go on #{attraction.name}", attraction_path(attraction) %>
- <% end %>
-<% end %>
+ <%= attraction.name %> |
+ <%= attraction.tickets %> |
+ <% if current_user.admin %>
+ <%= link_to "Show #{attraction.name}", attraction_path(attraction) %> |
+ <% else %>
+ <%= link_to "Go on #{attraction.name}", attraction_path(attraction) %> |
+ <% end %>
+
+ <% end %>
+
+
+
<% if @user %>
- <%= link_to "Back to profile", user_path(@user), {:class => "btn btn-primary"} %>
- <% else %>
- <%= link_to 'New Attraction', new_attraction_path %>
-<% end %>
-
+
+ <%= link_to "Back to profile", user_path(@user), {:class => "btn btn-primary"} %>
+
+<% else %>
+ <%= link_to 'New Attraction', new_attraction_path %>
+<% end %>
\ No newline at end of file
diff --git a/app/views/attractions/new.html.erb b/app/views/attractions/new.html.erb
index 1a4745a0bd..4e2b55cf47 100644
--- a/app/views/attractions/new.html.erb
+++ b/app/views/attractions/new.html.erb
@@ -1,3 +1,3 @@
- New Attraction
+New attraction
-<%= render partial: 'form', locals: {attraction: @attraction, button_label: "Create Attraction"} %>
\ No newline at end of file
+<%= render 'form' %>
\ No newline at end of file
diff --git a/app/views/attractions/show.html.erb b/app/views/attractions/show.html.erb
index cf424d5e20..3edfd32fe4 100644
--- a/app/views/attractions/show.html.erb
+++ b/app/views/attractions/show.html.erb
@@ -1,11 +1,15 @@
-Name: <%= @attraction.name %>
-
Total Number of Users: <%= @attraction.users.count %>
-
Ticket Requirement: <%= @attraction.tickets %>
-
Height Requirement: <%= @attraction.min_height %> inches
-
Nausea Rating: <%= @attraction.nausea_rating %>
-
Happiness Rating: <%= @attraction.happiness_rating %>
+
<%= notice %>
-<% if current_user.admin %>
+
+
+
+
Name: <%= @attraction.name %>
+
Total Number of Users: <%= @attraction.users.count %>
+
Ticket Requirement: <%= @attraction.tickets %>
+
Height Requirement: <%= @attraction.min_height %> inches
+
Nausea Rating: <%= @attraction.nausea_rating %>
+
Happiness Rating: <%= @attraction.happiness_rating %>
+ <% if current_user.admin %>
<%= link_to 'Edit Attraction', [:edit, @attraction] %>
<% else %>
<%= form_for @ride do |f| %>
@@ -13,4 +17,7 @@
<%= f.hidden_field :attraction_id %>
<%= f.submit "Go on this ride", class:"btn btn-light" %>
<% end %>
- <% end %>
\ No newline at end of file
+ <% end %>
+
+
+
\ No newline at end of file
diff --git a/app/views/static/home.html.erb b/app/views/static/home.html.erb
new file mode 100644
index 0000000000..dfbab7e9a9
--- /dev/null
+++ b/app/views/static/home.html.erb
@@ -0,0 +1,6 @@
+
+
+

+
+
Welcome to the //Amusement Park!
+
\ No newline at end of file
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
index 448a27a082..b4d83f4086 100644
--- a/app/views/users/show.html.erb
+++ b/app/views/users/show.html.erb
@@ -8,9 +8,10 @@
<% end %>
+
-
-<% if @user.admin %>
+
+ <% if @user.admin %>
ADMIN
<% end %>
Name: <%= @user.name %>
@@ -18,4 +19,6 @@
Mood: <%= @user.mood %>
Height: <%= @user.height %> inches
<%= link_to 'See attractions', attractions_path %>
-
<%= link_to 'Log Out', logout_path %>
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 5d64aff406..d85a52e269 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,22 +1,19 @@
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
- root 'users#welcome'
- get '/users/new' => 'users#new', as: 'new_user'
- get '/users' => 'users#index', as: 'users'
- post '/users' => 'users#create'
- get '/users/:id' => 'users#show', as: 'user'
- get '/users/:id/edit' => 'users#edit', as: 'edit_user'
- # get '/signin' => 'users#signin', as: :signin
- post '/login' => 'users#login', as: :login
- get '/logout' => 'users#logout', as: :logout
- get '/attractions/:id' => 'attractions#show', as: 'attraction'
- get '/attractions/:id/edit' => 'attractions#edit', as: 'edit_attraction'
- patch '/attractions/:id' => 'attractions#update'
- post '/attractions' => 'attractions#create'
- post '/rides' => "rides#create", as: 'rides'
- get '/signin' => 'session#new', as: 'signin'
- post '/session' => 'session#create', as: 'session'
- delete '/session/' => 'session#destroy'
- resources :users, only: [:new, :show, :create, :edit, :update]
- resources :attractions
+ get '/users/new', to: 'users#new', as: 'new_user'
+ root 'static#home'
+ get '/users', to:'users#index', as: 'users'
+ post '/users', to:'users#create'
+ get '/users/:id', to: 'users#show', as: 'user'
+ get '/users/:id/edit', to: 'users#edit', as: 'edit_user'
+ get '/attractions', to: 'attractions#index', as: 'attractions'
+ get '/signin', to: 'session#new', as: 'signin'
+ post '/session', to: 'session#create', as: 'session'
+ delete '/session/', to: 'session#destroy'
+ get '/attractions/new', to: 'attractions#new', as: 'new_attraction'
+ get '/attractions/:id', to: 'attractions#show', as: 'attraction'
+ get '/attractions/:id/edit', to: 'attractions#edit', as: 'edit_attraction'
+ patch '/attractions/:id', to: 'attractions#update'
+ post '/attractions', to: 'attractions#create'
+ post '/rides', to:"rides#create", as: 'rides'
end
From 03782db4bd976098c039eef2e46aa9f1356e1e5a Mon Sep 17 00:00:00 2001
From: parisdolfman
Date: Tue, 13 Apr 2021 11:32:53 -0400
Subject: [PATCH 5/5] Done.
---
app/controllers/attractions_controller.rb | 78 +++++++++++------------
app/controllers/rides_controller.rb | 30 ++++-----
app/controllers/static_controller.rb | 10 +--
app/controllers/users_controller.rb | 64 +++++++++----------
app/views/layouts/application.html.erb | 13 +++-
5 files changed, 101 insertions(+), 94 deletions(-)
diff --git a/app/controllers/attractions_controller.rb b/app/controllers/attractions_controller.rb
index 2f05e51138..346f1ac489 100644
--- a/app/controllers/attractions_controller.rb
+++ b/app/controllers/attractions_controller.rb
@@ -1,41 +1,41 @@
class AttractionsController < ApplicationController
- def index
- @attractions = Attraction.all
+ def index
+ @attractions = Attraction.all
+ end
+
+ def show
+ @attraction = Attraction.find_by(id: params[:id])
+ @ride = @attraction.rides.build(user_id: current_user.id)
+ end
+
+ def new
+ @attraction = Attraction.new
+ end
+
+ def create
+ attraction = Attraction.create(attraction_params)
+ redirect_to attraction_path(attraction)
+ end
+
+ def edit
+ @attraction = Attraction.find_by(id: params[:id])
+ @ride = @attraction.rides.build(user_id: current_user.id)
+ end
+
+ def update
+ attraction = Attraction.find_by(id: params[:id])
+ attraction.update(attraction_params)
+ redirect_to attraction_path(attraction)
+ end
+
+ private
+ def attraction_params
+ params.require(:attraction).permit(
+ :name,
+ :min_height,
+ :tickets,
+ :happiness_rating,
+ :nausea_ratiing
+ )
end
-
- def show
- @attraction = Attraction.find_by(id: params[:id])
- @ride = @attraction.rides.build(user_id: current_user.id)
- end
-
- def new
- @attraction = Attraction.new
- end
-
- def create
- attraction = Attraction.create(attraction_params)
- redirect_to attraction_path(attraction)
- end
-
- def edit
- @attraction = Attraction.find_by(id: params[:id])
- @ride = @attraction.rides.build(user_id: current_user.id)
- end
-
- def update
- attraction = Attraction.find_by(id: params[:id])
- attraction.update(attraction_params)
- redirect_to attraction_path(attraction)
- end
-
- private
- def attraction_params
- params.require(:attraction).permit(
- :name,
- :min_height,
- :tickets,
- :happiness_rating,
- :nausea_ratiing
- )
- end
- end
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/app/controllers/rides_controller.rb b/app/controllers/rides_controller.rb
index 0be133b3d3..dfe9c551ef 100644
--- a/app/controllers/rides_controller.rb
+++ b/app/controllers/rides_controller.rb
@@ -1,16 +1,16 @@
class RidesController < ApplicationController
- def create
- ride = Ride.create(ride_params)
- message = ride.take_ride
- redirect_to user_path(ride.user), flash: { message: message }
- end
-
- private
-
- def ride_params
- params.require(:ride).permit(
- :user_id,
- :attraction_id
- )
- end
- end
\ No newline at end of file
+ def create
+ ride = Ride.create(ride_params)
+ message = ride.take_ride
+ redirect_to user_path(ride.user), flash: { message: message }
+ end
+
+ private
+
+ def ride_params
+ params.require(:ride).permit(
+ :user_id,
+ :attraction_id
+ )
+ end
+end
\ No newline at end of file
diff --git a/app/controllers/static_controller.rb b/app/controllers/static_controller.rb
index b62ff128e5..9d231ff693 100644
--- a/app/controllers/static_controller.rb
+++ b/app/controllers/static_controller.rb
@@ -1,6 +1,6 @@
class StaticController < ApplicationController
- skip_before_action :verified_user, only: [:home]
-
- def home
- end
- end
\ No newline at end of file
+ skip_before_action :verified_user, only: [:home]
+
+ def home
+ end
+end
\ No newline at end of file
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 4e5377038c..ce458f0740 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -1,34 +1,34 @@
class UsersController < ApplicationController
- skip_before_action :verified_user, only: [:new, :create]
-
- def new
- @user = User.new
+ skip_before_action :verified_user, only: [:new, :create]
+
+ def new
+ @user = User.new
+ end
+
+ def create
+ if (user = User.create(user_params))
+ session[:user_id] = user.id
+ redirect_to user_path(user)
+ else
+ render 'new'
end
-
- def create
- if (user = User.create(user_params))
- session[:user_id] = user.id
- redirect_to user_path(user)
- else
- render 'new'
- end
- end
-
- def show
- @user = User.find_by(id: params[:id])
- end
-
- private
-
- def user_params
- params.require(:user).permit(
- :name,
- :height,
- :nausea,
- :tickets,
- :admin,
- :password,
- :happiness
- )
- end
- end
\ No newline at end of file
+ end
+
+ def show
+ @user = User.find_by(id: params[:id])
+ end
+
+ private
+
+ def user_params
+ params.require(:user).permit(
+ :name,
+ :height,
+ :nausea,
+ :tickets,
+ :admin,
+ :password,
+ :happiness
+ )
+ end
+end
\ No newline at end of file
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index d5e06ee11b..8476c2a30f 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -3,7 +3,6 @@
RailsAmusementPark
<%= csrf_meta_tags %>
-
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
@@ -18,10 +17,18 @@
Home
+ <% if !current_user %>
+ Sign Up
+ <%= link_to "Log in", signin_path, class:"navbar-brand" %>
+ <% end %>
+ <% if current_user %>
+ <%= link_to "#{current_user.name}'s profile", user_path(current_user), class:"navbar-brand"%>
+ <%= link_to "Log Out", session_path, class:"navbar-brand",method:'delete' %>
+ <% end %>
@@ -32,4 +39,4 @@
<%= yield %>