From 19b3c4bdef094901b64d60f09d93ec0cd9e66efe Mon Sep 17 00:00:00 2001 From: Bharath Reddy Date: Thu, 22 Sep 2016 14:01:24 -0600 Subject: [PATCH 1/4] added model --- artifacts/organization.mwb | Bin 0 -> 14787 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 artifacts/organization.mwb diff --git a/artifacts/organization.mwb b/artifacts/organization.mwb new file mode 100644 index 0000000000000000000000000000000000000000..b5ab5efdc14c1888b85dbc9d43f28522597f74ad GIT binary patch literal 14787 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 literal 0 HcmV?d00001 From 8aa87e2dc8651efc3343c8cbe0f12b8b54f3f88c Mon Sep 17 00:00:00 2001 From: Bharath Reddy Date: Thu, 22 Sep 2016 14:17:31 -0600 Subject: [PATCH 2/4] added image --- erd.png | Bin 0 -> 79844 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 erd.png diff --git a/erd.png b/erd.png new file mode 100644 index 0000000000000000000000000000000000000000..1e2203f3228c47e79d0cf84403a945eb6963f804 GIT binary patch literal 79844 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 Date: Thu, 22 Sep 2016 15:52:05 -0500 Subject: [PATCH 3/4] my model --- ass.mwb | Bin 0 -> 16865 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ass.mwb diff --git a/ass.mwb b/ass.mwb new file mode 100644 index 0000000000000000000000000000000000000000..eaa498e0e412bf25e2f779082dac01948335ba2a GIT binary patch literal 16865 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 m-^$=XABFJzqU@y9Jm4ItZ+=Q@jzVHlaz Date: Wed, 28 Sep 2016 01:31:22 -0600 Subject: [PATCH 4/4] final work --- Gemfile | 44 +++++ Gemfile.lock | 174 ++++++++++++++++++ README.md | 26 ++- Rakefile | 6 + app/assets/config/manifest.js | 3 + app/assets/images/.keep | 0 app/assets/javascripts/addresses.coffee | 3 + app/assets/javascripts/application.js | 16 ++ app/assets/javascripts/athletes.coffee | 3 + app/assets/javascripts/cable.js | 13 ++ app/assets/javascripts/channels/.keep | 0 app/assets/javascripts/coaches.coffee | 3 + app/assets/javascripts/leagues.coffee | 3 + app/assets/javascripts/managers.coffee | 3 + app/assets/javascripts/parents.coffee | 3 + app/assets/javascripts/people.coffee | 3 + app/assets/javascripts/teams.coffee | 3 + app/assets/stylesheets/addresses.scss | 3 + app/assets/stylesheets/application.css | 15 ++ app/assets/stylesheets/athletes.scss | 3 + app/assets/stylesheets/coaches.scss | 3 + app/assets/stylesheets/leagues.scss | 3 + app/assets/stylesheets/managers.scss | 3 + app/assets/stylesheets/parents.scss | 3 + app/assets/stylesheets/people.scss | 3 + app/assets/stylesheets/scaffolds.scss | 89 +++++++++ app/assets/stylesheets/teams.scss | 3 + app/channels/application_cable/channel.rb | 4 + app/channels/application_cable/connection.rb | 4 + app/controllers/addresses_controller.rb | 74 ++++++++ app/controllers/application_controller.rb | 3 + app/controllers/athletes_controller.rb | 74 ++++++++ app/controllers/coaches_controller.rb | 74 ++++++++ app/controllers/concerns/.keep | 0 app/controllers/leagues_controller.rb | 74 ++++++++ app/controllers/managers_controller.rb | 74 ++++++++ app/controllers/parents_controller.rb | 74 ++++++++ app/controllers/people_controller.rb | 74 ++++++++ app/controllers/teams_controller.rb | 74 ++++++++ app/helpers/addresses_helper.rb | 2 + app/helpers/application_helper.rb | 2 + app/helpers/athletes_helper.rb | 2 + app/helpers/coaches_helper.rb | 2 + app/helpers/leagues_helper.rb | 2 + app/helpers/managers_helper.rb | 2 + app/helpers/parents_helper.rb | 2 + app/helpers/people_helper.rb | 2 + app/helpers/teams_helper.rb | 2 + app/jobs/application_job.rb | 2 + app/mailers/application_mailer.rb | 4 + app/models/address.rb | 4 + app/models/application_record.rb | 3 + app/models/athlete.rb | 4 + app/models/coach.rb | 4 + app/models/concerns/.keep | 0 app/models/league.rb | 6 + app/models/manager.rb | 4 + app/models/parent.rb | 3 + app/models/person.rb | 12 ++ app/models/team.rb | 7 + app/views/addresses/_address.json.jbuilder | 2 + app/views/addresses/_form.html.erb | 47 +++++ app/views/addresses/edit.html.erb | 6 + app/views/addresses/index.html.erb | 37 ++++ app/views/addresses/index.json.jbuilder | 1 + app/views/addresses/new.html.erb | 5 + app/views/addresses/show.html.erb | 34 ++++ app/views/addresses/show.json.jbuilder | 1 + app/views/athletes/_athlete.json.jbuilder | 2 + app/views/athletes/_form.html.erb | 32 ++++ app/views/athletes/edit.html.erb | 6 + app/views/athletes/index.html.erb | 31 ++++ app/views/athletes/index.json.jbuilder | 1 + app/views/athletes/new.html.erb | 5 + app/views/athletes/show.html.erb | 19 ++ app/views/athletes/show.json.jbuilder | 1 + app/views/coaches/_coach.json.jbuilder | 2 + app/views/coaches/_form.html.erb | 32 ++++ app/views/coaches/edit.html.erb | 6 + app/views/coaches/index.html.erb | 31 ++++ app/views/coaches/index.json.jbuilder | 1 + app/views/coaches/new.html.erb | 5 + app/views/coaches/show.html.erb | 19 ++ app/views/coaches/show.json.jbuilder | 1 + app/views/layouts/application.html.erb | 14 ++ app/views/layouts/mailer.html.erb | 13 ++ app/views/layouts/mailer.text.erb | 1 + app/views/leagues/_form.html.erb | 27 +++ app/views/leagues/_league.json.jbuilder | 2 + app/views/leagues/edit.html.erb | 6 + app/views/leagues/index.html.erb | 29 +++ app/views/leagues/index.json.jbuilder | 1 + app/views/leagues/new.html.erb | 5 + app/views/leagues/show.html.erb | 14 ++ app/views/leagues/show.json.jbuilder | 1 + app/views/managers/_form.html.erb | 27 +++ app/views/managers/_manager.json.jbuilder | 2 + app/views/managers/edit.html.erb | 6 + app/views/managers/index.html.erb | 29 +++ app/views/managers/index.json.jbuilder | 1 + app/views/managers/new.html.erb | 5 + app/views/managers/show.html.erb | 14 ++ app/views/managers/show.json.jbuilder | 1 + app/views/parents/_form.html.erb | 22 +++ app/views/parents/_parent.json.jbuilder | 2 + app/views/parents/edit.html.erb | 6 + app/views/parents/index.html.erb | 27 +++ app/views/parents/index.json.jbuilder | 1 + app/views/parents/new.html.erb | 5 + app/views/parents/show.html.erb | 9 + app/views/parents/show.json.jbuilder | 1 + app/views/people/_form.html.erb | 67 +++++++ app/views/people/_person.json.jbuilder | 2 + app/views/people/edit.html.erb | 6 + app/views/people/index.html.erb | 45 +++++ app/views/people/index.json.jbuilder | 1 + app/views/people/new.html.erb | 5 + app/views/people/show.html.erb | 54 ++++++ app/views/people/show.json.jbuilder | 1 + app/views/teams/_form.html.erb | 32 ++++ app/views/teams/_team.json.jbuilder | 2 + app/views/teams/edit.html.erb | 6 + app/views/teams/index.html.erb | 31 ++++ app/views/teams/index.json.jbuilder | 1 + app/views/teams/new.html.erb | 5 + app/views/teams/show.html.erb | 19 ++ app/views/teams/show.json.jbuilder | 1 + artifacts/organization.mwb | Bin 14787 -> 16053 bytes ass.mwb | Bin 16865 -> 0 bytes bin/bundle | 3 + bin/rails | 4 + bin/rake | 4 + bin/setup | 34 ++++ bin/update | 29 +++ config.ru | 5 + config/application.rb | 15 ++ config/boot.rb | 3 + config/cable.yml | 9 + config/database.yml | 25 +++ config/environment.rb | 5 + config/environments/development.rb | 54 ++++++ config/environments/production.rb | 86 +++++++++ config/environments/test.rb | 42 +++++ .../application_controller_renderer.rb | 6 + config/initializers/assets.rb | 11 ++ config/initializers/backtrace_silencers.rb | 7 + config/initializers/cookies_serializer.rb | 5 + .../initializers/filter_parameter_logging.rb | 4 + config/initializers/inflections.rb | 16 ++ config/initializers/mime_types.rb | 4 + config/initializers/new_framework_defaults.rb | 24 +++ config/initializers/session_store.rb | 3 + config/initializers/wrap_parameters.rb | 14 ++ config/locales/en.yml | 23 +++ config/puma.rb | 47 +++++ config/routes.rb | 11 ++ config/secrets.yml | 22 +++ db/migrate/20160927223712_create_people.rb | 18 ++ db/migrate/20160927223949_create_teams.rb | 11 ++ db/migrate/20160927224333_create_leagues.rb | 10 + db/migrate/20160927225120_create_athletes.rb | 11 ++ db/migrate/20160927225256_create_coaches.rb | 11 ++ db/migrate/20160927225328_create_managers.rb | 10 + db/migrate/20160927225409_create_parents.rb | 9 + db/migrate/20160927230344_create_addresses.rb | 14 ++ ...72926_create_join_table_people_adresses.rb | 8 + ...8072949_create_join_table_teams_leagues.rb | 8 + db/schema.rb | 102 ++++++++++ db/seeds.rb | 7 + lib/assets/.keep | 0 lib/tasks/.keep | 0 log/.keep | 0 public/404.html | 67 +++++++ public/422.html | 67 +++++++ public/500.html | 66 +++++++ public/apple-touch-icon-precomposed.png | 0 public/apple-touch-icon.png | 0 public/favicon.ico | 0 public/robots.txt | 5 + test/controllers/.keep | 0 test/controllers/addresses_controller_test.rb | 48 +++++ test/controllers/athletes_controller_test.rb | 48 +++++ test/controllers/coaches_controller_test.rb | 48 +++++ test/controllers/leagues_controller_test.rb | 48 +++++ test/controllers/managers_controller_test.rb | 48 +++++ test/controllers/parents_controller_test.rb | 48 +++++ test/controllers/people_controller_test.rb | 48 +++++ test/controllers/teams_controller_test.rb | 48 +++++ test/fixtures/.keep | 0 test/fixtures/addresses.yml | 17 ++ test/fixtures/athletes.yml | 11 ++ test/fixtures/coaches.yml | 11 ++ test/fixtures/files/.keep | 0 test/fixtures/leagues.yml | 9 + test/fixtures/managers.yml | 9 + test/fixtures/parents.yml | 7 + test/fixtures/people.yml | 25 +++ test/fixtures/teams.yml | 11 ++ test/helpers/.keep | 0 test/integration/.keep | 0 test/mailers/.keep | 0 test/models/.keep | 0 test/models/address_test.rb | 7 + test/models/athlete_test.rb | 7 + test/models/coach_test.rb | 7 + test/models/league_test.rb | 7 + test/models/manager_test.rb | 7 + test/models/parent_test.rb | 7 + test/models/person_test.rb | 7 + test/models/team_test.rb | 7 + test/test_helper.rb | 10 + tmp/.keep | 0 vendor/assets/javascripts/.keep | 0 vendor/assets/stylesheets/.keep | 0 214 files changed, 3470 insertions(+), 3 deletions(-) create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 Rakefile create mode 100644 app/assets/config/manifest.js create mode 100644 app/assets/images/.keep create mode 100644 app/assets/javascripts/addresses.coffee create mode 100644 app/assets/javascripts/application.js create mode 100644 app/assets/javascripts/athletes.coffee create mode 100644 app/assets/javascripts/cable.js create mode 100644 app/assets/javascripts/channels/.keep create mode 100644 app/assets/javascripts/coaches.coffee create mode 100644 app/assets/javascripts/leagues.coffee create mode 100644 app/assets/javascripts/managers.coffee create mode 100644 app/assets/javascripts/parents.coffee create mode 100644 app/assets/javascripts/people.coffee create mode 100644 app/assets/javascripts/teams.coffee create mode 100644 app/assets/stylesheets/addresses.scss create mode 100644 app/assets/stylesheets/application.css create mode 100644 app/assets/stylesheets/athletes.scss create mode 100644 app/assets/stylesheets/coaches.scss create mode 100644 app/assets/stylesheets/leagues.scss create mode 100644 app/assets/stylesheets/managers.scss create mode 100644 app/assets/stylesheets/parents.scss create mode 100644 app/assets/stylesheets/people.scss create mode 100644 app/assets/stylesheets/scaffolds.scss create mode 100644 app/assets/stylesheets/teams.scss create mode 100644 app/channels/application_cable/channel.rb create mode 100644 app/channels/application_cable/connection.rb create mode 100644 app/controllers/addresses_controller.rb create mode 100644 app/controllers/application_controller.rb create mode 100644 app/controllers/athletes_controller.rb create mode 100644 app/controllers/coaches_controller.rb create mode 100644 app/controllers/concerns/.keep create mode 100644 app/controllers/leagues_controller.rb create mode 100644 app/controllers/managers_controller.rb create mode 100644 app/controllers/parents_controller.rb create mode 100644 app/controllers/people_controller.rb create mode 100644 app/controllers/teams_controller.rb create mode 100644 app/helpers/addresses_helper.rb create mode 100644 app/helpers/application_helper.rb create mode 100644 app/helpers/athletes_helper.rb create mode 100644 app/helpers/coaches_helper.rb create mode 100644 app/helpers/leagues_helper.rb create mode 100644 app/helpers/managers_helper.rb create mode 100644 app/helpers/parents_helper.rb create mode 100644 app/helpers/people_helper.rb create mode 100644 app/helpers/teams_helper.rb create mode 100644 app/jobs/application_job.rb create mode 100644 app/mailers/application_mailer.rb create mode 100644 app/models/address.rb create mode 100644 app/models/application_record.rb create mode 100644 app/models/athlete.rb create mode 100644 app/models/coach.rb create mode 100644 app/models/concerns/.keep create mode 100644 app/models/league.rb create mode 100644 app/models/manager.rb create mode 100644 app/models/parent.rb create mode 100644 app/models/person.rb create mode 100644 app/models/team.rb create mode 100644 app/views/addresses/_address.json.jbuilder create mode 100644 app/views/addresses/_form.html.erb create mode 100644 app/views/addresses/edit.html.erb create mode 100644 app/views/addresses/index.html.erb create mode 100644 app/views/addresses/index.json.jbuilder create mode 100644 app/views/addresses/new.html.erb create mode 100644 app/views/addresses/show.html.erb create mode 100644 app/views/addresses/show.json.jbuilder create mode 100644 app/views/athletes/_athlete.json.jbuilder create mode 100644 app/views/athletes/_form.html.erb create mode 100644 app/views/athletes/edit.html.erb create mode 100644 app/views/athletes/index.html.erb create mode 100644 app/views/athletes/index.json.jbuilder create mode 100644 app/views/athletes/new.html.erb create mode 100644 app/views/athletes/show.html.erb create mode 100644 app/views/athletes/show.json.jbuilder create mode 100644 app/views/coaches/_coach.json.jbuilder create mode 100644 app/views/coaches/_form.html.erb create mode 100644 app/views/coaches/edit.html.erb create mode 100644 app/views/coaches/index.html.erb create mode 100644 app/views/coaches/index.json.jbuilder create mode 100644 app/views/coaches/new.html.erb create mode 100644 app/views/coaches/show.html.erb create mode 100644 app/views/coaches/show.json.jbuilder create mode 100644 app/views/layouts/application.html.erb create mode 100644 app/views/layouts/mailer.html.erb create mode 100644 app/views/layouts/mailer.text.erb create mode 100644 app/views/leagues/_form.html.erb create mode 100644 app/views/leagues/_league.json.jbuilder create mode 100644 app/views/leagues/edit.html.erb create mode 100644 app/views/leagues/index.html.erb create mode 100644 app/views/leagues/index.json.jbuilder create mode 100644 app/views/leagues/new.html.erb create mode 100644 app/views/leagues/show.html.erb create mode 100644 app/views/leagues/show.json.jbuilder create mode 100644 app/views/managers/_form.html.erb create mode 100644 app/views/managers/_manager.json.jbuilder create mode 100644 app/views/managers/edit.html.erb create mode 100644 app/views/managers/index.html.erb create mode 100644 app/views/managers/index.json.jbuilder create mode 100644 app/views/managers/new.html.erb create mode 100644 app/views/managers/show.html.erb create mode 100644 app/views/managers/show.json.jbuilder create mode 100644 app/views/parents/_form.html.erb create mode 100644 app/views/parents/_parent.json.jbuilder create mode 100644 app/views/parents/edit.html.erb create mode 100644 app/views/parents/index.html.erb create mode 100644 app/views/parents/index.json.jbuilder create mode 100644 app/views/parents/new.html.erb create mode 100644 app/views/parents/show.html.erb create mode 100644 app/views/parents/show.json.jbuilder create mode 100644 app/views/people/_form.html.erb create mode 100644 app/views/people/_person.json.jbuilder create mode 100644 app/views/people/edit.html.erb create mode 100644 app/views/people/index.html.erb create mode 100644 app/views/people/index.json.jbuilder create mode 100644 app/views/people/new.html.erb create mode 100644 app/views/people/show.html.erb create mode 100644 app/views/people/show.json.jbuilder create mode 100644 app/views/teams/_form.html.erb create mode 100644 app/views/teams/_team.json.jbuilder create mode 100644 app/views/teams/edit.html.erb create mode 100644 app/views/teams/index.html.erb create mode 100644 app/views/teams/index.json.jbuilder create mode 100644 app/views/teams/new.html.erb create mode 100644 app/views/teams/show.html.erb create mode 100644 app/views/teams/show.json.jbuilder delete mode 100644 ass.mwb create mode 100644 bin/bundle create mode 100644 bin/rails create mode 100644 bin/rake create mode 100644 bin/setup create mode 100644 bin/update create mode 100644 config.ru create mode 100644 config/application.rb create mode 100644 config/boot.rb create mode 100644 config/cable.yml create mode 100644 config/database.yml create mode 100644 config/environment.rb create mode 100644 config/environments/development.rb create mode 100644 config/environments/production.rb create mode 100644 config/environments/test.rb create mode 100644 config/initializers/application_controller_renderer.rb create mode 100644 config/initializers/assets.rb create mode 100644 config/initializers/backtrace_silencers.rb create mode 100644 config/initializers/cookies_serializer.rb create mode 100644 config/initializers/filter_parameter_logging.rb create mode 100644 config/initializers/inflections.rb create mode 100644 config/initializers/mime_types.rb create mode 100644 config/initializers/new_framework_defaults.rb create mode 100644 config/initializers/session_store.rb create mode 100644 config/initializers/wrap_parameters.rb create mode 100644 config/locales/en.yml create mode 100644 config/puma.rb create mode 100644 config/routes.rb create mode 100644 config/secrets.yml create mode 100644 db/migrate/20160927223712_create_people.rb create mode 100644 db/migrate/20160927223949_create_teams.rb create mode 100644 db/migrate/20160927224333_create_leagues.rb create mode 100644 db/migrate/20160927225120_create_athletes.rb create mode 100644 db/migrate/20160927225256_create_coaches.rb create mode 100644 db/migrate/20160927225328_create_managers.rb create mode 100644 db/migrate/20160927225409_create_parents.rb create mode 100644 db/migrate/20160927230344_create_addresses.rb create mode 100644 db/migrate/20160928072926_create_join_table_people_adresses.rb create mode 100644 db/migrate/20160928072949_create_join_table_teams_leagues.rb create mode 100644 db/schema.rb create mode 100644 db/seeds.rb create mode 100644 lib/assets/.keep create mode 100644 lib/tasks/.keep create mode 100644 log/.keep create mode 100644 public/404.html create mode 100644 public/422.html create mode 100644 public/500.html create mode 100644 public/apple-touch-icon-precomposed.png create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon.ico create mode 100644 public/robots.txt create mode 100644 test/controllers/.keep create mode 100644 test/controllers/addresses_controller_test.rb create mode 100644 test/controllers/athletes_controller_test.rb create mode 100644 test/controllers/coaches_controller_test.rb create mode 100644 test/controllers/leagues_controller_test.rb create mode 100644 test/controllers/managers_controller_test.rb create mode 100644 test/controllers/parents_controller_test.rb create mode 100644 test/controllers/people_controller_test.rb create mode 100644 test/controllers/teams_controller_test.rb create mode 100644 test/fixtures/.keep create mode 100644 test/fixtures/addresses.yml create mode 100644 test/fixtures/athletes.yml create mode 100644 test/fixtures/coaches.yml create mode 100644 test/fixtures/files/.keep create mode 100644 test/fixtures/leagues.yml create mode 100644 test/fixtures/managers.yml create mode 100644 test/fixtures/parents.yml create mode 100644 test/fixtures/people.yml create mode 100644 test/fixtures/teams.yml create mode 100644 test/helpers/.keep create mode 100644 test/integration/.keep create mode 100644 test/mailers/.keep create mode 100644 test/models/.keep create mode 100644 test/models/address_test.rb create mode 100644 test/models/athlete_test.rb create mode 100644 test/models/coach_test.rb create mode 100644 test/models/league_test.rb create mode 100644 test/models/manager_test.rb create mode 100644 test/models/parent_test.rb create mode 100644 test/models/person_test.rb create mode 100644 test/models/team_test.rb create mode 100644 test/test_helper.rb create mode 100644 tmp/.keep create mode 100644 vendor/assets/javascripts/.keep create mode 100644 vendor/assets/stylesheets/.keep diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..1214fa7 --- /dev/null +++ b/Gemfile @@ -0,0 +1,44 @@ +source 'https://rubygems.org' + + +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '~> 5.0.0', '>= 5.0.0.1' +# Use sqlite3 as the database for Active Record +gem 'sqlite3' +# Use Puma as the app server +gem 'puma', '~> 3.0' +# Use SCSS for stylesheets +gem 'sass-rails', '~> 5.0' +# Use Uglifier as compressor for JavaScript assets +gem 'uglifier', '>= 1.3.0' +# Use CoffeeScript for .coffee assets and views +gem 'coffee-rails', '~> 4.2' +# See https://github.com/rails/execjs#readme for more supported runtimes +gem 'therubyracer', platforms: :ruby + +# Use jquery as the JavaScript library +gem 'jquery-rails' +# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks +gem 'turbolinks', '~> 5' +# 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', '~> 3.0' +# Use ActiveModel has_secure_password +# gem 'bcrypt', '~> 3.1.7' + +# Use Capistrano for deployment +# gem 'capistrano-rails', group: :development + +group :development, :test do + # Call 'byebug' anywhere in the code to stop execution and get a debugger console + gem 'byebug', platform: :mri +end + +group :development do + # Access an IRB console on exception pages or by using <%= console %> anywhere in the code. + gem 'web-console' +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..89df73e --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,174 @@ +GEM + remote: https://rubygems.org/ + specs: + actioncable (5.0.0.1) + actionpack (= 5.0.0.1) + nio4r (~> 1.2) + websocket-driver (~> 0.6.1) + actionmailer (5.0.0.1) + actionpack (= 5.0.0.1) + actionview (= 5.0.0.1) + activejob (= 5.0.0.1) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (5.0.0.1) + actionview (= 5.0.0.1) + activesupport (= 5.0.0.1) + rack (~> 2.0) + rack-test (~> 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.0.0.1) + activesupport (= 5.0.0.1) + builder (~> 3.1) + erubis (~> 2.7.0) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + activejob (5.0.0.1) + activesupport (= 5.0.0.1) + globalid (>= 0.3.6) + activemodel (5.0.0.1) + activesupport (= 5.0.0.1) + activerecord (5.0.0.1) + activemodel (= 5.0.0.1) + activesupport (= 5.0.0.1) + arel (~> 7.0) + activesupport (5.0.0.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (~> 0.7) + minitest (~> 5.1) + tzinfo (~> 1.1) + arel (7.1.2) + builder (3.2.2) + byebug (9.0.5) + coffee-rails (4.2.1) + coffee-script (>= 2.2.0) + railties (>= 4.0.0, < 5.2.x) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.10.0) + concurrent-ruby (1.0.2) + debug_inspector (0.0.2) + erubis (2.7.0) + execjs (2.7.0) + globalid (0.3.7) + activesupport (>= 4.1.0) + i18n (0.7.0) + jbuilder (2.6.0) + activesupport (>= 3.0.0, < 5.1) + multi_json (~> 1.2) + jquery-rails (4.2.1) + rails-dom-testing (>= 1, < 3) + railties (>= 4.2.0) + thor (>= 0.14, < 2.0) + libv8 (3.16.14.15) + loofah (2.0.3) + nokogiri (>= 1.5.9) + mail (2.6.4) + mime-types (>= 1.16, < 4) + method_source (0.8.2) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) + mini_portile2 (2.1.0) + minitest (5.9.1) + multi_json (1.12.1) + nio4r (1.2.1) + nokogiri (1.6.8) + mini_portile2 (~> 2.1.0) + pkg-config (~> 1.1.7) + nokogiri (1.6.8-x86-mingw32) + mini_portile2 (~> 2.1.0) + pkg-config (~> 1.1.7) + pkg-config (1.1.7) + puma (3.6.0) + rack (2.0.1) + rack-test (0.6.3) + rack (>= 1.0) + rails (5.0.0.1) + actioncable (= 5.0.0.1) + actionmailer (= 5.0.0.1) + actionpack (= 5.0.0.1) + actionview (= 5.0.0.1) + activejob (= 5.0.0.1) + activemodel (= 5.0.0.1) + activerecord (= 5.0.0.1) + activesupport (= 5.0.0.1) + bundler (>= 1.3.0, < 2.0) + railties (= 5.0.0.1) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.1) + activesupport (>= 4.2.0, < 6.0) + nokogiri (~> 1.6.0) + rails-html-sanitizer (1.0.3) + loofah (~> 2.0) + railties (5.0.0.1) + actionpack (= 5.0.0.1) + activesupport (= 5.0.0.1) + method_source + rake (>= 0.8.7) + thor (>= 0.18.1, < 2.0) + rake (11.3.0) + ref (2.0.0) + sass (3.4.22) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) + sass (~> 3.1) + sprockets (>= 2.8, < 4.0) + sprockets-rails (>= 2.0, < 4.0) + tilt (>= 1.1, < 3) + sprockets (3.7.0) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.2.0) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + sqlite3 (1.3.11) + sqlite3 (1.3.11-x86-mingw32) + therubyracer (0.12.2) + libv8 (~> 3.16.14.0) + ref + thor (0.19.1) + thread_safe (0.3.5) + tilt (2.0.5) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.0) + tzinfo (1.2.2) + thread_safe (~> 0.1) + tzinfo-data (1.2016.6) + tzinfo (>= 1.0.0) + uglifier (3.0.2) + execjs (>= 0.3.0, < 3) + web-console (3.3.1) + actionview (>= 5.0) + activemodel (>= 5.0) + debug_inspector + railties (>= 5.0) + websocket-driver (0.6.4) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.2) + +PLATFORMS + ruby + x86-mingw32 + +DEPENDENCIES + byebug + coffee-rails (~> 4.2) + jbuilder (~> 2.5) + jquery-rails + puma (~> 3.0) + rails (~> 5.0.0, >= 5.0.0.1) + sass-rails (~> 5.0) + sqlite3 + therubyracer + turbolinks (~> 5) + tzinfo-data + uglifier (>= 1.3.0) + web-console + +BUNDLED WITH + 1.13.1 diff --git a/README.md b/README.md index d573a30..7db80e4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,24 @@ -# Team Manager +# README -This application is the Team Manager application for the Web Application -Architectures class. +This README would normally document whatever steps are necessary to get the +application up and running. + +Things you may want to cover: + +* Ruby version + +* System dependencies + +* Configuration + +* Database creation + +* Database initialization + +* How to run the test suite + +* Services (job queues, cache servers, search engines, etc.) + +* Deployment instructions + +* ... diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..e85f913 --- /dev/null +++ b/Rakefile @@ -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 diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js new file mode 100644 index 0000000..b16e53d --- /dev/null +++ b/app/assets/config/manifest.js @@ -0,0 +1,3 @@ +//= link_tree ../images +//= link_directory ../javascripts .js +//= link_directory ../stylesheets .css diff --git a/app/assets/images/.keep b/app/assets/images/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/assets/javascripts/addresses.coffee b/app/assets/javascripts/addresses.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/app/assets/javascripts/addresses.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js new file mode 100644 index 0000000..b12018d --- /dev/null +++ b/app/assets/javascripts/application.js @@ -0,0 +1,16 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, +// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. JavaScript code in this file should be added after the last require_* statement. +// +// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require jquery +//= require jquery_ujs +//= require turbolinks +//= require_tree . diff --git a/app/assets/javascripts/athletes.coffee b/app/assets/javascripts/athletes.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/app/assets/javascripts/athletes.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/cable.js b/app/assets/javascripts/cable.js new file mode 100644 index 0000000..71ee1e6 --- /dev/null +++ b/app/assets/javascripts/cable.js @@ -0,0 +1,13 @@ +// Action Cable provides the framework to deal with WebSockets in Rails. +// You can generate new channels where WebSocket features live using the rails generate channel command. +// +//= require action_cable +//= require_self +//= require_tree ./channels + +(function() { + this.App || (this.App = {}); + + App.cable = ActionCable.createConsumer(); + +}).call(this); diff --git a/app/assets/javascripts/channels/.keep b/app/assets/javascripts/channels/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/assets/javascripts/coaches.coffee b/app/assets/javascripts/coaches.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/app/assets/javascripts/coaches.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/leagues.coffee b/app/assets/javascripts/leagues.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/app/assets/javascripts/leagues.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/managers.coffee b/app/assets/javascripts/managers.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/app/assets/javascripts/managers.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/parents.coffee b/app/assets/javascripts/parents.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/app/assets/javascripts/parents.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/people.coffee b/app/assets/javascripts/people.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/app/assets/javascripts/people.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/teams.coffee b/app/assets/javascripts/teams.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/app/assets/javascripts/teams.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/addresses.scss b/app/assets/stylesheets/addresses.scss new file mode 100644 index 0000000..2d3819e --- /dev/null +++ b/app/assets/stylesheets/addresses.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the addresses controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css new file mode 100644 index 0000000..0ebd7fe --- /dev/null +++ b/app/assets/stylesheets/application.css @@ -0,0 +1,15 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, + * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS + * files in this directory. Styles in this file should be added after the last require_* statement. + * It is generally better to create a new file per style scope. + * + *= require_tree . + *= require_self + */ diff --git a/app/assets/stylesheets/athletes.scss b/app/assets/stylesheets/athletes.scss new file mode 100644 index 0000000..9f38cb8 --- /dev/null +++ b/app/assets/stylesheets/athletes.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the athletes controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/coaches.scss b/app/assets/stylesheets/coaches.scss new file mode 100644 index 0000000..7d97a41 --- /dev/null +++ b/app/assets/stylesheets/coaches.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the coaches controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/leagues.scss b/app/assets/stylesheets/leagues.scss new file mode 100644 index 0000000..4d3a3d8 --- /dev/null +++ b/app/assets/stylesheets/leagues.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the leagues controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/managers.scss b/app/assets/stylesheets/managers.scss new file mode 100644 index 0000000..ebf5d38 --- /dev/null +++ b/app/assets/stylesheets/managers.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the managers controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/parents.scss b/app/assets/stylesheets/parents.scss new file mode 100644 index 0000000..8caaba7 --- /dev/null +++ b/app/assets/stylesheets/parents.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the parents controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/people.scss b/app/assets/stylesheets/people.scss new file mode 100644 index 0000000..e6ee13d --- /dev/null +++ b/app/assets/stylesheets/people.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the people controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/scaffolds.scss b/app/assets/stylesheets/scaffolds.scss new file mode 100644 index 0000000..4ce4266 --- /dev/null +++ b/app/assets/stylesheets/scaffolds.scss @@ -0,0 +1,89 @@ +body { + background-color: #fff; + color: #333; + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; + margin: 33px; +} + +p, ol, ul, td { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; + margin: 33px; +} + +pre { + background-color: #eee; + padding: 10px; + font-size: 11px; +} + +a { + color: #000; + + &:visited { + color: #666; + } + + &:hover { + color: #fff; + background-color: #000; + } +} + +th { + padding-bottom: 5px; +} + +td { + padding-bottom: 7px; + padding-left: 5px; + padding-right: 5px; +} + +div { + &.field, &.actions { + margin-bottom: 10px; + } +} + +#notice { + color: green; +} + +.field_with_errors { + padding: 2px; + background-color: red; + display: table; +} + +#error_explanation { + width: 450px; + border: 2px solid red; + padding: 7px; + padding-bottom: 0; + margin-bottom: 20px; + background-color: #f0f0f0; + + h2 { + text-align: left; + font-weight: bold; + padding: 5px 5px 5px 15px; + font-size: 12px; + margin: -7px; + margin-bottom: 0; + background-color: #c00; + color: #fff; + } + + ul li { + font-size: 12px; + list-style: square; + } +} + +label { + display: block; +} diff --git a/app/assets/stylesheets/teams.scss b/app/assets/stylesheets/teams.scss new file mode 100644 index 0000000..320d00d --- /dev/null +++ b/app/assets/stylesheets/teams.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the teams controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/channels/application_cable/channel.rb b/app/channels/application_cable/channel.rb new file mode 100644 index 0000000..d672697 --- /dev/null +++ b/app/channels/application_cable/channel.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Channel < ActionCable::Channel::Base + end +end diff --git a/app/channels/application_cable/connection.rb b/app/channels/application_cable/connection.rb new file mode 100644 index 0000000..0ff5442 --- /dev/null +++ b/app/channels/application_cable/connection.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Connection < ActionCable::Connection::Base + end +end diff --git a/app/controllers/addresses_controller.rb b/app/controllers/addresses_controller.rb new file mode 100644 index 0000000..2fe9b78 --- /dev/null +++ b/app/controllers/addresses_controller.rb @@ -0,0 +1,74 @@ +class AddressesController < ApplicationController + before_action :set_address, only: [:show, :edit, :update, :destroy] + + # GET /addresses + # GET /addresses.json + def index + @addresses = Address.all + end + + # GET /addresses/1 + # GET /addresses/1.json + def show + end + + # GET /addresses/new + def new + @address = Address.new + end + + # GET /addresses/1/edit + def edit + end + + # POST /addresses + # POST /addresses.json + def create + @address = Address.new(address_params) + + respond_to do |format| + if @address.save + format.html { redirect_to @address, notice: 'Address was successfully created.' } + format.json { render :show, status: :created, location: @address } + else + format.html { render :new } + format.json { render json: @address.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /addresses/1 + # PATCH/PUT /addresses/1.json + def update + respond_to do |format| + if @address.update(address_params) + format.html { redirect_to @address, notice: 'Address was successfully updated.' } + format.json { render :show, status: :ok, location: @address } + else + format.html { render :edit } + format.json { render json: @address.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /addresses/1 + # DELETE /addresses/1.json + def destroy + @address.destroy + respond_to do |format| + format.html { redirect_to addresses_url, notice: 'Address was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_address + @address = Address.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def address_params + params.require(:address).permit(:addressline1, :addressline2, :city, :state, :zipcode, :country) + end +end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb new file mode 100644 index 0000000..1c07694 --- /dev/null +++ b/app/controllers/application_controller.rb @@ -0,0 +1,3 @@ +class ApplicationController < ActionController::Base + protect_from_forgery with: :exception +end diff --git a/app/controllers/athletes_controller.rb b/app/controllers/athletes_controller.rb new file mode 100644 index 0000000..340dbe0 --- /dev/null +++ b/app/controllers/athletes_controller.rb @@ -0,0 +1,74 @@ +class AthletesController < ApplicationController + before_action :set_athlete, only: [:show, :edit, :update, :destroy] + + # GET /athletes + # GET /athletes.json + def index + @athletes = Athlete.all + end + + # GET /athletes/1 + # GET /athletes/1.json + def show + end + + # GET /athletes/new + def new + @athlete = Athlete.new + end + + # GET /athletes/1/edit + def edit + end + + # POST /athletes + # POST /athletes.json + def create + @athlete = Athlete.new(athlete_params) + + respond_to do |format| + if @athlete.save + format.html { redirect_to @athlete, notice: 'Athlete was successfully created.' } + format.json { render :show, status: :created, location: @athlete } + else + format.html { render :new } + format.json { render json: @athlete.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /athletes/1 + # PATCH/PUT /athletes/1.json + def update + respond_to do |format| + if @athlete.update(athlete_params) + format.html { redirect_to @athlete, notice: 'Athlete was successfully updated.' } + format.json { render :show, status: :ok, location: @athlete } + else + format.html { render :edit } + format.json { render json: @athlete.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /athletes/1 + # DELETE /athletes/1.json + def destroy + @athlete.destroy + respond_to do |format| + format.html { redirect_to athletes_url, notice: 'Athlete was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_athlete + @athlete = Athlete.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def athlete_params + params.require(:athlete).permit(:roster, :person_id, :leagueteam_id) + end +end diff --git a/app/controllers/coaches_controller.rb b/app/controllers/coaches_controller.rb new file mode 100644 index 0000000..55fc426 --- /dev/null +++ b/app/controllers/coaches_controller.rb @@ -0,0 +1,74 @@ +class CoachesController < ApplicationController + before_action :set_coach, only: [:show, :edit, :update, :destroy] + + # GET /coaches + # GET /coaches.json + def index + @coaches = Coach.all + end + + # GET /coaches/1 + # GET /coaches/1.json + def show + end + + # GET /coaches/new + def new + @coach = Coach.new + end + + # GET /coaches/1/edit + def edit + end + + # POST /coaches + # POST /coaches.json + def create + @coach = Coach.new(coach_params) + + respond_to do |format| + if @coach.save + format.html { redirect_to @coach, notice: 'Coach was successfully created.' } + format.json { render :show, status: :created, location: @coach } + else + format.html { render :new } + format.json { render json: @coach.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /coaches/1 + # PATCH/PUT /coaches/1.json + def update + respond_to do |format| + if @coach.update(coach_params) + format.html { redirect_to @coach, notice: 'Coach was successfully updated.' } + format.json { render :show, status: :ok, location: @coach } + else + format.html { render :edit } + format.json { render json: @coach.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /coaches/1 + # DELETE /coaches/1.json + def destroy + @coach.destroy + respond_to do |format| + format.html { redirect_to coaches_url, notice: 'Coach was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_coach + @coach = Coach.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def coach_params + params.require(:coach).permit(:license, :person_id, :leagueteam_id) + end +end diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/controllers/leagues_controller.rb b/app/controllers/leagues_controller.rb new file mode 100644 index 0000000..5832454 --- /dev/null +++ b/app/controllers/leagues_controller.rb @@ -0,0 +1,74 @@ +class LeaguesController < ApplicationController + before_action :set_league, only: [:show, :edit, :update, :destroy] + + # GET /leagues + # GET /leagues.json + def index + @leagues = League.all + end + + # GET /leagues/1 + # GET /leagues/1.json + def show + end + + # GET /leagues/new + def new + @league = League.new + end + + # GET /leagues/1/edit + def edit + end + + # POST /leagues + # POST /leagues.json + def create + @league = League.new(league_params) + + respond_to do |format| + if @league.save + format.html { redirect_to @league, notice: 'League was successfully created.' } + format.json { render :show, status: :created, location: @league } + else + format.html { render :new } + format.json { render json: @league.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /leagues/1 + # PATCH/PUT /leagues/1.json + def update + respond_to do |format| + if @league.update(league_params) + format.html { redirect_to @league, notice: 'League was successfully updated.' } + format.json { render :show, status: :ok, location: @league } + else + format.html { render :edit } + format.json { render json: @league.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /leagues/1 + # DELETE /leagues/1.json + def destroy + @league.destroy + respond_to do |format| + format.html { redirect_to leagues_url, notice: 'League was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_league + @league = League.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def league_params + params.require(:league).permit(:leaguename, :club) + end +end diff --git a/app/controllers/managers_controller.rb b/app/controllers/managers_controller.rb new file mode 100644 index 0000000..d60719b --- /dev/null +++ b/app/controllers/managers_controller.rb @@ -0,0 +1,74 @@ +class ManagersController < ApplicationController + before_action :set_manager, only: [:show, :edit, :update, :destroy] + + # GET /managers + # GET /managers.json + def index + @managers = Manager.all + end + + # GET /managers/1 + # GET /managers/1.json + def show + end + + # GET /managers/new + def new + @manager = Manager.new + end + + # GET /managers/1/edit + def edit + end + + # POST /managers + # POST /managers.json + def create + @manager = Manager.new(manager_params) + + respond_to do |format| + if @manager.save + format.html { redirect_to @manager, notice: 'Manager was successfully created.' } + format.json { render :show, status: :created, location: @manager } + else + format.html { render :new } + format.json { render json: @manager.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /managers/1 + # PATCH/PUT /managers/1.json + def update + respond_to do |format| + if @manager.update(manager_params) + format.html { redirect_to @manager, notice: 'Manager was successfully updated.' } + format.json { render :show, status: :ok, location: @manager } + else + format.html { render :edit } + format.json { render json: @manager.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /managers/1 + # DELETE /managers/1.json + def destroy + @manager.destroy + respond_to do |format| + format.html { redirect_to managers_url, notice: 'Manager was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_manager + @manager = Manager.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def manager_params + params.require(:manager).permit(:person_id, :leagueteam_id) + end +end diff --git a/app/controllers/parents_controller.rb b/app/controllers/parents_controller.rb new file mode 100644 index 0000000..270a016 --- /dev/null +++ b/app/controllers/parents_controller.rb @@ -0,0 +1,74 @@ +class ParentsController < ApplicationController + before_action :set_parent, only: [:show, :edit, :update, :destroy] + + # GET /parents + # GET /parents.json + def index + @parents = Parent.all + end + + # GET /parents/1 + # GET /parents/1.json + def show + end + + # GET /parents/new + def new + @parent = Parent.new + end + + # GET /parents/1/edit + def edit + end + + # POST /parents + # POST /parents.json + def create + @parent = Parent.new(parent_params) + + respond_to do |format| + if @parent.save + format.html { redirect_to @parent, notice: 'Parent was successfully created.' } + format.json { render :show, status: :created, location: @parent } + else + format.html { render :new } + format.json { render json: @parent.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /parents/1 + # PATCH/PUT /parents/1.json + def update + respond_to do |format| + if @parent.update(parent_params) + format.html { redirect_to @parent, notice: 'Parent was successfully updated.' } + format.json { render :show, status: :ok, location: @parent } + else + format.html { render :edit } + format.json { render json: @parent.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /parents/1 + # DELETE /parents/1.json + def destroy + @parent.destroy + respond_to do |format| + format.html { redirect_to parents_url, notice: 'Parent was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_parent + @parent = Parent.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def parent_params + params.require(:parent).permit(:person_id) + end +end diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb new file mode 100644 index 0000000..859629d --- /dev/null +++ b/app/controllers/people_controller.rb @@ -0,0 +1,74 @@ +class PeopleController < ApplicationController + before_action :set_person, only: [:show, :edit, :update, :destroy] + + # GET /people + # GET /people.json + def index + @people = Person.all + end + + # GET /people/1 + # GET /people/1.json + def show + end + + # GET /people/new + def new + @person = Person.new + end + + # GET /people/1/edit + def edit + end + + # POST /people + # POST /people.json + def create + @person = Person.new(person_params) + + respond_to do |format| + if @person.save + format.html { redirect_to @person, notice: 'Person was successfully created.' } + format.json { render :show, status: :created, location: @person } + else + format.html { render :new } + format.json { render json: @person.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /people/1 + # PATCH/PUT /people/1.json + def update + respond_to do |format| + if @person.update(person_params) + format.html { redirect_to @person, notice: 'Person was successfully updated.' } + format.json { render :show, status: :ok, location: @person } + else + format.html { render :edit } + format.json { render json: @person.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /people/1 + # DELETE /people/1.json + def destroy + @person.destroy + respond_to do |format| + format.html { redirect_to people_url, notice: 'Person was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_person + @person = Person.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def person_params + params.require(:person).permit(:firstname, :lastname, :email, :phone1, :phone2, :dateofbirth, :gender, :height, :weight, :jerseynum) + end +end diff --git a/app/controllers/teams_controller.rb b/app/controllers/teams_controller.rb new file mode 100644 index 0000000..bc3f0ad --- /dev/null +++ b/app/controllers/teams_controller.rb @@ -0,0 +1,74 @@ +class TeamsController < ApplicationController + before_action :set_team, only: [:show, :edit, :update, :destroy] + + # GET /teams + # GET /teams.json + def index + @teams = Team.all + end + + # GET /teams/1 + # GET /teams/1.json + def show + end + + # GET /teams/new + def new + @team = Team.new + end + + # GET /teams/1/edit + def edit + end + + # POST /teams + # POST /teams.json + def create + @team = Team.new(team_params) + + respond_to do |format| + if @team.save + format.html { redirect_to @team, notice: 'Team was successfully created.' } + format.json { render :show, status: :created, location: @team } + else + format.html { render :new } + format.json { render json: @team.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /teams/1 + # PATCH/PUT /teams/1.json + def update + respond_to do |format| + if @team.update(team_params) + format.html { redirect_to @team, notice: 'Team was successfully updated.' } + format.json { render :show, status: :ok, location: @team } + else + format.html { render :edit } + format.json { render json: @team.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /teams/1 + # DELETE /teams/1.json + def destroy + @team.destroy + respond_to do |format| + format.html { redirect_to teams_url, notice: 'Team was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_team + @team = Team.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def team_params + params.require(:team).permit(:teamname, :teamtype, :agegroup) + end +end diff --git a/app/helpers/addresses_helper.rb b/app/helpers/addresses_helper.rb new file mode 100644 index 0000000..5f4dc13 --- /dev/null +++ b/app/helpers/addresses_helper.rb @@ -0,0 +1,2 @@ +module AddressesHelper +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb new file mode 100644 index 0000000..de6be79 --- /dev/null +++ b/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/app/helpers/athletes_helper.rb b/app/helpers/athletes_helper.rb new file mode 100644 index 0000000..2bc6949 --- /dev/null +++ b/app/helpers/athletes_helper.rb @@ -0,0 +1,2 @@ +module AthletesHelper +end diff --git a/app/helpers/coaches_helper.rb b/app/helpers/coaches_helper.rb new file mode 100644 index 0000000..4a533de --- /dev/null +++ b/app/helpers/coaches_helper.rb @@ -0,0 +1,2 @@ +module CoachesHelper +end diff --git a/app/helpers/leagues_helper.rb b/app/helpers/leagues_helper.rb new file mode 100644 index 0000000..cf00be6 --- /dev/null +++ b/app/helpers/leagues_helper.rb @@ -0,0 +1,2 @@ +module LeaguesHelper +end diff --git a/app/helpers/managers_helper.rb b/app/helpers/managers_helper.rb new file mode 100644 index 0000000..bc2ab9a --- /dev/null +++ b/app/helpers/managers_helper.rb @@ -0,0 +1,2 @@ +module ManagersHelper +end diff --git a/app/helpers/parents_helper.rb b/app/helpers/parents_helper.rb new file mode 100644 index 0000000..2b0361c --- /dev/null +++ b/app/helpers/parents_helper.rb @@ -0,0 +1,2 @@ +module ParentsHelper +end diff --git a/app/helpers/people_helper.rb b/app/helpers/people_helper.rb new file mode 100644 index 0000000..b682fbf --- /dev/null +++ b/app/helpers/people_helper.rb @@ -0,0 +1,2 @@ +module PeopleHelper +end diff --git a/app/helpers/teams_helper.rb b/app/helpers/teams_helper.rb new file mode 100644 index 0000000..5fb41eb --- /dev/null +++ b/app/helpers/teams_helper.rb @@ -0,0 +1,2 @@ +module TeamsHelper +end diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb new file mode 100644 index 0000000..a009ace --- /dev/null +++ b/app/jobs/application_job.rb @@ -0,0 +1,2 @@ +class ApplicationJob < ActiveJob::Base +end diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb new file mode 100644 index 0000000..286b223 --- /dev/null +++ b/app/mailers/application_mailer.rb @@ -0,0 +1,4 @@ +class ApplicationMailer < ActionMailer::Base + default from: 'from@example.com' + layout 'mailer' +end diff --git a/app/models/address.rb b/app/models/address.rb new file mode 100644 index 0000000..1b75e10 --- /dev/null +++ b/app/models/address.rb @@ -0,0 +1,4 @@ +class Address < ApplicationRecord + has_and_belongs_to_many :person + validates_presence_of :addressline1, :city, :state, :zipcode, :country +end diff --git a/app/models/application_record.rb b/app/models/application_record.rb new file mode 100644 index 0000000..10a4cba --- /dev/null +++ b/app/models/application_record.rb @@ -0,0 +1,3 @@ +class ApplicationRecord < ActiveRecord::Base + self.abstract_class = true +end diff --git a/app/models/athlete.rb b/app/models/athlete.rb new file mode 100644 index 0000000..207e2ec --- /dev/null +++ b/app/models/athlete.rb @@ -0,0 +1,4 @@ +class Athlete < ApplicationRecord + belongs_to :person + belongs_to :leagueteam +end diff --git a/app/models/coach.rb b/app/models/coach.rb new file mode 100644 index 0000000..14427de --- /dev/null +++ b/app/models/coach.rb @@ -0,0 +1,4 @@ +class Coach < ApplicationRecord + belongs_to :person + belongs_to :leagueteam +end diff --git a/app/models/concerns/.keep b/app/models/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/models/league.rb b/app/models/league.rb new file mode 100644 index 0000000..3c59323 --- /dev/null +++ b/app/models/league.rb @@ -0,0 +1,6 @@ +class League < ApplicationRecord + has_and_belongs_to_many :teams + has_many :athletes + has_many :coaches + has_many :managers +end diff --git a/app/models/manager.rb b/app/models/manager.rb new file mode 100644 index 0000000..330b245 --- /dev/null +++ b/app/models/manager.rb @@ -0,0 +1,4 @@ +class Manager < ApplicationRecord + belongs_to :person + belongs_to :leagueteam +end diff --git a/app/models/parent.rb b/app/models/parent.rb new file mode 100644 index 0000000..afe3133 --- /dev/null +++ b/app/models/parent.rb @@ -0,0 +1,3 @@ +class Parent < ApplicationRecord + belongs_to :person +end diff --git a/app/models/person.rb b/app/models/person.rb new file mode 100644 index 0000000..c6e3d3b --- /dev/null +++ b/app/models/person.rb @@ -0,0 +1,12 @@ +class Person < ApplicationRecord + has_many :parents, dependent: :destroy + has_many :athletes, dependent: :destroy + has_many :coaches, dependent: :destroy + has_many :managers, dependent: :destroy + has_and_belongs_to_many :addresses, dependent: :destroy + validates_presence_of :firstname + validates_presence_of :lastname + validates_presence_of :email + validates_presence_of :phone1 + validates_presence_of :gender +end diff --git a/app/models/team.rb b/app/models/team.rb new file mode 100644 index 0000000..dce2384 --- /dev/null +++ b/app/models/team.rb @@ -0,0 +1,7 @@ +class Team < ApplicationRecord + has_and_belongs_to_many :leagues + has_many :athletes + has_many :coaches + has_many :managers + validates_presence_of :teamname, :teamtype, :agegroup +end diff --git a/app/views/addresses/_address.json.jbuilder b/app/views/addresses/_address.json.jbuilder new file mode 100644 index 0000000..bd53e69 --- /dev/null +++ b/app/views/addresses/_address.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! address, :id, :addressline1, :addressline2, :city, :state, :zipcode, :country, :created_at, :updated_at +json.url address_url(address, format: :json) \ No newline at end of file diff --git a/app/views/addresses/_form.html.erb b/app/views/addresses/_form.html.erb new file mode 100644 index 0000000..d6bfcd1 --- /dev/null +++ b/app/views/addresses/_form.html.erb @@ -0,0 +1,47 @@ +<%= form_for(address) do |f| %> + <% if address.errors.any? %> +
+

