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
119 changes: 63 additions & 56 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,82 +1,86 @@
GEM
remote: https://rubygems.org/
specs:
activemodel (4.2.0)
activesupport (= 4.2.0)
activemodel (4.2.10)
activesupport (= 4.2.10)
builder (~> 3.1)
activerecord (4.2.0)
activemodel (= 4.2.0)
activesupport (= 4.2.0)
activerecord (4.2.10)
activemodel (= 4.2.10)
activesupport (= 4.2.10)
arel (~> 6.0)
activesupport (4.2.0)
activesupport (4.2.10)
i18n (~> 0.7)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
arel (6.0.0)
backports (3.6.4)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
arel (6.0.4)
backports (3.10.0)
bcrypt (3.1.11)
builder (3.2.2)
capybara (2.4.4)
mime-types (>= 1.16)
builder (3.2.3)
capybara (2.15.4)
addressable
mini_mime (>= 0.1.3)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
diff-lcs (1.2.5)
factory_girl (4.5.0)
diff-lcs (1.3)
factory_girl (4.8.1)
activesupport (>= 3.0.0)
faker (1.4.3)
faker (1.8.4)
i18n (~> 0.5)
i18n (0.7.0)
json (1.8.2)
mime-types (2.4.3)
mini_portile (0.6.2)
minitest (5.5.1)
multi_json (1.10.1)
nokogiri (1.6.6.2)
mini_portile (~> 0.6.0)
pg (0.18.1)
rack (1.6.0)
rack-protection (1.5.3)
i18n (0.8.6)
mini_mime (0.1.4)
mini_portile2 (2.3.0)
minitest (5.10.3)
multi_json (1.12.2)
mustermann (1.0.1)
nokogiri (1.8.1)
mini_portile2 (~> 2.3.0)
pg (0.21.0)
public_suffix (3.0.0)
rack (2.0.3)
rack-protection (2.0.0)
rack
rack-test (0.6.3)
rack (>= 1.0)
rake (10.4.2)
rspec (3.2.0)
rspec-core (~> 3.2.0)
rspec-expectations (~> 3.2.0)
rspec-mocks (~> 3.2.0)
rspec-core (3.2.0)
rspec-support (~> 3.2.0)
rspec-expectations (3.2.0)
rack-test (0.7.0)
rack (>= 1.0, < 3)
rake (12.1.0)
rspec (3.6.0)
rspec-core (~> 3.6.0)
rspec-expectations (~> 3.6.0)
rspec-mocks (~> 3.6.0)
rspec-core (3.6.0)
rspec-support (~> 3.6.0)
rspec-expectations (3.6.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.2.0)
rspec-mocks (3.2.0)
rspec-support (~> 3.6.0)
rspec-mocks (3.6.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.2.0)
rspec-support (3.2.0)
shotgun (0.9)
rspec-support (~> 3.6.0)
rspec-support (3.6.0)
shotgun (0.9.2)
rack (>= 1.0)
shoulda-matchers (2.8.0)
activesupport (>= 3.0.0)
sinatra (1.4.5)
rack (~> 1.4)
rack-protection (~> 1.4)
tilt (~> 1.3, >= 1.3.4)
sinatra-contrib (1.4.2)
shoulda-matchers (3.1.2)
activesupport (>= 4.0.0)
sinatra (2.0.0)
mustermann (~> 1.0)
rack (~> 2.0)
rack-protection (= 2.0.0)
tilt (~> 2.0)
sinatra-contrib (2.0.0)
backports (>= 2.0)
multi_json
rack-protection
rack-test
sinatra (~> 1.4.0)
tilt (~> 1.3)
thread_safe (0.3.4)
tilt (1.4.1)
tzinfo (1.2.2)
mustermann (~> 1.0)
rack-protection (= 2.0.0)
sinatra (= 2.0.0)
tilt (>= 1.3, < 3)
thread_safe (0.3.6)
tilt (2.0.8)
tzinfo (1.2.3)
thread_safe (~> 0.1)
xpath (2.0.0)
xpath (2.1.0)
nokogiri (~> 1.3)

PLATFORMS
Expand All @@ -97,3 +101,6 @@ DEPENDENCIES
shoulda-matchers
sinatra
sinatra-contrib

BUNDLED WITH
1.15.4
11 changes: 11 additions & 0 deletions app/controllers/decks.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
get '/sessions_viewer' do
session.inspect
end

get '/decks' do
@decks = Deck.all
clear_current_session_keys
erb :"decks/show"
end


57 changes: 0 additions & 57 deletions app/controllers/games.rb

This file was deleted.

