class NbaDraft2017::Cli def call puts 'Welcome to the 2017 NBA Draft!' make_players menu end def list_draft list_round_1 list_round_2 end def list_round_1 dotted_line puts "Round 1".colorize(:blue).bold dotted_line i = 0 while i < 30 player = NbaDraft2017::Player.all[i] if i < 9 puts "#{i + 1}. #{player.name.colorize(:green).bold} #{player.position.colorize(:red)} from #{player.former_team.colorize(:blue).bold} drafted by #{player.nba_team.colorize(:green).bold}" else puts "#{i + 1}. #{player.name.colorize(:green).bold} #{player.position.colorize(:red)} from #{player.former_team.colorize(:blue).bold} drafted by #{player.nba_team.colorize(:green).bold}" end i += 1 end dotted_line end def list_round_2 puts "Round 2".colorize(:blue).bold dotted_line i = 30 while i < 60 player = NbaDraft2017::Player.all[i] puts "#{i + 1}. #{player.name.colorize(:green).bold} #{player.position.colorize(:red)} from #{player.former_team.colorize(:blue).bold} drafted by #{player.nba_team.colorize(:green).bold}" i += 1 end dotted_line end def dotted_line puts "------------------------------------------------------------".bold.colorize(:red) end def make_players players_array = NbaDraft2017::Scraper.scrape_draft NbaDraft2017::Player.create_from_collection(players_array) end def add_attributes_to_player(player_name) player = NbaDraft2017::Player.find_player_by_name(player_name) attributes = NbaDraft2017::Scraper.scrape_player("http://www.nba.com/draft/2017/prospects/" + player.profile_url) player.add_player_attributes(attributes) player end def menu input = nil while input != 'exit' list_controls input = gets.strip.downcase if input == 'draft' list_draft elsif input == 'rd1' || input == 'rd 1' list_round_1 elsif input == 'rd2' || input == 'rd 2' list_round_2 elsif input == 'player' || input == 'players' find_and_list_player elsif input == 'nba team' || input == 'nba' list_draft_picks_by_nba_team elsif input == 'former team' || input == 'former' list_draft_picks_by_former_team elsif input == 'exit' good_bye else error end end end def list_controls draft = "'draft'" round_1 = "'rd1'" round_2 = "'rd2'" player = "'player'" nba_team = "'nba'" former_team = "'former'" puts "Enter #{draft.colorize(:green)}, #{round_1.colorize(:green)} or #{round_2.colorize(:green)} to see list of draft picks." puts "Enter #{player.colorize(:green)} to see player details and stats" puts "Enter #{nba_team.colorize(:green)} to show players drafted by a NBA team" puts "Enter #{former_team.colorize(:green)} to show players drated out of colleges or clubs" puts "To quit, type" + " 'exit'".colorize(:green) end def find_and_list_player puts "Please enter player draft pick number or player name." lookup = gets.strip if lookup.to_i.between?(1, NbaDraft2017::Player.all.size) player = NbaDraft2017::Player.find_player_by_pick(lookup) list_player_details(player.name) elsif NbaDraft2017::Player.find_player_by_name(lookup) list_player_details(lookup) else error end player end def list_player_details(player_name) player = add_attributes_to_player(player_name) puts "#{player.name.upcase.bold.underline}".colorize(:green).bold puts " Round:".bold.colorize(:red) +" #{player.round}" + " Pick:".bold.colorize(:red) +" #{player.pick}" puts " Drafted By:".bold.colorize(:red) +" #{player.nba_team}" puts " From:".bold.colorize(:red) +" #{player.former_team}" puts " Position:".bold.colorize(:red) +" #{player.position}" puts " Drafted As:".bold.colorize(:red) +" #{player.former_status}" puts " Age:".bold.colorize(:red) +" #{player.age}" puts " Height:".bold.colorize(:red) +" #{player.height}" puts " Weight:".bold.colorize(:red) +" #{player.weight}" puts " STATS".colorize(:green).bold if player.key_stats if player.key_stats puts " PPG:".bold.colorize(:red) + " #{player.ppg}" if player.ppg puts " RPG:".bold.colorize(:red) + " #{player.rpg}" if player.rpg puts " APG:".bold.colorize(:red) + " #{player.apg}" if player.apg puts " FG:".bold.colorize(:red) + " #{(player.fg * 100).round(2)}%" if player.fg puts " 3PT:".bold.colorize(:red) + " #{(player.three * 100).round(2)}%" if player.three puts " FT:".bold.colorize(:red) + " #{(player.ft * 100).round(2)}%" if player.ft puts " TPG:".bold.colorize(:red) + " #{player.tpg}" if player.tpg puts " SPG:".bold.colorize(:red) + " #{player.spg}" if player.spg puts " BPG:".bold.colorize(:red) + " #{player.bpg}" if player.bpg puts " MPG:".bold.colorize(:red) + " #{player.mpg}" if player.mpg end end def list_draft_picks_by_nba_team puts NbaDraft2017::Player.nba_teams.sort puts 'Enter an NBA team (name only) as in list above:'.colorize(:green) nba_team = gets.strip.downcase if NbaDraft2017::Player.nba_teams.include?(nba_team) NbaDraft2017::Player.players_by_nba_team(nba_team) more_info_on_player?(nba_team) else error end end def list_draft_picks_by_former_team puts NbaDraft2017::Player.former_teams.sort puts 'Enter a School or Country name exactly as shown in list above:'.colorize(:green) former_team = gets.strip.downcase if NbaDraft2017::Player.former_teams.include?(former_team) NbaDraft2017::Player.players_by_former_team(former_team) more_info_on_player?(former_team) else error end end def more_info_on_player?(team) request = nil while request != 'n' && request != 'exit' puts "Would you like more info on any of the players? 'y' or 'n'?" request = gets.downcase.strip if request =='y' player = find_and_list_player if player.nba_team.downcase != team.downcase && player.former_team.downcase != team.downcase dotted_line puts "That player isn't on or from #{team} though!!!".upcase.bold.colorize(:red) dotted_line end elsif request == 'n' || request == 'exit' break else error end end end def error puts "I didn't understand that! Please try agian or type 'exit'.".colorize(:red).bold puts "------------------------------------------------------------".colorize(:green).bold end def good_bye puts "Thanks for checking out the 2017 NBA Draft! Good Luck!" end end