<%= pluralize(address.errors.count, "error") %> prohibited this address from being saved:

+ +
    + <% address.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+ <% end %> + +
+ <%= f.label :addressline1 %> + <%= f.text_field :addressline1 %> +
+ +
+ <%= f.label :addressline2 %> + <%= f.text_field :addressline2 %> +
+ +
+ <%= f.label :city %> + <%= f.text_field :city %> +
+ +
+ <%= f.label :state %> + <%= f.text_field :state %> +
+ +
+ <%= f.label :zipcode %> + <%= f.number_field :zipcode %> +
+ +
+ <%= f.label :country %> + <%= f.text_field :country %> +
+ +
+ <%= f.submit %> +
+<% end %> diff --git a/app/views/addresses/edit.html.erb b/app/views/addresses/edit.html.erb new file mode 100644 index 0000000..7122100 --- /dev/null +++ b/app/views/addresses/edit.html.erb @@ -0,0 +1,6 @@ +

Editing Address

+ +<%= render 'form', address: @address %> + +<%= link_to 'Show', @address %> | +<%= link_to 'Back', addresses_path %> diff --git a/app/views/addresses/index.html.erb b/app/views/addresses/index.html.erb new file mode 100644 index 0000000..2bc68d5 --- /dev/null +++ b/app/views/addresses/index.html.erb @@ -0,0 +1,37 @@ +

