Skip to content
This repository was archived by the owner on Aug 8, 2019. It is now read-only.

Commit 6e613b8

Browse files
author
Lian Nivin
authored
Merge pull request #28 from codeableorg/feature-list-sport-fields-bookings
Feature list sport fields bookings
2 parents 34d5c18 + 0e62512 commit 6e613b8

15 files changed

Lines changed: 248 additions & 13 deletions

api/app/controllers/sport_fields_controller.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@ def create
1313
end
1414
end
1515

16+
def schedule
17+
@sport_field = SportField.find(params[:id])
18+
p params[:selectedDate]
19+
bookings = @sport_field.bookings.where("DATE(date) = ?", params[:selectedDate])
20+
club = @sport_field.club
21+
render json: {club: club, bookings: bookings}
22+
end
23+
24+
1625
private
1726
def sport_field_params
1827
params.permit(:name, :description, :price_day, :price_night, :image)

api/app/models/booking.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class Booking < ApplicationRecord
2+
belongs_to :user
3+
belongs_to :sport_field
4+
end

api/app/models/sport_field.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
class SportField < ApplicationRecord
22
has_one_attached :image
3+
has_many :bookings
4+
5+
belongs_to :club
36

47
validates :name, :description, :price_day, :price_night, presence: true
58
end
9+

api/app/models/user.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
class User < ApplicationRecord
22
has_secure_password
33
has_secure_token
4+
has_many :bookings
45

56
has_many :favorites, dependent: :destroy
67

api/config/routes.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
post '/login', to: 'sessions#login'
44
post '/register', to: 'sessions#register'
55
delete '/logout', to: 'sessions#destroy'
6+
get '/schedule/:id', to: 'sport_fields#schedule'
67
resources :clubs do
78
resource :favorites, only: [:create, :destroy]
89
end
9-
resources :sport_fields
10+
resources :sport_fields do
11+
get 'schedule', on: :member
12+
end
1013
end
1114
end
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class CreateBookings < ActiveRecord::Migration[5.2]
2+
def change
3+
create_table :bookings do |t|
4+
t.date :date
5+
t.integer :start_hour
6+
t.integer :end_hour
7+
t.integer :amount
8+
t.references :sport_field, foreign_key: true
9+
t.references :user, foreign_key: true
10+
11+
t.timestamps
12+
end
13+
end
14+
end

api/db/schema.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,19 @@
3636
t.index ["key"], name: "index_active_storage_blobs_on_key", unique: true
3737
end
3838

39+
create_table "bookings", force: :cascade do |t|
40+
t.date "date"
41+
t.integer "start_hour"
42+
t.integer "end_hour"
43+
t.integer "amount"
44+
t.bigint "sport_field_id"
45+
t.bigint "user_id"
46+
t.datetime "created_at", null: false
47+
t.datetime "updated_at", null: false
48+
t.index ["sport_field_id"], name: "index_bookings_on_sport_field_id"
49+
t.index ["user_id"], name: "index_bookings_on_user_id"
50+
end
51+
3952
create_table "clubs", force: :cascade do |t|
4053
t.string "name"
4154
t.string "address"
@@ -79,6 +92,8 @@
7992
end
8093

8194
add_foreign_key "active_storage_attachments", "active_storage_blobs", column: "blob_id"
95+
add_foreign_key "bookings", "sport_fields"
96+
add_foreign_key "bookings", "users"
8297
add_foreign_key "favorites", "clubs"
8398
add_foreign_key "favorites", "users"
8499
add_foreign_key "sport_fields", "clubs"

api/db/seeds.rb

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
end: '22'
1111
},
1212
'saturday': {
13-
start: '8',
13+
start: '10',
1414
end: '22'
1515
},
1616
'sunday': {
17-
start: '8',
17+
start: '14',
1818
end: '22'
1919
},
2020
}}, {name: "Club #2", address: 'Av. Jorge Chavez 184', district: "Miraflores", latitude: -13.1199378, longitude: -77.0353161,
@@ -47,9 +47,9 @@
4747
},
4848
}}])
4949

50-
SportField.create(name: "SportField #1", description: "Soccer 5vs5", price_day: 20, price_night: 40, club_id: 1)
51-
SportField.create(name: "SportField #2", description: "Soccer 6vs6", price_day: 30, price_night: 60, club_id: 2)
52-
SportField.create(name: "SportField #3", description: "Soccer 5vs5", price_day: 20, price_night: 40, club_id: 1)
50+
sportfield1 = SportField.create(name: "SportField #1", description: "Soccer 5vs5", price_day: 20, price_night: 40, club_id: 1)
51+
sportfield2 = SportField.create(name: "SportField #2", club_id: 2); SportField.create(name: "SportField #2", description: "Soccer 6vs6", price_day: 30, price_night: 60, club_id: 2)
52+
sportfield3 = SportField.create(name: "SportField #3", club_id: 1); SportField.create(name: "SportField #3", description: "Soccer 5vs5", price_day: 20, price_night: 40, club_id: 1)
5353

5454
Club.create(
5555
name: 'Club golden',
@@ -73,3 +73,14 @@
7373
# favorites
7474
regular_user.favorite(Club.first)
7575
regular_user.favorite(Club.last)
76+
regular_user.bookings.create(date: Time.now, start_hour: 14, end_hour: 15, amount: 100, sport_field_id: sportfield1.id );
77+
78+
regular_user.bookings.create(date: Time.now, start_hour: 15, end_hour: 16, amount: 100, sport_field_id: sportfield1.id );
79+
80+
regular_user.bookings.create(date: Time.now, start_hour: 16, end_hour: 17, amount: 100, sport_field_id: sportfield1.id );
81+
82+
regular_user.bookings.create(date: Time.now, start_hour: 17, end_hour: 18, amount: 100, sport_field_id: sportfield1.id );
83+
84+
regular_user.bookings.create(date: Time.now, start_hour: 15, end_hour: 16, amount: 200, sport_field_id: sportfield2.id );
85+
86+
regular_user.bookings.create(date: Time.now, start_hour: 16, end_hour: 17, amount: 300, sport_field_id: sportfield3.id );
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
require 'rails_helper'
2+
3+
RSpec.describe SportFieldsBookingsController, type: :controller do
4+
5+
end
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
require 'rails_helper'
2+
3+
RSpec.describe SportFieldsBooking, type: :model do
4+
pending "add some examples to (or delete) #{__FILE__}"
5+
end

0 commit comments

Comments
 (0)