Skip to content
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

&& Steffany & Nicoleta #13

Open
wants to merge 49 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
dd797ee
set-up original rails project
nbrandolini May 7, 2018
54e4095
added customer and movie models
steffnay May 7, 2018
c70e150
added registered_at column to customers table
steffnay May 7, 2018
ee40590
added customers and movies controllers
nbrandolini May 7, 2018
660b650
routes
steffnay May 7, 2018
fb5e36a
merge conflict resolved
steffnay May 7, 2018
32129f6
setup seed data
steffnay May 7, 2018
3266fb2
index customerscontroller tests
nbrandolini May 8, 2018
a6aa7d4
changes
steffnay May 8, 2018
d6c97e8
merge conflict resolved
steffnay May 8, 2018
408ad30
added tests for index moviecontroller
nbrandolini May 8, 2018
6b13ed1
Merge branch 'videobranch'
nbrandolini May 8, 2018
754b961
updated model validations
steffnay May 8, 2018
a677b53
basic model tests
steffnay May 8, 2018
f00ef06
updated schema
steffnay May 8, 2018
3c19c9e
added routes for movie controller and create method show
nbrandolini May 8, 2018
0c35866
Merge branch 'videobranch'
nbrandolini May 8, 2018
cb67c55
added available_inventory parameter
nbrandolini May 8, 2018
a7bbef5
added movies#create
steffnay May 8, 2018
3f8f09f
Merge branch 'master' of https://github.com/nbrandolini/VideoStoreAPI
steffnay May 8, 2018
66a98d5
updated seed file so movies available matches inventory
steffnay May 8, 2018
9737b53
added tests for show moviecontrollers
nbrandolini May 8, 2018
bf489ec
Merge branch 'videobranch'
nbrandolini May 8, 2018
16977fc
added movies controller#create tests
steffnay May 8, 2018
56e5eb6
resolved merge conflict
steffnay May 8, 2018
cf11f32
tests for show moviescontroller done
nbrandolini May 8, 2018
a1d8850
Merge branch 'videobranch'
nbrandolini May 8, 2018
62a4c94
updated movie_params so params are no longer nested
steffnay May 8, 2018
21a2fd0
Merge branch 'master' of https://github.com/nbrandolini/VideoStoreAPI
steffnay May 8, 2018
a8372ec
added movies_checked_out_count to customerscontroller
nbrandolini May 8, 2018
98bd044
created rentals model
steffnay May 9, 2018
a238727
generated rental controller and methods
nbrandolini May 9, 2018
6ded50d
added routes to rental controller
nbrandolini May 9, 2018
d037aa2
added check_out method to rentals controller
steffnay May 9, 2018
2a65a92
added checkin method for rental
nbrandolini May 9, 2018
05b59b6
changed routes to match postman
nbrandolini May 9, 2018
4fad254
fixed method for checkin
nbrandolini May 9, 2018
a06c188
updated rentals controller tests and rentals model validations
steffnay May 9, 2018
3f63920
updated checkout method
steffnay May 9, 2018
043c7d7
updated rentals controller tests
steffnay May 10, 2018
23ebe97
updated rental methods
steffnay May 11, 2018
adf6ffe
adjusted rentals controller and customer model to check that customer…
steffnay May 11, 2018
f1fc453
updated check in and check out methods
steffnay May 11, 2018
fb8416f
deleted unsed customer model method
steffnay May 11, 2018
a650448
fixed test customer controller
nbrandolini May 11, 2018
9b282dd
Merge branch 'master' of https://github.com/nbrandolini/VideoStoreAPI
nbrandolini May 11, 2018
a7c1099
updated rental model test
steffnay May 11, 2018
f80c2e5
removed error migration
steffnay May 11, 2018
7475fcc
added rentals check-in testing
steffnay May 11, 2018
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
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 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

.byebug_history
50 changes: 50 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
source 'https://rubygems.org'

git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.6'
# Use postgresql as the database for Active Record
gem 'pg', '>= 0.18', '< 2.0'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# 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 Capistrano for deployment
# gem 'capistrano-rails', group: :development