<%= notice %>

+ +

Addresses

+ + + + + + + + + + + + + + + + <% @addresses.each do |address| %> + + + + + + + + + + + + <% end %> + +
Addressline1Addressline2CityStateZipcodeCountry
<%= address.addressline1 %><%= address.addressline2 %><%= address.city %><%= address.state %><%= address.zipcode %><%= address.country %><%= link_to 'Show', address %><%= link_to 'Edit', edit_address_path(address) %><%= link_to 'Destroy', address, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New Address', new_address_path %> diff --git a/app/views/addresses/index.json.jbuilder b/app/views/addresses/index.json.jbuilder new file mode 100644 index 0000000..8f31c14 --- /dev/null +++ b/app/views/addresses/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @addresses, partial: 'addresses/address', as: :address \ No newline at end of file diff --git a/app/views/addresses/new.html.erb b/app/views/addresses/new.html.erb new file mode 100644 index 0000000..0ed80df --- /dev/null +++ b/app/views/addresses/new.html.erb @@ -0,0 +1,5 @@ +

New Address

+ +<%= render 'form', address: @address %> + +<%= link_to 'Back', addresses_path %> diff --git a/app/views/addresses/show.html.erb b/app/views/addresses/show.html.erb new file mode 100644 index 0000000..0f2cfc9 --- /dev/null +++ b/app/views/addresses/show.html.erb @@ -0,0 +1,34 @@ +

