From e3ec1a378e44d4bd6eaa06d4e6b3190480c65644 Mon Sep 17 00:00:00 2001 From: Marisol Lopez Date: Wed, 14 Jun 2017 16:55:33 -0700 Subject: [PATCH 1/7] trying out a potentially different route but commented out --- app/serializers/movie_serializer.rb | 2 +- config/routes.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/serializers/movie_serializer.rb b/app/serializers/movie_serializer.rb index 8a1cdc35..c1871302 100644 --- a/app/serializers/movie_serializer.rb +++ b/app/serializers/movie_serializer.rb @@ -1,5 +1,5 @@ class MovieSerializer < ActiveModel::Serializer attribute :id, if: -> { object.id != nil } - attributes :title, :overview, :release_date, :image_url, :external_id + attributes :title, :overview, :release_date, :image_url, :external_id, :inventory end diff --git a/config/routes.rb b/config/routes.rb index 54bf033e..f97bf8b6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -9,5 +9,6 @@ post "/rentals/:title/return", to: "rentals#check_in", as: "check_in" get "/rentals/overdue", to: "rentals#overdue", as: "overdue" + # get "/movies?query=", to: "movies#index", as: "external_api" end From d6e2db531e2f7c37fef89593e0b4157250a92966 Mon Sep 17 00:00:00 2001 From: Marisol Lopez Date: Fri, 16 Jun 2017 11:10:14 -0700 Subject: [PATCH 2/7] added create method --- app/controllers/movies_controller.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index 362e2791..796d0111 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -11,6 +11,12 @@ def index render status: :ok, json: data end + def create + @rental_movie = Movie.create!(title: params[:title], overview: params[:overview], release_date: params[:release_date], image_url: params[:image_url]) + + + end + def show render( status: :ok, From 0a2f3dd57f3135b7d4859927243bf33256a27a7a Mon Sep 17 00:00:00 2001 From: Marisol Lopez Date: Mon, 19 Jun 2017 14:10:39 -0700 Subject: [PATCH 3/7] added route for create movie method in controller --- app/controllers/movies_controller.rb | 21 ++++++++++++--------- config/routes.rb | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index 796d0111..633f6059 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -12,19 +12,17 @@ def index end def create - @rental_movie = Movie.create!(title: params[:title], overview: params[:overview], release_date: params[:release_date], image_url: params[:image_url]) - - + @rental_movie = Movie.create(movie_params) end def show render( - status: :ok, - json: @movie.as_json( - only: [:title, :overview, :release_date, :inventory], - methods: [:available_inventory] - ) - ) + status: :ok, + json: @movie.as_json( + only: [:title, :overview, :release_date, :inventory], + methods: [:available_inventory] + ) + ) end private @@ -35,4 +33,9 @@ def require_movie render status: :not_found, json: { errors: { title: ["No movie with title #{params["title"]}"] } } end end + + def movie_params + return params.require(:movie).permit(:title, :overview, :release_date) + end + end diff --git a/config/routes.rb b/config/routes.rb index f97bf8b6..c6215d5b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,7 +3,7 @@ resources :customers, only: [:index] - resources :movies, only: [:index, :show], param: :title + resources :movies, only: [:index, :show, :create], param: :title post "/rentals/:title/check-out", to: "rentals#check_out", as: "check_out" post "/rentals/:title/return", to: "rentals#check_in", as: "check_in" From 913c3e7498708ef0e9b0dc3da5a039d3e013dc7f Mon Sep 17 00:00:00 2001 From: Marisol Lopez Date: Mon, 19 Jun 2017 16:39:44 -0700 Subject: [PATCH 4/7] added conditional for image url when adding a movie to database to use original url --- app/controllers/movies_controller.rb | 2 +- app/models/movie.rb | 5 ++++- lib/movie_wrapper.rb | 16 +++++++++++----- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/controllers/movies_controller.rb b/app/controllers/movies_controller.rb index 633f6059..d4a4f131 100644 --- a/app/controllers/movies_controller.rb +++ b/app/controllers/movies_controller.rb @@ -35,7 +35,7 @@ def require_movie end def movie_params - return params.require(:movie).permit(:title, :overview, :release_date) + return params.require(:movie).permit(:title, :overview, :release_date, :image_url) end end diff --git a/app/models/movie.rb b/app/models/movie.rb index 0327a4d6..b5b4718d 100644 --- a/app/models/movie.rb +++ b/app/models/movie.rb @@ -10,10 +10,13 @@ def available_inventory def image_url orig_value = read_attribute :image_url - if !orig_value + if !orig_value || orig_value == "http://lorempixel.com/185/278/" MovieWrapper::DEFAULT_IMG_URL else + orig_value.slice!('https://image.tmdb.org/t/p/w185') MovieWrapper.construct_image_url(orig_value) + # .slice!('https://image.tmdb.org/t/p/w185') + # puts "^^^^^^" + orig_value end end end diff --git a/lib/movie_wrapper.rb b/lib/movie_wrapper.rb index 7bd05c0e..90b52fb3 100644 --- a/lib/movie_wrapper.rb +++ b/lib/movie_wrapper.rb @@ -10,6 +10,8 @@ def self.search(query) url = BASE_URL + "search/movie?api_key=" + KEY + "&query=" + query # puts url response = HTTParty.get(url) + puts "&&&&&" + puts response if response["total_results"] == 0 return [] else @@ -23,15 +25,19 @@ def self.search(query) private def self.construct_movie(api_result) + Movie.new( - title: api_result["title"], - overview: api_result["overview"], - release_date: api_result["release_date"], - image_url: api_result["poster_path"], #(api_result["poster_path"] ? self.construct_image_url(api_result["poster_path"]) : nil), - external_id: api_result["id"]) + title: api_result["title"], + overview: api_result["overview"], + release_date: api_result["release_date"], + image_url: api_result["poster_path"], + #(api_result["poster_path"] ? self.construct_image_url(api_result["poster_path"]) : nil), + external_id: api_result["id"]) end + def self.construct_image_url(img_name) + return BASE_IMG_URL + DEFAULT_IMG_SIZE + img_name end From dc63810bbad72a49c8536e7fa73324e0053248fa Mon Sep 17 00:00:00 2001 From: Marisol Lopez Date: Mon, 19 Jun 2017 16:45:53 -0700 Subject: [PATCH 5/7] cleaned up console logs --- app/models/movie.rb | 2 -- lib/movie_wrapper.rb | 4 ---- 2 files changed, 6 deletions(-) diff --git a/app/models/movie.rb b/app/models/movie.rb index b5b4718d..4074a63c 100644 --- a/app/models/movie.rb +++ b/app/models/movie.rb @@ -15,8 +15,6 @@ def image_url else orig_value.slice!('https://image.tmdb.org/t/p/w185') MovieWrapper.construct_image_url(orig_value) - # .slice!('https://image.tmdb.org/t/p/w185') - # puts "^^^^^^" + orig_value end end end diff --git a/lib/movie_wrapper.rb b/lib/movie_wrapper.rb index 90b52fb3..bfd741af 100644 --- a/lib/movie_wrapper.rb +++ b/lib/movie_wrapper.rb @@ -10,8 +10,6 @@ def self.search(query) url = BASE_URL + "search/movie?api_key=" + KEY + "&query=" + query # puts url response = HTTParty.get(url) - puts "&&&&&" - puts response if response["total_results"] == 0 return [] else @@ -25,7 +23,6 @@ def self.search(query) private def self.construct_movie(api_result) - Movie.new( title: api_result["title"], overview: api_result["overview"], @@ -37,7 +34,6 @@ def self.construct_movie(api_result) def self.construct_image_url(img_name) - return BASE_IMG_URL + DEFAULT_IMG_SIZE + img_name end From a8160bbbbcd0c6b73b7698cfe444c5196714fb79 Mon Sep 17 00:00:00 2001 From: Marisol Lopez Date: Mon, 19 Jun 2017 16:55:17 -0700 Subject: [PATCH 6/7] added comment --- app/models/movie.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/movie.rb b/app/models/movie.rb index 4074a63c..aca5f7f2 100644 --- a/app/models/movie.rb +++ b/app/models/movie.rb @@ -13,6 +13,7 @@ def image_url if !orig_value || orig_value == "http://lorempixel.com/185/278/" MovieWrapper::DEFAULT_IMG_URL else + # using slice to remove the part of the url i do not want printed twice, the ! will modify the original variable orig_value.slice!('https://image.tmdb.org/t/p/w185') MovieWrapper.construct_image_url(orig_value) end From 6d80d75348e783e2ed3dbd7c65f63626c2561c22 Mon Sep 17 00:00:00 2001 From: Marisol Lopez Date: Wed, 21 Jun 2017 14:08:49 -0700 Subject: [PATCH 7/7] CRUD and routes for customer --- app/controllers/customers_controller.rb | 43 +++++++++++++++++++++++-- config/routes.rb | 2 +- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/app/controllers/customers_controller.rb b/app/controllers/customers_controller.rb index be25f1be..b1a2759a 100644 --- a/app/controllers/customers_controller.rb +++ b/app/controllers/customers_controller.rb @@ -13,12 +13,44 @@ def index data = data.paginate(page: params[:p], per_page: params[:n]) render json: data.as_json( - only: [:id, :name, :registered_at, :address, :city, :state, :postal_code, :phone, :account_credit], - methods: [:movies_checked_out_count] + only: [:id, :name, :registered_at, :address, :city, :state, :postal_code, :phone, :account_credit], + methods: [:movies_checked_out_count] ) end -private + def show + @customer = Customer.find(params[:id]) + end + + def new + @customer = Customer.new + end + + def create + @customer = Customer.create(customer_params) + end + + def update + @customer = Customer.find_by(id: params[:id]) + if @customer.nil? + head :not_found + else + @customer.update_attributes(customer_params) + redirect_to customer_path + end + end + + def edit + @customer = Customer.find_by(id: params[:id]) + end + + def destroy + @customer = Customer.find_by(id: params[:id]) + @customer.destroy + redirect_to customers_path + end + + private def parse_query_args errors = {} @sort = params[:sort] @@ -30,4 +62,9 @@ def parse_query_args render status: :bad_request, json: { errors: errors } end end + + def customer_params + return params.require(:customer).permit(:name, :address, :city, :state, :postal_code, :phone, :account_credit) + end + end diff --git a/config/routes.rb b/config/routes.rb index c6215d5b..d399e8d6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,7 @@ Rails.application.routes.draw do # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html - resources :customers, only: [:index] + resources :customers resources :movies, only: [:index, :show, :create], param: :title