Skip to content

Commit

Permalink
CRUD for user_reviews
Browse files Browse the repository at this point in the history
  • Loading branch information
johnsonchiehhaohuang committed Nov 9, 2018
1 parent 1d4410c commit a49ecd2
Show file tree
Hide file tree
Showing 30 changed files with 427 additions and 147 deletions.
50 changes: 28 additions & 22 deletions app/controllers/item_reviews_controller.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
class ItemReviewsController < ApplicationController
def new
@item_review = ItemReview.new
end

def create
if user_signed_in?
@item = Item.find(params[:item_id])
Expand All @@ -15,10 +11,10 @@ def create
puts("saved successfully")
redirect_to item_path(@item)
else
render'new'
render 'new'
end
else
render 'new'
redirect_to new_user_session_path
end
end

Expand All @@ -27,6 +23,12 @@ def new
@item_review = @item.item_reviews.new
end

def index
end

def show
end

def update
if user_signed_in?
@item = Item.find(params[:item_id])
Expand All @@ -44,28 +46,32 @@ def update
else
render 'edit'
end
else
redirect_to new_user_session_path
end
end

def destroy
@item = Item.find(params[:item_id])
@item_review = ItemReview.find(params[:id])
@item_review.destroy
redirect_to item_path(@item)
end

def index
end

def show
end

def edit
@item = Item.find(params[:item_id])
@item_review = @item.item_reviews.find(params[:id])
if user_signed_in?
@item = Item.find(params[:item_id])
@item_review = @item.item_reviews.find(params[:id])
else
redirect_to new_user_session_path
end
end

def destroy
if user_signed_in?
@item = Item.find(params[:item_id])
@item_review = @item.find(params[:id])
@item_review.destroy
redirect_to item_path(@item)
else
redirect_to new_user_session_path
end
end


private
def item_review_params
params.require(:item_review).permit(:rating, :comment)
end
Expand Down
78 changes: 48 additions & 30 deletions app/controllers/user_reviews_controller.rb
Original file line number Diff line number Diff line change
@@ -1,66 +1,84 @@
class UserReviewsController < ApplicationController
def create
if user_signed_in?
@user_profile = UserProfile.find(params[:user_profile_id])
@user_review = @user_profile.user_reviews.create(user_review_params)
@user_review.reviewer_id = @current_user.id
@user_review.reviewee_id = @user_profile.id
@user_review.created_at = DateTime.now
@user_review.updated_at = DateTime.now

@user_review = UserReview.new(user_review_params)

@item.user_id = @current_user.id

if @item.save
redirect_to @item
if @user_review.save
redirect_to @user_profile
else
render :new
render 'new'
end
else
redirect_to new_user_session_path
end
end

def new
@item = Item.new
@user_profile = UserProfile.find(params[:user_profile_id])
@user_review = @user_profile.user_reviews.new
end

def index
@item = Item.all
if user_signed_in?
@user_profile = UserProfile.find(params[:user_profile_id])
@user_reviews = @user_profile.user_reviews.all
else
redirect_to new_user_session_path
end
end

def show
@item = Item.find(params[:id])
end

def edit
if user_signed_in?
@item = Item.find(params[:id])
end
end

def update
if user_signed_in?
@item = Item.find(params[:id])
if @item.user_id = @current_user.id

if @item.update(item_params)
redirect_to @item
@user_profile = UserProfile.find(params[:user_profile_id])
@user_review = @user_profile.user_reviews.find(params[:id])
#check if current user is allowed to edit
if @user_review.reviewer_id == @current_user.id
if @user_review.update(user_review_params)
puts("saved")
@user_review.updated_at = DateTime.now
redirect_to @user_profile
else
puts("nots saved")
render 'edit'
end
else
render 'edit'
end
else
redirect_to new_user_session_path
end
end

def destroy
def edit
if user_signed_in?
@item = Item.find(params[:id])
if @item.user_id = @current_user.id
@item.destroy
@user_profile = UserProfile.find(params[:user_profile_id])
@user_review = @user_profile.user_reviews.find(params[:id])
else
redirect_to new_user_session_path
end
end

redirect_to items_path
end
def destroy
if user_signed_in?
@user_profile = UserProfile.find(params[:user_profile_id])
@user_review = @user_profile.user_reviews.find(params[:id])
@user_review.destroy
redirect_to @user_profile
else
redirect_to new_user_session_path
end
end

private
private
def user_review_params
params.require(:user_review).permit(:rating, :comment)
end


end
14 changes: 11 additions & 3 deletions app/models/item_review.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,22 @@
# Table name: item_reviews
#
# id :bigint(8) not null, primary key
# rating :float
# comment :text
# rating :float
# created_at :datetime not null
# updated_at :datetime not null
# owner_id :integer
# item_id :bigint(8)
# owner_id :integer
#
# Indexes
#
# index_item_reviews_on_item_id (item_id)
#
# Foreign Keys
#
# fk_rails_... (item_id => items.id)
#