<%= notice %>

+ +

+ Addressline1: + <%= @address.addressline1 %> +

+ +

+ Addressline2: + <%= @address.addressline2 %> +

+ +

+ City: + <%= @address.city %> +

+ +

+ State: + <%= @address.state %> +

+ +

+ Zipcode: + <%= @address.zipcode %> +

+ +

+ Country: + <%= @address.country %> +

+ +<%= link_to 'Edit', edit_address_path(@address) %> | +<%= link_to 'Back', addresses_path %> diff --git a/app/views/addresses/show.json.jbuilder b/app/views/addresses/show.json.jbuilder new file mode 100644 index 0000000..e47c94a --- /dev/null +++ b/app/views/addresses/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "addresses/address", address: @address \ No newline at end of file diff --git a/app/views/athletes/_athlete.json.jbuilder b/app/views/athletes/_athlete.json.jbuilder new file mode 100644 index 0000000..5ca2f9b --- /dev/null +++ b/app/views/athletes/_athlete.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! athlete, :id, :roster, :person_id, :leagueteam_id, :created_at, :updated_at +json.url athlete_url(athlete, format: :json) \ No newline at end of file diff --git a/app/views/athletes/_form.html.erb b/app/views/athletes/_form.html.erb new file mode 100644 index 0000000..3346d37 --- /dev/null +++ b/app/views/athletes/_form.html.erb @@ -0,0 +1,32 @@ +<%= form_for(athlete) do |f| %> + <% if athlete.errors.any? %> +
+

