Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
class ApplicationController < ActionController::Base
before_action :authenticate_user!
skip_forgery_protection
end
68 changes: 68 additions & 0 deletions app/controllers/deliveries_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@

class DeliveriesController < ApplicationController
def index
matching_deliveries = Delivery.all

@list_of_deliveries = Delivery.where(user_id: current_user.id, arrived: false)
.order(created_at: :desc)

render({ :template => "deliveries/index" })
end
def deliveries
matching_deliveries = Delivery.all
@list_of_deliveries = matching_deliveries.order({ :created_at => :desc })
render({ :template => "deliveries/index" })
end

def show
the_id = params.fetch("path_id")

matching_deliveries = Delivery.where({ :id => the_id })

@the_delivery = matching_deliveries.at(0)

render({ :template => "deliveries/show" })
end

def create
the_delivery = Delivery.new
the_delivery.description = params.fetch("query_description")
the_delivery.details = params.fetch("query_details")
the_delivery.supposed_to_arrive_on = params.fetch("query_supposed_to_arrive_on")
the_delivery.arrived = params.fetch("query_arrived", false)

if the_delivery.valid?
the_delivery.save
redirect_to("/deliveries", { :notice => "Added to list." })
else
redirect_to("/deliveries", { :alert => the_delivery.errors.full_messages.to_sentence })
end
end

def update
the_id = params.fetch("path_id")
the_delivery = Delivery.where({ :id => the_id }).at(0)

the_delivery.user_id = params.fetch("query_user_id")
the_delivery.description = params.fetch("query_description")
the_delivery.details = params.fetch("query_details")
the_delivery.supposed_to_arrive_on = params.fetch("query_supposed_to_arrive_on")
the_delivery.arrived = params.fetch("query_arrived", false)

if the_delivery.valid?
the_delivery.save
redirect_to("/deliveries", { :notice => "Marked as received."} )
else
redirect_to("/deliveries", { :alert => the_delivery.errors.full_messages.to_sentence })
end
end

def destroy
the_id = params.fetch("path_id")
the_delivery = Delivery.where({ :id => the_id }).at(0)

the_delivery.destroy

redirect_to("/", { :notice => "Deleted."} )
end
end
56 changes: 56 additions & 0 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
class UsersController < ApplicationController
def index
matching_users = User.all

@list_of_users = matching_users.order({ :created_at => :desc })

render({ :template => "users/index" })
end

def show
the_id = params.fetch("path_id")

matching_users = User.where({ :id => the_id })

@the_user = matching_users.at(0)

render({ :template => "users/show" })
end

def create
the_user = User.new
the_user.email = params.fetch("query_email")
the_user.password = params.fetch("query_password")

if the_user.valid?
the_user.save
redirect_to("/users", { :notice => "User created successfully." })
else
redirect_to("/users", { :alert => the_user.errors.full_messages.to_sentence })
end
end

def update
the_id = params.fetch("path_id")
the_user = User.where({ :id => the_id }).at(0)

the_user.email = params.fetch("query_email")
the_user.password = params.fetch("query_password")

if the_user.valid?
the_user.save
redirect_to("/users/#{the_user.id}", { :notice => "User updated successfully."} )
else
redirect_to("/users/#{the_user.id}", { :alert => the_user.errors.full_messages.to_sentence })
end
end

def destroy
the_id = params.fetch("path_id")
the_user = User.where({ :id => the_id }).at(0)

the_user.destroy

redirect_to("/users", { :notice => "User deleted successfully."} )
end
end
17 changes: 17 additions & 0 deletions app/models/delivery.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@

# == Schema Information
#
# Table name: deliveries
#
# id :bigint not null, primary key
# arrived :boolean
# description :string
# details :string
# supposed_to_arrive_on :date
# created_at :datetime not null
# updated_at :datetime not null
# user_id :integer
#
class Delivery < ApplicationRecord

