Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pull Request for User Resource only #75

Merged
merged 9 commits into from
Oct 1, 2019
1 change: 1 addition & 0 deletions server/.rspec
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
--require spec_helper
1 change: 1 addition & 0 deletions server/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ group :development, :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '~> 3.24'
gem 'selenium-webdriver'
gem 'rspec-rails', '~> 3.8'
end

group :development do
Expand Down
19 changes: 19 additions & 0 deletions server/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ GEM
coffee-script-source (1.12.2)
concurrent-ruby (1.1.5)
crass (1.0.4)
diff-lcs (1.3)
erubi (1.8.0)
execjs (2.7.0)
ffi (1.10.0)
Expand Down Expand Up @@ -133,6 +134,23 @@ GEM
rb-inotify (0.10.0)
ffi (~> 1.0)
regexp_parser (1.5.1)
rspec-core (3.8.1)
rspec-support (~> 3.8.0)
rspec-expectations (3.8.4)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-mocks (3.8.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-rails (3.8.2)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-support (~> 3.8.0)
rspec-support (3.8.2)
ruby_dep (1.5.0)
rubyzip (1.2.2)
sass (3.7.3)
Expand Down Expand Up @@ -195,6 +213,7 @@ DEPENDENCIES
pg
puma (~> 3.12)
rails (~> 5.2)
rspec-rails (~> 3.8)
sass-rails (~> 5.0)
selenium-webdriver
spring
Expand Down
3 changes: 3 additions & 0 deletions server/app/assets/javascripts/users.coffee
Original file line number Diff line number Diff line change
@@ -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/
3 changes: 3 additions & 0 deletions server/app/assets/stylesheets/users.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// Place all the styles related to the Users controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
53 changes: 53 additions & 0 deletions server/app/controllers/api/v1/users_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
class Api::V1::UsersController < ApplicationController
diwanow marked this conversation as resolved.
Show resolved Hide resolved
skip_before_action :verify_authenticity_token
diwanow marked this conversation as resolved.
Show resolved Hide resolved
before_action :set_user, only: [:show, :update, :destroy]

def index
@users = User.all
render json: {users: @users}
end

def show
@user = User.find(params[:id])
render json: {user: @user}
end

def new
end

def edit
@user = User.find(params[:id])
end

def create
@user = User.new(user_params[:user])
if @user.save
render json: @user, status: :created, location: api_v1_user_url(@user)
else
render json: @user.errors, status: :unprocessable_entity
end
end
def update
if @user.update(user_params[:user])
render json: @user, status: :ok, location: api_v1_user_url(@user)
else
render json: @user.errors, status: :unprocessable_entity
end
end

def set_user
@user = User.find(params[:id])
end

def destroy
@user = User.find(params[:id])
@user.destroy
end
private

def user_params
params.require(:user)
params.permit(user: [:id, :first_name, :last_name, :city, :email, :mentor, :mentee ])

end
end
1 change: 1 addition & 0 deletions server/app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end

48 changes: 48 additions & 0 deletions server/app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
class UsersController < ApplicationController
def index
diwanow marked this conversation as resolved.
Show resolved Hide resolved
@users = User.all
end

def show
@user = User.find(params[:id])
end

def new
end

def edit
@user = User.find(params[:id])
end

def create
@user = User.new(user_params)
if @user.save
redirect_to @user
else
render 'new'
end
end

def update
@user = User.find(params[:id])

if @user.update(user_params)
redirect_to @user
else
render 'edit'
end
end

def destroy
@user = User.find(params[:id])
@user.destroy

redirect_to users_path
end

private
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :city, :mentor, :mentee)
end

end
2 changes: 2 additions & 0 deletions server/app/helpers/users_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
module UsersHelper
end
3 changes: 3 additions & 0 deletions server/app/models/user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class User < ApplicationRecord

diwanow marked this conversation as resolved.
Show resolved Hide resolved
end
21 changes: 21 additions & 0 deletions server/app/views/users/edit.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<h1>Edit user</h1>

<%= form_with(model: @user, local: true) do |form| %>

<p>
<%= form.label :first_name %><br>
<%= form.text_field :first_name%>
</p>

<p>
<%= form.label :last_name %><br>
<%= form.text_area :last_name %>
</p>

<p>
<%= form.submit %>
</p>

<% end %>

<%= link_to 'Back', users_path %>
21 changes: 21 additions & 0 deletions server/app/views/users/index.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<h1>Listing Users</h1>