<%= pluralize(athlete.errors.count, "error") %> prohibited this athlete from being saved:

+ +
    + <% athlete.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+ <% end %> + +
+ <%= f.label :roster %> + <%= f.text_field :roster %> +
+ +
+ <%= f.label :person_id %> + <%= f.text_field :person_id %> +
+ +
+ <%= f.label :leagueteam_id %> + <%= f.text_field :leagueteam_id %> +
+ +
+ <%= f.submit %> +
+<% end %> diff --git a/app/views/athletes/edit.html.erb b/app/views/athletes/edit.html.erb new file mode 100644 index 0000000..7574a4f --- /dev/null +++ b/app/views/athletes/edit.html.erb @@ -0,0 +1,6 @@ +

Editing Athlete

+ +<%= render 'form', athlete: @athlete %> + +<%= link_to 'Show', @athlete %> | +<%= link_to 'Back', athletes_path %> diff --git a/app/views/athletes/index.html.erb b/app/views/athletes/index.html.erb new file mode 100644 index 0000000..b6e155c --- /dev/null +++ b/app/views/athletes/index.html.erb @@ -0,0 +1,31 @@ +

<%= notice %>

+ +

Athletes

+ + + + + + + + + + + + + <% @athletes.each do |athlete| %> + + + + + + + + + <% end %> + +
RosterPersonLeagueteam
<%= athlete.roster %><%= athlete.person %><%= athlete.leagueteam %><%= link_to 'Show', athlete %><%= link_to 'Edit', edit_athlete_path(athlete) %><%= link_to 'Destroy', athlete, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New Athlete', new_athlete_path %> diff --git a/app/views/athletes/index.json.jbuilder b/app/views/athletes/index.json.jbuilder new file mode 100644 index 0000000..d082fdd --- /dev/null +++ b/app/views/athletes/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @athletes, partial: 'athletes/athlete', as: :athlete \ No newline at end of file diff --git a/app/views/athletes/new.html.erb b/app/views/athletes/new.html.erb new file mode 100644 index 0000000..276dc17 --- /dev/null +++ b/app/views/athletes/new.html.erb @@ -0,0 +1,5 @@ +

New Athlete

+ +<%= render 'form', athlete: @athlete %> + +<%= link_to 'Back', athletes_path %> diff --git a/app/views/athletes/show.html.erb b/app/views/athletes/show.html.erb new file mode 100644 index 0000000..44c0543 --- /dev/null +++ b/app/views/athletes/show.html.erb @@ -0,0 +1,19 @@ +

<%= notice %>

+ +

+ Roster: + <%= @athlete.roster %> +

+ +

+ Person: + <%= @athlete.person %> +

+ +

+ Leagueteam: + <%= @athlete.leagueteam %> +

+ +<%= link_to 'Edit', edit_athlete_path(@athlete) %> | +<%= link_to 'Back', athletes_path %> diff --git a/app/views/athletes/show.json.jbuilder b/app/views/athletes/show.json.jbuilder new file mode 100644 index 0000000..8e9ca79 --- /dev/null +++ b/app/views/athletes/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "athletes/athlete", athlete: @athlete \ No newline at end of file diff --git a/app/views/coaches/_coach.json.jbuilder b/app/views/coaches/_coach.json.jbuilder new file mode 100644 index 0000000..f1dfde3 --- /dev/null +++ b/app/views/coaches/_coach.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! coach, :id, :license, :person_id, :leagueteam_id, :created_at, :updated_at +json.url coach_url(coach, format: :json) \ No newline at end of file diff --git a/app/views/coaches/_form.html.erb b/app/views/coaches/_form.html.erb new file mode 100644 index 0000000..33e0e0b --- /dev/null +++ b/app/views/coaches/_form.html.erb @@ -0,0 +1,32 @@ +<%= form_for(coach) do |f| %> + <% if coach.errors.any? %> +
+

<%= pluralize(coach.errors.count, "error") %> prohibited this coach from being saved:

+ +
    + <% coach.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+ <% end %> + +
+ <%= f.label :license %> + <%= f.text_field :license %> +
+ +
+ <%= f.label :person_id %> + <%= f.text_field :person_id %> +
+ +
+ <%= f.label :leagueteam_id %> + <%= f.text_field :leagueteam_id %> +
+ +
+ <%= f.submit %> +
+<% end %> diff --git a/app/views/coaches/edit.html.erb b/app/views/coaches/edit.html.erb new file mode 100644 index 0000000..7cd2abf --- /dev/null +++ b/app/views/coaches/edit.html.erb @@ -0,0 +1,6 @@ +

Editing Coach

+ +<%= render 'form', coach: @coach %> + +<%= link_to 'Show', @coach %> | +<%= link_to 'Back', coaches_path %> diff --git a/app/views/coaches/index.html.erb b/app/views/coaches/index.html.erb new file mode 100644 index 0000000..d3da50d --- /dev/null +++ b/app/views/coaches/index.html.erb @@ -0,0 +1,31 @@ +

<%= notice %>

+ +

Coaches

+ + + + + + + + + + + + + <% @coaches.each do |coach| %> + + + + + + + + + <% end %> + +
LicensePersonLeagueteam
<%= coach.license %><%= coach.person %><%= coach.leagueteam %><%= link_to 'Show', coach %><%= link_to 'Edit', edit_coach_path(coach) %><%= link_to 'Destroy', coach, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New Coach', new_coach_path %> diff --git a/app/views/coaches/index.json.jbuilder b/app/views/coaches/index.json.jbuilder new file mode 100644 index 0000000..5db85c6 --- /dev/null +++ b/app/views/coaches/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @coaches, partial: 'coaches/coach', as: :coach \ No newline at end of file diff --git a/app/views/coaches/new.html.erb b/app/views/coaches/new.html.erb new file mode 100644 index 0000000..f92ad88 --- /dev/null +++ b/app/views/coaches/new.html.erb @@ -0,0 +1,5 @@ +

New Coach

+ +<%= render 'form', coach: @coach %> + +<%= link_to 'Back', coaches_path %> diff --git a/app/views/coaches/show.html.erb b/app/views/coaches/show.html.erb new file mode 100644 index 0000000..a03fbb5 --- /dev/null +++ b/app/views/coaches/show.html.erb @@ -0,0 +1,19 @@ +

<%= notice %>

+ +

+ License: + <%= @coach.license %> +

+ +

+ Person: + <%= @coach.person %> +

+ +

+ Leagueteam: + <%= @coach.leagueteam %> +

+ +<%= link_to 'Edit', edit_coach_path(@coach) %> | +<%= link_to 'Back', coaches_path %> diff --git a/app/views/coaches/show.json.jbuilder b/app/views/coaches/show.json.jbuilder new file mode 100644 index 0000000..00a9132 --- /dev/null +++ b/app/views/coaches/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "coaches/coach", coach: @coach \ No newline at end of file diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb new file mode 100644 index 0000000..7d49807 --- /dev/null +++ b/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + AthleteTeam + <%= csrf_meta_tags %> + + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> + <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> + + + + <%= yield %> + + diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb new file mode 100644 index 0000000..cbd34d2 --- /dev/null +++ b/app/views/layouts/mailer.html.erb @@ -0,0 +1,13 @@ + + + + + + + + + <%= yield %> + + diff --git a/app/views/layouts/mailer.text.erb b/app/views/layouts/mailer.text.erb new file mode 100644 index 0000000..37f0bdd --- /dev/null +++ b/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> diff --git a/app/views/leagues/_form.html.erb b/app/views/leagues/_form.html.erb new file mode 100644 index 0000000..7b9a718 --- /dev/null +++ b/app/views/leagues/_form.html.erb @@ -0,0 +1,27 @@ +<%= form_for(league) do |f| %> + <% if league.errors.any? %> +
+

<%= pluralize(league.errors.count, "error") %> prohibited this league from being saved:

+ +
    + <% league.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+ <% end %> + +
+ <%= f.label :leaguename %> + <%= f.text_field :leaguename %> +
+ +
+ <%= f.label :club %> + <%= f.text_field :club %> +
+ +
+ <%= f.submit %> +
+<% end %> diff --git a/app/views/leagues/_league.json.jbuilder b/app/views/leagues/_league.json.jbuilder new file mode 100644 index 0000000..2493413 --- /dev/null +++ b/app/views/leagues/_league.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! league, :id, :leaguename, :club, :created_at, :updated_at +json.url league_url(league, format: :json) \ No newline at end of file diff --git a/app/views/leagues/edit.html.erb b/app/views/leagues/edit.html.erb new file mode 100644 index 0000000..1f6f0b2 --- /dev/null +++ b/app/views/leagues/edit.html.erb @@ -0,0 +1,6 @@ +

Editing League

+ +<%= render 'form', league: @league %> + +<%= link_to 'Show', @league %> | +<%= link_to 'Back', leagues_path %> diff --git a/app/views/leagues/index.html.erb b/app/views/leagues/index.html.erb new file mode 100644 index 0000000..33fdc8d --- /dev/null +++ b/app/views/leagues/index.html.erb @@ -0,0 +1,29 @@ +

<%= notice %>

+ +

Leagues

+ + + + + + + + + + + + <% @leagues.each do |league| %> + + + + + + + + <% end %> + +
LeaguenameClub
<%= league.leaguename %><%= league.club %><%= link_to 'Show', league %><%= link_to 'Edit', edit_league_path(league) %><%= link_to 'Destroy', league, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New League', new_league_path %> diff --git a/app/views/leagues/index.json.jbuilder b/app/views/leagues/index.json.jbuilder new file mode 100644 index 0000000..973b49c --- /dev/null +++ b/app/views/leagues/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @leagues, partial: 'leagues/league', as: :league \ No newline at end of file diff --git a/app/views/leagues/new.html.erb b/app/views/leagues/new.html.erb new file mode 100644 index 0000000..7479418 --- /dev/null +++ b/app/views/leagues/new.html.erb @@ -0,0 +1,5 @@ +

New League

+ +<%= render 'form', league: @league %> + +<%= link_to 'Back', leagues_path %> diff --git a/app/views/leagues/show.html.erb b/app/views/leagues/show.html.erb new file mode 100644 index 0000000..dfb124d --- /dev/null +++ b/app/views/leagues/show.html.erb @@ -0,0 +1,14 @@ +

<%= notice %>

+ +

+ Leaguename: + <%= @league.leaguename %> +

+ +

+ Club: + <%= @league.club %> +

+ +<%= link_to 'Edit', edit_league_path(@league) %> | +<%= link_to 'Back', leagues_path %> diff --git a/app/views/leagues/show.json.jbuilder b/app/views/leagues/show.json.jbuilder new file mode 100644 index 0000000..aeef5be --- /dev/null +++ b/app/views/leagues/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "leagues/league", league: @league \ No newline at end of file diff --git a/app/views/managers/_form.html.erb b/app/views/managers/_form.html.erb new file mode 100644 index 0000000..2a8b5ae --- /dev/null +++ b/app/views/managers/_form.html.erb @@ -0,0 +1,27 @@ +<%= form_for(manager) do |f| %> + <% if manager.errors.any? %> +
+

<%= pluralize(manager.errors.count, "error") %> prohibited this manager from being saved:

+ +
    + <% manager.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+ <% end %> + +
+ <%= f.label :person_id %> + <%= f.text_field :person_id %> +
+ +
+ <%= f.label :leagueteam_id %> + <%= f.text_field :leagueteam_id %> +
+ +
+ <%= f.submit %> +
+<% end %> diff --git a/app/views/managers/_manager.json.jbuilder b/app/views/managers/_manager.json.jbuilder new file mode 100644 index 0000000..b25f2a4 --- /dev/null +++ b/app/views/managers/_manager.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! manager, :id, :person_id, :leagueteam_id, :created_at, :updated_at +json.url manager_url(manager, format: :json) \ No newline at end of file diff --git a/app/views/managers/edit.html.erb b/app/views/managers/edit.html.erb new file mode 100644 index 0000000..56adcce --- /dev/null +++ b/app/views/managers/edit.html.erb @@ -0,0 +1,6 @@ +

Editing Manager

+ +<%= render 'form', manager: @manager %> + +<%= link_to 'Show', @manager %> | +<%= link_to 'Back', managers_path %> diff --git a/app/views/managers/index.html.erb b/app/views/managers/index.html.erb new file mode 100644 index 0000000..d2ec389 --- /dev/null +++ b/app/views/managers/index.html.erb @@ -0,0 +1,29 @@ +

<%= notice %>

+ +

Managers

+ + + + + + + + + + + + <% @managers.each do |manager| %> + + + + + + + + <% end %> + +
PersonLeagueteam
<%= manager.person %><%= manager.leagueteam %><%= link_to 'Show', manager %><%= link_to 'Edit', edit_manager_path(manager) %><%= link_to 'Destroy', manager, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New Manager', new_manager_path %> diff --git a/app/views/managers/index.json.jbuilder b/app/views/managers/index.json.jbuilder new file mode 100644 index 0000000..426ccab --- /dev/null +++ b/app/views/managers/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @managers, partial: 'managers/manager', as: :manager \ No newline at end of file diff --git a/app/views/managers/new.html.erb b/app/views/managers/new.html.erb new file mode 100644 index 0000000..2959099 --- /dev/null +++ b/app/views/managers/new.html.erb @@ -0,0 +1,5 @@ +

New Manager

+ +<%= render 'form', manager: @manager %> + +<%= link_to 'Back', managers_path %> diff --git a/app/views/managers/show.html.erb b/app/views/managers/show.html.erb new file mode 100644 index 0000000..8beadb5 --- /dev/null +++ b/app/views/managers/show.html.erb @@ -0,0 +1,14 @@ +

<%= notice %>

+ +

+ Person: + <%= @manager.person %> +

+ +

