-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Elle and Cyndi #23
base: master
Are you sure you want to change the base?
Elle and Cyndi #23
Changes from all commits
9895380
1061e16
ce28a4e
d352c42
953d83f
2b23869
4ac6609
492628c
4c01890
31b2e16
1c79508
67600ad
7a7bb3b
71b6f87
f44fc72
491c428
c1ae8e7
01e0bb4
1c038ea
6b2aed3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# See https://help.github.com/articles/ignoring-files for more about ignoring files. | ||
# | ||
# If you find yourself ignoring temporary files generated by your text editor | ||
# or operating system, you probably want to add a global ignore instead: | ||
# git config --global core.excludesfile '~/.gitignore_global' | ||
|
||
# Ignore bundler config. | ||
/.bundle | ||
|
||
# Ignore all logfiles and tempfiles. | ||
/log/* | ||
/tmp/* | ||
!/log/.keep | ||
!/tmp/.keep | ||
|
||
# Ignore uploaded files in development | ||
/storage/* | ||
!/storage/.keep | ||
|
||
.byebug_history | ||
|
||
# Ignore master key for decrypting credentials and more. | ||
/config/master.key |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
ruby-2.5.1 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
source 'https://rubygems.org' | ||
git_source(:github) { |repo| "https://github.com/#{repo}.git" } | ||
|
||
ruby '2.5.1' | ||
|
||
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' | ||
gem 'rails', '~> 5.2.3' | ||
# Use postgresql as the database for Active Record | ||
gem 'pg', '>= 0.18', '< 2.0' | ||
# Use Puma as the app server | ||
gem 'puma', '~> 3.11' | ||
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder | ||
# gem 'jbuilder', '~> 2.5' | ||
# Use Redis adapter to run Action Cable in production | ||
# gem 'redis', '~> 4.0' | ||
# Use ActiveModel has_secure_password | ||
# gem 'bcrypt', '~> 3.1.7' | ||
|
||
# Use ActiveStorage variant | ||
# gem 'mini_magick', '~> 4.8' | ||
|
||
# Use Capistrano for deployment | ||
# gem 'capistrano-rails', group: :development | ||
|
||
# Reduces boot times through caching; required in config/boot.rb | ||
gem 'bootsnap', '>= 1.1.0', require: false | ||
|
||
# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible | ||
# gem 'rack-cors' | ||
|
||
group :development, :test do | ||
# Call 'byebug' anywhere in the code to stop execution and get a debugger console | ||
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] | ||
end | ||
|
||
group :development do | ||
gem 'listen', '>= 3.0.5', '< 3.2' | ||
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring | ||
gem 'spring' | ||
gem 'spring-watcher-listen', '~> 2.0.0' | ||
end | ||
|
||
|
||
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem | ||
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] | ||
|
||
group :development, :test do | ||
gem 'pry-rails' | ||
end | ||
|
||
group :test do | ||
gem 'minitest-rails' | ||
gem 'minitest-reporters' | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
GEM | ||
remote: https://rubygems.org/ | ||
specs: | ||
actioncable (5.2.3) | ||
actionpack (= 5.2.3) | ||
nio4r (~> 2.0) | ||
websocket-driver (>= 0.6.1) | ||
actionmailer (5.2.3) | ||
actionpack (= 5.2.3) | ||
actionview (= 5.2.3) | ||
activejob (= 5.2.3) | ||
mail (~> 2.5, >= 2.5.4) | ||
rails-dom-testing (~> 2.0) | ||
actionpack (5.2.3) | ||
actionview (= 5.2.3) | ||
activesupport (= 5.2.3) | ||
rack (~> 2.0) | ||
rack-test (>= 0.6.3) | ||
rails-dom-testing (~> 2.0) | ||
rails-html-sanitizer (~> 1.0, >= 1.0.2) | ||
actionview (5.2.3) | ||
activesupport (= 5.2.3) | ||
builder (~> 3.1) | ||
erubi (~> 1.4) | ||
rails-dom-testing (~> 2.0) | ||
rails-html-sanitizer (~> 1.0, >= 1.0.3) | ||
activejob (5.2.3) | ||
activesupport (= 5.2.3) | ||
globalid (>= 0.3.6) | ||
activemodel (5.2.3) | ||
activesupport (= 5.2.3) | ||
activerecord (5.2.3) | ||
activemodel (= 5.2.3) | ||
activesupport (= 5.2.3) | ||
arel (>= 9.0) | ||
activestorage (5.2.3) | ||
actionpack (= 5.2.3) | ||
activerecord (= 5.2.3) | ||
marcel (~> 0.3.1) | ||
activesupport (5.2.3) | ||
concurrent-ruby (~> 1.0, >= 1.0.2) | ||
i18n (>= 0.7, < 2) | ||
minitest (~> 5.1) | ||
tzinfo (~> 1.1) | ||
ansi (1.5.0) | ||
arel (9.0.0) | ||
bootsnap (1.4.4) | ||
msgpack (~> 1.0) | ||
builder (3.2.3) | ||
byebug (11.0.1) | ||
coderay (1.1.2) | ||
concurrent-ruby (1.1.5) | ||
crass (1.0.4) | ||
erubi (1.8.0) | ||
ffi (1.10.0) | ||
globalid (0.4.2) | ||
activesupport (>= 4.2.0) | ||
i18n (1.6.0) | ||
concurrent-ruby (~> 1.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.2.3) | ||
crass (~> 1.0.2) | ||
nokogiri (>= 1.5.9) | ||
mail (2.7.1) | ||
mini_mime (>= 0.1.1) | ||
marcel (0.3.3) | ||
mimemagic (~> 0.3.2) | ||
method_source (0.9.2) | ||
mimemagic (0.3.3) | ||
mini_mime (1.0.1) | ||
mini_portile2 (2.4.0) | ||
minitest (5.11.3) | ||
minitest-rails (3.0.0) | ||
minitest (~> 5.8) | ||
railties (~> 5.0) | ||
minitest-reporters (1.3.6) | ||
ansi | ||
builder | ||
minitest (>= 5.0) | ||
ruby-progressbar | ||
msgpack (1.2.10) | ||
nio4r (2.3.1) | ||
nokogiri (1.10.3) | ||
mini_portile2 (~> 2.4.0) | ||
pg (1.1.4) | ||
pry (0.12.2) | ||
coderay (~> 1.1.0) | ||
method_source (~> 0.9.0) | ||
pry-rails (0.3.9) | ||
pry (>= 0.10.4) | ||
puma (3.12.1) | ||
rack (2.0.7) | ||
rack-test (1.1.0) | ||
rack (>= 1.0, < 3) | ||
rails (5.2.3) | ||
actioncable (= 5.2.3) | ||
actionmailer (= 5.2.3) | ||
actionpack (= 5.2.3) | ||
actionview (= 5.2.3) | ||
activejob (= 5.2.3) | ||
activemodel (= 5.2.3) | ||
activerecord (= 5.2.3) | ||
activestorage (= 5.2.3) | ||
activesupport (= 5.2.3) | ||
bundler (>= 1.3.0) | ||
railties (= 5.2.3) | ||
sprockets-rails (>= 2.0.0) | ||
rails-dom-testing (2.0.3) | ||
activesupport (>= 4.2.0) | ||
nokogiri (>= 1.6) | ||
rails-html-sanitizer (1.0.4) | ||
loofah (~> 2.2, >= 2.2.2) | ||
railties (5.2.3) | ||
actionpack (= 5.2.3) | ||
activesupport (= 5.2.3) | ||
method_source | ||
rake (>= 0.8.7) | ||
thor (>= 0.19.0, < 2.0) | ||
rake (12.3.2) | ||
rb-fsevent (0.10.3) | ||
rb-inotify (0.10.0) | ||
ffi (~> 1.0) | ||
ruby-progressbar (1.10.0) | ||
ruby_dep (1.5.0) | ||
spring (2.0.2) | ||
activesupport (>= 4.2) | ||
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.1) | ||
actionpack (>= 4.0) | ||
activesupport (>= 4.0) | ||
sprockets (>= 3.0.0) | ||
thor (0.20.3) | ||
thread_safe (0.3.6) | ||
tzinfo (1.2.5) | ||
thread_safe (~> 0.1) | ||
websocket-driver (0.7.0) | ||
websocket-extensions (>= 0.1.0) | ||
websocket-extensions (0.1.3) | ||
|
||
PLATFORMS | ||
ruby | ||
|
||
DEPENDENCIES | ||
bootsnap (>= 1.1.0) | ||
byebug | ||
listen (>= 3.0.5, < 3.2) | ||
minitest-rails | ||
minitest-reporters | ||
pg (>= 0.18, < 2.0) | ||
pry-rails | ||
puma (~> 3.11) | ||
rails (~> 5.2.3) | ||
spring | ||
spring-watcher-listen (~> 2.0.0) | ||
tzinfo-data | ||
|
||
RUBY VERSION | ||
ruby 2.5.1p57 | ||
|
||
BUNDLED WITH | ||
2.0.1 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
guard :minitest, autorun: false, spring: true do | ||
watch(%r{^app/(.+).rb$}) { |m| "test/#{m[1]}_test.rb" } | ||
watch(%r{^app/controllers/application_controller.rb$}) { 'test/controllers' } | ||
watch(%r{^app/controllers/(.+)_controller.rb$}) { |m| "test/integration/#{m[1]}_test.rb" } | ||
watch(%r{^app/views/(.+)_mailer/.+}) { |m| "test/mailers/#{m[1]}_mailer_test.rb" } | ||
watch(%r{^lib/(.+).rb$}) { |m| "test/lib/#{m[1]}_test.rb" } | ||
watch(%r{^test/.+_test.rb$}) | ||
watch(%r{^test/test_helper.rb$}) { 'test' } | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# Add your own tasks in files placed in lib/tasks ending in .rake, | ||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. | ||
|
||
require_relative 'config/application' | ||
|
||
Rails.application.load_tasks |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ApplicationCable | ||
class Channel < ActionCable::Channel::Base | ||
end | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ApplicationCable | ||
class Connection < ActionCable::Connection::Base | ||
end | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
class ApplicationController < ActionController::API | ||
require "date" | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
class CustomersController < ApplicationController | ||
def index | ||
customers = Customer.all | ||
if !customers.empty? | ||
render json: customers.as_json(except: [:created_at, :updated_at]), status: :ok | ||
else | ||
render json: {message: "There are currently no customers."} | ||
end | ||
end | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
class MoviesController < ApplicationController | ||
def index | ||
movies = Movie.all | ||
if !movies.empty? | ||
render json: movies.as_json(except: [:created_at, :updated_at]), status: :ok | ||
else | ||
render json: {message: "There are currently no movies."} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Status code? |
||
end | ||
end | ||
|
||
def show | ||
movie = Movie.find_by(id: params[:id]) | ||
if movie | ||
render json: movie.as_json(except: [:created_at, :updated_at]), status: :ok | ||
else | ||
render json: {error: "This movie was not found"}, status: :not_found | ||
end | ||
end | ||
|
||
def create | ||
movie = Movie.new(movie_params) | ||
if movie.save | ||
render json: {id: movie.id}, status: :ok | ||
else | ||
render json: {errors: movie.errors.messages}, | ||
status: :bad_request | ||
end | ||
end | ||
|
||
private | ||
|
||
def movie_params | ||
params.permit(:title, :overview, :release_date, :inventory) | ||
end | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
class RentalsController < ApplicationController | ||
def checkout | ||
movie = Movie.find_by(id: params[:movie_id]) | ||
if movie == nil | ||
render json: { error: "Movie was not found in database or no movie id was provided." }, status: :no_content | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Status: |
||
return | ||
end | ||
|
||
if movie.available_inventory > 0 | ||
rental = Rental.new(rental_params) | ||
rental.checkout_date = Date.today | ||
rental.due_date = Date.today + 7 | ||
if rental.save | ||
customer = Customer.find_by(id: params[:customer_id]) | ||
render json: { id: rental.id }, status: :ok | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For clarity I suggest moving the render to the last part of the |
||
|
||
rental.checkout_update_customer_movie(customer, movie) | ||
else | ||
render json: { error: rental.errors.messages }, status: :bad_request | ||
end | ||
else | ||
render json: { message: "This movie is not available for checkout." }, status: :forbidden | ||
end | ||
end | ||
|
||
def checkin | ||
customer_id = params[:customer_id] | ||
movie_id = params[:movie_id] | ||
customer = Customer.find_by(id: customer_id) | ||
movie = Movie.find_by(id: movie_id) | ||
if !customer | ||
render json: { error: "Customer id #{params[:customer_id]}not found" }, status: :no_content | ||
return | ||
end | ||
if !movie | ||
render json: { error: "Movie id #{params[:movie_id]} not found" }, status: :no_content | ||
return | ||
end | ||
rental = Rental.return(customer_id, movie_id) | ||
if !rental | ||
render json: { error: "rental not found" }, status: :no_content | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Again I suggest a 404 error here. |
||
return | ||
end | ||
rental.checked_in_date = Date.today | ||
rental.save | ||
rental.checkin_update_customer_movie(customer, movie) | ||
render json: { id: rental.id, message: "checked-in successful" }, status: :ok | ||
end | ||
|
||
private | ||
|
||
def rental_params | ||
params.permit(:movie_id, :customer_id) | ||
end | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
class ApplicationJob < ActiveJob::Base | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
class ApplicationMailer < ActionMailer::Base | ||
default from: '[email protected]' | ||
layout 'mailer' | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
class ApplicationRecord < ActiveRecord::Base | ||
self.abstract_class = true | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You should include a status code.