end
24 changes: 24 additions & 0 deletions app/models/user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# == Schema Information
#
# Table name: users
#
# id :bigint not null, primary key
# email :string default(""), not null
# encrypted_password :string default(""), not null
# remember_created_at :datetime
# reset_password_sent_at :datetime
# reset_password_token :string
# created_at :datetime not null
# updated_at :datetime not null
#
# Indexes
#
# index_users_on_email (email) UNIQUE
# index_users_on_reset_password_token (reset_password_token) UNIQUE
#
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
end
2 changes: 2 additions & 0 deletions app/views/deliveries/_delivery.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<div id="<%= dom_id delivery %>">
</div>
2 changes: 2 additions & 0 deletions app/views/deliveries/_delivery.json.jbuilder
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
json.extract! delivery, :id, :created_at, :updated_at
json.url delivery_url(delivery, format: :json)
12 changes: 12 additions & 0 deletions app/views/deliveries/_form.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

<%= simple_form_for(@delivery) do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>

<div class="form-inputs">
</div>

<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
10 changes: 10 additions & 0 deletions app/views/deliveries/edit.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<h1>Editing delivery</h1>

<%= render "form", delivery: @delivery %>

<br>

<div>
<%= link_to "Show this delivery", @delivery %> |
<%= link_to "Back to deliveries", deliveries_path %>
</div>
69 changes: 69 additions & 0 deletions app/views/deliveries/index.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<div>
<div>
<h1>Delivery Tracker</h1>
<p>Know if something gets lost in the mail.</p>
</div>
</div>
<hr>
<div>
<div>
<h2>Expecting a package?</h2>
<form action="/insert_delivery" method="post">
<input type="hidden" name="query_user_id" value="<%=current_user.id%>">
<div>
<label for="description_box">Description</label>
<input type="text" id="description_box" name="query_description">
</div>
<div>
<label for="supposed_to_arrive_on_box">Supposed to arrive on</label>
<input type="date" id="supposed_to_arrive_on_box" name="query_supposed_to_arrive_on">
</div>
<div>
<label for="details_box">Details</label>
<textarea id="details_box" name="query_details" rows="3"></textarea>
</div>
<button>Log delivery</button>
</form>
</div>
</div>
<hr>
<div class="waiting_on">
<h2>Waiting on</h2>
<ul>
<% @list_of_deliveries.each do |a_delivery| %>
<li>
<%= a_delivery.description || "No description available" %>

<% if a_delivery.supposed_to_arrive_on.present? && a_delivery.supposed_to_arrive_on < Time.now %>
<div style="color:red;">Supposed to arrive on <%= a_delivery.supposed_to_arrive_on %></div>
<% elsif a_delivery.supposed_to_arrive_on.present? %>
<div>Supposed to arrive on <%= a_delivery.supposed_to_arrive_on %></div>
<% else %>
<div>Arrival date not set</div>
<% end %>

<div><%= a_delivery.details || "No details available" %></div>
<div>
<form action="/modify_delivery/<%= a_delivery.id %>" method="post">
<input type="hidden" name="query_arrived" value="true">
<button>Mark as received</button>
</form>
</div>
<br>
</li>
<% end %>
</ul>
</div>

</div>
<hr>
<div class="received">
<h2>Received</h2>
<ul>
<% @list_of_deliveries.where(user_id: current_user.id, arrived: true).each do |a_delivery| %>
<li><%= a_delivery.description %>
<div><small><%=a_delivery.updated_at%> <a href="/delete_delivery/<%=a_delivery.id%>">Delete</a></small><div>
</li>
<% end %>
</ul>
</div>
1 change: 1 addition & 0 deletions app/views/deliveries/index.json.jbuilder
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
json.array! @deliveries, partial: "deliveries/delivery", as: :delivery
9 changes: 9 additions & 0 deletions app/views/deliveries/new.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<h1>New delivery</h1>

<%= render "form", delivery: @delivery %>

<br>

<div>
<%= link_to "Back to deliveries", deliveries_path %>
</div>
Loading