+ Leagueteam: + <%= @manager.leagueteam %> +

+ +<%= link_to 'Edit', edit_manager_path(@manager) %> | +<%= link_to 'Back', managers_path %> diff --git a/app/views/managers/show.json.jbuilder b/app/views/managers/show.json.jbuilder new file mode 100644 index 0000000..8428a61 --- /dev/null +++ b/app/views/managers/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "managers/manager", manager: @manager \ No newline at end of file diff --git a/app/views/parents/_form.html.erb b/app/views/parents/_form.html.erb new file mode 100644 index 0000000..651e1f8 --- /dev/null +++ b/app/views/parents/_form.html.erb @@ -0,0 +1,22 @@ +<%= form_for(parent) do |f| %> + <% if parent.errors.any? %> +
+

<%= pluralize(parent.errors.count, "error") %> prohibited this parent from being saved:

+ +
    + <% parent.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+ <% end %> + +
+ <%= f.label :person_id %> + <%= f.text_field :person_id %> +
+ +
+ <%= f.submit %> +
+<% end %> diff --git a/app/views/parents/_parent.json.jbuilder b/app/views/parents/_parent.json.jbuilder new file mode 100644 index 0000000..ae1198e --- /dev/null +++ b/app/views/parents/_parent.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! parent, :id, :person_id, :created_at, :updated_at +json.url parent_url(parent, format: :json) \ No newline at end of file diff --git a/app/views/parents/edit.html.erb b/app/views/parents/edit.html.erb new file mode 100644 index 0000000..2e2cbec --- /dev/null +++ b/app/views/parents/edit.html.erb @@ -0,0 +1,6 @@ +

Editing Parent

+ +<%= render 'form', parent: @parent %> + +<%= link_to 'Show', @parent %> | +<%= link_to 'Back', parents_path %> diff --git a/app/views/parents/index.html.erb b/app/views/parents/index.html.erb new file mode 100644 index 0000000..8f2e589 --- /dev/null +++ b/app/views/parents/index.html.erb @@ -0,0 +1,27 @@ +

<%= notice %>

+ +

Parents

+ + + + + + + + + + + <% @parents.each do |parent| %> + + + + + + + <% end %> + +
Person
<%= parent.person %><%= link_to 'Show', parent %><%= link_to 'Edit', edit_parent_path(parent) %><%= link_to 'Destroy', parent, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New Parent', new_parent_path %> diff --git a/app/views/parents/index.json.jbuilder b/app/views/parents/index.json.jbuilder new file mode 100644 index 0000000..0b42fd1 --- /dev/null +++ b/app/views/parents/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @parents, partial: 'parents/parent', as: :parent \ No newline at end of file diff --git a/app/views/parents/new.html.erb b/app/views/parents/new.html.erb new file mode 100644 index 0000000..bc3f4a2 --- /dev/null +++ b/app/views/parents/new.html.erb @@ -0,0 +1,5 @@ +

New Parent

+ +<%= render 'form', parent: @parent %> + +<%= link_to 'Back', parents_path %> diff --git a/app/views/parents/show.html.erb b/app/views/parents/show.html.erb new file mode 100644 index 0000000..c30cfd3 --- /dev/null +++ b/app/views/parents/show.html.erb @@ -0,0 +1,9 @@ +

<%= notice %>

+ +

+ Person: + <%= @parent.person %> +

+ +<%= link_to 'Edit', edit_parent_path(@parent) %> | +<%= link_to 'Back', parents_path %> diff --git a/app/views/parents/show.json.jbuilder b/app/views/parents/show.json.jbuilder new file mode 100644 index 0000000..2dd2d4b --- /dev/null +++ b/app/views/parents/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "parents/parent", parent: @parent \ No newline at end of file diff --git a/app/views/people/_form.html.erb b/app/views/people/_form.html.erb new file mode 100644 index 0000000..d9fe12e --- /dev/null +++ b/app/views/people/_form.html.erb @@ -0,0 +1,67 @@ +<%= form_for(person) do |f| %> + <% if person.errors.any? %> +
+

<%= pluralize(person.errors.count, "error") %> prohibited this person from being saved:

+ +
    + <% person.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+ <% end %> + +
+ <%= f.label :firstname %> + <%= f.text_field :firstname %> +
+ +
+ <%= f.label :lastname %> + <%= f.text_field :lastname %> +
+ +
+ <%= f.label :email %> + <%= f.text_field :email %> +
+ +
+ <%= f.label :phone1 %> + <%= f.number_field :phone1 %> +
+ +
+ <%= f.label :phone2 %> + <%= f.number_field :phone2 %> +
+ +
+ <%= f.label :dateofbirth %> + <%= f.date_select :dateofbirth, :start_year => Date.today.year - 100 %> +
+ +
+ <%= f.label :gender %> + <%= f.text_field :gender %> +
+ +
+ <%= f.label :height %> + <%= f.text_field :height %> +
+ +
+ <%= f.label :weight %> + <%= f.text_field :weight %> +
+ +
+ <%= f.label :jerseynum %> + <%= f.number_field :jerseynum %> +
+ +
+ <%= f.submit %> +
+<% end %> diff --git a/app/views/people/_person.json.jbuilder b/app/views/people/_person.json.jbuilder new file mode 100644 index 0000000..f9c6219 --- /dev/null +++ b/app/views/people/_person.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! person, :id, :firstname, :lastname, :email, :phone1, :phone2, :dateofbirth, :gender, :height, :weight, :jerseynum, :created_at, :updated_at +json.url person_url(person, format: :json) \ No newline at end of file diff --git a/app/views/people/edit.html.erb b/app/views/people/edit.html.erb new file mode 100644 index 0000000..f5faa28 --- /dev/null +++ b/app/views/people/edit.html.erb @@ -0,0 +1,6 @@ +

Editing Person

+ +<%= render 'form', person: @person %> + +<%= link_to 'Show', @person %> | +<%= link_to 'Back', people_path %> diff --git a/app/views/people/index.html.erb b/app/views/people/index.html.erb new file mode 100644 index 0000000..26c243d --- /dev/null +++ b/app/views/people/index.html.erb @@ -0,0 +1,45 @@ +

<%= notice %>

+ +

People

+ + + + + + + + + + + + + + + + + + + + <% @people.each do |person| %> + + + + + + + + + + + + + + + + <% end %> + +
FirstnameLastnameEmailPhone1Phone2DateofbirthGenderHeightWeightJerseynum
<%= person.firstname %><%= person.lastname %><%= person.email %><%= person.phone1 %><%= person.phone2 %><%= person.dateofbirth %><%= person.gender %><%= person.height %><%= person.weight %><%= person.jerseynum %><%= link_to 'Show', person %><%= link_to 'Edit', edit_person_path(person) %><%= link_to 'Destroy', person, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New Person', new_person_path %> diff --git a/app/views/people/index.json.jbuilder b/app/views/people/index.json.jbuilder new file mode 100644 index 0000000..5db71b9 --- /dev/null +++ b/app/views/people/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @people, partial: 'people/person', as: :person \ No newline at end of file diff --git a/app/views/people/new.html.erb b/app/views/people/new.html.erb new file mode 100644 index 0000000..103bac0 --- /dev/null +++ b/app/views/people/new.html.erb @@ -0,0 +1,5 @@ +

New Person

+ +<%= render 'form', person: @person %> + +<%= link_to 'Back', people_path %> diff --git a/app/views/people/show.html.erb b/app/views/people/show.html.erb new file mode 100644 index 0000000..a3aa38b --- /dev/null +++ b/app/views/people/show.html.erb @@ -0,0 +1,54 @@ +

<%= notice %>

+ +

+ Firstname: + <%= @person.firstname %> +

+ +

+ Lastname: + <%= @person.lastname %> +

+ +

+ Email: + <%= @person.email %> +

+ +

+ Phone1: + <%= @person.phone1 %> +

+ +

+ Phone2: + <%= @person.phone2 %> +

+ +

+ Dateofbirth: + <%= @person.dateofbirth %> +

+ +

+ Gender: + <%= @person.gender %> +

+ +

+ Height: + <%= @person.height %> +

+ +

+ Weight: + <%= @person.weight %> +

+ +

+ Jerseynum: + <%= @person.jerseynum %> +

+ +<%= link_to 'Edit', edit_person_path(@person) %> | +<%= link_to 'Back', people_path %> diff --git a/app/views/people/show.json.jbuilder b/app/views/people/show.json.jbuilder new file mode 100644 index 0000000..727d7ec --- /dev/null +++ b/app/views/people/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "people/person", person: @person \ No newline at end of file diff --git a/app/views/teams/_form.html.erb b/app/views/teams/_form.html.erb new file mode 100644 index 0000000..7594039 --- /dev/null +++ b/app/views/teams/_form.html.erb @@ -0,0 +1,32 @@ +<%= form_for(team) do |f| %> + <% if team.errors.any? %> +
+

<%= pluralize(team.errors.count, "error") %> prohibited this team from being saved:

+ +
    + <% team.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+ <% end %> + +
+ <%= f.label :teamname %> + <%= f.text_field :teamname %> +
+ +
+ <%= f.label :teamtype %> + <%= f.text_field :teamtype %> +
+ +
+ <%= f.label :agegroup %> + <%= f.text_field :agegroup %> +
+ +
+ <%= f.submit %> +
+<% end %> diff --git a/app/views/teams/_team.json.jbuilder b/app/views/teams/_team.json.jbuilder new file mode 100644 index 0000000..6e21f2b --- /dev/null +++ b/app/views/teams/_team.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! team, :id, :teamname, :teamtype, :agegroup, :created_at, :updated_at +json.url team_url(team, format: :json) \ No newline at end of file diff --git a/app/views/teams/edit.html.erb b/app/views/teams/edit.html.erb new file mode 100644 index 0000000..3df4bd5 --- /dev/null +++ b/app/views/teams/edit.html.erb @@ -0,0 +1,6 @@ +

Editing Team

+ +<%= render 'form', team: @team %> + +<%= link_to 'Show', @team %> | +<%= link_to 'Back', teams_path %> diff --git a/app/views/teams/index.html.erb b/app/views/teams/index.html.erb new file mode 100644 index 0000000..a7edc0d --- /dev/null +++ b/app/views/teams/index.html.erb @@ -0,0 +1,31 @@ +

<%= notice %>

+ +

Teams

+ + + + + + + + + + + + + <% @teams.each do |team| %> + + + + + + + + + <% end %> + +
TeamnameTeamtypeAgegroup
<%= team.teamname %><%= team.teamtype %><%= team.agegroup %><%= link_to 'Show', team %><%= link_to 'Edit', edit_team_path(team) %><%= link_to 'Destroy', team, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New Team', new_team_path %> diff --git a/app/views/teams/index.json.jbuilder b/app/views/teams/index.json.jbuilder new file mode 100644 index 0000000..3a38e1b --- /dev/null +++ b/app/views/teams/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @teams, partial: 'teams/team', as: :team \ No newline at end of file diff --git a/app/views/teams/new.html.erb b/app/views/teams/new.html.erb new file mode 100644 index 0000000..4c4f21b --- /dev/null +++ b/app/views/teams/new.html.erb @@ -0,0 +1,5 @@ +

New Team

+ +<%= render 'form', team: @team %> + +<%= link_to 'Back', teams_path %> diff --git a/app/views/teams/show.html.erb b/app/views/teams/show.html.erb new file mode 100644 index 0000000..9a15c8d --- /dev/null +++ b/app/views/teams/show.html.erb @@ -0,0 +1,19 @@ +

<%= notice %>

+ +

+ Teamname: + <%= @team.teamname %> +

+ +

+ Teamtype: + <%= @team.teamtype %> +

+ +

+ Agegroup: + <%= @team.agegroup %> +