class ItemReview < ApplicationRecord
belongs_to :item
belongs_to :item
end
18 changes: 11 additions & 7 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,21 @@
# Table name: users
#
# id :bigint(8) not null, primary key
# current_sign_in_at :datetime
# current_sign_in_ip :inet
# email :string default(""), not null
# encrypted_password :string default(""), not null
# reset_password_token :string
# reset_password_sent_at :datetime
# remember_created_at :datetime
# sign_in_count :integer default(0), not null
# current_sign_in_at :datetime
# last_sign_in_at :datetime
# current_sign_in_ip :inet
# last_sign_in_ip :inet
# remember_created_at :datetime
# reset_password_sent_at :datetime
# reset_password_token :string
# sign_in_count :integer default(0), not null
#
# Indexes
#
# index_users_on_email (email) UNIQUE
# index_users_on_reset_password_token (reset_password_token) UNIQUE
#

class User < ApplicationRecord
Expand All @@ -23,5 +28,4 @@ class User < ApplicationRecord
has_one :user_profile
has_many :items
has_many :transactions
has_many :user_reviews
end
4 changes: 2 additions & 2 deletions app/models/user_profile.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#

class UserProfile < ApplicationRecord
validates :first_name, :last_name, :date_of_birth, presence: true

validates :first_name, :last_name, :date_of_birth, presence: true
has_many :user_reviews, dependent: :destroy
belongs_to :user
end
16 changes: 10 additions & 6 deletions app/models/user_review.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,17 @@
#
# Table name: user_reviews
#
# id :bigint(8) not null, primary key
# rating :float
# comment :text
# created_at :datetime not null
# updated_at :datetime not null
# user_id :integer
# id :bigint(8) not null, primary key
# comment :text
# rating :float
# created_at :datetime not null
# updated_at :datetime not null
# reviewee_id :integer
# reviewer_id :integer
#

class UserReview < ApplicationRecord
belongs_to :reviewer, class_name: :User_Profile, foreign_key: :reviewer_id
belongs_to :reviewee, class_name: :User_Profile, foreign_key: :reviewee_id
belongs_to :user_profile
end
14 changes: 0 additions & 14 deletions app/views/item_reviews/_form.html.erb
Original file line number Diff line number Diff line change
@@ -1,18 +1,4 @@
<%= form_with(model: [ @item, @item.item_reviews.build ], local: true) do |form| %>
<% if @item.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(@item.errors.count, "error") %> prohibited
this item from being saved:
</h2>
<ul>
<% @item.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>

<% if user_signed_in? %>
<li>
<%=link_to('Logout', destroy_user_session_path, method: :delete) %>
Expand Down
4 changes: 2 additions & 2 deletions app/views/item_reviews/_item_review.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@
<%= item_review.comment %>
</p>
<p>
<% if item_review.owner_id == current_user.id %>
<% if current_user != nil and item_review.owner_id == current_user.id %>
<%= link_to 'Edit', edit_item_item_review_path(@item, item_review) %>
<% end %>
</p>
<p>
<% if item_review.owner_id == current_user.id %>
<% if current_user != nil and item_review.owner_id == current_user.id %>
<%= link_to 'Delete Review', [item_review.item, item_review],
method: :delete,
data: { confirm: 'Are you sure?'} %>
Expand Down
26 changes: 0 additions & 26 deletions app/views/user_profiles/edit.html.erb
Original file line number Diff line number Diff line change
@@ -1,31 +1,5 @@
<h1>Edit User Profile</h1>
<%= form_with model: @user_profile, local: true do |form| %>

<% if @user_profile.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(@user_profile.errors.count, "error") %> prohibited
this user_profile from being saved:
</h2>
<ul>
<% @user_profile.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>

<% if user_signed_in? %>
<li>
<%=link_to('Logout', destroy_user_session_path, method: :delete) %>
</li>

<% else %>
<li>
<%= link_to('Login', new_user_session_path) %>
</li>
<%end%>

<p>
<%= form.label :"First Name" %><br>
<%= form.text_field :first_name %>
Expand Down
14 changes: 0 additions & 14 deletions app/views/user_profiles/new.html.erb
Original file line number Diff line number Diff line change
@@ -1,20 +1,6 @@
<h1>Edit User Profile</h1>
<%= form_with model: @user_profile, local: true do |form| %>

<% if @user_profile.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(@user_profile.errors.count, "error") %> prohibited
this user_profile from being saved:
</h2>
<ul>
<% @user_profile.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>

<% if user_signed_in? %>
<li>
<%=link_to('Logout', destroy_user_session_path, method: :delete) %>
Expand Down
1 change: 1 addition & 0 deletions app/views/user_profiles/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
<% if current_user.id == @user_profile.user_id %>
<%= link_to("Edit profile", "/user_profiles/" + @user_profile.id.to_s + "/edit") %>
<% end %>
<%= link_to('Reviews', user_profile_user_reviews_path(@user_profile)) %>
<% end %>


Expand Down
Loading

0 comments on commit a49ecd2

Please sign in to comment.