# 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
154 changes: 154 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
GEM
remote: https://rubygems.org/
specs:
actioncable (5.1.6)
actionpack (= 5.1.6)
nio4r (~> 2.0)
websocket-driver (~> 0.6.1)
actionmailer (5.1.6)
actionpack (= 5.1.6)
actionview (= 5.1.6)
activejob (= 5.1.6)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.1.6)
actionview (= 5.1.6)
activesupport (= 5.1.6)
rack (~> 2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.1.6)
activesupport (= 5.1.6)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
activejob (5.1.6)
activesupport (= 5.1.6)
globalid (>= 0.3.6)
activemodel (5.1.6)
activesupport (= 5.1.6)
activerecord (5.1.6)
activemodel (= 5.1.6)
activesupport (= 5.1.6)
arel (~> 8.0)
activesupport (5.1.6)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
ansi (1.5.0)
arel (8.0.0)
builder (3.2.3)
byebug (10.0.2)
coderay (1.1.2)
concurrent-ruby (1.0.5)
crass (1.0.4)
erubi (1.7.1)
ffi (1.9.23)
globalid (0.4.1)
activesupport (>= 4.2.0)
i18n (1.0.1)
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.2)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.0)
mini_mime (>= 0.1.1)
method_source (0.9.0)
mini_mime (1.0.0)
mini_portile2 (2.3.0)
minitest (5.11.3)
minitest-rails (3.0.0)
minitest (~> 5.8)
railties (~> 5.0)
minitest-reporters (1.2.0)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
nio4r (2.3.1)
nokogiri (1.8.2)
mini_portile2 (~> 2.3.0)
pg (1.0.0)
pry (0.11.3)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
pry-rails (0.3.6)
pry (>= 0.10.4)
puma (3.11.4)
rack (2.0.5)
rack-test (1.0.0)
rack (>= 1.0, < 3)
rails (5.1.6)
actioncable (= 5.1.6)
actionmailer (= 5.1.6)
actionpack (= 5.1.6)
actionview (= 5.1.6)
activejob (= 5.1.6)
activemodel (= 5.1.6)
activerecord (= 5.1.6)
activesupport (= 5.1.6)
bundler (>= 1.3.0)
railties (= 5.1.6)
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.1.6)
actionpack (= 5.1.6)
activesupport (= 5.1.6)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (12.3.1)
rb-fsevent (0.10.3)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
ruby-progressbar (1.9.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.1)
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.0)
thread_safe (0.3.6)
tzinfo (1.2.5)
thread_safe (~> 0.1)
websocket-driver (0.6.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.3)

PLATFORMS
ruby

DEPENDENCIES
byebug
listen (>= 3.0.5, < 3.2)
minitest-rails
minitest-reporters
pg (>= 0.18, < 2.0)
pry-rails
puma (~> 3.7)
rails (~> 5.1.6)
spring
spring-watcher-listen (~> 2.0.0)
tzinfo-data

BUNDLED WITH
1.16.1
6 changes: 6 additions & 0 deletions Rakefile
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
4 changes: 4 additions & 0 deletions app/channels/application_cable/channel.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module ApplicationCable
class Channel < ActionCable::Channel::Base
end
end
4 changes: 4 additions & 0 deletions app/channels/application_cable/connection.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module ApplicationCable
class Connection < ActionCable::Connection::Base
end
end
4 changes: 4 additions & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class ApplicationController < ActionController::API


end
Empty file added app/controllers/concerns/.keep
Empty file.
27 changes: 27 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class CustomersController < ApplicationController
def index
customers = Customer.all
# render json: { message: "What's up yall?" }

render :json => customers.as_json(only: [:id, :name, :registered_at, :postal_code, :phone, :movies_checked_out_count]), status: :ok

end

def show
end

def update
end

def create
end

def destroy
end

def new
end

def edit
end
end
41 changes: 41 additions & 0 deletions app/controllers/movies_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
class MoviesController < ApplicationController
# protect_from_forgery with: :null_session

def index
movies = Movie.all
render :json => movies.as_json(only: [:id, :title, :release_date, :overview, :inventory, :availa]), status: :ok
end

def show
movie = Movie.find_by(id: params[:id])
if movie
show_movie_hash = {
title: movie.title,
overview: movie.overview,
release_date: movie.release_date,
inventory: movie.inventory,
available_inventory: movie.available_inventory,
}
render json: show_movie_hash.as_json, status: :ok
else
render json: { ok: false, errors: {id: ["Movie not found"]} }, status: :not_found
end
end

def create
movie = Movie.create(movie_params)

if movie.valid?
render json: {id: movie.id}, status: :ok
else
render json: {ok: false, errors: movie.errors}, status: :bad_request
end
end

private

def movie_params
params.permit(:title, :overview, :release_date, :inventory, :available_inventory)
end

end
81 changes: 81 additions & 0 deletions app/controllers/rentals_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
require 'date'

class RentalsController < ApplicationController

RENTAL_PERIOD = 7

def check_in
movie = Movie.find_by(id: rental_params[:movie_id])
customer = Customer.find_by(id: rental_params[:customer_id])

if movie
if customer
rental = Rental.find_by(movie_id: movie.id, customer_id: customer.id)

movie.update_checkin

customer.update_count("in")
else
render json: {ok: false, errors: "Customer not found"}, status: :bad_request
return
end
else
render json: {ok: false, errors: "Movie not found"}, status: :bad_request
return
end

if rental
rental.delete
render json: { id: movie.id }, status: :ok
else
render json: {ok: false, errors: "Rental could not be found"}, status: :bad_request
end
end



def check_out

movie = Movie.find_by(id: rental_params[:movie_id])
rental = Rental.new(rental_params)

if movie

if movie.available_inventory > 0

movie.update_checkout

rental.checkout_date = Date.today
rental.due_date = rental.checkout_date + RENTAL_PERIOD
rental.save

customer = Customer.find_by(id: rental_params[:customer_id])

if customer
customer.update_count("out")
end

else
render json: {
errors: ["No copies are currently available"]
}, status: :ok
return
end

end


if rental.valid?
render json: {due_date: rental.due_date}, status: :ok
else
render json: {ok: false, errors: rental.errors}, status: :bad_request
end

end

private

def rental_params
params.permit(:customer_id, :movie_id)
end
end
2 changes: 2 additions & 0 deletions app/jobs/application_job.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ApplicationJob < ActiveJob::Base
end
Loading