+ +<%= link_to 'Edit', edit_team_path(@team) %> | +<%= link_to 'Back', teams_path %> diff --git a/app/views/teams/show.json.jbuilder b/app/views/teams/show.json.jbuilder new file mode 100644 index 0000000..8a3edb3 --- /dev/null +++ b/app/views/teams/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "teams/team", team: @team \ No newline at end of file diff --git a/artifacts/organization.mwb b/artifacts/organization.mwb index b5ab5efdc14c1888b85dbc9d43f28522597f74ad..00847c88437d68ee99f116c5a9e140513676ef02 100644 GIT binary patch literal 16053 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 literal 14787 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 diff --git a/ass.mwb b/ass.mwb deleted file mode 100644 index eaa498e0e412bf25e2f779082dac01948335ba2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16865 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 m-^$=XABFJzqU@y9Jm4ItZ+=Q@jzVHlaz 'public, max-age=172800' + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + config.action_mailer.perform_caching = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true + + # Suppress logger output for asset requests. + config.assets.quiet = true + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true + + # Use an evented file watcher to asynchronously detect changes in source code, + # routes, locales, etc. This feature depends on the listen gem. + # config.file_watcher = ActiveSupport::EventedFileUpdateChecker +end diff --git a/config/environments/production.rb b/config/environments/production.rb new file mode 100644 index 0000000..c9ad47a --- /dev/null +++ b/config/environments/production.rb @@ -0,0 +1,86 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? + + # Compress JavaScripts and CSS. + config.assets.js_compressor = :uglifier + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + + # Mount Action Cable outside main process or domain + # config.action_cable.mount_path = nil + # config.action_cable.url = 'wss://example.com/cable' + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + config.log_tags = [ :request_id ] + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Use a real queuing backend for Active Job (and separate queues per environment) + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "Athlete_Team_#{Rails.env}" + config.action_mailer.perform_caching = false + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Use a different logger for distributed setups. + # require 'syslog/logger' + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/config/environments/test.rb b/config/environments/test.rb new file mode 100644 index 0000000..30587ef --- /dev/null +++ b/config/environments/test.rb @@ -0,0 +1,42 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + 'Cache-Control' => 'public, max-age=3600' + } + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + config.action_mailer.perform_caching = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/config/initializers/application_controller_renderer.rb b/config/initializers/application_controller_renderer.rb new file mode 100644 index 0000000..51639b6 --- /dev/null +++ b/config/initializers/application_controller_renderer.rb @@ -0,0 +1,6 @@ +# Be sure to restart your server when you modify this file. + +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb new file mode 100644 index 0000000..01ef3e6 --- /dev/null +++ b/config/initializers/assets.rb @@ -0,0 +1,11 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path +# Rails.application.config.assets.paths << Emoji.images_path + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in app/assets folder are already added. +# Rails.application.config.assets.precompile += %w( search.js ) diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000..59385cd --- /dev/null +++ b/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb new file mode 100644 index 0000000..5a6a32d --- /dev/null +++ b/config/initializers/cookies_serializer.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. + +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000..4a994e1 --- /dev/null +++ b/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb new file mode 100644 index 0000000..ac033bf --- /dev/null +++ b/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb new file mode 100644 index 0000000..dc18996 --- /dev/null +++ b/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/config/initializers/new_framework_defaults.rb b/config/initializers/new_framework_defaults.rb new file mode 100644 index 0000000..0706caf --- /dev/null +++ b/config/initializers/new_framework_defaults.rb @@ -0,0 +1,24 @@ +# Be sure to restart your server when you modify this file. +# +# This file contains migration options to ease your Rails 5.0 upgrade. +# +# Read the Rails 5.0 release notes for more info on each option. + +# Enable per-form CSRF tokens. Previous versions had false. +Rails.application.config.action_controller.per_form_csrf_tokens = true + +# Enable origin-checking CSRF mitigation. Previous versions had false. +Rails.application.config.action_controller.forgery_protection_origin_check = true + +# Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`. +# Previous versions had false. +ActiveSupport.to_time_preserves_timezone = true + +# Require `belongs_to` associations by default. Previous versions had false. +Rails.application.config.active_record.belongs_to_required_by_default = true + +# Do not halt callback chains when a callback returns false. Previous versions had true. +ActiveSupport.halt_callback_chains_on_return_false = false + +# Configure SSL options to enable HSTS with subdomains. Previous versions had false. +Rails.application.config.ssl_options = { hsts: { subdomains: true } } diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb new file mode 100644 index 0000000..84405ee --- /dev/null +++ b/config/initializers/session_store.rb @@ -0,0 +1,3 @@ +# Be sure to restart your server when you modify this file. + +Rails.application.config.session_store :cookie_store, key: '_Athlete_Team_session' diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000..bbfc396 --- /dev/null +++ b/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 0000000..0653957 --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,23 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# To learn more, please read the Rails Internationalization guide +# available at http://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/config/puma.rb b/config/puma.rb new file mode 100644 index 0000000..c7f311f --- /dev/null +++ b/config/puma.rb @@ -0,0 +1,47 @@ +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum, this matches the default thread size of Active Record. +# +threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i +threads threads_count, threads_count + +# Specifies the `port` that Puma will listen on to receive requests, default is 3000. +# +port ENV.fetch("PORT") { 3000 } + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV") { "development" } + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked webserver processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +# workers ENV.fetch("WEB_CONCURRENCY") { 2 } + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. If you use this option +# you need to make sure to reconnect any threads in the `on_worker_boot` +# block. +# +# preload_app! + +# The code in the `on_worker_boot` will be called if you are using +# clustered mode by specifying a number of `workers`. After each worker +# process is booted this block will be run, if you are using `preload_app!` +# option you will want to use this block to reconnect to any threads +# or connections that may have been created at application boot, Ruby +# cannot share connections between processes. +# +# on_worker_boot do +# ActiveRecord::Base.establish_connection if defined?(ActiveRecord) +# end + +# Allow puma to be restarted by `rails restart` command. +plugin :tmp_restart diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 0000000..1635d8a --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,11 @@ +Rails.application.routes.draw do + resources :addresses + resources :parents + resources :managers + resources :coaches + resources :athletes + resources :leagues + resources :teams + resources :people + # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html +end diff --git a/config/secrets.yml b/config/secrets.yml new file mode 100644 index 0000000..9b094c3 --- /dev/null +++ b/config/secrets.yml @@ -0,0 +1,22 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key is used for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! + +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +# You can use `rails secret` to generate a secure secret key. + +# Make sure the secrets in this file are kept private +# if you're sharing your code publicly. + +development: + secret_key_base: df682c880996e98a816829e4a9e88a15f940a2fcf50f9f646295f329e6937343dd6ce79cd15213fc9d73faa1af95d1b13b27d290af8d5eaa5b68d5825b7e2034 + +test: + secret_key_base: dc53ab24c794ea96f7fba8bbf5910101e347fb47e5ad8da8cc5eef6d793c54245cfd7a666bab9f29fd210ebd009585dce3b498edc93bdb4453e126915c4f710b + +# Do not keep production secrets in the repository, +# instead read values from the environment. +production: + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> diff --git a/db/migrate/20160927223712_create_people.rb b/db/migrate/20160927223712_create_people.rb new file mode 100644 index 0000000..0933161 --- /dev/null +++ b/db/migrate/20160927223712_create_people.rb @@ -0,0 +1,18 @@ +class CreatePeople < ActiveRecord::Migration[5.0] + def change + create_table :people do |t| + t.string :firstname + t.string :lastname + t.string :email + t.integer :phone1 + t.integer :phone2 + t.date :dateofbirth + t.string :gender + t.string :height + t.string :weight + t.integer :jerseynum + + t.timestamps + end + end +end diff --git a/db/migrate/20160927223949_create_teams.rb b/db/migrate/20160927223949_create_teams.rb new file mode 100644 index 0000000..1acf1c7 --- /dev/null +++ b/db/migrate/20160927223949_create_teams.rb @@ -0,0 +1,11 @@ +class CreateTeams < ActiveRecord::Migration[5.0] + def change + create_table :teams do |t| + t.string :teamname + t.string :teamtype + t.string :agegroup + + t.timestamps + end + end +end diff --git a/db/migrate/20160927224333_create_leagues.rb b/db/migrate/20160927224333_create_leagues.rb new file mode 100644 index 0000000..5cf46cb --- /dev/null +++ b/db/migrate/20160927224333_create_leagues.rb @@ -0,0 +1,10 @@ +class CreateLeagues < ActiveRecord::Migration[5.0] + def change + create_table :leagues do |t| + t.string :leaguename + t.string :club + + t.timestamps + end + end +end diff --git a/db/migrate/20160927225120_create_athletes.rb b/db/migrate/20160927225120_create_athletes.rb new file mode 100644 index 0000000..adf6075 --- /dev/null +++ b/db/migrate/20160927225120_create_athletes.rb @@ -0,0 +1,11 @@ +class CreateAthletes < ActiveRecord::Migration[5.0] + def change + create_table :athletes do |t| + t.string :roster + t.references :person, foreign_key: true + t.references :leagueteam, foreign_key: true + + t.timestamps + end + end +end diff --git a/db/migrate/20160927225256_create_coaches.rb b/db/migrate/20160927225256_create_coaches.rb new file mode 100644 index 0000000..c2cefbb --- /dev/null +++ b/db/migrate/20160927225256_create_coaches.rb @@ -0,0 +1,11 @@ +class CreateCoaches < ActiveRecord::Migration[5.0] + def change + create_table :coaches do |t| + t.string :license + t.references :person, foreign_key: true + t.references :leagueteam, foreign_key: true + + t.timestamps + end + end +end diff --git a/db/migrate/20160927225328_create_managers.rb b/db/migrate/20160927225328_create_managers.rb new file mode 100644 index 0000000..b579929 --- /dev/null +++ b/db/migrate/20160927225328_create_managers.rb @@ -0,0 +1,10 @@ +class CreateManagers < ActiveRecord::Migration[5.0] + def change + create_table :managers do |t| + t.references :person, foreign_key: true + t.references :leagueteam, foreign_key: true + + t.timestamps + end + end +end diff --git a/db/migrate/20160927225409_create_parents.rb b/db/migrate/20160927225409_create_parents.rb new file mode 100644 index 0000000..3b3f6b7 --- /dev/null +++ b/db/migrate/20160927225409_create_parents.rb @@ -0,0 +1,9 @@ +class CreateParents < ActiveRecord::Migration[5.0] + def change + create_table :parents do |t| + t.references :person, foreign_key: true + + t.timestamps + end + end +end diff --git a/db/migrate/20160927230344_create_addresses.rb b/db/migrate/20160927230344_create_addresses.rb new file mode 100644 index 0000000..d16e927 --- /dev/null +++ b/db/migrate/20160927230344_create_addresses.rb @@ -0,0 +1,14 @@ +class CreateAddresses < ActiveRecord::Migration[5.0] + def change + create_table :addresses do |t| + t.string :addressline1 + t.string :addressline2 + t.string :city + t.string :state + t.integer :zipcode + t.string :country + + t.timestamps + end + end +end diff --git a/db/migrate/20160928072926_create_join_table_people_adresses.rb b/db/migrate/20160928072926_create_join_table_people_adresses.rb new file mode 100644 index 0000000..fe97562 --- /dev/null +++ b/db/migrate/20160928072926_create_join_table_people_adresses.rb @@ -0,0 +1,8 @@ +class CreateJoinTablePeopleAdresses < ActiveRecord::Migration[5.0] + def change + create_join_table :people, :addresses do |t| + # t.index [:person_id, :address_id] + # t.index [:address_id, :person_id] + end + end +end diff --git a/db/migrate/20160928072949_create_join_table_teams_leagues.rb b/db/migrate/20160928072949_create_join_table_teams_leagues.rb new file mode 100644 index 0000000..1f29759 --- /dev/null +++ b/db/migrate/20160928072949_create_join_table_teams_leagues.rb @@ -0,0 +1,8 @@ +class CreateJoinTableTeamsLeagues < ActiveRecord::Migration[5.0] + def change + create_join_table :teams, :leagues do |t| + # t.index [:team_id, :league_id] + # t.index [:league_id, :team_id] + end + end +end diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000..a5e03bd --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,102 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20160928072949) do + + create_table "addresses", force: :cascade do |t| + t.string "addressline1" + t.string "addressline2" + t.string "city" + t.string "state" + t.integer "zipcode" + t.string "country" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "addresses_people", id: false, force: :cascade do |t| + t.integer "person_id", null: false + t.integer "address_id", null: false + end + + create_table "athletes", force: :cascade do |t| + t.string "roster" + t.integer "person_id" + t.integer "leagueteam_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["leagueteam_id"], name: "index_athletes_on_leagueteam_id" + t.index ["person_id"], name: "index_athletes_on_person_id" + end + + create_table "coaches", force: :cascade do |t| + t.string "license" + t.integer "person_id" + t.integer "leagueteam_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["leagueteam_id"], name: "index_coaches_on_leagueteam_id" + t.index ["person_id"], name: "index_coaches_on_person_id" + end + + create_table "leagues", force: :cascade do |t| + t.string "leaguename" + t.string "club" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "leagues_teams", id: false, force: :cascade do |t| + t.integer "team_id", null: false + t.integer "league_id", null: false + end + + create_table "managers", force: :cascade do |t| + t.integer "person_id" + t.integer "leagueteam_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["leagueteam_id"], name: "index_managers_on_leagueteam_id" + t.index ["person_id"], name: "index_managers_on_person_id" + end + + create_table "parents", force: :cascade do |t| + t.integer "person_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["person_id"], name: "index_parents_on_person_id" + end + + create_table "people", force: :cascade do |t| + t.string "firstname" + t.string "lastname" + t.string "email" + t.integer "phone1" + t.integer "phone2" + t.date "dateofbirth" + t.string "gender" + t.string "height" + t.string "weight" + t.integer "jerseynum" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "teams", force: :cascade do |t| + t.string "teamname" + t.string "teamtype" + t.string "agegroup" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end diff --git a/db/seeds.rb b/db/seeds.rb new file mode 100644 index 0000000..1beea2a --- /dev/null +++ b/db/seeds.rb @@ -0,0 +1,7 @@ +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup). +# +# Examples: +# +# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) +# Character.create(name: 'Luke', movie: movies.first) diff --git a/lib/assets/.keep b/lib/assets/.keep new file mode 100644 index 0000000..e69de29 diff --git a/lib/tasks/.keep b/lib/tasks/.keep new file mode 100644 index 0000000..e69de29 diff --git a/log/.keep b/log/.keep new file mode 100644 index 0000000..e69de29 diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..b612547 --- /dev/null +++ b/public/404.html @@ -0,0 +1,67 @@ + + + + The page you were looking for doesn't exist (404) + + + + + + +
+
+

The page you were looking for doesn't exist.

+

You may have mistyped the address or the page may have moved.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/422.html b/public/422.html new file mode 100644 index 0000000..a21f82b --- /dev/null +++ b/public/422.html @@ -0,0 +1,67 @@ + + + + The change you wanted was rejected (422) + + + + + + +
+
+

The change you wanted was rejected.

+

Maybe you tried to change something you didn't have access to.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/500.html b/public/500.html new file mode 100644 index 0000000..061abc5 --- /dev/null +++ b/public/500.html @@ -0,0 +1,66 @@ + + + + We're sorry, but something went wrong (500) + + + + + + +
+
+