<table>
<tr>
<th>First</th>
<th>Last</th>
<th></th>
</tr>

<% @users.each do |user| %>
<tr>
<td><%= user.first_name %></td>
<td><%= user.last_name %></td>
<td><%= link_to 'Show', user_path(user) %></td>
<td><%= link_to 'Edit', edit_user_path(user) %></td>
<td><%= link_to 'Destroy', user_path(user),
method: :delete,
data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</table>
36 changes: 36 additions & 0 deletions server/app/views/users/new.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<h1>New User</h1>


<%= form_with scope: :user, url: users_path, local: true do |form| %>


<p>
<%= form.label :first_name %><br>
<%= form.text_area :first_name %>
</p>
<p>
<%= form.label :last_name %><br>
<%= form.text_area :last_name %>
</p>
<p>
<%= form.label :email %><br>
<%= form.text_area :email %>
</p>
<p>
<%= form.label :city %><br>
<%= form.text_area :city %>
</p>
<p>
<%= form.label :mentor %><br>
<%= form.check_box :mentor %>
</p>
<p>
<%= form.label :mentee %><br>
<%= form.check_box :mentee %>
</p>

<p>
<%= form.submit %>
</p>
<% end %>

29 changes: 29 additions & 0 deletions server/app/views/users/show.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<p>
<strong>First Name:</strong>
<%= @user.first_name %>
</p>

<p>
<strong>Last Name:</strong>
<%= @user.last_name %>
</p>
<p>
<strong>Email:</strong>
<%= @user.email %>
</p>
<p>
<strong>City:</strong>
<%= @user.city %>
</p>
<p>
<strong>Mentor:</strong>
<%= @user.mentor %>
</p>
<p>
<strong>Mentee:</strong>
<%= @user.mentee %>
</p>

<%= link_to 'New', new_user_path(@user) %> |
<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>
8 changes: 8 additions & 0 deletions server/config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
Rails.application.routes.draw do
get 'welcome/index'

resources :users do
end
namespace :api do
namespace :v1 do
resources :users
end
end
root 'welcome#index'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

8 changes: 8 additions & 0 deletions server/db/migrate/20190618164807_create_users.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class CreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|

t.timestamps
end
end
end
5 changes: 5 additions & 0 deletions server/db/migrate/20190618171808_add_first_name_to_user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddFirstNameToUser < ActiveRecord::Migration[5.2]
def change
add_column :users, :first_name, :string
end
end
5 changes: 5 additions & 0 deletions server/db/migrate/20190618171848_add_last_name_to_user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddLastNameToUser < ActiveRecord::Migration[5.2]
def change
add_column :users, :last_name, :string
end
end
5 changes: 5 additions & 0 deletions server/db/migrate/20190618171912_add_email_to_user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddEmailToUser < ActiveRecord::Migration[5.2]
def change
add_column :users, :email, :string
end
end
5 changes: 5 additions & 0 deletions server/db/migrate/20190618171932_add_city_to_user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddCityToUser < ActiveRecord::Migration[5.2]
def change
add_column :users, :city, :string
end
end
5 changes: 5 additions & 0 deletions server/db/migrate/20190618172134_add_mentor_to_user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddMentorToUser < ActiveRecord::Migration[5.2]
def change
add_column :users, :mentor, :boolean
end
end
5 changes: 5 additions & 0 deletions server/db/migrate/20190618172151_add_mentee_to_user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddMenteeToUser < ActiveRecord::Migration[5.2]
def change
add_column :users, :mentee, :boolean
end
end
26 changes: 26 additions & 0 deletions server/db/schema.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 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: 2019_06_18_172151) do

create_table "users", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "first_name"
t.string "last_name"
t.string "email"
t.string "city"
t.boolean "mentor"
t.boolean "mentee"
end

end
3 changes: 3 additions & 0 deletions server/db/seeds.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@
#
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
# Character.create(name: 'Luke', movie: movies.first)
User.destroy_all
User.create!([{first_name: 'Mary', last_name: 'Brown',email: '[email protected]',city: 'Sydney', mentor: 'True', mentee: 'False'},{first_name: 'Nuala', last_name: 'May',email: '[email protected]', city: 'Adelaide', mentor: 'False', mentee: 'True'},{first_name: 'Bob', last_name: 'Brown',email: '[email protected]', city: 'Perth', mentor: 'True', mentee: 'False'}])

LoneKP marked this conversation as resolved.
Show resolved Hide resolved
Loading