4 changes: 2 additions & 2 deletions app/controllers/index.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
get '/' do
redirect '/games'
end
redirect '/decks'
end
48 changes: 48 additions & 0 deletions app/controllers/rounds.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
get '/deck/:id' do
current_deck = Deck.find(params[:id])
count = current_deck.flashcards.all.count

set_current_session_keys(count)


current_round = Round.new(user_id: session[:user_id], deck_id: current_deck.id, correct_count: session[:correct_cards])
current_round.save


redirect to("/rounds/#{current_round.id}/flashcard/show")
end


get '/rounds/:id/flashcard/show' do
if session[:remaining_cards].size > 0
session[:current_card_id] = session[:remaining_cards].shift
@current_card = Flashcard.find(session[:current_card_id])
erb :"/rounds/current_card", locals: { round_id: params[:id] }
else
redirect to("rounds/#{params[:id]}/over")
end
end


post '/rounds/:id/flashcard/guess' do

@guess = Guess.new(round_id: params[:id], flashcard_id: session[:current_card_id], status: false)
@flashcard = Flashcard.find(session[:current_card_id])

if params[:answer].downcase == @flashcard.answer.downcase
remove_flashcard(@flashcard)
redirect to("/rounds/#{params[:id]}/flashcard/show")
else
keep_flashcard(@flashcard)
erb :'guesses/show'
end
end

get '/rounds/:id/over' do
@decks = Deck.all
@first_round_right = calculate_first_round_correct
@round = Round.find(params[:id])
@round.update_attributes(correct_count: @first_round_right)
erb :"rounds/results"
end

9 changes: 7 additions & 2 deletions app/controllers/session.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,16 @@

end

delete '/sessions' do
session.delete(:user_id)
get '/logout' do
session.clear
redirect '/'
end

# delete '/sessions' do
# session.delete(:user_id)
# redirect '/'
# end

get '/not_authorized' do
erb :not_authorized
end
4 changes: 2 additions & 2 deletions app/controllers/users.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
@user = User.new(params[:user])

if @user.save
redirect '/'
redirect '/sessions/new'
else
@errors = @user.errors.full_messages
erb :"users/new"
Expand All @@ -17,4 +17,4 @@
get '/users/:id' do
@user = User.find_by(id: params[:id])
erb :"users/show"
end
end
39 changes: 34 additions & 5 deletions app/helpers/session_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,39 @@ def authenticate!
redirect '/sessions/new' unless logged_in?
end

def authorize!(user)
redirect '/not_authorized' unless authorized?(user)
def set_current_session_keys(count)
session[:remaining_cards] = Array(1..count)
session[:correct_cards] = 0 unless session[:correct_cards]
session[:total_cards] = Flashcard.all.count
session[:correct_card_ids] = [] unless session[:correct_card_ids]
session[:incorrect_card_id] = "" unless session[:incorrect_card_id]
session[:incorrect_card_collection] = [] unless session[:incorrect_card_collection]
end

def authorized?(user)
current_user == user
end
def clear_current_session_keys
session[:correct_cards] = 0
session[:remaining_cards] = nil
session[:current_card_id] = nil
session[:correct_card_ids] = []
session[:incorrect_card_id] = ""
session[:incorrect_card_collection] = []
end

def remove_flashcard(flashcard)
#add flashcard to a correct_cards collection
session[:correct_cards] += 1
session[:correct_card_ids] << @flashcard.id
end

def keep_flashcard(flashcard)
#adds incorrect flashcards to the back of the deck
session[:incorrect_card_id] = @flashcard.id
session[:incorrect_card_collection] << @flashcard.id
session[:remaining_cards].push(session[:incorrect_card_id])
end

def calculate_first_round_correct
unique_array = session[:incorrect_card_collection].uniq
first_round_wrong = unique_array.count
session[:total_cards] - first_round_wrong
end
6 changes: 6 additions & 0 deletions app/models/deck.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class Deck < ActiveRecord::Base
has_many :rounds
has_many :flashcards

validates :name, presence: true
end
6 changes: 6 additions & 0 deletions app/models/flashcard.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class Flashcard < ActiveRecord::Base
belongs_to :deck
has_many :guesses

validates :question, :answer, presence: true
end
6 changes: 0 additions & 6 deletions app/models/game.rb

This file was deleted.

4 changes: 4 additions & 0 deletions app/models/guess.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class Guess < ActiveRecord::Base
belongs_to :round
belongs_to :flashcard
end
5 changes: 5 additions & 0 deletions app/models/round.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class Round < ActiveRecord::Base
belongs_to :user
belongs_to :deck
has_many :guesses
end
Loading