We're sorry, but something went wrong.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/apple-touch-icon-precomposed.png b/public/apple-touch-icon-precomposed.png new file mode 100644 index 0000000..e69de29 diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000..e69de29 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..3c9c7c0 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,5 @@ +# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file +# +# To ban all spiders from the entire site uncomment the next two lines: +# User-agent: * +# Disallow: / diff --git a/test/controllers/.keep b/test/controllers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/controllers/addresses_controller_test.rb b/test/controllers/addresses_controller_test.rb new file mode 100644 index 0000000..ee0d0c8 --- /dev/null +++ b/test/controllers/addresses_controller_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' + +class AddressesControllerTest < ActionDispatch::IntegrationTest + setup do + @address = addresses(:one) + end + + test "should get index" do + get addresses_url + assert_response :success + end + + test "should get new" do + get new_address_url + assert_response :success + end + + test "should create address" do + assert_difference('Address.count') do + post addresses_url, params: { address: { addressline1: @address.addressline1, addressline2: @address.addressline2, city: @address.city, country: @address.country, state: @address.state, zipcode: @address.zipcode } } + end + + assert_redirected_to address_url(Address.last) + end + + test "should show address" do + get address_url(@address) + assert_response :success + end + + test "should get edit" do + get edit_address_url(@address) + assert_response :success + end + + test "should update address" do + patch address_url(@address), params: { address: { addressline1: @address.addressline1, addressline2: @address.addressline2, city: @address.city, country: @address.country, state: @address.state, zipcode: @address.zipcode } } + assert_redirected_to address_url(@address) + end + + test "should destroy address" do + assert_difference('Address.count', -1) do + delete address_url(@address) + end + + assert_redirected_to addresses_url + end +end diff --git a/test/controllers/athletes_controller_test.rb b/test/controllers/athletes_controller_test.rb new file mode 100644 index 0000000..67582b1 --- /dev/null +++ b/test/controllers/athletes_controller_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' + +class AthletesControllerTest < ActionDispatch::IntegrationTest + setup do + @athlete = athletes(:one) + end + + test "should get index" do + get athletes_url + assert_response :success + end + + test "should get new" do + get new_athlete_url + assert_response :success + end + + test "should create athlete" do + assert_difference('Athlete.count') do + post athletes_url, params: { athlete: { leagueteam_id: @athlete.leagueteam_id, person_id: @athlete.person_id, roster: @athlete.roster } } + end + + assert_redirected_to athlete_url(Athlete.last) + end + + test "should show athlete" do + get athlete_url(@athlete) + assert_response :success + end + + test "should get edit" do + get edit_athlete_url(@athlete) + assert_response :success + end + + test "should update athlete" do + patch athlete_url(@athlete), params: { athlete: { leagueteam_id: @athlete.leagueteam_id, person_id: @athlete.person_id, roster: @athlete.roster } } + assert_redirected_to athlete_url(@athlete) + end + + test "should destroy athlete" do + assert_difference('Athlete.count', -1) do + delete athlete_url(@athlete) + end + + assert_redirected_to athletes_url + end +end diff --git a/test/controllers/coaches_controller_test.rb b/test/controllers/coaches_controller_test.rb new file mode 100644 index 0000000..faeb6fd --- /dev/null +++ b/test/controllers/coaches_controller_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' + +class CoachesControllerTest < ActionDispatch::IntegrationTest + setup do + @coach = coaches(:one) + end + + test "should get index" do + get coaches_url + assert_response :success + end + + test "should get new" do + get new_coach_url + assert_response :success + end + + test "should create coach" do + assert_difference('Coach.count') do + post coaches_url, params: { coach: { leagueteam_id: @coach.leagueteam_id, license: @coach.license, person_id: @coach.person_id } } + end + + assert_redirected_to coach_url(Coach.last) + end + + test "should show coach" do + get coach_url(@coach) + assert_response :success + end + + test "should get edit" do + get edit_coach_url(@coach) + assert_response :success + end + + test "should update coach" do + patch coach_url(@coach), params: { coach: { leagueteam_id: @coach.leagueteam_id, license: @coach.license, person_id: @coach.person_id } } + assert_redirected_to coach_url(@coach) + end + + test "should destroy coach" do + assert_difference('Coach.count', -1) do + delete coach_url(@coach) + end + + assert_redirected_to coaches_url + end +end diff --git a/test/controllers/leagues_controller_test.rb b/test/controllers/leagues_controller_test.rb new file mode 100644 index 0000000..7ae9f5b --- /dev/null +++ b/test/controllers/leagues_controller_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' + +class LeaguesControllerTest < ActionDispatch::IntegrationTest + setup do + @league = leagues(:one) + end + + test "should get index" do + get leagues_url + assert_response :success + end + + test "should get new" do + get new_league_url + assert_response :success + end + + test "should create league" do + assert_difference('League.count') do + post leagues_url, params: { league: { club: @league.club, leaguename: @league.leaguename } } + end + + assert_redirected_to league_url(League.last) + end + + test "should show league" do + get league_url(@league) + assert_response :success + end + + test "should get edit" do + get edit_league_url(@league) + assert_response :success + end + + test "should update league" do + patch league_url(@league), params: { league: { club: @league.club, leaguename: @league.leaguename } } + assert_redirected_to league_url(@league) + end + + test "should destroy league" do + assert_difference('League.count', -1) do + delete league_url(@league) + end + + assert_redirected_to leagues_url + end +end diff --git a/test/controllers/managers_controller_test.rb b/test/controllers/managers_controller_test.rb new file mode 100644 index 0000000..a856596 --- /dev/null +++ b/test/controllers/managers_controller_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' + +class ManagersControllerTest < ActionDispatch::IntegrationTest + setup do + @manager = managers(:one) + end + + test "should get index" do + get managers_url + assert_response :success + end + + test "should get new" do + get new_manager_url + assert_response :success + end + + test "should create manager" do + assert_difference('Manager.count') do + post managers_url, params: { manager: { leagueteam_id: @manager.leagueteam_id, person_id: @manager.person_id } } + end + + assert_redirected_to manager_url(Manager.last) + end + + test "should show manager" do + get manager_url(@manager) + assert_response :success + end + + test "should get edit" do + get edit_manager_url(@manager) + assert_response :success + end + + test "should update manager" do + patch manager_url(@manager), params: { manager: { leagueteam_id: @manager.leagueteam_id, person_id: @manager.person_id } } + assert_redirected_to manager_url(@manager) + end + + test "should destroy manager" do + assert_difference('Manager.count', -1) do + delete manager_url(@manager) + end + + assert_redirected_to managers_url + end +end diff --git a/test/controllers/parents_controller_test.rb b/test/controllers/parents_controller_test.rb new file mode 100644 index 0000000..161e51a --- /dev/null +++ b/test/controllers/parents_controller_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' + +class ParentsControllerTest < ActionDispatch::IntegrationTest + setup do + @parent = parents(:one) + end + + test "should get index" do + get parents_url + assert_response :success + end + + test "should get new" do + get new_parent_url + assert_response :success + end + + test "should create parent" do + assert_difference('Parent.count') do + post parents_url, params: { parent: { person_id: @parent.person_id } } + end + + assert_redirected_to parent_url(Parent.last) + end + + test "should show parent" do + get parent_url(@parent) + assert_response :success + end + + test "should get edit" do + get edit_parent_url(@parent) + assert_response :success + end + + test "should update parent" do + patch parent_url(@parent), params: { parent: { person_id: @parent.person_id } } + assert_redirected_to parent_url(@parent) + end + + test "should destroy parent" do + assert_difference('Parent.count', -1) do + delete parent_url(@parent) + end + + assert_redirected_to parents_url + end +end diff --git a/test/controllers/people_controller_test.rb b/test/controllers/people_controller_test.rb new file mode 100644 index 0000000..fa131f4 --- /dev/null +++ b/test/controllers/people_controller_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' + +class PeopleControllerTest < ActionDispatch::IntegrationTest + setup do + @person = people(:one) + end + + test "should get index" do + get people_url + assert_response :success + end + + test "should get new" do + get new_person_url + assert_response :success + end + + test "should create person" do + assert_difference('Person.count') do + post people_url, params: { person: { dateofbirth: @person.dateofbirth, email: @person.email, firstname: @person.firstname, gender: @person.gender, height: @person.height, jerseynum: @person.jerseynum, lastname: @person.lastname, phone1: @person.phone1, phone2: @person.phone2, weight: @person.weight } } + end + + assert_redirected_to person_url(Person.last) + end + + test "should show person" do + get person_url(@person) + assert_response :success + end + + test "should get edit" do + get edit_person_url(@person) + assert_response :success + end + + test "should update person" do + patch person_url(@person), params: { person: { dateofbirth: @person.dateofbirth, email: @person.email, firstname: @person.firstname, gender: @person.gender, height: @person.height, jerseynum: @person.jerseynum, lastname: @person.lastname, phone1: @person.phone1, phone2: @person.phone2, weight: @person.weight } } + assert_redirected_to person_url(@person) + end + + test "should destroy person" do + assert_difference('Person.count', -1) do + delete person_url(@person) + end + + assert_redirected_to people_url + end +end diff --git a/test/controllers/teams_controller_test.rb b/test/controllers/teams_controller_test.rb new file mode 100644 index 0000000..9f92c24 --- /dev/null +++ b/test/controllers/teams_controller_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' + +class TeamsControllerTest < ActionDispatch::IntegrationTest + setup do + @team = teams(:one) + end + + test "should get index" do + get teams_url + assert_response :success + end + + test "should get new" do + get new_team_url + assert_response :success + end + + test "should create team" do + assert_difference('Team.count') do + post teams_url, params: { team: { agegroup: @team.agegroup, teamname: @team.teamname, teamtype: @team.teamtype } } + end + + assert_redirected_to team_url(Team.last) + end + + test "should show team" do + get team_url(@team) + assert_response :success + end + + test "should get edit" do + get edit_team_url(@team) + assert_response :success + end + + test "should update team" do + patch team_url(@team), params: { team: { agegroup: @team.agegroup, teamname: @team.teamname, teamtype: @team.teamtype } } + assert_redirected_to team_url(@team) + end + + test "should destroy team" do + assert_difference('Team.count', -1) do + delete team_url(@team) + end + + assert_redirected_to teams_url + end +end diff --git a/test/fixtures/.keep b/test/fixtures/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/fixtures/addresses.yml b/test/fixtures/addresses.yml new file mode 100644 index 0000000..3f1e8a1 --- /dev/null +++ b/test/fixtures/addresses.yml @@ -0,0 +1,17 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + addressline1: MyString + addressline2: MyString + city: MyString + state: MyString + zipcode: 1 + country: MyString + +two: + addressline1: MyString + addressline2: MyString + city: MyString + state: MyString + zipcode: 1 + country: MyString diff --git a/test/fixtures/athletes.yml b/test/fixtures/athletes.yml new file mode 100644 index 0000000..e5f48b2 --- /dev/null +++ b/test/fixtures/athletes.yml @@ -0,0 +1,11 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + roster: MyString + person: one + leagueteam: one + +two: + roster: MyString + person: two + leagueteam: two diff --git a/test/fixtures/coaches.yml b/test/fixtures/coaches.yml new file mode 100644 index 0000000..c85a590 --- /dev/null +++ b/test/fixtures/coaches.yml @@ -0,0 +1,11 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + license: MyString + person: one + leagueteam: one + +two: + license: MyString + person: two + leagueteam: two diff --git a/test/fixtures/files/.keep b/test/fixtures/files/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/fixtures/leagues.yml b/test/fixtures/leagues.yml new file mode 100644 index 0000000..d5ff571 --- /dev/null +++ b/test/fixtures/leagues.yml @@ -0,0 +1,9 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + leaguename: MyString + club: MyString + +two: + leaguename: MyString + club: MyString diff --git a/test/fixtures/managers.yml b/test/fixtures/managers.yml new file mode 100644 index 0000000..d73a8ff --- /dev/null +++ b/test/fixtures/managers.yml @@ -0,0 +1,9 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + person: one + leagueteam: one + +two: + person: two + leagueteam: two diff --git a/test/fixtures/parents.yml b/test/fixtures/parents.yml new file mode 100644 index 0000000..4825f00 --- /dev/null +++ b/test/fixtures/parents.yml @@ -0,0 +1,7 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + person: one + +two: + person: two diff --git a/test/fixtures/people.yml b/test/fixtures/people.yml new file mode 100644 index 0000000..a5c762f --- /dev/null +++ b/test/fixtures/people.yml @@ -0,0 +1,25 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + firstname: MyString + lastname: MyString + email: MyString + phone1: 1 + phone2: 1 + dateofbirth: 2016-09-27 + gender: MyString + height: MyString + weight: MyString + jerseynum: 1 + +two: + firstname: MyString + lastname: MyString + email: MyString + phone1: 1 + phone2: 1 + dateofbirth: 2016-09-27 + gender: MyString + height: MyString + weight: MyString + jerseynum: 1 diff --git a/test/fixtures/teams.yml b/test/fixtures/teams.yml new file mode 100644 index 0000000..7340930 --- /dev/null +++ b/test/fixtures/teams.yml @@ -0,0 +1,11 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + teamname: MyString + teamtype: MyString + agegroup: MyString + +two: + teamname: MyString + teamtype: MyString + agegroup: MyString diff --git a/test/helpers/.keep b/test/helpers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/integration/.keep b/test/integration/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/mailers/.keep b/test/mailers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/models/.keep b/test/models/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/models/address_test.rb b/test/models/address_test.rb new file mode 100644 index 0000000..44f9f9b --- /dev/null +++ b/test/models/address_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class AddressTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/athlete_test.rb b/test/models/athlete_test.rb new file mode 100644 index 0000000..6c48222 --- /dev/null +++ b/test/models/athlete_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class AthleteTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/coach_test.rb b/test/models/coach_test.rb new file mode 100644 index 0000000..0a258b8 --- /dev/null +++ b/test/models/coach_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class CoachTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/league_test.rb b/test/models/league_test.rb new file mode 100644 index 0000000..3425911 --- /dev/null +++ b/test/models/league_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class LeagueTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/manager_test.rb b/test/models/manager_test.rb new file mode 100644 index 0000000..9624a03 --- /dev/null +++ b/test/models/manager_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class ManagerTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/parent_test.rb b/test/models/parent_test.rb new file mode 100644 index 0000000..76a6b43 --- /dev/null +++ b/test/models/parent_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class ParentTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/person_test.rb b/test/models/person_test.rb new file mode 100644 index 0000000..ad04ed8 --- /dev/null +++ b/test/models/person_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class PersonTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/team_test.rb b/test/models/team_test.rb new file mode 100644 index 0000000..8b101cb --- /dev/null +++ b/test/models/team_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class TeamTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/test_helper.rb b/test/test_helper.rb new file mode 100644 index 0000000..92e39b2 --- /dev/null +++ b/test/test_helper.rb @@ -0,0 +1,10 @@ +ENV['RAILS_ENV'] ||= 'test' +require File.expand_path('../../config/environment', __FILE__) +require 'rails/test_help' + +class ActiveSupport::TestCase + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. + fixtures :all + + # Add more helper methods to be used by all tests here... +end diff --git a/tmp/.keep b/tmp/.keep new file mode 100644 index 0000000..e69de29 diff --git a/vendor/assets/javascripts/.keep b/vendor/assets/javascripts/.keep new file mode 100644 index 0000000..e69de29 diff --git a/vendor/assets/stylesheets/.keep b/vendor/assets/stylesheets/.keep new file mode 100644 index 0000000..e69de29